柚子快報(bào)激活碼778899分享:前端 CSS基礎(chǔ)
柚子快報(bào)激活碼778899分享:前端 CSS基礎(chǔ)
文章目錄
1.浮動(dòng)1.1盒子浮動(dòng)后的特點(diǎn)1.2清楚浮動(dòng)元素的影響1.3清除浮動(dòng)影響的方法
2.浮動(dòng)的應(yīng)用舉例2.1 圖文混排及首字下沉效果2.2水平導(dǎo)航條2.3新聞欄目框
網(wǎng)頁(yè)是一種在瀏覽器上展示的平面設(shè)計(jì)作品 , 網(wǎng)頁(yè)布局就是將網(wǎng)頁(yè)元素合理排列在網(wǎng) 頁(yè)版面上 ,達(dá)到美觀大方 、井然有序的效果 。使用 CSS進(jìn)行網(wǎng)頁(yè)布局 ,本質(zhì)是利用標(biāo)準(zhǔn)流 、 浮動(dòng)或定位屬性的性質(zhì)對(duì)網(wǎng)頁(yè)布局元素進(jìn)行合理排列 。
1.浮動(dòng)
在標(biāo)準(zhǔn)流中 ,塊級(jí)元素的盒子都是上下排列 ,行內(nèi)元素的盒子都是左右排列 ,如果僅按 照標(biāo)準(zhǔn)流的方式進(jìn)行排列 , 就只有這幾種可能性 , 限制太大 。CSS的制定者也 想 到 了 這 樣 排列限制的問(wèn)題 , 因此又給出了浮動(dòng)和定位方式 ,從而使排版的靈活性大大提高 。 如果希望相鄰的塊級(jí)元素盒子左右排列(所有盒子浮動(dòng))或者希望一個(gè)盒子被另一個(gè)盒 子中的內(nèi)容所環(huán)繞(一個(gè)盒子浮動(dòng))作出圖文混排的效果 ,最簡(jiǎn)單的實(shí)現(xiàn)辦法就是運(yùn)用浮動(dòng) (float)屬性使盒子在浮動(dòng)方式下定位 。
1.1盒子浮動(dòng)后的特點(diǎn)
在標(biāo)準(zhǔn)流中 ,一個(gè)塊級(jí)元素在水平方向會(huì)自動(dòng)伸展 ,在它的父元素中占滿整個(gè) 一 行 ; 而 在豎直方向和其他元素依次排列 , 不能并排 。使用 “浮動(dòng) ”方式后 ,這種排列方式就會(huì)發(fā)生改變 。 CSS中有 一 個(gè) float屬性 , 默認(rèn)值為 none,也 就 是 標(biāo) 準(zhǔn)流 通 常 的 情 況 , 如 果 將 float 屬 性 的 值 設(shè) 為 left或 right,元素就會(huì)向其父元素的左側(cè)或右側(cè)靠緊 , 同時(shí)盒子 的寬度不再伸 展 , 而 是 收 縮 , 在 沒 設(shè) 置 寬 度 時(shí) , 會(huì) 根 據(jù) 盒 子里面的內(nèi)容來(lái)確定寬度 。 下面通過(guò)一 個(gè) 例子來(lái) 演 示 浮 動(dòng) 的 作 用 , 基 礎(chǔ) 代 碼 如 下 ,這個(gè)代碼中沒有使用浮動(dòng) 。
div{
padding:10px;
margin:10px;
border:1px dashed #111;
background-color:#90baff;
}
.father{
background-color:#ff9;
border:1px solid #111;
}
一個(gè)盒子浮動(dòng)
.son1{ float:left; }
可發(fā)現(xiàn)給 Box-1添加浮動(dòng)屬性后 ,Box-1的寬度不再自動(dòng)伸展 , 而且不再占據(jù)原來(lái)瀏覽 器分配給它的位置 。如果再在未浮動(dòng)的盒子 Box-2中添 一 行文本 ,就會(huì)發(fā)現(xiàn) Box-2中的內(nèi) 容是環(huán)繞著浮動(dòng)盒子的。
總結(jié) : 設(shè)置元素浮動(dòng)后 ,元素發(fā)生了如下一些改變 。 ? 浮動(dòng)后的盒子將以行內(nèi)塊(inline-block) 元素顯示 , 即寬度會(huì)自動(dòng)收縮 ,但保持塊級(jí) 元素的其他性質(zhì) ? 浮動(dòng)的盒子將脫離標(biāo)準(zhǔn)流 , 即不再占據(jù)瀏覽器原來(lái)分配給它的位置 。 ? 未浮動(dòng)的盒子將占據(jù)浮 動(dòng) 盒 子 的 位 置 , 同 時(shí) 未 浮 動(dòng) 盒 子 內(nèi) 的 內(nèi) 容 會(huì) 環(huán) 繞 浮 動(dòng) 后 的 盒子 。 “脫離標(biāo)準(zhǔn)流 ”是指元素不再占據(jù)在標(biāo)準(zhǔn)流下瀏覽器分配給它的空間 ,其他元素就好像 這個(gè)元素不存在一樣 。例如圖 4-2中 , 當(dāng) Box-1浮動(dòng)后 ,Box-2就頂?shù)搅?Box-1的位置 ,相當(dāng) 于 Box-2視 Box-1不存在一樣 。但是 ,浮動(dòng)元素并沒有完全脫離標(biāo)準(zhǔn)流 ,這表現(xiàn)在浮動(dòng)盒子 會(huì)影響未浮動(dòng)盒子中內(nèi)容的排列 , 例如 ,Box-2中的內(nèi)容會(huì)跟在 Box-1盒子之后進(jìn)行排列 , 而不會(huì)忽略 Box-1盒子的存在。
多個(gè)盒子浮動(dòng)
.son1, .son2{ float:left; }
可發(fā)現(xiàn) Box-2盒子浮動(dòng)后 仍然遵循上面浮動(dòng)的規(guī)律 , 即 Box-2的寬度也不再自動(dòng)伸展 ,而且不再占據(jù)原來(lái)瀏覽器分配 給它的位置 。 如果將 Box-1的浮動(dòng)方式改為右浮動(dòng) : . son1{float:right} ,可看到 Box-2移動(dòng)到了 Box-1的前面 ,這說(shuō)明元素浮動(dòng)后其顯示順序和它們?cè)诖a中的位 置可能并不一致 。 對(duì)于多個(gè)盒子浮動(dòng) ,除了遵循單個(gè)盒子浮動(dòng)的規(guī)律外 ,還有以下兩條規(guī)律 。 ? 多個(gè)浮動(dòng)元素不會(huì)相互重疊 ,一個(gè)浮動(dòng)元素的外邊界(margin)碰到另 一個(gè)浮動(dòng)元素 的外邊界后便停止運(yùn)動(dòng) 。 。若包含的容器太窄 ,無(wú)法容納水平排列的多個(gè)浮動(dòng)元素 ,那么最后的浮動(dòng)盒子會(huì)向 下移動(dòng)。但如果浮動(dòng)元素的高度不同 ,那當(dāng)它們向下移動(dòng)時(shí)可能會(huì)被卡 住。
1.2清楚浮動(dòng)元素的影響
clear是清除浮動(dòng)屬性 ,它的取值有 left、right、both和 none(默認(rèn)值) ,如果設(shè)置盒子的 clear屬性值為 left或 right, 表示該盒子的左邊或右邊不·允許有浮動(dòng)的元 素 。值設(shè)置為both則表示兩邊都不允許有浮動(dòng)元素 , 因此該盒子將會(huì)在瀏覽器中另起一行顯示 。
在1.1兩個(gè)盒子浮動(dòng)的基礎(chǔ)上 ,設(shè)置 Box-3清除浮動(dòng) , 即1.1基礎(chǔ)上 設(shè)置如下 CSS代碼。
.son1{ float:right; }
.son2{ float:left; }
.son3{ clear:both; }
可以看到 ,對(duì) Box-3清除浮動(dòng)(clear:both;) ,表示 Box-3的左右兩邊都不允許有浮動(dòng)的 元素 , 因此 Box-3移動(dòng)到了下一行顯示 。 實(shí)際上 ,clear屬性既可以用在未浮動(dòng)的元素上 ,也可以用在浮動(dòng)的元素上 。
對(duì) Box-3同時(shí)設(shè)置清除浮動(dòng)和浮動(dòng) 。
.son3{clear:both; float:left;}
可看到 Box-3的左右仍然沒有浮動(dòng)的元素。 由此可見 ,清除浮動(dòng)是清除其他盒子浮動(dòng)對(duì)該元素的影響 ,而設(shè)置浮動(dòng)是讓元素自身浮 動(dòng) ,兩者并不矛盾 , 因此可同時(shí)設(shè)置元素清除浮動(dòng)和浮動(dòng) 。 由于上下 margin疊 加 現(xiàn) 象 只 會(huì) 發(fā) 生 在 標(biāo) 準(zhǔn) 流 的 情 況 下 , 而 浮 動(dòng) 方 式 下 盒 子 的 任 何 margin都不會(huì)疊加 ,所以設(shè)置盒子浮動(dòng)并清除浮動(dòng)后 ,上下兩個(gè)盒子的 margin不疊加 。Box-3到 Box-1之間的垂直距離是 20px,即它們的 margin之和 。
1.3清除浮動(dòng)影響的方法
在網(wǎng)頁(yè)布局中 ,浮動(dòng)元素會(huì)影響其他元素的正常排列 ,導(dǎo)致網(wǎng)頁(yè)元素不能按我們的意愿 顯示 。 因此設(shè)置元素浮動(dòng)后應(yīng)盡量清除該元素浮動(dòng)對(duì)其他元素的影響 。對(duì)于下列兩種情形 應(yīng)采用不同的方法清除浮動(dòng) 。
來(lái)自子元素的浮動(dòng) 如果一個(gè)父元素內(nèi)所有的子元素都浮動(dòng) ,一定要記得對(duì)這個(gè)父元素做清除浮動(dòng)處理 ,否 則該父元素下面的元素會(huì)頂?shù)礁?dòng)元素的位置上去。
div{ padding:10px; margin:10px;
border:1px dashed #111; background-color:#9bf;}
.father{ background-color:#ff9; border:1px solid #111;}
.cls { clear: both; }
.box3{background:#ccf;}
Box- 1
避免濫用浮動(dòng) 元素浮動(dòng)會(huì)對(duì)其他元素的布局產(chǎn)生影響 , 因此應(yīng)避免濫用浮動(dòng) ,例如 : ? 為了使元素寬 度 收 縮 而 設(shè) 置 浮 動(dòng) , 由 于 浮 動(dòng) 元 素 的 寬 度 會(huì) 自 動(dòng) 收 縮(稱 為 主 動(dòng) 包 裹) ,于是就用浮動(dòng)屬性代替 width屬性 。 實(shí)際上 , 如果只需要改變?cè)氐膶挾?,應(yīng) 設(shè)置 width屬性 ,而不是 float。 ? 為了清除浮動(dòng)的影響而浮動(dòng) ,清除浮動(dòng)正確的做法是使用 clear屬性(例如圖 4-9中 的 Box-3) ,但如果對(duì) Box-3設(shè)置 float屬性 ,再設(shè)置 width值 , 似乎也能達(dá) 到 圖 4-9 中的效果 ,但實(shí)際上這 種 錯(cuò) 誤 的 做 法 將 導(dǎo) 致 更 多 的 元 素 受 到 浮 動(dòng) 的 影 響 而 布 局 混 亂 。 因此 ,如果要清除浮動(dòng)應(yīng)對(duì)相應(yīng)的元素設(shè)置 clear屬性 ,而不是 float。
2.浮動(dòng)的應(yīng)用舉例
利用單個(gè)盒子浮動(dòng) ,可制作出圖文混排及首字下沉等效果 。利用多個(gè)盒子浮動(dòng) ,則可制 作出水平導(dǎo)航條等效果 。
2.1 圖文混排及首字下沉效果
果將一個(gè)盒子浮動(dòng) ,另一個(gè)盒子不浮動(dòng) ,那么浮動(dòng)的盒子將被未浮動(dòng)盒子的內(nèi)容所環(huán) 繞 。如果這個(gè)浮動(dòng)的盒子是圖像元素 ,而未浮動(dòng)的盒子是一段文本 ,那么就實(shí)現(xiàn)了圖文混排 效果 。
在遙遠(yuǎn)古希臘的大草原中 , … … 這就是 “人馬族 ”。
人馬族里唯獨(dú)的 一個(gè)例外 --奇?zhèn)?… …
在圖文混排的基礎(chǔ)上讓第一個(gè)漢字也浮動(dòng) , 同時(shí)變大 ,則出現(xiàn)了首字下沉的效果 。
如果將第一個(gè)段落浮動(dòng) ,再給段落添加邊框 ,則出現(xiàn)了文章導(dǎo)讀框效果 。
p{ margin:0; font-size:14px; line-height:1.5;
text-indent: 2em; }
p:first-child{ width:160px; float:left; / * 第 一個(gè)段落浮動(dòng) * /
margin:10px 10px 0 0;padding:10px;
border:3px gray double;background:#9BD;}
在遙遠(yuǎn)的古希臘大草原中 … …
“半人半獸 ”代表著理性與非理性 … …
從以上 例子可以看出 , 網(wǎng)頁(yè)中無(wú)論是圖像還是文本 ,對(duì)于任何元素 ,在排版時(shí)都應(yīng) 視為一個(gè)盒子 ,而不必在乎元素的內(nèi)容是什么 。
2.2水平導(dǎo)航條
設(shè)置所有 a元素浮動(dòng) ,這是因?yàn)槎鄠€(gè)元素浮動(dòng) ,這些元素就會(huì)水平排列 。 當(dāng) 然水平導(dǎo)航條一般不需設(shè)置寬度 , 可以把 width屬性去掉。
#nav{ font-size: 14px;}
#nav a {
color: red; background-color: #9CF;
text-align: center; text-decoration: none;
padding:6px 10px 4px; border: 1px solid #39F;
float:left; / * 使 a 元素浮動(dòng) ,實(shí)現(xiàn)水平排列 * /}
#nav a+a{margin-left:5px;} / *設(shè)置第 2 到最后 一個(gè) a 元素有 5px 的左間距 * /
#nav a:hover {color: white;background-color: #930;} / *設(shè)置前景色和背景色 * /
? 本例使用了相鄰選擇器( #nava+a) 選中了除第 1個(gè) a元素之外的其他 a元素 ,再 給它們?cè)O(shè)置左邊距 ,這樣就實(shí)現(xiàn)了第 一 個(gè) a元素沒有左邊距 。 ? 設(shè)置了浮動(dòng)后元素將自動(dòng)以塊級(jí)元素顯示 , 因此就不需要再對(duì) # nava選擇器添加 display:block屬性了 , 因?yàn)檫@是多余的 。
2.3新聞欄目框
在網(wǎng)站的首頁(yè)中 ,文字內(nèi)容一般被組織成欄目框的形式 。 網(wǎng)站是按欄目組織內(nèi)容的 , 因 此欄目框是最常見的網(wǎng)頁(yè)界面元素 ,掌握欄目框的制作是網(wǎng)頁(yè)制作中一項(xiàng)重要的基本功 。
欄目框可分為欄目標(biāo)題欄和內(nèi)容列表區(qū) 。對(duì)于欄目標(biāo)題欄 ,常見的結(jié)構(gòu)代碼如下
基層動(dòng)態(tài)
可見 ,欄目標(biāo)題欄由兩部分組成 , 即左邊的欄目標(biāo)題和右邊的 “更多 ”鏈接 , 因此需要兩 個(gè) HTML元素來(lái)存放 。為了將欄目標(biāo)題欄組合成一個(gè)整體 ,使用了一個(gè) div元素將這兩個(gè) 元素包裹起來(lái) 。 對(duì)于 “更多 ”鏈接 ,之所以將其放入一個(gè) span元素中 ,是為了將 CSS布局樣式和 CSS文 本樣式分離 。 即對(duì) span元素設(shè)置布局樣式 ,而對(duì) a元素設(shè)置文本樣式 。span元素在這里起 到了布局元素的作用 。
對(duì)于內(nèi)容列表區(qū)域 ,從語(yǔ)義上看 ,它是一個(gè)典型的無(wú)序列表 , 因此使用 ul元素來(lái)描述列 表區(qū)域 ,其結(jié)構(gòu)代碼如下 。
- 計(jì)算機(jī)科學(xué)與技術(shù)系 … … 07-25
- 會(huì)計(jì)系舉辦 2017 年 … … 07- 06
…
然后將標(biāo)題欄代碼和內(nèi)容列表區(qū)域代碼用 一 個(gè) div元素包含起來(lái) , 即得到欄目框的完 整結(jié)構(gòu)代碼如下 。
基層動(dòng)態(tài)
提示 : 由于在網(wǎng)頁(yè)中 一般有多個(gè)欄目框 , 因此對(duì)欄目框中的元素 一 般設(shè)置 class屬性 , 而不設(shè)置id屬性 ,從而使欄目框的樣式代碼可以被很多個(gè)風(fēng)格相似的欄目框共用 。
完
柚子快報(bào)激活碼778899分享:前端 CSS基礎(chǔ)
參考文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。