การเข้าไปดูรายละเอียดของสไตล์การมองเห็นของtext-decoration:underline
มันไร้ประโยชน์มากดังนั้นคุณจะต้องไปกับการแฮ็กเอาบางชนิดออกtext-decoration:underline
และแทนที่มันด้วยอย่างอื่นจนกว่า CSS ในอนาคตอันแสนไกลในอนาคตอันไกลจะช่วยให้เราควบคุมได้มากขึ้น .
สิ่งนี้ใช้ได้กับฉัน:
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>
- ปรับค่า% (81% และ 85%) เพื่อเปลี่ยนระยะห่างของบรรทัดจากข้อความ
- ปรับความแตกต่างระหว่างค่าสอง% เพื่อเปลี่ยนความหนาของเส้น
- ปรับค่าสี (# 222222) เพื่อเปลี่ยนสีขีดเส้นใต้
- ทำงานร่วมกับองค์ประกอบอินไลน์หลายบรรทัด
- ทำงานกับพื้นหลังใด ๆ
นี่คือรุ่นที่มีคุณสมบัติที่เป็นกรรมสิทธิ์ทั้งหมดสำหรับความเข้ากันได้บางอย่าง:
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;
}
อัปเดต: รุ่น SASSY
ฉันทำมิกซ์ scss สำหรับสิ่งนี้ หากคุณไม่ได้ใช้ SASS เวอร์ชันปกติด้านบนยังคงใช้งานได้ดี ...
@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;
}
จากนั้นใช้งานได้ตามต้องการ:
$blue = #0054a6;
a {
color: $blue;
@include fake-underline(lighten($blue,20%));
}
a.thick {
color: $blue;
@include fake-underline(lighten($blue,40%), 86%, 99%);
}
อัปเดต 2: เคล็ดลับ Descenders
หากคุณมีสีพื้นหลังที่เป็นของแข็งลองเพิ่มสีที่บางtext-stroke
หรือtext-shadow
เป็นสีเดียวกับพื้นหลังของคุณเพื่อให้ตัวแปลงสัญญาณดูดี
เครดิต
นี่เป็นเวอร์ชันที่เรียบง่ายของเทคนิคที่ฉันพบในตอนแรกที่https://eager.io/app/smartunderlineแต่บทความได้ถูกลบออกไปแล้ว