1、CSS後代選擇器詳解css
1, 生動介紹基本概念html
一個標籤嵌B在另外一個標籤A內部,B就是A的後代。web
並且,B的後代也是A的後代,這就叫「子子孫孫無窮盡也」。瀏覽器
好比:網絡
<div>ide
<p>這個p標籤是div的後代</p>學習
<div>字體
後代選擇器就是用來選擇一個標籤的後代的;網站
兩個選擇器中間添加一個【空格】就構成了後代選擇器,空格後面的那個是後代。設計
例如:
div p { color : red; }
它會選擇一堆的p標籤,只要這個p標籤是嵌套在某個div標籤內部的,也就是隻要p有一個爹或祖先是div就行。
那麼,選中的p標籤內部的字體,都會被設置爲紅色。
2, 具體例子一個
新建一個網頁a.html,複製下面的內容
<html>
<head>
<style type="text/css">
.YeYe div { color : red; }
</style>
</head>
<body >
<div class="YeYe">
爺爺
<div>
爸爸
<div >
我
</div>
</div>
<div>
叔叔
<div>
堂弟
</div>
</div>
</div>
</body>
</html>
在瀏覽器中查看,效果圖以下:
過春節了,爺爺給後代都發了紅包,所以把後代都設置爲了紅色字體。
.YeYe div { color : red; }
這裏給爺爺添加了一個類 YeYe;
爸爸、叔叔、我、堂弟,都是div,咱們又都是爺爺的後代;
所以使用後代選擇器,對咱們設置一個相同的樣式就特別簡單。
3, 注意事項
(1) 避免類名氾濫
自從出現了CSS,就有點使用類名氾濫。
動不動就給不少標籤添加類名,而後使用類名選擇器設置樣式,當有過多的類名的時候,你的html結構其實已經被污染了,或者你的html設計有問題。
像這個例子,一些人可能就會給爸爸、叔叔、我、堂弟分別添加上類名,而後統一設置一下樣式,這就不如使用後代選擇器。
給你說個類名氾濫的例子吧,你們看看下面的這段html源代碼,
<div class="right tabs" monkey="search" alog-alias="search">
<a hidefocus="true" class="tab tab-hook s-bg20 g-fc5 g-fc5h curr curr-hook" data-tab="web" href="#">網頁</a><a hidefocus="true" class="tab tab-hook g-fc0" data-tab="music" href="#">音樂</a><a hidefocus="true" class="tab tab-hook g-fc0" data-tab="video" href="#">視頻</a><a hidefocus="true" class="tab tab-hook g-fc0" data-tab="image" href="#">圖片</a><a hidefocus="true" class="tab tab-hook g-fc0" data-tab="tieba" href="#">貼吧</a><a hidefocus="true" class="tab tab-hook g-fc0" data-tab="zhidao" href="#">知道</a><a hidefocus="true" class="tab tab-hook g-fc0" data-tab="news" href="#">新聞</a><a hidefocus="true" class="tab tab-hook g-fc0" data-tab="map" href="#">地圖</a><a hidefocus="true" class="tab more g-fc0" style="" href="#">更多>></a>
</div>
是否是使用了不少類名,每一個a標籤都有重複的類名tab tab-hook g-fc0
你們知道這是哪一個網站的源代碼嗎?
這是我複製hao123.com菜單中的源代碼。
這但是大名鼎鼎的hao123網站導航網啊。竟然犯這種錯誤。
不過,咱們也不能怪設計人,hao123的創始人李興平之前是一個網吧管理員,和專業的前段開發工程師比起來固然不行。
不過,他憑藉敏銳的市場嗅覺、吃苦耐勞的精神、中國網絡起步的時機,創辦了hao123導航網,這一點但是值得咱們全部人學習啊。
2004年8月,百度以1190萬元和4萬股股票收購了hao123。
當時,李興平也是捨不得賣掉本身的孩子啊,對於每個站長來講,本身的網站都是本身的孩子,可是他實在是想不出來hao123的下一步發展方向是哪裏,所以就賣給了百度。
從李興平的身上,咱們能夠學習到,技術,並非最重要的成功因素,成功是不少因素湊到一塊兒得來的,就像打麻將,三缺一是打很差的。
(2) 後代選擇器是從右向左開始的
好比下面這個例子
div p { color : red; }
瀏覽器會先找到全部的p標籤,由於瀏覽器是從右向左看的,不像咱們人眼,是從左向右看的。
找到一個p後,它會向上找,看看有沒有標籤div,若是p有一個爹或祖先是div,那麼這個p就被選中了。
參考文章:
2、CSS子選擇器詳解
1, 基本概念介紹
子就是兒子。
子選擇器說的就是選擇一個標籤的兒子。
好比
<div>
<p>這個p標籤是div的兒子</p>
<div>
這個p標籤是div的下一級,嵌套在div內部,它就是div的兒子。
和後代選擇器不一樣的是,在兩個標籤中間使用【>】就構成了子選擇器。
好比
div > p { color : red; }
這裏就設置div的兒子p的字體爲紅色。
2, 例子
新建一個網頁a.html,複製粘貼下面的內容
<html>
<head>
<style type="text/css">
.YeYe div { color : red; }
.YeYe > div { margin-left: 50px; }
</style>
</head>
<body >
<div class="YeYe">
爺爺
<div>
爸爸
<div >
我
</div>
</div>
<div>
叔叔
<div>
堂弟
</div>
</div>
</div>
</body>
</html>
效果圖以下:
這裏設置了爺爺div的後代都爲紅色字體,代碼以下:
.YeYe div { color : red; }
而後又設置了爺爺的兒子左外邊距爲50px,就是讓兒子都退後50步:
.YeYe > div { margin-left: 50px; }
由於我和堂弟的爹都後退了50步,咱們是嵌套在爹的裏面的,也跟着後退了50步。
若是你在添加上下面的樣式:
.YeYe > div > div { margin-left: 50px; }
那麼,我相對我爹、堂弟相對叔叔,各自退後50步,效果圖以下:
如今輩分不亂了,爺爺第一級,爸爸和叔叔第二級,我和堂弟第3級,並且使用CSS讓html表現出來的樣式也有層次感了。
完整的代碼以下:
<html>
<head>
<style type="text/css">
.YeYe div { color : red; }
.YeYe > div { margin-left: 50px; }
.YeYe > div > div { margin-left: 50px; }
</style>
</head>
<body >
<div class="YeYe">
爺爺
<div>
爸爸
<div >
我
</div>
</div>
<div>
叔叔
<div>
堂弟
</div>
</div>
</div>
</body>
</html>