CSS元素有哪些重要的定位方法_CSS元素定位有什么方法
CSS有三種基本的定位機(jī)制:普通流、浮動(dòng)和絕對(duì)定位。下面由學(xué)習(xí)啦小編為大家整理的CSS元素定位方法,希望大家喜歡!
CSS元素定位方法
盒子屬性分三組:
邊框(border)??梢栽O(shè)置邊框的寬窄、樣式和顏色。
內(nèi)邊距(padding)??梢栽O(shè)置盒子內(nèi)容區(qū)與邊框的間距。
外邊距(margin)。可以設(shè)置盒子與相鄰元素的間距。
可以這么理解盒子屬性:外邊距是邊框向 外推 其他元素,而內(nèi)邊距是從邊框向 內(nèi)推 元素的內(nèi)容。
CSS 為邊框、內(nèi)邊距和外邊距分別規(guī)定了簡(jiǎn)寫(xiě)屬性。在每個(gè)簡(jiǎn)寫(xiě)聲明中,屬性值的順序都是上、右、下、左(順時(shí)針旋轉(zhuǎn))。
1.1 盒子邊框
邊框(border)有3個(gè)相關(guān)屬性:
寬度
可以使用 thin、medium 和 thick 等文本值,也可以使用
除百分比和負(fù)值之外的任何絕對(duì)值。
樣式
有 none、hidden、 dotted、 dashed、 solid、 double、 groove、
ridge、 inset 和 outset 等文本值。
顏色
可以使用任意顏色值,包括 RGB、 HSL、十六進(jìn)制顏色 值和顏色關(guān)鍵字。
1.2 盒子內(nèi)邊距
內(nèi)邊距(padding)用來(lái)設(shè)置盒子內(nèi)容區(qū)與邊框的間距。在沒(méi)有設(shè)定內(nèi)邊距的情況下,內(nèi)容會(huì)緊挨著邊框。
1.3 盒子外邊距
外邊距(margin)用來(lái)設(shè)置盒子與相鄰元素的間距。
推薦使用這條規(guī)則作為樣式表的第一條規(guī)則:* {margin:0; padding:0;}
說(shuō)明:這條規(guī)則把所有元素默認(rèn)的外邊距和內(nèi)邊距都設(shè)定為零。把這條規(guī)則放到樣式表里后,所有默認(rèn)的外邊距和內(nèi)邊距都會(huì)消失。然后,你可以為那些真正需要外邊距的元素再添加外邊距。不同瀏覽器默認(rèn)的內(nèi)邊距和外邊距也不一樣,特別是對(duì)表單和列表等復(fù)合元素。在這種情況下,用這條規(guī)則 中和 默認(rèn)值,然后再根據(jù)需要添加,則會(huì)在各瀏覽器上獲得一致的效果。
1.4 疊加外邊距
垂直方向上的外邊距會(huì)疊加,這可是你必須得知道的一件事。
In CSS, the adjoining margins of two or more boxes (which might or might not be siblings) can combine to form a single margin. Margins that combine this way are said to collapse, and the resulting combined margin is called a collapsed margin.
在CSS中,兩個(gè)或多個(gè)毗鄰(父子元素或兄弟元素)的普通流中的塊元素垂直方向上的 margin 會(huì)發(fā)生疊加。這種方式形成的外邊距即可稱(chēng)為外邊距疊加(collapsed margin)。
1.5 外邊距的單位
根據(jù)經(jīng)驗(yàn),為文本元素設(shè)置外邊距時(shí)通常需要混合使用不同的單位。比如說(shuō),一個(gè)段落的左、右外邊距可以使用像素,以便該段文本始終與包含元素邊界保持固定間距,不受字號(hào)變大或變小的影響。而對(duì)于上、下外邊距,以 em 為單位則可以讓段間距隨字號(hào)變化而相應(yīng)增大或縮小。
2.浮動(dòng)與清除
浮動(dòng)和清除是用來(lái)組織頁(yè)面布局的一柄利劍,這柄劍的劍刃就是 float 和 clear 屬性。
2.1 浮動(dòng)
浮動(dòng),可以想象把元素從常規(guī)文檔流中拿出來(lái)。浮動(dòng)元素脫離了常規(guī)文檔流之后,原來(lái)緊跟其后的元素就會(huì)在空間允許的情況下,向上提升到與浮動(dòng)元素平起平坐。
如果浮動(dòng)元素后面有兩個(gè)段落,而你只想讓第一段與浮動(dòng)元素并列(就算旁邊還能放第二段,也不想讓它上來(lái)),可以使用 clear 屬性來(lái) 清除 第二段,然后它就會(huì)乖乖地呆在浮動(dòng)元素下面了。
浮動(dòng) 最常見(jiàn)的作用:
實(shí)現(xiàn)傳統(tǒng)出版物上那種文字繞排圖片的效果
讓原來(lái)上下堆疊的塊級(jí)元素,變成左右并列,從而實(shí)現(xiàn)布局中的分欄。
2.2 圍住浮動(dòng)元素的三種方法
注意:三種方法各有利弊,看情況使用。
方法一:為父元素添加 overflow:hidden
方法二:同時(shí)浮動(dòng)元素
方法三:添加非浮動(dòng)的清除元素
3.定位
CSS 布局的核心是 position 屬性,對(duì)元素盒子應(yīng)用這個(gè)屬性,可以相對(duì)于它在常規(guī)文檔流中的位置重新定位。 position 屬性有 4 個(gè)值: static、 relative、 absolute、fixed,默認(rèn)值為 static。
3.1 靜態(tài)定位
static
在靜態(tài)定位的情況下,每個(gè)元素都處于常規(guī)文檔流中。要突破這種布局元素的方式,就必須把盒子的 position 屬性改為其它三個(gè)值。
3.2 相對(duì)定位
relative
相對(duì)定位,相對(duì)的是它原來(lái)在文檔流中的位置(或者默認(rèn)位置)。設(shè)置之后,可以使用 top、right、bottom 和 left 屬性來(lái)改變它的位置。多數(shù)情況下,只用 top 和 left 就可以實(shí)現(xiàn)我們想要的效果。
使用相對(duì)定位的關(guān)鍵就是要考慮到元素原來(lái)的空間。因?yàn)槭褂昧讼鄬?duì)定位的元素只是相對(duì)于原始位置挪動(dòng)了一下,頁(yè)面沒(méi)有任何變化,即元素原來(lái)占據(jù)的空間沒(méi)有動(dòng),其他元素也沒(méi)動(dòng)。
3.3 絕對(duì)定位
absolute
絕對(duì)定位會(huì)把元素徹底從文檔流中拿出來(lái),然后相對(duì)于其他元素(默認(rèn)是定位上下文 body)定位。同樣可以通過(guò) top 和 left 設(shè)定偏移值來(lái)決定位置。
3.4 固定定位
fixed
從完全移出文檔流的角度說(shuō),固定定位與絕對(duì)定位類(lèi)似。但不同之處在于,固定定位元素的定位上下文是視口(瀏覽器窗口或手持設(shè)備的屏幕),因此它不會(huì)隨頁(yè)面滾動(dòng)而移動(dòng)。
提示:固定定位并不常用,最常見(jiàn)的情況是用它創(chuàng)建不隨頁(yè)面滾動(dòng)而移動(dòng)的導(dǎo)航元素。
3.5 定位上下文
定位上下文,指的是定位元素所相對(duì)偏移的元素。
事實(shí)上,只要把元素的外邊距和內(nèi)邊距設(shè)定好,多數(shù)情況下只用靜態(tài)定位就足以實(shí)現(xiàn)頁(yè)面布局了。很多剛開(kāi)始接觸 CSS 的初學(xué)者都會(huì)錯(cuò)誤地設(shè)定 position 屬性,最終才發(fā)現(xiàn)從文檔流中挪出來(lái)的這些元素一點(diǎn)也不好控制。因此,除非真需要那么做,否則 不要輕易修改元素默認(rèn)的 position 屬性。
4.顯示屬性
所有元素都有 position 屬性,也有 display 屬性。
display屬性有三個(gè)值:block、inline 和 none。
塊級(jí)元素,比如段落,標(biāo)題,列表等,在瀏覽器上下堆疊顯示。
行內(nèi)元素,比如a、span、img,在瀏覽器中左右并排顯示,只有前一行沒(méi)有空間時(shí)才會(huì)顯示到下一行。
CSS簡(jiǎn)寫(xiě)優(yōu)化的方法
一、盒子大小
這里主要用于兩個(gè)屬性:margin和padding,我們以margin為例,padding與之相同。盒子有上下左右四個(gè)方向,每個(gè)方向都有個(gè)外邊距:
margin-top:1px;
margin-right:2px;
margin-bottom:3px;
margin-left:4px;
你可以簡(jiǎn)寫(xiě)成:
margin:1px 2px 3px 4px;
語(yǔ)法 margin:top right bottom left;
二、邊框(border)
邊框的屬性如下:
border-width:1px;
border-style:solid;
border-color:#000;
可以縮寫(xiě)為一句:
border:1px solid #000;
語(yǔ)法 border:width style color;
三、背景(Backgrounds)
背景的屬性如下:
background-color:#f00;
background-image:url(background.gif);
background-repeat:no-repeat;
background-attachment:fixed;
background-po sition:00;
四、字體(fonts)
字體的屬性如下:
font-style:italic;
font-variant:small-caps;
font-weight:bold;font-size:1em;
line-height:140%;
font-family:"Lucida Grande",sans-serif;
五、列表(lists)
取消默認(rèn)的圓點(diǎn)和序號(hào)可以這樣寫(xiě)list-style:none;,
list的屬性如下:
list-style-type:square;
list-style-po sition:inside;
list-style-image:url(image.gif);
六、顏色(Color)
16進(jìn)制的色彩值,如果每?jī)晌坏闹迪嗤梢钥s寫(xiě)一半。例如:
Aqua: #00ffff ——#0ff
Black: #000000 ——#000
Blue: #0000ff ——#00f
Dark Grey: #666666 ——#666
Fuchsia:#ff00ff ——#f0f
Light Grey: #cccccc ——#ccc
Lime: #00ff00 ——#0f0
Orange: #ff6600 ——#f60
Red: #ff0000 ——#f00
White: #ffffff ——#fff
Yellow: #ffff00 ——#ff0
七、屬性值為0
書(shū)寫(xiě)原則是如果CSS屬性值為0,那么你不必為其添加單位(如:px/em),你可能會(huì)這樣寫(xiě):
padding:10px 5px 0px 0px;
試試這樣吧:
padding:10px 5px 00 ;
CSSRGB顏色如何用
一、RGB顏色模型解釋
RGB顏色模型就是一種描述某個(gè)顏色里面有多少紅、綠、藍(lán)三原色的量的方法,就像把水彩顏料或油彩顏料混合起來(lái)得到某種我們想要的真實(shí)色彩一樣。
想象下如果你要配出一個(gè)純藍(lán)色,為了實(shí)現(xiàn)這個(gè),你就不能把紅色和綠色放進(jìn)這個(gè)顏色里。所以我們就把紅、綠設(shè)置為0%,把綠設(shè)置為100%:
二、CSS Code復(fù)制內(nèi)容到剪貼板
rgb(0%, 0%, 100%)
結(jié)果:
但如果你想要的不是藍(lán)色而是紫紅色,那該怎么辦呢?我們可以通過(guò)將100%的紅和100%的藍(lán)混合起來(lái)得到紫紅色:
三、CSS Code復(fù)制內(nèi)容到剪貼板
rgb(100%, 0%, 100%)
結(jié)果:
從基礎(chǔ)的色彩理論,我們知道了沒(méi)有任何顏色就是黑色。所以為了得到黑色我們可以通過(guò)設(shè)置紅、綠、藍(lán)三原色為0%來(lái)實(shí)現(xiàn):
四、CSS Code復(fù)制內(nèi)容到剪貼板
rgb(0%, 0%, 0%)
結(jié)果:
五、如何確定RGB顏色的值
我們可以使用Photoshop的拾色器功能來(lái)獲取特定色彩的紅、綠、藍(lán)三原色的數(shù)值,但也有免費(fèi)的網(wǎng)上工具比如Color Slider和The RGB Color Calculator。
w3school上對(duì)RGB顏色的解釋?zhuān)?/p>
六、RGB 顏色
所有瀏覽器都支持 RGB 顏色值。
RGB 顏色值是這樣規(guī)定的:rgb(red, green, blue)。每個(gè)參數(shù) (red、green 以及 blue) 定義顏色的強(qiáng)度,可以是介于 0 與 255 之間的整數(shù),或者是百分比值(從 0% 到 100%)。