DigitalOcean cung cấp các sản phẩm đám mây cho mọi giai đoạn của hành trình của bạn. Bắt đầu với $ 200 trong tín dụng miễn phí!
Kiểu dáng các nền tảng ngồi bên dưới các liên kết có thể là một công việc khó khăn và tôi liên tục quên đi những gì cách tiếp cận tốt nhất tùy thuộc vào tình huống. Tuy nhiên, rất may, John Jameson giúp chúng tôi tăng tốc trong bài đăng của khách này.
Có một loạt các cách khác nhau để phong cách gạch chân. Có thể bạn nhớ bài viết Crafting liên kết gạch chân trên trung bình. Medium đã cố gắng làm bất cứ điều gì điên rồ; Họ chỉ muốn tạo ra một dòng trông khá bình thường bên dưới văn bản của họ.
Nó có một gạch chân khá cơ bản, nhưng nó có kích thước tốt và nó cũng bỏ qua những hậu duệ. Chắc chắn đẹp hơn hầu hết các trình duyệt mặc định. Chà, hóa ra Medium đã phải trải qua rất nhiều rắc rối để có được phong cách đó trên web. Hai năm sau, nó vẫn còn khó để tạo kiểu cho một gạch chân đẹp.
Bàn thắng
Điều gì sai khi chỉ sử dụng text-decoration: underline
? Nếu chúng tôi nói về kịch bản lý tưởng, một gạch chân sẽ có thể làm như sau:
- Vị trí bên dưới đường cơ sở
- Bỏ qua hậu duệ
- Thay đổi màu sắc, độ dày và kiểu
- Lặp lại văn bản được gói
- Làm việc trên bất kỳ nền tảng nào
Tôi nghĩ rằng đây là tất cả những điều khá hợp lý để yêu cầu, nhưng theo như tôi biết, không có cách nào trực quan để đạt được tất cả chúng trong CSS.
Cách tiếp cận
Vậy tất cả các cách khác nhau chúng ta có thể nhấn mạnh văn bản trên web là gì?
Đây là những người tôi có thể nghĩ đến:
text-decoration
border-bottom
box-shadow
background-image
- Bộ lọc SVG
- Underline.js [Canvas]
text-decoration-*
Hãy cùng đi vào danh sách từng người một và nói về những phần tốt và xấu của mỗi cách tiếp cận.
text-decoration
text-decoration
là cách đơn giản nhất để nhấn mạnh văn bản. Bạn áp dụng một tài sản duy nhất và tất cả những gì có cho nó. Ở kích thước nhỏ hơn, nó có thể trông khá đẹp, nhưng tăng kích thước phông chữ và cùng một dòng bắt đầu cảm thấy vụng về.
Xem bản demo.
Vấn đề lớn nhất với text-decoration
là sự thiếu tùy chỉnh của nó. Nó sử dụng kích thước màu sắc và phông chữ của bất kỳ văn bản nào được áp dụng và ở đó, không có cách trình duyệt chéo nào để thay đổi kiểu. Nhiều hơn về điều đó sau.
- Dễ sử dụng
- Vị trí bên dưới đường cơ sở
- Bỏ qua hậu duệ theo mặc định trong Safari và iOS
- Bao bọc trên các dòng
- Hoạt động trên bất kỳ nền tảng nào
- Có thể bỏ qua hậu duệ trong các trình duyệt khác
- Có thể thay đổi màu sắc, độ dày hoặc phong cách
border-bottom
border-bottom
cung cấp một sự cân bằng tốt giữa việc nhanh chóng và có thể tùy chỉnh. Cách tiếp cận này sử dụng đường viền CSS đã thử và đúng, có nghĩa là bạn có thể thay đổi màu sắc, độ dày và kiểu dáng một cách dễ dàng.
Đây là những gì border-bottom
trông giống như trên các yếu tố text-decoration
0:
Xem bản demo.
Vấn đề lớn nhất với text-decoration
là sự thiếu tùy chỉnh của nó. Nó sử dụng kích thước màu sắc và phông chữ của bất kỳ văn bản nào được áp dụng và ở đó, không có cách trình duyệt chéo nào để thay đổi kiểu. Nhiều hơn về điều đó sau.
Xem bản demo.
Vấn đề lớn nhất với text-decoration
là sự thiếu tùy chỉnh của nó. Nó sử dụng kích thước màu sắc và phông chữ của bất kỳ văn bản nào được áp dụng và ở đó, không có cách trình duyệt chéo nào để thay đổi kiểu. Nhiều hơn về điều đó sau.
Xem bản demo.
Tại thời điểm này, có bốn thuộc tính tạo kiểu cho một gạch chân duy nhất. Đó là rất nhiều công việc hơn text-decoration
.
- Có thể bỏ qua hậu duệ bằng cách sử dụng
text-decoration
3 - Có thể thay đổi màu sắc, độ dày và phong cách
- Có thể chuyển đổi và kích thích màu sắc và độ dày
- Kết thúc theo mặc định trừ khi nó là một
text-decoration
1 - Hoạt động trên bất kỳ nền nào trừ khi sử dụng
text-decoration
3
- Vị trí xa và khó định vị lại
- Rất nhiều tài sản không liên quan để có được nó vừa phải
- Lựa chọn văn bản vui vẻ khi sử dụng
text-decoration
3
box-shadow
box-shadow
vẽ một lớp gạch chân với hai bóng hộp hình: một để tạo hình chữ nhật và một giây để che nó lên. Điều đó có nghĩa là bạn sẽ cần một nền tảng vững chắc cho việc này để làm việc.
Xem Bút gạch chân 5: Box-Shadow của John D. Jameson [@JohnDjameson] trên Codepen.
Bạn có thể sử dụng cùng một thủ thuật text-decoration
3 cho các khoảng trống giả giữa gạch chân và hậu duệ văn bản. Nhưng nếu dòng là một màu khác với văn bản - hoặc thậm chí chỉ đủ mỏng - nó không thực sự đụng độ như text-decoration
.
- Có thể bỏ qua hậu duệ bằng cách sử dụng
text-decoration
3 - Có thể bỏ qua hậu duệ bằng cách sử dụng
text-decoration
3 - Có thể thay đổi màu sắc, độ dày và phong cách
- Có thể chuyển đổi và kích thích màu sắc và độ dày
- Vị trí xa và khó định vị lại
- Rất nhiều tài sản không liên quan để có được nó vừa phải
background-image
Lựa chọn văn bản vui vẻ khi sử dụng text-decoration
3
box-shadow
vẽ một lớp gạch chân với hai bóng hộp hình: một để tạo hình chữ nhật và một giây để che nó lên. Điều đó có nghĩa là bạn sẽ cần một nền tảng vững chắc cho việc này để làm việc.
Xem bản demo.
Xem Bút gạch chân 5: Box-Shadow của John D. Jameson [@JohnDjameson] trên Codepen.
Xem bản demo.
Tốt- Có thể bỏ qua hậu duệ bằng cách sử dụng
text-decoration
3 - Có thể bỏ qua hậu duệ bằng cách sử dụng
text-decoration
3 - Có thể thay đổi màu sắc, độ dày và phong cách
- Có thể chuyển đổi và kích thích màu sắc và độ dày
- Có thể chuyển đổi và kích thích màu sắc và độ dày
- Hoạt động trên bất kỳ nền nào trừ khi sử dụng
text-decoration
3
- Vị trí xa và khó định vị lại
Rất nhiều tài sản không liên quan để có được nó vừa phải
Lựa chọn văn bản vui vẻ khi sử dụng text-decoration
3
box-shadow
vẽ một lớp gạch chân với hai bóng hộp hình: một để tạo hình chữ nhật và một giây để che nó lên. Điều đó có nghĩa là bạn sẽ cần một nền tảng vững chắc cho việc này để làm việc.
Xem bản demo.
Xem Bút gạch chân 5: Box-Shadow của John D. Jameson [@JohnDjameson] trên Codepen.
Bạn có thể sử dụng cùng một thủ thuật text-decoration
3 cho các khoảng trống giả giữa gạch chân và hậu duệ văn bản. Nhưng nếu dòng là một màu khác với văn bản - hoặc thậm chí chỉ đủ mỏng - nó không thực sự đụng độ như text-decoration
.
- Có thể thay đổi màu sắc và độ dày
- Bao bọc trên các dòng
- Có thể thay đổi phong cách
- Doesn làm việc trên bất kỳ nền tảng nào
background-image
đến gần nhất với mọi thứ chúng tôi muốn và với ít gotchas nhất. Ý tưởng là bạn sử dụng border-bottom
4 và border-bottom
5 để tạo hình ảnh lặp lại theo chiều ngang trên các dòng văn bản.- Bạn cũng phải
border-bottom
6 cách tiếp cận này. - Cách tiếp cận này không phải sử dụng
border-bottom
4. Bạn có thể mang hình ảnh nền của riêng bạn cho một số hiệu ứng thú vị.
Có thể thay đổi màu sắc, độ dày [cho phép một nửa pixel] và phong cách
Hoạt động với hình ảnh tùy chỉnh
Hình ảnh có thể thay đổi kích thước khác nhau giữa các độ phân giải, trình duyệt và mức thu phóngtech demo only. That means you won’t be able to drop it into any projects without modifying it a whole bunch first.
Bộ lọc SVG
Ở đây, một cách tiếp cận mà tôi đã chơi đùa xung quanh với: các bộ lọc SVG. Bạn có thể tạo một phần tử SVG box-shadow
0 nội tuyến vẽ một dòng và sau đó mở rộng văn bản để che dấu các phần của dòng chúng ta muốn trong suốt. Sau đó, bạn có thể cung cấp cho box-shadow
0 một box-shadow
2 và tham chiếu nó trong CSS với một cái gì đó như box-shadow
3.
Ưu điểm ở đây là bộ lọc thêm độ trong suốt mà không cần dựa vào text-decoration
3. Điều đó có nghĩa là bạn có thể bỏ qua hậu duệ trên bất kỳ nền nào, bao gồm độ dốc và hình ảnh nền! Cái này chỉ hoạt động trên một dòng văn bản duy nhất, vì vậy hãy đứng đầu về điều đó.
Ở đây, những gì nó trông giống như ở Chrome và Firefox:
background-image
1background-image
2background-image
3
Hỗ trợ trình duyệt trong IE, Edge và Safari là vấn đề. Thật khó để kiểm tra hỗ trợ bộ lọc SVG trong CSS. Bạn có thể sử dụng box-shadow
5 với box-shadow
0, nhưng chỉ kiểm tra xem tham chiếu có hoạt động hay không - không phải là bộ lọc được áp dụng. Cách tiếp cận của tôi cuối cùng thực hiện một số trình duyệt khá thô thiển, vì vậy cũng tăng gấp đôi về điều đó.
Ưu điểm
Firefox:
Safari:
Vị trí bên dưới đường cơ sở
Tài sản này không chuẩn và chỉ hoạt động ở Safari ngay bây giờ, vì vậy bạn cần tiền tố background-image
6 để sử dụng nó. Safari cho phép thuộc tính này theo mặc định, đó là lý do tại sao nhấn mạnh bỏ qua hậu duệ ngay cả trên các trang web không chỉ định nó.
Nếu bạn sử dụng bình thường hóa, hãy biết rằng các phiên bản gần đây đã vô hiệu hóa tài sản để giữ mọi thứ phù hợp giữa các trình duyệt. Bạn cần phải lật lại nếu bạn muốn những nền tảng mơ mộng đó.
background-image
3 cung cấp các loại dòng tương tự mà bạn mong đợi từ background-image
8, nhưng cũng thêm vào các dòng background-image
9.
Dưới đây là các giá trị khác nhau bạn có thể sử dụng:
text-decoration-*
0text-decoration-*
1text-decoration-*
2text-decoration-*
3background-image
9
Ngay bây giờ, background-image
3 chỉ hoạt động trong Firefox, vì vậy, đây là một ảnh chụp màn hình:
Một loại của phong cách gạch chân màu rắn
Nhìn quen thuộc?
Cái gì còn thiếu?Các thuộc tính text-decoration-*
trực quan hơn nhiều so với việc sử dụng các thuộc tính CSS khác để tạo khuôn mẫu. Nhưng nếu chúng ta có cái nhìn khác về các yêu cầu trước đó của chúng ta, các thuộc tính này không cung cấp một cách để chỉ định độ dày hoặc vị trí của dòng.
Sau khi thực hiện một nghiên cứu nhỏ, tôi đã bắt gặp hai thuộc tính này:
text-decoration-*
7text-decoration-*
8
Có vẻ như họ đã được đưa ra trong các bản nháp CSS trước đó, nhưng không bao giờ được thực hiện do thiếu sự quan tâm. Này, đừng đổ lỗi cho tôi.
Takeaways
Vì vậy, những gì cách tốt nhất để nhấn mạnh văn bản?
Nó phụ thuộc.
Đối với văn bản nhỏ, tôi khuyên bạn nên sử dụng text-decoration
và sau đó áp dụng một cách lạc quan background-image
2 lên trên. Trông có vẻ hơi nhạt nhẽo trong hầu hết các trình duyệt, nhưng gạch chân đã trông như vậy mãi mãi và mọi người dường như không có tâm trí. Thêm vào đó, luôn luôn có cơ hội nếu bạn kiên nhẫn đủ, tất cả các nền tảng của bạn sẽ trông tuyệt vời sau này mà không cần phải thay đổi điều gì.
Đối với văn bản cơ thể, có thể sử dụng phương pháp background-image
. Nó hoạt động, nó trông tuyệt vời, và có các bản phối hợp cho nó. Bạn có thể có thể bỏ qua text-decoration
3 nó nếu gạch chân mỏng hoặc có màu khác so với văn bản.
Đối với các dòng văn bản duy nhất, hãy sử dụng border-bottom
và bất kỳ thuộc tính nào khác bạn muốn đi với nó.
Và để bỏ qua hậu duệ trên đầu của hình ảnh gradient hoặc nền, hãy thử sử dụng các bộ lọc SVG. Hoặc chỉ tránh sử dụng một lớp gạch chân hoàn toàn.
Trong tương lai khi hỗ trợ trình duyệt tốt hơn, câu trả lời là text-decoration-*
tất cả các cách.
Cũng thấy Benjamin Woodruff, bài viết CSS nhấn mạnh, trong đó tình cờ bước đi trên mặt đất này theo cách tương tự.