Tìm hiểu chi tiết về phong cách hình ảnh của text-decoration:underline
khá nhiều vô ích, vì vậy bạn sẽ phải thực hiện một số loại hack để loại bỏ text-decoration:underline
và thay thế nó bằng một thứ khác cho đến khi phiên bản CSS xa xôi trong tương lai cho phép chúng ta kiểm soát nhiều hơn .
Điều này làm việc cho tôi:
a {
background-image: linear-gradient(
180deg, rgba(0,0,0,0),
rgba(0,0,0,0) 81%,
#222222 81.1%,
#222222 85%,
rgba(0,0,0,0) 85.1%,
rgba(0,0,0,0)
);
text-decoration: none;
}
<a href="#">Lorem ipsum</a> dolor sit amet, <a href="#">consetetur sadipscing</a> elitr, sed diam nonumy eirmod tempor <a href="#">invidunt ut labore.</a>
- Điều chỉnh các giá trị% (81% và 85%) để thay đổi khoảng cách từ dòng văn bản
- Điều chỉnh chênh lệch giữa hai giá trị% để thay đổi độ dày đường
- điều chỉnh các giá trị màu (# 222222) để thay đổi màu gạch chân
- hoạt động với nhiều yếu tố nội tuyến
- làm việc với bất kỳ nền tảng
Đây là phiên bản có tất cả các thuộc tính độc quyền để tương thích ngược:
a {
/* This code generated from: http://colorzilla.com/gradient-editor/ */
background: -moz-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0) 81%, rgba(0,0,0,1) 81.1%, rgba(0,0,0,1) 85%, rgba(0,0,0,0) 85.1%, rgba(0,0,0,0) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,0,0,0)), color-stop(81%,rgba(0,0,0,0)), color-stop(81.1%,rgba(0,0,0,1)), color-stop(85%,rgba(0,0,0,1)), color-stop(85.1%,rgba(0,0,0,0)), color-stop(100%,rgba(0,0,0,0))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* W3C */
text-decoration: none;
}
Cập nhật: phiên bản SASSY
Tôi đã làm một mixin scss cho việc này. Nếu bạn không sử dụng SASS, phiên bản thông thường ở trên vẫn hoạt động tuyệt vời ...
@mixin fake-underline($color: #666, $top: 84%, $bottom: 90%) {
background-image: linear-gradient(
180deg, rgba(0,0,0,0),
rgba(0,0,0,0) $top,
$color $top + 0.1%,
$color $bottom,
rgba(0,0,0,0) $bottom + 0.1%,
rgba(0,0,0,0)
);
text-decoration: none;
}
sau đó sử dụng nó như vậy:
$blue = #0054a6;
a {
color: $blue;
@include fake-underline(lighten($blue,20%));
}
a.thick {
color: $blue;
@include fake-underline(lighten($blue,40%), 86%, 99%);
}
Cập nhật 2: Mẹo về hậu duệ
Nếu bạn có một màu nền vững chắc, hãy thử thêm một màu mỏng text-stroke
hoặc text-shadow
cùng màu với nền của bạn để làm cho hậu duệ trông đẹp.
tín dụng
Đây là phiên bản đơn giản hóa của kỹ thuật tôi tìm thấy ban đầu tại https://eager.io/app/smartunderline , nhưng bài viết đã bị gỡ xuống.