text-shadow
วิธีการแก้ปัญหาแบบพกพามากที่สุดและสายตาที่ชื่นชอบที่จะใช้ สิ่งนี้ทบทวนและแสดงตัวอย่างคำตอบของ Thorgeirโดยใช้Alexxaliและการปรับแต่งของฉันเอง:
li:hover { text-shadow: -0.06ex 0 black, 0.06ex 0 black; }
สิ่งนี้ทำให้ "เงา" เล็ก ๆ เป็นสีดำ (ใช้ชื่อ / รหัสสีของแบบอักษรแทนblack
หากจำเป็น) ทั้งสองด้านของตัวอักษรแต่ละตัวโดยใช้หน่วยที่ปรับขนาดได้อย่างเหมาะสมด้วยการแสดงผลแบบอักษร
คำเตือน: px
ค่าต่างๆรองรับค่าทศนิยม แต่จะดูไม่ดีนักเมื่อขนาดฟอนต์เปลี่ยนไป (เช่นผู้ใช้ปรับขนาดมุมมองด้วยCtrl+ +) ใช้ค่าสัมพัทธ์แทน
คำตอบนี้ใช้เศษส่วนของex
หน่วยเนื่องจากปรับขนาดตามแบบอักษร
ในที่สุด ~ ค่าเริ่มต้นของเบราว์เซอร์*คาดว่า1ex
≈ 8px
และดังนั้นจึง≈0.025ex
0.1px
ดูตัวคุณเอง:
li { color: #000; } /* set text color just in case */
.shadow0 { text-shadow: inherit; }
.shadow2 { text-shadow: -0.02ex 0 #000, 0.02ex 0 #000; }
.shadow4 { text-shadow: -0.04ex 0 #000, 0.04ex 0 #000; }
.shadow6 { text-shadow: -0.06ex 0 #000, 0.06ex 0 #000; }
.shadow8 { text-shadow: -0.08ex 0 #000, 0.08ex 0 #000; }
.bold { font-weight: bold; }
.bolder { font-weight: bolder; }
.after span { display:inline-block; font-weight: bold; } /* workaholic… */
.after:hover span { font-weight:normal; }
.after span::after { content: attr(title); font-weight: bold; display:block;
height: 0; overflow: hidden; }
.ltrsp { letter-spacing:0; font-weight:bold; } /* @cgTag */
li.ltrsp:hover { letter-spacing:0.0125ex; }
li:hover { font-weight: normal!important; text-shadow: none!important; }
<li class="shadow0">MmmIii123 This line tests shadow0 (plain)</li>
<li class="shadow2">MmmIii123 This line tests shadow2 (0.02ex)</li>
<li class="shadow4">MmmIii123 This line tests shadow4 (0.04ex)</li>
<li class="shadow6">MmmIii123 This line tests shadow6 (0.06ex)</li>
<li class="shadow8">MmmIii123 This line tests shadow8 (0.08ex)</li>
<li class="after"><span title="MmmIii123 This line tests [title]"
>MmmIii123 This line tests [title]</span> (@workaholic…)</li>
<li class="ltrsp" >MmmIii123 This line tests ltrsp (@cgTag)</li>
<li class="bold" >MmmIii123 This line tests bold</li>
<li class="bolder" >MmmIii123 This line tests bolder</li>
<li class="shadow2 bold">MmmIii123 This line tests shadow2 (0.02ex) + bold</li>
<li class="shadow4 bold">MmmIii123 This line tests shadow4 (0.04ex) + bold</li>
<li class="shadow6 bold">MmmIii123 This line tests shadow6 (0.06ex) + bold</li>
<li class="shadow8 bold">MmmIii123 This line tests shadow8 (0.08ex) + bold</li>
วางเมาส์เหนือบรรทัดที่แสดงผลเพื่อดูว่าแตกต่างจากข้อความมาตรฐานอย่างไร
ปรับเปลี่ยนระดับการซูม ( Ctrl+ +และCtrl+ -) ของเบราว์เซอร์เพื่อดูความแตกต่าง
ฉันได้เพิ่มโซลูชันอื่นอีกสองวิธีที่นี่เพื่อเปรียบเทียบ: เคล็ดลับการเว้นระยะห่างของตัวอักษรของ @ cgTagซึ่งใช้งานได้ไม่ดีนักเนื่องจากเกี่ยวข้องกับการคาดเดาช่วงความกว้างของตัวอักษรและ@ workaholic_gangster911's :: หลังจากวาดเคล็ดลับซึ่งทำให้มีช่องว่างเพิ่มขึ้นอย่างน่าอึดอัดเพื่อให้ข้อความที่เป็นตัวหนาสามารถขยายได้ โดยไม่ต้องเขยิบรายการข้อความใกล้เคียง (ฉันใส่การระบุแหล่งที่มาหลังข้อความตัวหนาเพื่อให้คุณเห็นว่าข้อความนั้นไม่เคลื่อนไหวอย่างไร)
ในอนาคตเราจะมีมากขึ้นแบบอักษรตัวแปรความสามารถในสิ่งที่ต้องการเปลี่ยนเกรดอักษรfont-variation-settings
ผ่านทาง การรองรับเบราว์เซอร์กำลังเพิ่มมากขึ้น (Chrome 63+, Firefox 62+) แต่ยังต้องการแบบอักษรมากกว่ามาตรฐานและแบบอักษรที่มีอยู่เพียงไม่กี่แบบที่รองรับ
หากคุณฝังแบบอักษรตัวแปรคุณจะสามารถใช้ CSS ดังนี้:
/* Grade: Increase the typeface's relative weight/density */
@supports (font-variation-settings: 'GRAD' 150) {
li:hover { font-variation-settings: 'GRAD' 150; }
}
/* Failover for older browsers: tiny shadows at right & left of the text
* (replace both instances of "black" with the font color) */
@supports not (font-variation-settings: 'GRAD' 150) {
li:hover { text-shadow: -0.06ex 0 black, 0.06ex 0 black; }
}
มีการสาธิตสดพร้อมแถบเลื่อนเพื่อเล่นกับเกรดต่างๆใน Mozilla Variable Fonts Guide การแนะนำแบบอักษรตัวแปรของ Google บนเว็บมี GIF แบบเคลื่อนไหวที่แสดงการสลับระหว่างเกรดสูงและไม่มีเกรด