Apple giới thiệu thuộc tính CSS riêng tư để thêm hiệu ứng Liquid Glass vào nội dung web
(alastair.is)- Apple đã bổ sung thuộc tính CSS riêng tư
-apple-visual-effectcó thể dùng trong iOS 26 - Thuộc tính này cho phép áp dụng các hiệu ứng thiết kế mới như Liquid Glass và vật liệu blur tiêu chuẩn cho cả nội dung web
- Tính năng này không được bật mặc định trong trình duyệt Safari hoặc WKWebView
- Để dùng trong WKWebView, cần bật thiết lập riêng tư
useSystemAppearance, nhưng việc thay đổi nó khiến rất khó được App Store phê duyệt - Có vẻ tính năng này chủ yếu được Apple sử dụng nội bộ, và các nhà phát triển thông thường hiện chưa thể tận dụng
Tổng quan
- Tác giả thường xem GitHub ChangeLog của WebKit như một thú vui để dự đoán các bản cập nhật iOS sắp tới
- Gần đây, ngay sau WWDC, tác giả phát hiện một Pull Request trên WebKit có tiêu đề “[Materials] Rename 'hosted blur' materials to reference 'glass'”
- Liquid Glass được nhấn mạnh tại WWDC 2025 là thay đổi lớn nhất về giao diện người dùng (UI) kể từ iOS 7
- Trước đây đây là thay đổi thiết kế chỉ áp dụng cho UI native, nhưng PR lần này gợi ý mối liên hệ với web view
Thuộc tính CSS riêng tư của Apple
- PR cho thấy Apple đã đưa vào một thuộc tính CSS riêng tư tên là
-apple-visual-effect - Thông qua thuộc tính này, trên iOS 26 có thể áp dụng hiệu ứng Liquid Glass (ví dụ:
-apple-system-glass-material) - Trên mọi phiên bản, cũng có thể dùng vật liệu blur tiêu chuẩn (
-apple-system-blur-material-thinv.v.) - Các vật liệu này cũng được nhắc đến trong hướng dẫn thiết kế chính thức
Khả năng áp dụng thực tế
- Ngay cả khi thử chỉnh sửa CSS trong Safari để áp dụng, nó vẫn không hoạt động trên web
- Trong các ứng dụng dựa trên WKWebView, tính năng này cũng bị tắt theo mặc định
- Chỉ khi đổi giá trị
useSystemAppearancetrongWKPreferencesthành true thì nó mới hoạt động, nhưng bản thân thiết lập này là riêng tư nên không thể dùng qua con đường chính thức - Nếu bật giá trị đó bằng cách không chính thức rồi áp dụng CSS như bên dưới, có thể thấy hiệu ứng
.toolbar { border-radius: 50%; -apple-visual-effect: -apple-system-glass-material; height: 75px; width: 450px; }
Ví dụ CSS và áp dụng có điều kiện
-
Apple đã biến hiệu ứng này thành một thuộc tính CSS, giúp đơn giản hóa việc chỉ định các quy tắc khác nhau tùy theo khả năng hỗ trợ
-
Ví dụ, có thể dùng truy vấn
@supportsđể chỉ áp dụng-apple-visual-effecttrên các thiết bị được hỗ trợ.toolbar { border-radius: 50%; height: 75px; width: 450px; background: rgba(204, 204, 204, 0.7); } @supports (-apple-visual-effect: -apple-system-glass-material) { background: transparent; -apple-visual-effect: -apple-system-glass-material }
Ý nghĩa và giới hạn
- Đây là một tính năng mà nhà phát triển thông thường không thể sử dụng, trừ nội bộ Apple
- Tuy nhiên, nó cũng cho thấy một gợi ý về việc vì sao webview trong ứng dụng thường có tiếng xấu
- Một webview được tích hợp mượt mà đến mức người dùng không nhận ra sự tồn tại của nó thì ít khi để lộ vấn đề
- Việc Apple phát triển tính năng này gián tiếp cho thấy hãng đang thực sự dùng nó trong các dịch vụ hoặc ứng dụng của mình
- Có khả năng trong đời sống hằng ngày, người dùng đang vô thức trải nghiệm UI dựa trên webview
5 bình luận
Nên phớt lờ mấy thứ vô lý thế này và đừng ai dùng cả
Khi Apple khai tử Flash, mọi người đã hoan hô vì lợi ích các bên khi đó trùng khớp,
nhưng thật trớ trêu khi lựa chọn hiện tại lại khiến tôi cảm thấy đây là quyết định phớt lờ hệ sinh thái hiện có.
Đây là sự tái sinh của IE sao?
Từ sau thời IE, với các lập trình viên frontend thì vị trí kiểu IE không phải Chrome mà là Safari. Vì Safari mà dân frontend phải mua Mac đắt tiền. Có những trường hợp Chrome và Firefox đều chạy được nhưng riêng Safari thì không được hoặc hiển thị kỳ quặc.
Ý kiến trên Hacker News
-webkit-tap-highlight-colorcủa Google cũng phải bị chỉ trích tương tự hay không. Lập luận đó thực chất là muốn cấm luôn việc tạo ra các thuộc tính CSS độc quyền, và với tôi thì nhận định như vậy là hơi phóng đạibackdrop-filtercho hiệu ứng làm mờ nền trên iOSuseSystemAppearancetrongWKPreferences, nhưng vì đây là API riêng tư nên ứng dụng sẽ không được App Store phê duyệt. Tôi tò mò không biết điều đó có đúng không. Tôi không quá rành phát triển iOS, nhưng có nhớ từng xem một video giải nén một app tạo hiệu ứng động cho widget trên màn hình chính bằng cách dùng nhiều API nội bộ khác nhauĐừng nói nhảm nữa, lo cho khả năng tương thích của Safari cho tử tế đi.