避免濫用子選擇器

CSS的選擇符是有權重的,當不同選擇符的樣式設置有沖突時,會采用權重高的選擇符設置的樣式。

如果CSS選擇符權重相同,那么樣式會遵循就近原則,哪個選擇符最后定義,就采用哪個選擇符的樣式。

如果忽略了CSS選擇符權重,會產生意想不到的小麻煩。

需求與方案

<style type=”text/css”>
#test { font-size: 14px; }
</style> 
<p id=”test”>CSS 選擇符權重很重要</p>

現在需要將“很重要”三個字設置為紅色,我們的做法如下:

方案一,利用子選擇器

<style type=”text/css”>
#test { font-size: 14px; }
#test span { color: red; }
</style> 
<p id=”test”>CSS 選擇符權重<span>很重要</span></p>

方案二,新建class

<style type=”text/css”>
#test { font-size: 14px; }
.red { color: red; }
</style> 
<p id=”test”>CSS 選擇符權重<span class=”red”>很重要<span></p>

很多工程師推薦使用方案一,因為使用子選擇器可以避免新增class,讓HTML代碼更簡潔。這么考慮是有道理的,但如果這時需求有變化,需要添加新的文字進來。

改變需求

<style type=”text/css”>
#test { font-size: 14px; }
#test span { color: red; }
</style> 
<p id=”test”>CSS 選擇符權重<span>很重要</span>, 我們要小心處理</p>

?

要求將‘小心處理’設置為綠色,我們可能會這樣做。

<style type=”text/css”>
#test { font-size: 14px; }
#test span { color: red; }
.green { color: green; }
</style> 
<p id=”test”>
CSS 選擇符權重<span>很重要</span>, 我們要<span class=”green”>小心處理<span></p>

本以為‘小心處理’會設置為綠色,但被權重更高的#test span設置為紅色。子選擇器在無意中影響到了我們新添加的代碼。如果想要達到我們的預期,重寫代碼如下

<style type=”text/css”>
#test { font-size: 14px; }
#test span { color: red; }
#test .green { color: green; }
</style> 
<p id=”test”>
CSS 選擇符權重<span>很重要</span>, 我們要<span class=”green”>小心處理<span></p>

而如果使用方案二,情況會怎么樣呢

<style type=”text/css”>
#test { font-size: 14px; }
.red { color: red; }
.green { color: green; }
</style> 
<p id=”test”>CSS 選擇符權重<span class=”red”>很重要<span>,我們要<span class=”green”>小心處理<span></p>

因為沒有子選擇器,所以我們給新添加的代碼掛上新的class,就可以順利地完成樣式設置了。

小結

使用子選擇器,會增加CSS選擇符的權重,CSS選擇符權重越高,樣式越不容易被覆蓋,越容易對其他選擇符產生影響。所以,除非確定HTML結構非常穩定,不會再修改了,否則盡量不要使用子選擇器。為了保證樣式容易被覆蓋,提高可維護性,CSS選擇符需要保證權重盡可能低。

低權重原則——避免濫用子選擇器

轉載于:https://www.cnblogs.com/mackxu/p/chlid-selector.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259510.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259510.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259510.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++中的空類,默認產生哪些類成員函數?

class Empty { public:/*Empty();//默認構造函數Empty(const Empty& rhs);//拷貝構造函數~Empty();//析構函數Empty& operator(const Empty& rhs);//賦值函數Empty* operator&();//取地址運算符const Empty* operator&() const;//取址運算符 const */ prot…

php exist echo,PHP函數file_exists介紹

&#xfeff;定義和用法file_exists() 函數檢查文件或目錄是否存在。如果指定的文件或目錄存在則返回 true&#xff0c;否則返回 false。exists中文翻譯為存在的意思。語法file_exists(path)例子Example #1<?phpecho file_exists("test.txt");?>輸出&#x…

閉包應用之延遲函數setTimeout

根據HTML 5標準&#xff0c;setTimeout推遲執行的時間&#xff0c;最少是5毫秒。如果小于這個值&#xff0c;會被自動增加到5ms。 每一個setTimeout在執行時&#xff0c;會返回一個唯一ID&#xff0c;把該ID保存在一個變量中&#xff0c;并傳入clearTimeout&#xff0c;可以清除…

并行編程2——多核體系架構

1.1 多核處理器定義 多內核處理器架構是指&#xff1a;芯片設計工程師在單個處理器中集成兩個或多個 “執行內核&#xff08;即計算引擎&#xff09;”。多內核處理器可直接插入到單一處理器基座中。但是&#xff0c;操作系統會把它的每個執行內核作為獨立的邏輯處理器&#x…

21:蘋果和蟲子2

團隊QQ&#xff1a;466373640個人博客&#xff1a;www.doubleq.winc/noi/信息學奧數博客&#xff1a;http://www.cnblogs.com/zwfymqz 1:蘋果和蟲子2 查看提交統計提問總時間限制:1000ms內存限制:65536kB描述你買了一箱n個蘋果&#xff0c;很不幸的是買完時箱子里混進了一條蟲子…

php運行代碼運行退出為0,php – Selenium測試用例返回進程以退出代碼0結束

你使用“phpunit yourTestCase.php”而不是“php yourTestCase.php”嗎&#xff1f;我使用phpunit(3.5.14)和“selenium-server-standalone-2.0rc2.jar”運行你的testfile,沒有問題(除了測試本身失敗)&#xff1a;PHPUnit 3.5.14 by Sebastian Bergmann.ETime: 10 seconds, Mem…

Xcode6中使用initWithTitle:title image:image selectedImage:自定義圖片

使用xcode6來運行項目&#xff0c;發現使用原生的tabbar上的圖片不顯示了。這個問題是因為xcode6中的一些api方法被廢棄了,同時tabbar上圖片的渲染方式發生了改變。先看xcode6中的tabbar api方法的變更&#xff1a;- (void)setFinishedSelectedImage:(UIImage *)selectedImage …

[Node.js]get/post請求

摘要 在很多情況下&#xff0c;我們的web服務器都需要接受客戶端瀏覽器傳遞的參數或者數據。最常見的是get和post請求。 獲取get請求的內容 get請求傳遞的參數在url中&#xff0c;參數部分在?后面。因此可以手動解析后面的內容作為get請求的參數。node.js中url模塊中的parse函…

MyEclipse10 Tomcat7 JDK1.7 配置

第一步.MyEclipse10 Tomcat7 JDK1.7下載 MyEclipse10http://downloads.myeclipseide.com/downloads/products/eworkbench/indigo/installers/myeclipse-10.0-offline-installer-windows.exe Tomcat http://tomcat.apache.org/ Java SE Development Kit 7 WINDOWS版 http://www…

類的靜態成量變量必須初始化

因為類的靜態成員變量是所有實例共用的.所以得在類外初始化. 調用的時候可以通過對象調用,也可以通過類直接調用 classA { public: inti; //有默認值}; classB { public: staticintn;staticA Aobj;}; intB::n 1; //靜態成員變量的初始化A B::Aobj; //靜態…

2階節IIR算法C語言源碼

純C語言軟件算法&#xff0c;沒有做過多優化&#xff0c;只是實現了基本IIR算法 /****************************************************************************** * 二階IIR濾波器單元,采用直接II型 * 由多個2階節&#xff0c;可以組成更多高階的濾波器 * 根據參數的不同&a…

HDU 3709 Balanced Number (數位DP)

題意 求出[x, y] 范圍內的平衡數&#xff0c;平衡數定義為&#xff1a;以數中某個位為軸心&#xff0c;兩邊的數的偏移量為矩&#xff0c;數位權重&#xff0c;使得整個數平衡。 思路 外層枚舉平衡點&#xff0c;然后數位DP即可。設計狀態&#xff1a; dp[pos][o][left_right] …

跳過 Windows RT的UI

RT啟動進入常規桌面 微軟Surface RT發布的時間已經不短了&#xff0c;相信很多朋友都已經熟悉了這個全新的平板&#xff0c;并且已經上手。Surface RT開機默認進入的界面為Windows UI&#xff0c;這對于經常使用App的朋友來說并沒有什么&#xff0c;但是對于那些經常使用Office…

matlab調用mstg,實驗五 雙線性變換法設計IIR數字濾波器

實驗五 IIR 數字濾波器設計一、實驗目的(1)熟悉用雙線性變換法設計IIR 數字濾波器的原理與方法&#xff1b;(2)學會調用MATLAB 信號處理工具箱中濾波器設計函數設計各種IIR 數字濾波器&#xff0c;學會根據濾波需求確定濾波器指標參數。(3)掌握IIR 數字濾波器的MATLAB 實現方法…

Android知識點剖析系列:深入了解layout_weight屬性

前言 Android中layout_weight這個屬性對于經常搗鼓UI的我們來說&#xff0c;肯定不會陌生。但是我們在真正使用這個屬性時&#xff0c;經常會出現一些莫名奇妙的布局效果&#xff1b;如果僅僅知其然而不知其所以然&#xff0c;一些意外的布局效果一定讓我們頗為頭疼。在本文中&…

C++ 中explicit的使用

C提供了關鍵字explicit&#xff0c;可以阻止不應該允許的經過轉換構造函數進行的隱式轉換的發生。聲明為explicit的構造函數不能在隱式轉換中使用。 C中&#xff0c; 一個參數的構造函數(或者除了第一個參數外其余參數都有默認值的多參構造函數)&#xff0c; 承擔了兩個角色。1…

BZOJ 1026 windy數 (數位DP)

題意 區間[A,B]上&#xff0c;總共有多少個不含前導零且相鄰兩個數字之差至少為2的正整數&#xff1f; 思路 狀態設計非常簡單&#xff0c;只需要pos、limit和一個前驅數pre就可以了&#xff0c;每次枚舉當前位時判斷是否與上一位相差2即可。一個需要注意的地方是第一位不用比較…

oracle診斷,Oracle?診斷事件列表

Oracle 診斷事件列表(2013-03-26 18:05:26)標簽&#xff1a;oracle診斷事件itORA-10000: controlfile debug event, name control_fileORA-10001: controlfile crash event1ORA-10002: controlfile crash event2ORA-10003: controlfile crash event3ORA-10004: controlfile cra…

考研數學:【以錯補錯】 降低做題出錯率

考研數學&#xff1a;以錯補錯 降低做題出錯率  眾所周知&#xff0c;數學需要做題&#xff0c;需要通過做題來鞏固掌握&#xff0c;但很多同學卻陷入了題海戰術&#xff0c;把所有的精力都放在數學練習上&#xff0c;一門心思做題&#xff0c;可幾個月下來卻沒有進展&#x…

treeview右鍵添加新節點

private void advTree1_MouseDown(object sender, MouseEventArgs e){if (e.Button MouseButtons.Right)//判斷你點的是不是右鍵{Point ClickPoint new Point(e.X, e.Y);Node CurrentNode advTree1.GetNodeAt(ClickPoint);if (CurrentNode ! null)//判斷你點的是不是一個節點…