CSS系列篇:零碎、細(xì)節(jié)點整理(一)

前言


  這個CSS系列,是我從七月開始陸續(xù)整理的系列篇。存放在草稿箱里很久了,今晚把這幾篇系列篇都整理下排版,然后發(fā)布出來。
  為什么要寫這個系列,初衷也是因為有很多細(xì)節(jié)點是需要從源頭上去理解的。像是很多屬性設(shè)置,都是設(shè)置在某個元素自身無效,在其父元素設(shè)置就生效,諸如這一類的,都是細(xì)節(jié)點。當(dāng)然,如果了解原理之后,就不難理解為什么是這樣的設(shè)置了。
  總之,我熱衷做總結(jié)梳理,不是我多勤快,恰恰是我懶,想通過這些知識碎點的整理,可以把這些知識點都學(xué)薄了,然后在有空就翻看的時候,又常翻常新。當(dāng)然,后面有覺得需要補充添加的點的話,這幾篇CSS系列篇會持續(xù)更新。

一、塊級元素和行內(nèi)元素

1、塊級元素

(1)塊級元素占據(jù)一整行的空間,可以再包含塊級元素和行內(nèi)元素。
(2)設(shè)定width和height屬性有效。設(shè)定了width之后,沒特殊要求可以不用再設(shè)定height,因為高度會按照寬高比自適應(yīng),這點常應(yīng)用在img的使用。
(3)因為占據(jù)一整行空間,所以margin:0 auto的居中設(shè)定,需要在同時設(shè)定了width屬性的情況下才有效。
需要記住的常見塊級元素:div h1-h6 p form ul li dl ol table tr td th dd dt
讓我意外,原來它是塊級元素的標(biāo)簽:p,ul,li

2、行內(nèi)元素

(1)占據(jù)本身內(nèi)容的寬度。設(shè)定width和height是無效的。需要設(shè)置display:inline-block才能讓寬高的設(shè)置生效。
(2)同時設(shè)定盒模型的margin,只有左右margin生效,上下margin是無效的。

需要記住的常見行內(nèi)元素:em strong span a br img button input label select textarea script
讓我意外,原來它是行內(nèi)元素的標(biāo)簽:img、input、textarea、script、a

3、置換元素

置換元素就是會根據(jù)標(biāo)簽屬性來顯示的元素,反之就是非置換元素。比如img標(biāo)簽根據(jù)src屬性來顯示,input根據(jù)value屬性來顯示,同理textarea和select元素也是置換元素。
所以img元素是行內(nèi)元素,同時也是置換元素,置換元素一般內(nèi)置框高屬性,可以直接設(shè)置框高。

二、邊框

border:1px solid/dotted/dash/double #333
注意:border-style:dotted solid double dashed;,分別對應(yīng)是點狀/實線/雙線/虛線

1、應(yīng)用:實現(xiàn)三角形和由此的其他圖形組合
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
2、圓形的實現(xiàn)
Paste_Image.png
3、邊框圓角的實現(xiàn)
Paste_Image.png

三、盒模型

1、盒模型:就是margin+border+padding
2、上下左右距離的設(shè)置:

(1)舉例:padding:10px 20px 30px:代表padding-top:10px;padding-bottom:30px;
padding-left和padding-right都是20px
(2)margin和padding的值都可以是百分比,是相對于父容器而言的

(3)margin外邊距合并的問題
如下圖:兩個div之間的間距應(yīng)該是10+10=20px,但卻是10px。對此的解決方案是使用BFC。

Paste_Image.png

(4)行內(nèi)元素設(shè)定padding的情況
行內(nèi)元素設(shè)定padding時,左右padding是生效的,上下padding撐開了邊距,但對其本身高度并沒有發(fā)生變化,還是那么高。
Paste_Image.png

3、標(biāo)準(zhǔn)盒模型和IE盒模型

IE盒模型,是指IE678在怪異模式下(沒有寫!DOCTYPE:<!DOCTYPE html>)的盒模型狀態(tài)
標(biāo)準(zhǔn)盒模型,在IE9以上,以及IE678在嚴(yán)格模式下(<!DOCTYPE html>)就是使用的標(biāo)準(zhǔn)盒模型。
標(biāo)準(zhǔn)盒模型:width和height的寬度高度設(shè)置,就是content的大小而已
IE盒模型:width和height的寬度高度設(shè)置是content+padding+border的大小。

4、box-sizing的使用

由盒模型延伸,有時我們設(shè)置父元素寬度900px,每個子元素小框?qū)挾葹?00px,邊框為1px,全部向左浮動,如果是在標(biāo)準(zhǔn)盒模型下,是無法同一行剛好布滿3個小框的。因為實際3個小框的全部長度為300*3+1px*6=906px。這種時候,就需要用上IE盒模型這樣的特性,才能剛好一行鋪滿。這時候就對子元素使用box-sizing:border-box屬性,就可以實現(xiàn)剛好占一行。

Paste_Image.png
Paste_Image.png

四、居中的實現(xiàn):

塊級元素:margin:0 auto;(上下邊距可以任意設(shè),左右為auto即可)
行內(nèi)元素:記?。菏窃?strong>其父元素上設(shè)定text-align:center,實現(xiàn)行內(nèi)元素的居中

Paste_Image.png

五、display

塊級元素的設(shè)定:display:blcok/table/list-item
行內(nèi)元素的設(shè)定:display:inline/inline-table/inline-block

需要記住除了常見的inline、inline-block、block屬性值外,還有的其他的display屬性選項。

1、display:inline-block

這個屬性很重要:因為它讓元素呈現(xiàn)inline的特性,不占據(jù)一整行,寬度由內(nèi)容寬度決定,又呈現(xiàn) block 特性 ,可設(shè)置寬高,內(nèi)外邊距

(1)應(yīng)用:面包屑

面包屑可以直接采用全部左浮動,然后父元素清除浮動的方式。也可以直接使用display:inline-block的屬性設(shè)置,這種方法更簡單。但對應(yīng)的問題就是兩個設(shè)置display:inline-block的行內(nèi)元素之間會有縫隙。
縫隙情況如下:

Paste_Image.png

(2)解決縫隙問題:

因為換行也是等同于空白字符的
消除設(shè)置display:inline-block的元素之間的縫隙的方法:
1)、元素標(biāo)簽之間不要換行
如下:span不換行,直接挨著寫:


Paste_Image.png

2)、父元素設(shè)定font-size:0,將空白字符給去掉,然后子元素再設(shè)定font-size大小


Paste_Image.png

六、基線對準(zhǔn)問題

vertical-align這個屬性,是只對行內(nèi)元素和表格才有效。
vertical-align:top/middle/bottom,分別實現(xiàn)頂部對齊,中間對齊或底部對齊

Paste_Image.png

七、font字體的設(shè)置

1、常見設(shè)置:font-size/line-height/font-family/font-weight

(1)綜合寫法:

font:12px/1.5 arial,'Hiraginp Sans GB','\5b8b\4f53';
2、font-family:字體類型

這是要結(jié)合看用戶電腦按照的字體文件,支持的話才會展現(xiàn)出來。最好把中文名稱的字體都轉(zhuǎn)化為Unicode碼,避免無法識別中文的出錯:
打開控制臺輸入:

escape('微軟雅黑'),然后把%u轉(zhuǎn)化為\

例如:
宋體 | SimSun | \5B8B\4F53
黑體 | SimHei | \9ED1\4F53
微軟雅黑 | Microsoft YaHei | \5FAE\8F6F\96C5\9ED1

Paste_Image.png
3、行高line-height

比如設(shè)定60px,字體大小為30px,那么上下就是15px。等于行高是有加上字體大小一起計算的。

4、谷歌的默認(rèn)字體大小為16px,最小字體為12px

八、文本

1、常見屬性

(1)文本對齊:text-align:left/right/center/justify,記住是用在塊級元素上的。
記?。簍ext-align:justify是兩端對齊,這個有時候很有用
(2)文本線:text-decoration:line-through/overline/underline/none
記住:text-decoration:line-through用于表示錯誤給劃掉時的用法
(3)英文大小寫:text-transform:uppercase/lowercase/capitalize
分別是用于將英文單詞全部變?yōu)榇髮?、小寫和首字母為大寫。text-transform:capitalize;應(yīng)用更多些
(4)改變單詞之間的間隔:word-spacing:20px;
(5)改變單詞字母之間的間隔:letter-spacing:10px;

Paste_Image.png
2、應(yīng)用:

行內(nèi)元素的居中,對其父容器塊級元素,設(shè)置text-align:center;
如果父容器和子元素都是塊級元素,那么設(shè)定子元素居中,就是對子元素設(shè)置使用margin:0 auto;

3、應(yīng)用:單行文本溢出的部分寫為省略號....

注意是對文本所在標(biāo)簽的父級元素做這三行屬性設(shè)置才生效。下面例子文本標(biāo)簽a的父標(biāo)簽是p,對其做設(shè)置:

.mid{
  width:100px;
  height:100px;
  border:2px solid red;
/*以下三行的設(shè)置,行成省略號*/
  white-space:nowrap;  /*文字不折行*/
  overflow:hidden;/*超出部分隱藏*/
  text-overflow:ellipsis;/*文字超出部分變?yōu)槭÷蕴?/
}
Paste_Image.png

注意:對于文本換行:中文和英文是有區(qū)別的:元素寬度不夠?qū)挄r,中文是會自動折行換行的,而英文并不會。設(shè)置多出的文字為省略號對中英文通用

Paste_Image.png

九、顏色

1、直接使用顏色單詞設(shè)置:color:red;
2、十六進(jìn)制:#fff/#eee/#ccc,#000000,為黑色,重復(fù)的6位數(shù),就可以簡寫為3位,#000為黑色,#fff為白色;
3、rgb:(255,255,255)
4、rgba:rgba(0,0,0,0.5),最后一個為透明度的設(shè)定

十、單位

下面這幾個單位記住:

1、px:固定單位
2、em:相對單位

em是相對父元素字體的大小,是父元素字體的倍數(shù)。font-size:2em等同于font-size:200%

3、rem:相對單位

rem是相對于根元素(html)字體的大小,是根元素字體大小的倍數(shù)。

4、vw:相對單位

1vw為屏幕寬度的1%,50vw就相當(dāng)于屏幕寬度的一半。兼容性差,不怎么使用

5、vh:相對單位,1vh為一屏幕寬度。

十一、透明度的設(shè)定

1、opacity:0

透明度為0,整個元素看不見,但仍然占據(jù)位置

2、visibility:hidden

和opacity:0類似

3、display:none

元素消失,不占據(jù)位置

4、backgr-color:rgba(0,0,0,0)

設(shè)置透明度透明度為0,從0到1,顏色越重,占據(jù)位置

十二、邊框陰影的設(shè)定

1、用法
Paste_Image.png
2、應(yīng)用

讓邊框的四邊都有陰影的做法,就是讓x-offset和y-offset的值都為0,只設(shè)置陰影范圍值

.box-shadow-2{  
  -webkit-box-shadow:0 0 10px #0CC;  
  -moz-box-shadow:0 0 10px #0CC;  
  box-shadow:0 0 10px #0CC;  
}  

實現(xiàn)效果:

Paste_Image.png

一篇關(guān)于邊框陰影的文章:http://blog.csdn.net/freshlover/article/details/7610269

十三、background背景

下面是background的常見常用屬性:

1、background-image:url(路徑)
2、background-repeat:

選項為repeat/no-repeat
這兩個選項為圖像重復(fù)鋪滿頁面或者不重復(fù)。repeat-x,則是水平方向的鋪滿。repeat-y,則是垂直方向的鋪滿。

3、background-color:

設(shè)置各種顏色

4、background-size

(設(shè)置背景的大小,CSS3用法,注意兼容性)
設(shè)置百分比、px固定值或者以下兩個單詞的設(shè)置
contain:讓圖片等比縮放,可以充滿屏幕
cover:讓圖片的高度與屏幕等高,寬度溢出屏幕就不顯示

5、background-position

設(shè)置背景圖像位置,默認(rèn)是左上角。
設(shè)置方式:XY,設(shè)置為像素,從左上角開始進(jìn)行位置移動(0,0)
百分比,移動的距離為其父元素content寬度的百分比
直接單詞來定位:[top、center、bottom]、[left、center、right]
background-position:top left,以圖片的左上角對其屏幕的左上角

6、background-attachment:fixed

背景圖像是否固定,或者隨著頁面其他內(nèi)容滾動

7、使用情景

背景圖片有鏤空,然后也有背景顏色的設(shè)置。那么背景顏色就會從背景圖片中透出來。

以上屬性可以縮寫為一行,一次性寫多個屬性:
background:#fff url(background.gif) no-repeat fixed 0 0;

十四、line-height

1、使用場景:

設(shè)置單行文本的行高

2、使用方式:

可以設(shè)置為數(shù)字,也可以設(shè)置為百分比,或是固定寬度

(1)設(shè)置為數(shù)字

line-height:2:是它本身文字字體大小的兩倍。比如一個字體大小是30px,設(shè)置行高為60px,那就是除去字體大小的30,還剩下30px是平分字體的上下間隔的,就是上下空白為15px

(2)設(shè)置為百分比

line-height:200%:當(dāng)它是繼承而來時,行高是它父元素文字字體大小的兩倍。如果是它自身元素設(shè)置行高為百分比,那就還是它自身行高的2倍。


Paste_Image.png

在這個例子中,繼承而來的line-height:200%,等同于自身元素上設(shè)定line-height:40px;
如果父元素沒有設(shè)定line-height,那么元素自己設(shè)定line-height:200%,就是等于設(shè)定line-height:2,等于自身高度的2倍,等于line-height:120px


Paste_Image.png
(3)設(shè)置為固定寬度

line-height:20px:固定值

3、繼承性

line-height是可以繼承的,子元素的line-height高度繼承父元素的line-height高度

4、應(yīng)用

通過設(shè)定行高和元素高度相同,可以實現(xiàn)文本或子元素的垂直水平居中
當(dāng)然,也可以把高度設(shè)置去掉,也是同樣效果。


Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 14,150評論 1 92
  • 前言 接著上一篇,這篇主要集中對BFC、浮動、定位、負(fù)margin和相對定位的區(qū)別、偽類和偽元素進(jìn)行整理。 一、B...
    huangyh_max閱讀 976評論 0 3
  • 1.塊級元素和行內(nèi)元素 塊級(block-level)元素;行內(nèi)(內(nèi)聯(lián)、inline-level)元素。 塊元素的...
    饑人谷_小侯閱讀 2,200評論 1 4
  • CSS格式化排版 1、字體 我們可以使用css樣式為網(wǎng)頁中的文字設(shè)置字體、字號、顏色等樣式屬性。下面我們來看一個例...
    張文靖同學(xué)閱讀 1,371評論 0 3
  • 本文主要是起筆記的作用,內(nèi)容來自慕課網(wǎng). 認(rèn)識CSS樣式 CSS全稱為“層疊樣式表 (Cascading Styl...
    0o凍僵的企鵝o0閱讀 2,750評論 0 30

友情鏈接更多精彩內(nèi)容