CSS更好利用text-decoration屬性顯示文字特效

來源:互聯網
上載者:User

text-decoration屬性可以做很多事情,我們來學習這個屬性實現更多細緻的樣式。

文字可以有更多裝飾

例如:

a {
  text-decoration: underline overline;
}

可以看到在Almanac 中text-decoration修飾的內容,更具體點,它給子屬性text-decoration-line添加多個屬性值。


改變裝飾的顏色

底線的顏色預設為文本設定color的屬性值,但你可以改變:

a {
  text-decoration-color: #f06d06;
}

觀察在Almanac中 text-decoration-color修飾的內容。

注意在Gecko裡底線是呈現在字型的下面,然而在WebKit/Blink裡底線呈現在字型的上面:

如今處理彩色底線普遍使用border來代替text-decoration。邊框可以比text-decoration更好的獨立控制底線的顏色,寬度以及位置。

但有一些事情border是做不了的,就像......


改變裝飾的樣式

border無法實現下面的樣式!

a {
  text-decoration-style: wavy;
}

觀察Almanac 中text-decoration-style修飾的內容。


它會變得更好

現如今已經有很多方法可以更好的實現帶底線的文本。例如,使用skip可以更好的增強閱讀性,就像下面一樣:

上面例子是用 text-decoration-skip實現的,可是並不是所有瀏覽器都支援。同時,使用較寬鬆的底線以及減少contrast-y的值可能會更好,這裡使用了rgba():

text-decoration

隱藏底線只是它的(text-decoration)的一個功能,此外,你也可以用skip修飾一些行內元素,空格,甚至控制edges。

需要注意的是Safari/iOS瀏覽器似乎會使用預設的skip值。


匯總

html

<div class="style">  line:  <button>underline</button>  <button>line-through</button>  <button>overline</button></div><div class="color">  color:  <button>black</button>  <button>red</button>  <button>gray</button></div><div class="skip">  skip:  <button>objects</button>  <button>spaces</button>  <button>ink</button>  <button>edges</button>  <button>box-decoration</button>  <button>trailing-spaces</button></div><p class="solid">text-decoration-style: solid;</p><p class="double">text-decoration-style: double;</p><p class="dotted">text-decoration-style: dotted;</p><p class="dashed">text-decoration-style: dashed;</p><p class="wavy">text-decoration-style: wavy;</p>


CSS

.solid {   text-decoration-style: solid; }.double {   text-decoration-style: double;}.dotted {   text-decoration-style: dotted; }.dashed {   text-decoration-style: dashed; }.wavy {   text-decoration-style: wavy; }/* styling for Pen, unrelated to text-decoration-style */body {   font-family: sans-serif;}p {  text-decoration: underline;  font-size: 2em;}div {  line-height: 1.5;}JS$(".style button").on("click", function() {  $("p").css("text-decoration-line", $(this).text());});$(".color button").on("click", function() {  $("p").css("text-decoration-color", $(this).text());});$(".skip button").on("click", function() {  $("p").css("text-decoration-skip", $(this).text());});





text-decoration屬性變成了屬性簡寫

跟著最新的CSS規範,text-decoration現在的寫法是這樣的:

a {
  text-decoration: overline aqua wavy;
}

text-decoration屬性現在需要用三種屬性值來表示了:text-decoration-line, text-decoration-color, and text-decoration-style.

但不幸的是,目前只有Firefox瀏覽器實現了對這些新屬性的支援。

你可以用Firefox瀏覽器試一試下面的示範:
HTML代碼

<a href="#" id="a">IT'S LIKE WATER, PEOPLE

(You should see a wavy line on top. Currently works only in Firefox)

CSS代碼


body {
  padding: 30px;
  text-align: center;
  font-family: Arial, sans-serif;
}

a, a:visited {
  color: blue;
  background: aqua;
  -moz-text-decoration-color: aqua;
  -moz-text-decoration-line: overline;
  -moz-text-decoration-style: wavy;
  text-decoration-color: aqua;
  text-decoration-line: overline;
  text-decoration-style: wavy;
}

示範


在這示範中,我們沒有使用簡寫形式,而是分開描述每個屬性。這是可以更好的保證瀏覽器的向後相容,使那些目前不支援這種寫法的瀏覽器也不受影響。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.