搞怪的CSS: text-decoration
在改一個專案的時候卻遇到了一個莫名其妙的屬性:text-decoration,這個屬性,其實就只是用來把一段文字加上上橫線、刪除線或底線的屬性罷了,通常會用在移除超連結的底線、或一些特殊強調的效果裡頭,但是這麼容易的屬性,為什麼會莫名其妙呢?就讓我們繼續看下去~
專案裡遇到的問題
在我的專案裡頭遇到的問題如下,一個div裡頭包了一個span,我要“除了這個span之外,其他所有的文字都有底線”,通常看到這個問題一定覺得很簡單,只要照下面的CSS寫法一定可以達成:
div{ font-size:20px; text-decoration: underline; } div span{ text-decoration: none; }
理論上應該前一段會有底線,後一段會沒有底線,但是實際上卻是一條底線通到底…..
不過我不信邪,怕是哪裡CSS權重出了問題,直接加上萬惡的important試試看,結果發現結果還是一模一樣!天呀!是見到鬼了嗎!
div{ font-size:20px; text-decoration: underline; } div span{ text-decoration: none!important; }
由於實在是太詭異了,必須要查明原因,於是我換個角度思考,來改一下顏色試試看吧!一改才發現不得了,為什麼底線會是紅色的呀?!
div{ font-size:20px; color:#f00; text-decoration: underline; } div span{ color:#00f; text-decoration: none!important; }
text-decoration屬性定義
看到這邊我已經大概知道原因了,最有可能的原因應該就是出在text-decoration這個屬性的定義,經過一番追根究柢,總算看到W3C的說法,主要是因為text-decoration會把整個父元素加上底線,而整個父元素,當然就包含了子元素,因為同樣顏色的緣故,就以為子元素也被加上底線了,(實際上子元素沒有被加上底線),不過後來又看了這個專門分析相容性問題的網站說明,其實text-decoration會根據不同的display屬性,而決定父元素的底線是否延伸,舉例來說吧!如果今天我把span的display改成inline-block,就會得到不同的結果:
div{ font-size:20px; color:#f00; text-decoration: underline; } div span{ display:inline-block; color:#00f; text-decoration: none!important; }
小結
不過由於各家瀏覽器的渲染不同,加上已經明白了箇中原理,這裡就不做太多的測試,只要記得下次如果又遇到這種問題,可能就是父元素和子元素互相干擾所造成,自己也要特別留心。最後,好像也可以利用這種方法,做出莫名其妙的效果…
HTML
<div> <span><span><span>真是很莫名其妙的效果<span></span></span> </div>
CSS
div{ font-size:30px; color:#f00; text-decoration:overline; } div span{ color:#00f; text-decoration: line-through; } div span span{ color:#0f0; text-decoration: underline; } div span span span{ color:#000; text-decoration: none; }
自己是一個五年的前端工程師,希望本文對你有幫助!
這裡推薦一下我的前端學習交流扣qun:731771211 ,裡面都是學習前端的,如果你想製作酷炫的網頁,想學習程式設計。自己整理了一份2019最全面前端學習資料,從最基礎的HTML+CSS+JS【炫酷特效,遊戲,外掛封裝,設計模式】到移動端HTML5的專案實戰的學習資料都有整理,送給每一位前端小夥伴,每天分享技術
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901074/viewspace-2644858/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CSS 文字裝飾 text-decoration & text-emphasisCSS
- text-decoration與color屬性
- 你不知道的下劃線屬性-text-decoration
- 趣味橫生的程式設計師搞怪程式碼註釋程式設計師
- Sneaky Sasquatch Mac(搗蛋大腳怪搞怪冒險遊戲)Mac遊戲
- 從高冷硬核到搞怪荒誕,模擬器遊戲這些年的妥協與考量遊戲
- CSS中的“大白”——CSS 動畫CSS動畫
- 【CSS】【11】CSS盒子的定位CSS
- 程式演義第一五回 唐僧設計水仙花搞怪,悟空裝痴一用計數器
- 【CSS】【7】CSS的盒子模型CSS模型
- 奇妙的 CSS shapes(CSS圖形)CSS
- 巧妙的CSSCSS
- 有趣的cssCSS
- CSS Tricks - 你應該知道的 CSS 技巧CSS
- css知多少(2)——學習css的思路CSS
- CSS系列:在HTML中引入CSS的方法CSSHTML
- 有趣的CSS題目(14): 純 CSS 方式實現 CSS 動畫的暫停與播放!CSS動畫
- 【CSS】我如何解釋CSS變數的好CSS變數
- CSS系列:CSS的繼承與層疊特性CSS繼承
- CSS系列:CSS中盒子之間的關係CSS
- CSS系列:CSS中盒子的浮動與定位CSS
- 奇妙的 CSS MASKCSS
- 常用的CSS框架CSS框架
- css的position:absoluteCSS
- CSS的定位:positionCSS
- CSS中的BFCCSS
- CSS裡的CounterCSS
- CSS的學習CSS
- 我的css之路CSS
- CSS的未來CSS
- css的屬性CSS
- css的偽類CSS
- css的簡介CSS
- CSS的偽元素CSS
- css 命名:BEM, scoped css, css modules 與 css-in-jsCSSJS
- CSS樣式規則-CSS結構的特點CSS
- 有趣的CSS題目(11):reset.css 知多少?CSS
- 【CSS】【16】設定超連結的CSS樣式CSS