CSS知識

盒子模型

Paste_Image.png

盒子寬度=margin左右寬度+border左右邊框?qū)挾?padding左右寬度+content 的寬度
盒子高度=margin上下高度+border上下邊框高度+padding上下高度+content 的高度。
本章節(jié)主要介紹三個屬性:box-sizing、border-radius、box-shadow。

box-sizing

box-sizing有三個屬性:content-box(default),border-box,padding-box。
如果box-sizing的屬性為border-box,則表示盒子的width屬性包含border之內(nèi)的寬度。
代碼示例

div
{
box-sizing:border-box;
-moz-box-sizing:border-box; /* Firefox */
-webkit-box-sizing:border-box; /* Safari */
width:50%;
float:left;
}

border-radius

border-radius可以向div元素添加圓角邊框,有四個屬性:border-top-left-radius、 border-top-right-radius、border-bottom-right-radius、border-bottom-left-radius
代碼示例-半徑為50px的圓

div{
    width:100px;
    height:100px;
    background-color:#fc0;
    border-radius:50px 50px 50px 50px;
}

通過順序添加不同的圓角邊框值,可以讓div的邊框變得圓滑。

box-shadow

box-shadow屬性向框添加一個或多個陰影
語法為:box-shadow: h-shadow v-shadow blur spread color inset;
h-shadow為水平陰影位置,v-shadow為垂直陰影位置,blur為模糊距離,spread為陰影的尺寸,color為陰影的顏色,insert可將外部陰影 (outset) 改為內(nèi)部陰影。前兩個屬性必選,后面三個屬性為可選屬性。
代碼示例:

div
{
   background-color:yellow;
   width:200px;
   height:100px;
   box-shadow:10px 10px 50px 20px pink inset;
}

居中

元素的居中分為水平居中和垂直居中

水平居中

常規(guī)流內(nèi)聯(lián)元素的居中

為父元素設(shè)置text-align:center即可

#myDiv{
   text-align:center;
}
<div id="myDiv">
    <span>內(nèi)聯(lián)元素水平居中</span>
</div>

常規(guī)流block元素居中

  1. 為塊元素設(shè)置寬度
  2. 設(shè)置左右的margin為auto
div{
       width:100px;
       margin:auto;
}

浮動元素的居中

  1. 為元素設(shè)置寬度
  2. 設(shè)置 position:relative;
  3. left:50%;
  4. margin-left:-1/2 width;
    代碼示例:
div{
        width: 500px;         
        float: left;
        position: relative;   
        left: 50%;            
        margin-left: -250px; 
}

絕對定位元素的居中

方法一

  1. 為元素設(shè)置寬度;
  2. 偏移量設(shè)為50%;
  3. margin-left:-1/2 width;
    代碼示例:
div{
     position:absolute;
     width:100px;
     left:50%;
     margin-left:-50px;
}

方法二

  1. 為元素設(shè)置寬度;
  2. 設(shè)左右偏移量均為0;
  3. 設(shè)左右外邊距為auto;
    代碼示例:
div{
    position:absolute;
    width:100px;
    left:0;
    right:0;
    margin:auto;
}

垂直居中

單行文本垂直居中—line-height方法

  1. 為父元素設(shè)置高度
  2. 設(shè)置父元素的line-height與高度一致
HTML:
<div id="parent">
      <p id="child"></p>
</div>
CSS:
#parent{
   height:100px;
   line-height:100px;
}

內(nèi)聯(lián)元素垂直居中

  1. 內(nèi)聯(lián)元素display:inline-block;
  2. vertical-aline:middle;
HTML:
<div class="pic">  
        ![圖片垂直居中](https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png)  
   </div>  
CSS:
.pic{ 
       display:inline-block; //display:table-cell也可以,但不支持IE-6/7
       vertical-align:middle;}  

塊級元素

絕對定位居中

  1. 設(shè)置Margin:auto;
  2. 為元素添加絕對定位;
  3. 上下左右偏移量均為0;
    代碼示例:
div{
     margin:auto;
     position:absolute;
     left:0;top:0;right:0;bottom:0;
}

浮動元素垂直居中

  1. 為元素設(shè)置高度
  2. 設(shè)置 position:relative;
  3. top:50%;
  4. margin-top:-1/2 width;
    代碼示例:
div{
        width: 500px;         
        float: left;
        position: relative;   
        top: 50%;            
        margin-top: -250px; 
}

絕對定位元素的居中

  1. 為元素設(shè)置高度;
  2. 偏移量設(shè)為50%;
  3. margin-top:-1/2 width;
    代碼示例:
div{
     position:absolute;
     width:100px;
     top:50%;
     margin-top:-50px;
}

絕對定位元素居中更多方法可參考這里
flexbox布局也可以實現(xiàn)居中,這里先不做詳細介紹。

定位&浮動

利用定位和浮動,可以建立列式布局,實現(xiàn)將布局的一部分與另一部分重疊等效果。
CSS有三種定位機制:普通流、浮動和絕對定位,如果沒有特殊指定,所有框都在普通流中定位

position 定位

position有四種不同的屬性:static、relative、absolute、fixed。

  1. static:元素框正常生成。塊級元素生成一個矩形框,作為文檔流的一部分,行內(nèi)元素則會創(chuàng)建一個或多個行框,置于其父元素中。
  2. relative:元素框偏移某個距離。元素仍保持其未定位前的形狀,它原本所占的空間仍保留。
  3. absolute:元素框從文檔流完全刪除,并相對于其包含塊定位。包含塊可能是文檔中的另一個元素或者是初始包含塊。元素原先在正常文檔流中所占的空間會關(guān)閉,就好像元素原來不存在一樣。元素定位后生成一個塊級框,而不論原來它在正常流中生成何種類型的框。
    4.fixed:元素框的表現(xiàn)類似于將 position 設(shè)置為 absolute,不過其包含塊是視窗本身。
    CSS定位屬性除了position的四中屬性外,還有top、right、bottom、left、overflow、vertical-align、z-index、clip屬性。通過以上屬性可以具體定位元素的位置。

相對定位

相對定位元素中的相對是指想對自己,也就是將元素相對于自己進行重新布局,該元素原來的位置依然存在于文檔流中,不會被刪除,也即不會被別的元素覆蓋。
代碼示例:

#box_relative {
  position: relative;
  left: 30px;
  top: 20px;
}

絕對定位

絕對定位元素的位置與文檔流無關(guān),即文檔流中已將該元素刪除,這一點與相對定位完全不同。
元素的絕對定位指的是相對于其祖先元素的絕對定位,如果沒有指定祖先元素,則該元素絕對定位的祖先元素則為window
代碼示例:

HTML:
<div class="parent">
        <div class="child"></div>
</div>
CSS:
.parent
{
      position:relative//為祖先元素設(shè)置定位為relative
}
.child
{
      position:absolute;
      left:100px;
      top:50px;
}

flex布局

.parent{display:flex;justify-content:center;align-items:center;}

浮動

浮動的框可以向左或向右移動,直到它的外邊緣碰到下一個浮動框或邊緣框就會停止浮動。
代碼示例:

<ul>
     <li><a >導(dǎo)航鏈接一</a></li>
     <li><a >導(dǎo)航鏈接二</a></li>
     <li><a >導(dǎo)航鏈接三</a></li>
     <li><a >導(dǎo)航鏈接四</a></li>
    </ul>
li {
        float:left;
        height:40px;
        margin-right:20px;
        list-style:none;
}

清除浮動

clear屬性規(guī)定元素的哪一側(cè)不允許其他浮動元素。
代碼示例:

<html>
<head>
<style type="text/css">
img
  {
      float:left;
      clear:both;
  }
</style>
</head>
<body>
      ![](/i/eg_smile.gif)
      ![](/i/eg_smile.gif)
</body>
</html>

布局

display

display屬性規(guī)定元素應(yīng)該生成的框的類型。
display常見的屬性有:inline、block、inline-block、table、table-caption、table-cell、table-column、table-column-group、table-row、table-row-group、none。
display:inline是指元素以內(nèi)聯(lián)元素顯示,和其他元素都在一行上,高、行高及頂和底邊距不可改變。

  1. 水平方向上根據(jù)direction依次布局
  2. 不會在元素前后進行換行
  3. 受white-space控制
  4. margin/padding在豎直方向上無效,水平方向上有效
  5. width/height屬性對非替換行內(nèi)元素?zé)o效,寬度由元素內(nèi)容決定
  6. 非替換行內(nèi)元素的行框高由line-height確定,替換行內(nèi)元素的行框高由height,margin,padding,border決定
  7. 浮動或絕對定位時會轉(zhuǎn)換為block
  8. vertical-align屬性生效

display:block是指元素以塊元素顯示

  1. 處于常規(guī)流中時,如果width沒有設(shè)置,會自動填充滿父容器
  2. 可以應(yīng)用margin/padding
  3. 在沒有設(shè)置高度的情況下會擴展高度以包含常規(guī)流中的子元素
  4. 處于常規(guī)流中時布局時在前后元素位置之間(獨占一個水平空間)
  5. 忽略vertical-align屬性。

display:inline-block將對象呈遞為內(nèi)聯(lián)對象,但是對象的內(nèi)容作為塊對象呈遞。旁邊的內(nèi)聯(lián)對象會被呈遞在同一行內(nèi),允許空格。(準(zhǔn)確地說,應(yīng)用此特性的元素呈現(xiàn)為內(nèi)聯(lián)對象,周圍元素保持在同一行,但可以設(shè)置寬度和高度地塊元素的屬性)。
display:none是會讓元素完全從渲染樹中消失,渲染的時候不占據(jù)任何空間。

詳細的布局可參考這里

CSS3

前面的章節(jié)已經(jīng)涉及到一些CSS3的知識了,比如border-radius、box-sizing等都屬于CSS3內(nèi)容。接下來主要對背景、2D/3D轉(zhuǎn)換、過渡、動畫等進行介紹!

背景新增屬性

CSS3新增的背景屬性有:background-size、background-origin

background-size

background-size屬性規(guī)定背景圖片的尺寸,可以以像素或百分比規(guī)定尺寸,如果用百分比那么是相對于父元素的寬度、高度。
代碼示例:

div
{
   background:url(bg_flower.gif);
   -moz-background-size:63px 100px; /* 老版本的 Firefox */
   background-size:63px 100px;
   background-repeat:no-repeat;
}

background-origin

background-origin屬性規(guī)定背景圖片的定位區(qū)域,背景圖片可以放置于content-box、padding-boxborder-box 區(qū)域。
代碼示例:

div
{
   background:url(bg_flower.gif);
   background-repeat:no-repeat;
   background-size:100% 100%;
   -webkit-background-origin:content-box; /* Safari */
   background-origin:content-box;
}

文本新增屬性

CSS3中文本的新增屬性有text-shadowword-wrap
text-shadow可向文本應(yīng)用陰影,規(guī)定水平陰影、垂直陰影、模糊距離以及陰影的顏色。
代碼示例:

h1
{
   text-shadow: 5px 5px 5px #FF0000;
}

word-wrap屬性允許文本強制換行。
p {word-wrap:break-word;}

2D 轉(zhuǎn)換

2D轉(zhuǎn)換方法主要有:translate()、rotate()、scale()、skew()、matrix()、

translate()

通過該方法,可以是元素從當(dāng)前位置移動,有l(wèi)eft(x坐標(biāo))和top(y坐標(biāo))兩個參數(shù)。
代碼示例:

div
{
   transform: translate(50px,100px);
   -ms-transform: translate(50px,100px);        /* IE 9 */
   -webkit-transform: translate(50px,100px);    /* Safari and Chrome */
   -o-transform: translate(50px,100px);     /* Opera */
   -moz-transform: translate(50px,100px);       /* Firefox */
} 

rotate()

rotate()方法可以將元素按照順時針進行旋轉(zhuǎn),如果值為負數(shù),則按照逆時針旋轉(zhuǎn)。
代碼示例:

div
{
   transform: rotate(30deg);
   -ms-transform: rotate(30deg);        /* IE 9 */
   -webkit-transform: rotate(30deg);    /* Safari and Chrome */
   -o-transform: rotate(30deg);     /* Opera */
   -moz-transform: rotate(30deg);       /* Firefox */
}

scale()

scale()方法可以讓元素成倍的放大或縮小,從寬度和高度兩個方面不同程度的放大或縮小。
代碼示例:

div
{
    transform: scale(2,4);    /* 寬度放大2倍,高度放大4倍 */
   -ms-transform: scale(2,4);   /* IE 9 */
   -webkit-transform: scale(2,4);   /* Safari 和 Chrome */
   -o-transform: scale(2,4);    /* Opera */
   -moz-transform: scale(2,4);  /* Firefox */
}

skew()

skew()方法可以讓元素翻轉(zhuǎn)一定的角度,根據(jù)給定的水平線和垂直線的參數(shù)。
代碼示例:

div
{
  transform: skew(30deg,20deg);        /* 繞x軸旋轉(zhuǎn)30度,繞y軸旋轉(zhuǎn)20度 */
  -ms-transform: skew(30deg,20deg); /* IE 9 */
  -webkit-transform: skew(30deg,20deg); /* Safari and Chrome */
  -o-transform: skew(30deg,20deg);  /* Opera */
  -moz-transform: skew(30deg,20deg);    /* Firefox */
}

matrix()

matrix()方法把所有 2D 轉(zhuǎn)換方法組合在一起;matrix() 方法需要六個參數(shù),包含數(shù)學(xué)函數(shù),允許您:旋轉(zhuǎn)、縮放、移動以及傾斜元素。
代碼示例:

div
{
  transform:matrix(0.866,0.5,-0.5,0.866,0,0);
  -ms-transform:matrix(0.866,0.5,-0.5,0.866,0,0);       /* IE 9 */
  -moz-transform:matrix(0.866,0.5,-0.5,0.866,0,0);  /* Firefox */
  -webkit-transform:matrix(0.866,0.5,-0.5,0.866,0,0);   /* Safari and   
    Chrome */
  -o-transform:matrix(0.866,0.5,-0.5,0.866,0,0);        /* Opera */
}

兼容

更新中

最后編輯于
?著作權(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的外補...
    _Yfling閱讀 14,125評論 1 92
  • 各種純css圖標(biāo) CSS3可以實現(xiàn)很多漂亮的圖形,我收集了32種圖形,在下面列出。直接用CSS3畫出這些圖形,要比...
    劍殘閱讀 9,978評論 0 8
  • 選擇符 子選擇符:> 緊鄰?fù)x擇符:+ 一般同胞選擇符:~ 屬性名選擇符:標(biāo)簽名[屬性名] 屬性值選擇符:標(biāo)簽名...
    Mike_Gu閱讀 391評論 0 0
  • CSS 層疊樣式表(表示層) 一、CSS引入方式 1.CSS行內(nèi)樣式 直接使用style屬性 style=”wid...
    Lizzy95閱讀 414評論 0 1
  • 多肉默默生長,龜背竹偷偷分了新芽,綠蘿今年格外怯怯弱弱,沉默依舊是那束干花,青竹如往年一樣。各種物品箱子擠擠埃挨。...
    傾新閱讀 192評論 0 0

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