Trình tạo bộ lọc CSS

Điều chỉnh các thuộc tính filter CSS với các thanh trượt và xem kết quả theo thời gian thực. Sao chép mã được tạo.

Điều khiển bộ lọc

Xem trước

Xem trước các bộ lọc

CSS được tạo


      
    

Cách sử dụng

  1. Điều chỉnh các thanh trượt bộ lọc: sử dụng các thanh trượt để kiểm soát làm mờ, độ sáng, độ tương phản, độ bão hòa, xoay sắc thái, độ trong suốt, mức xám, sepia và đảo ngược.
  2. Xem trước theo thời gian thực: hình ảnh hoặc phần tử mẫu được cập nhật ngay lập tức khi bạn di chuyển một thanh trượt.
  3. Sao chép CSS: giá trị đầy đủ của thuộc tính filter (vd: filter: brightness(1.2) contrast(1.5) saturate(0.8)) sẵn sàng để dán vào stylesheet của bạn.

Tại sao sử dụng trình tạo CSS bộ lọc?

Các bộ lọc CSS cho phép áp dụng các hiệu ứng xử lý hình ảnh, làm mờ, độ tương phản, độ sáng, dịch chuyển màu, trực tiếp trong trình duyệt mà không cần Photoshop hoặc phần mềm chỉnh sửa hình ảnh. Chúng hoạt động trên hình ảnh, video và bất kỳ phần tử HTML nào. Xây dựng chuỗi thuộc tính filter bằng tay đòi hỏi phải biết tên hàm chính xác và phạm vi giá trị hợp lệ. Trình tạo này cung cấp các thanh trượt trực quan với phản hồi trực quan để có được kết xuất chính xác mong muốn.

Tính năng

Câu hỏi thường gặp

Các bộ lọc CSS có thể áp dụng cho video không?

Có. Thuộc tính filter CSS hoạt động trên bất kỳ phần tử nào, bao gồm <video>, <img>, <div> và <canvas>. Khi áp dụng cho một video, bộ lọc được render theo thời gian thực trong khi phát.

Sự khác biệt giữa filter và backdrop-filter là gì?

filter áp dụng hiệu ứng cho phần tử và tất cả các con của nó. backdrop-filter áp dụng hiệu ứng cho nội dung phía sau (dưới) phần tử, thường được sử dụng cho các hiệu ứng kính mờ.

Các bộ lọc CSS có ảnh hưởng đến hiệu suất không?

Các bộ lọc với làm mờ hoặc compositing phức tạp có thể tốn nhiều cho GPU. Đối với các bộ lọc được animate, hãy đảm bảo phần tử ở trên lớp compositing riêng (thêm transform: translateZ(0) làm gợi ý). Các bộ lọc tĩnh trên hình ảnh và biểu tượng có tác động tối thiểu.

CSS filter thực sự làm gì

Thuộc tính CSS filter áp dụng các hiệu ứng đồ họa (làm mờ, điều chỉnh độ tương phản, dịch chuyển màu sắc, đổ bóng) cho một phần tử và các con của nó trước khi trình duyệt vẽ nó lên màn hình. Quá trình xử lý xảy ra hoàn toàn trong pipeline render của trình duyệt, thường được tăng tốc bởi GPU, không có JavaScript tham gia. Các hiệu ứng chỉ là thị giác: HTML cơ bản, file mà hình ảnh tham chiếu và layout đều không thay đổi. Một bức ảnh được hiển thị với filter: grayscale(1) vẫn có màu gốc trong file; trình duyệt chỉ chuyển đổi sang thang xám khi hiển thị.

CSS filter cung cấp mười hàm: blur(px) cho làm mờ Gauss, brightness(n)contrast(n) cho điều chỉnh tông, saturate(n) cho cường độ màu, hue-rotate(deg) để dịch chuyển bánh xe màu, opacity(n) cho độ trong suốt, grayscale(n)sepia(n) cho hiệu ứng giảm bão hòa, invert(n) cho đầu ra âm bản, và drop-shadow(...) cho bóng đổ nhận biết hình dạng (không giống box-shadow, drop-shadow tuân theo hình dạng thực sự được render bao gồm độ trong suốt, lý tưởng cho bóng trên các biểu tượng hoặc hình ảnh PNG có cạnh cắt). Các hàm có thể nối với nhau: filter: brightness(1.2) contrast(1.3) saturate(0.9) áp dụng cả ba theo trình tự.

Tại sao điều này quan trọng đối với thiết kế web hiện đại: một thập kỷ trước, việc điều chỉnh độ sáng, sắc thái hoặc độ bão hòa của hình ảnh để có sự nhất quán trong thiết kế đòi hỏi phải xử lý trước mọi hình ảnh trong Photoshop và xuất lại. CSS filter đưa các điều chỉnh tương tự đến runtime, được áp dụng không phá hủy. Bạn có thể phục vụ một hình ảnh duy nhất và trình bày nó theo những cách khác nhau dựa trên chủ đề, trạng thái hover hoặc tùy chọn người dùng. Bạn cũng có thể sử dụng các bộ lọc cho khả năng tiếp cận: một bức ảnh thang xám đảo ngược làm placeholder, hoặc một lớp phủ hình ảnh tối hơn cho khả năng đọc văn bản tương phản cao. Sự đánh đổi là hiệu suất cho một số bộ lọc (đặc biệt là làm mờ) và thực tế là các bộ lọc cũng ảnh hưởng đến các con, có thể đổ tràn không mong đợi.

Công cụ này hoạt động bên dưới như thế nào

Mỗi thanh trượt trong công cụ được gắn với một hàm bộ lọc duy nhất. Khi bạn di chuyển một thanh trượt, JavaScript đọc giá trị, xây dựng chuỗi hàm bộ lọc với giá trị đó (ví dụ: brightness(1.4)), và nối tất cả các hàm đang hoạt động thành một chuỗi CSS filter duy nhất. Chuỗi đó được áp dụng làm style inline trên hình ảnh xem trước, tạo ra phản hồi trực quan ngay lập tức khi trình duyệt vẽ lại với bộ lọc mới. Không có dữ liệu hình ảnh nào được xử lý trong JavaScript: phép toán cấp pixel thực tế xảy ra bên trong công cụ render của trình duyệt, thường trên GPU.

CSS được tạo hiển thị trong hộp mã là cùng một chuỗi được áp dụng cho xem trước. Nhấp Sao chép CSS và công cụ ghi chuỗi đó vào clipboard của bạn bằng API hiện đại navigator.clipboard.writeText(). Chuỗi đã sẵn sàng để dán vào thuộc tính style của bất kỳ phần tử nào hoặc bất kỳ khai báo lớp nào trong stylesheet của bạn. Công cụ cũng hỗ trợ tải hình ảnh của bạn: chọn một file và nó trở thành một URL blob: tạm thời trong trình duyệt, không bao giờ được tải lên đâu, và bộ lọc xem trước trên hình ảnh thực của bạn để bạn có thể điều chỉnh chính xác diện mạo cho nội dung của bạn.

Hành vi đặt lại là theo từng bộ lọc: mỗi thanh trượt có nút đặt lại riêng trả về chỉ bộ lọc đó về giá trị không-hiệu-ứng của nó (1 cho các bội số, 0deg cho hue-rotate, 0px cho blur). Nút Đặt Lại Tất Cả trả tất cả các thanh trượt về trung tính đồng thời. Trạng thái của công cụ chỉ tồn tại trong bộ nhớ; tải lại trang và kết hợp bộ lọc của bạn biến mất. Không có máy chủ nào lưu trữ các giá trị bộ lọc bạn đã chọn, không có phân tích nào theo dõi các kết hợp bạn thử. Công cụ là một sân chơi CSS không trạng thái, được hỗ trợ bởi quảng cáo.

Lịch sử ngắn về các bộ lọc CSS

Quy trình làm việc thực tế

Cạm bẫy phổ biến và ý nghĩa của chúng

Quyền riêng tư: mọi thứ xảy ra trong trình duyệt của bạn

Các công cụ tạo CSS đến trong hai hương vị: các trang HTML đơn giản chạy JavaScript phía client (riêng tư, nhanh) và các trình chỉnh sửa đám mây lưu các dự án của bạn (cộng tác nhưng với sự đánh đổi về quyền riêng tư). Công cụ này thuộc loại đầu tiên. Các giá trị thanh trượt của bạn, CSS được tạo của bạn, và thậm chí bất kỳ hình ảnh nào bạn tải lên để xem trước đều ở lại hoàn toàn trong phiên trình duyệt của bạn. Tải lại trang và trạng thái biến mất trừ khi bạn sao chép CSS trước hoặc lưu một screenshot.

Tính năng tải lên hình ảnh của riêng bạn đáng được lưu ý về quyền riêng tư: khi bạn chọn một file, trình duyệt tạo ra một URL blob: cục bộ trỏ đến bộ nhớ, và bản xem trước hiển thị hình ảnh của bạn với bộ lọc được áp dụng. Không có yêu cầu nào đi đến bất kỳ máy chủ nào. Mở tab Network của trình duyệt trong khi tải lên; bạn sẽ thấy không có lưu lượng truy cập ra. Hình ảnh chỉ tồn tại trong bộ nhớ của tab trình duyệt của bạn và bị xóa khi bạn đóng tab. Đối với hình ảnh bí mật (thiết kế độc quyền, quét y tế, screenshot được bảo vệ NDA), đây là thuộc tính quyền riêng tư quan trọng.

Khi một công cụ khác là lựa chọn đúng

Các câu hỏi thường gặp khác

Tôi có thể animate các thay đổi CSS filter một cách mượt mà không?

Có, với những cảnh báo. Thuộc tính filter có thể animate được trong CSS, và các chuyển tiếp giữa hai chuỗi bộ lọc với cùng các hàm trong cùng một thứ tự nội suy mượt mà (blur(0px) brightness(1) sang blur(10px) brightness(1.5) hoạt động). Thêm hoặc xóa các hàm giữa chuyển tiếp snap đột ngột. Đối với animation đa-bộ-lọc mượt mà, liệt kê mọi hàm bạn muốn chuyển tiếp ở cả trạng thái đầu và cuối, sử dụng các giá trị trung tính (brightness(1), saturate(1), blur(0px)) ở những nơi bạn không muốn một bộ lọc cụ thể được áp dụng.

CSS filter có hoạt động trên hình ảnh nền không?

Có. CSS filter áp dụng cho toàn bộ phần tử bao gồm hình ảnh nền, nội dung và các phần tử con của nó. Nếu bạn muốn chỉ lọc hình ảnh nền nhưng không lọc nội dung phía trước, phương pháp tiêu biểu là sử dụng một phần tử con riêng cho nền (ví dụ: một pseudo-element ::before được định vị) với bộ lọc được áp dụng cho nó, sau đó đặt nội dung là anh chị em không được lọc ở trên. Thuộc tính backdrop-filter cũng hữu ích khi bạn muốn lọc những gì có thể nhìn thấy phía sau một phần tử trong suốt.

Các bộ lọc CSS có được lập chỉ mục bởi các công cụ tìm kiếm không?

Các bộ lọc CSS hoàn toàn là thị giác và không thay đổi nội dung HTML. Các công cụ tìm kiếm lập chỉ mục nội dung cơ bản (alt text hình ảnh, văn bản xung quanh) như thể bộ lọc không được áp dụng. Một hình ảnh thang xám với filter: grayscale(1) vẫn được lập chỉ mục là hình ảnh màu gốc dựa trên file của nó và alt text. Đây thường là điều bạn muốn: không có tác dụng phụ của bộ lọc đối với SEO hoặc các trình đọc màn hình.

Tại sao drop-shadow trông khác với box-shadow?

Box-shadow vẽ một bóng xung quanh hộp hình chữ nhật của một phần tử, bỏ qua bất kỳ độ trong suốt nào. Drop-shadow (filter) vẽ một bóng tuân theo hình dạng thực sự được render, bao gồm các vùng trong suốt. Đối với một biểu tượng SVG với các cạnh cắt hoặc một PNG với độ trong suốt, drop-shadow tạo ra một bóng nhận biết hình dạng phù hợp với đường viền có thể nhìn thấy. Box-shadow trên cùng một phần tử sẽ hiển thị một bóng hình chữ nhật xung quanh bounding box, trông sai. Sử dụng drop-shadow cho các bóng nhận biết hình dạng, box-shadow cho các phần tử hình chữ nhật.

Sự khác biệt giữa opacity và filter: opacity() là gì?

Trong hầu hết các trình duyệt, chúng tạo ra kết quả giống hệt nhau về mặt thị giác. Sự khác biệt kỹ thuật: opacity là một thuộc tính cấp cao nhất, trong khi filter: opacity() là một phần của chuỗi bộ lọc và kết hợp với các bộ lọc khác. Nếu bạn có filter: blur(5px) opacity(0.5), cả hai áp dụng cùng nhau như một thao tác GPU duy nhất. Sử dụng opacity ngoài chuỗi bộ lọc hoạt động giống nhau trong hầu hết các trường hợp. Sử dụng opacity cho độ trong suốt độc lập; chỉ sử dụng filter: opacity() khi nối với các bộ lọc khác.

Tôi có thể đặt lại tất cả các bộ lọc nhanh chóng không?

Có. Đặt filter: none để xóa tất cả các bộ lọc trong một khai báo. Đây là cách sạch nhất để đặt lại, đặc biệt cho các trạng thái hover nơi bạn muốn loại bỏ tất cả các hiệu ứng bộ lọc khi hover-out. Hoặc, đặt mỗi hàm bộ lọc về giá trị trung tính của nó: filter: brightness(1) contrast(1) saturate(1) blur(0px) hue-rotate(0deg) grayscale(0) sepia(0) invert(0) opacity(1) tương đương về mặt chức năng với filter: none nhưng dài dòng hơn.

Công cụ liên quan

Trình tạo gradient CSS Bộ chuyển đổi màu Bộ Lọc & Hiệu Ứng Hình Ảnh Trình tạo mẫu CSS