css學(xué)習(xí)分享

CSS簡介

此文章借鑒菜鳥教程和w3c教程,為學(xué)習(xí)分享文章如有問題請(qǐng)?jiān)u論奏窑,文章原地址自己寫在gitbook上格式不兼容,url:https://hamster.gitbook.io/share/

CSS 指層疊樣式表 (Cascading Style Sheets)

*選擇器

*盒模型

*背景和邊框

*文字特效

*2D/3D轉(zhuǎn)換

*動(dòng)畫

*多列布局

*用戶界面

CSS分類

外部樣式表

當(dāng)樣式需要應(yīng)用于很多頁面時(shí)屈扎,外部樣式表將是理想的選擇埃唯。在使用外部樣式表的情況你可以通過改變一個(gè)文件來改變整個(gè)站點(diǎn)的外觀。每個(gè)頁面使用 <link> 標(biāo)簽鏈接到樣式表


<link rel="stylesheet"type="text/css"href="xxx.css">

內(nèi)部樣式表(位于標(biāo)簽內(nèi)部)

當(dāng)單個(gè)文檔需要特殊的樣式時(shí)鹰晨,就應(yīng)該使用內(nèi)部樣式表墨叛。你可以使用<style>標(biāo)簽在文檔頭部定義內(nèi)部樣式表,就像這樣:


<head>

    <style type="text/css">

        h1 {color: sienna;}

        body{background-color:black}

    </style>

</head>

內(nèi)聯(lián)樣式表(在 HTML 元素內(nèi)部)

由于要將表現(xiàn)和內(nèi)容混雜在一起模蜡,內(nèi)聯(lián)樣式會(huì)損失掉樣式表的許多優(yōu)勢漠趁。例如當(dāng)樣式僅需要在一個(gè)元素上應(yīng)用一次時(shí)。要使用內(nèi)聯(lián)樣式哩牍,你需要在相關(guān)的標(biāo)簽內(nèi)使用樣式(style)屬性棚潦。

請(qǐng)慎用這種方法


<h1 style="color:red">helloworld></h1>

CSS語法

基礎(chǔ)語法

CSS 規(guī)則由兩個(gè)主要的部分構(gòu)成:選擇器,以及一條或多條聲明膝昆。


selector {declaration1; declaration2; ... declarationN }

selector: 選擇器通常是你需要改變?cè)氐腍TML元素

declaration:聲明:有一個(gè)屬性和一個(gè)值組成(property: value)

例:


body {

  color: #000;

  background: #fff;

  margin: 0;

  padding: 0;

  font-family: Georgia, Palatino, serif;

  }

高級(jí)語法

選擇器分組

可以對(duì)選擇器進(jìn)行分組丸边,這樣叠必,被分組的選擇器就可以分享相同的聲明


h1,h2,h3,h4,h5,h6 {

  color: green;

  font-size: 14px;

  }

繼承及其問題

子元素從父元素繼承屬性,通過 CSS 繼承,子元素將繼承最高級(jí)元素(在本例中是 body)所擁有的屬性(這些子元素諸如 p, td, ul, ol, ul, li, dl, dt,和 dd)妹窖。不需要另外的規(guī)則纬朝,所有 body 的子元素都應(yīng)該顯示 Verdana 字體,子元素的子元素也一樣骄呼。并且在大部分的現(xiàn)代瀏覽器中共苛,也確實(shí)是這樣的。

html結(jié)構(gòu)


<html>

    <head></head>

    <body>

        <p>share<p>

    </body>

</html>

css樣式


body {

    font-family: Verdana, sans-serif;

    font-size: 14px;

    }

如果重寫里面屬性蜓萄,將不會(huì)使用父元素的屬性


p, td, ul, ol, li, dl, dt, dd  {

    font-size: 12px;

    }

CSS選擇器

派生選擇器

派生選擇器允許你根據(jù)文檔的上下文關(guān)系來確定某個(gè)標(biāo)簽的樣式隅茎。通過合理地使用派生選擇器,我們可以使 HTML 代碼變得更加整潔

html結(jié)構(gòu)


<p>

    <strong>我是粗體字嫉沽,不是斜體字辟犀,因?yàn)槲也辉诹斜懋?dāng)中,所以這個(gè)規(guī)則對(duì)我不起作用</strong>

</p>

<ol>

    <li>

        <strong>我是斜體字绸硕。這是因?yàn)?strong 元素位于 li 元素內(nèi)堂竟。</strong>

    </li>

    <li>我是正常的字體。</li>

</ol>

css樣式


li strong {

    font-style: italic;

    color:red;

    font-weight: normal;

  }

id選擇器(#id)

id 選擇器可以為標(biāo)有特定 id 的 HTML 元素指定特定的樣式

html代碼


<p id="red">這個(gè)段落是紅色玻佩。</p>

<p id="green">這個(gè)段落是綠色出嘹。</p>

css代碼


#red {color:red;}

#green {color:green;}

id屬性只能在每個(gè) HTML 文檔中出現(xiàn)一次

id 選擇器和派生選擇器

id被標(biāo)注為 sidebar 的元素只能在文檔中出現(xiàn)一次,這個(gè) id 選擇器作為派生選擇器也可以被使用很多次


#sidebar p {

font-style: italic;

text-align: right;

margin-top: 0.5em;

}

#sidebar h2 {

font-size: 1em;

font-weight: normal;

font-style: italic;

margin: 0;

line-height: 1.5;

text-align: right;

}

div#sidebar{

border: 1px dotted #000;

padding: 10px;

}

類(class)選擇器(.class)

類選擇器允許以一種獨(dú)立于文檔元素的方式來指定樣式

只有適當(dāng)?shù)貥?biāo)記文檔后咬崔,才能使用這些選擇器


html代碼

<h1 class="important">

This heading is very important.

</h1>

<p class="important">

This paragraph is very important.

</p>

<p class="important warning">

    <p>share</p>

This paragraph is very important.

</p>

css代碼

*.important {color:red;}

h1.important {color:red;}

p.important {color:red;}

.important p{font-size: 16px;}//跟id選擇器一樣 也可以和派生選擇器結(jié)合使用

屬性選擇器

屬性選擇器可以根據(jù)元素的屬性及屬性值來選擇元素


html代碼

<h1>可以應(yīng)用樣式:</h1>

<p class="important warning">This is a paragraph.</a>

<h1>無法應(yīng)用樣式:</h1>

<p class="important">This is a paragraph.</a>

<input type="text"></input>

css代碼

<style type="text/css">

    p[class="important warning"]{

        color: red;

    }

    input[type="text"]{

    }

</style>

后代選擇器(跟派生選擇器類似)

后代選擇器(descendant selector)又稱為包含選擇器税稼。后代選擇器可以選擇作為某元素后代的元素。


html代碼

<h1>This is a <em>important</em> heading</h1>

<p>This is a <em>important</em> paragraph.</p>

css代碼

h1 em {color:red;}

子元素選擇器

與后代選擇器相比垮斯,子元素選擇器(Child selectors)只能選擇作為某元素子元素的元素娶聘,語法:p > strong{color: red}


html代碼

<h1>This is

<strong>very</strong>

<strong>very</strong>important.

</h1>

<h1>This is

<em>really

<strong>very</strong>

</em>

important.

</h1>

css代碼

h1 > strong {color:red;}

h1.important div > p 跟后代選擇器結(jié)合使用

相鄰兄弟選擇器

相鄰兄弟選擇器(Adjacent sibling selector)可選擇緊接在另一元素后的元素,且二者有相同父元素

相鄰兄弟選擇器使用了加號(hào)(+)甚脉,即相鄰兄弟結(jié)合符(Adjacent sibling combinator)丸升。注釋:與子結(jié)合符一樣,相鄰兄弟結(jié)合符旁邊可以有空白符牺氨。


html代碼

<div>

  <ul>

    <li>List item 1</li>

    <li>List item 2</li>

    <li>List item 3</li>

  </ul>

  <ol>

    <li>List item 1</li>

    <li>List item 2</li>

    <li>List item 3</li>

  </ol>

</div>

css代碼

li + li {font-weight:bold;}

偽類

CSS 偽類用于向某些選擇器添加特殊的效果狡耻,最常見的是超鏈接使用

語法:


selector : pseudo-class {property: value}

selector.class : pseudo-class {property: value}//與class類結(jié)合使用

a:link {color: #FF0000} /* 未訪問的鏈接 */

a:visited {color: #00FF00} /* 已訪問的鏈接 */

a:hover {color: #FF00FF} /* 鼠標(biāo)移動(dòng)到鏈接上 */

a:active {color: #0000FF} /* 選定的鏈接 */

<a class="red" href="css_syntax.asp">CSS Syntax</a>//與class結(jié)合使用

a.red : visited {color: #FF0000}

S

<ul>

    <li>Intert Key</li>

    <li>Turn key <strong>clockwise</strong></li>

    <li>Push accelerator</li>

</ul>

li:first-child {text-transform:uppercase;}//

獲取元素中的第一個(gè)

常見屬性

*:active 向被激活的元素添加樣式

*:focus 向擁有鍵盤輸入焦點(diǎn)的元素添加樣式

*:hover 當(dāng)鼠標(biāo)懸浮在元素上方時(shí),向元素添加樣式

*:link 向未被訪問的鏈接添加樣式

*:visited 向已被訪問的鏈接添加樣式

*:first-child 向元素的第一個(gè)子元素添加樣式

*:lang 向帶有指定 lang 屬性的元素添加樣式

*提示:在 CSS 定義中猴凹,a:hover 必須被置于 a:link 和 a:visited 之后夷狰,才是有效的。

*提示:在 CSS 定義中郊霎,a:active 必須被置于 a:hover 之后沼头,才是有效的。

*提示:偽類名稱對(duì)大小寫不敏感。

偽元素

CSS 偽元素用于向某些選擇器設(shè)置特殊效果

語法:


selector:pseudo-element {property:value;}

selector.class:pseudo-element {property:value;}

實(shí)例代碼

p:first-line{

    color:#ff0000;

    font-variant:small-caps;

    }

h1:before{

  content:url(logo.gif);

  }

h1:after{

  content:url(logo.gif);

  }

常見屬性

:first-letter 向文本的第一個(gè)字母添加特殊樣式

:first-line 向文本的首行添加特殊樣式

:before 在元素之前添加內(nèi)容

:after 在元素之后添加內(nèi)容

:before 和:after比較常見 常用于前后添加圖片等

CSS框架模型(盒子模型)

概述

CSS 框模型 (Box Model) 規(guī)定了元素框處理元素內(nèi)容进倍、內(nèi)邊距土至、邊框 和 外邊距 的方式。


* {

  margin: 0;

  padding: 0;

}

背景應(yīng)用于由內(nèi)容和內(nèi)邊距猾昆、邊框組成的區(qū)域陶因。

*內(nèi)邊距、邊框和外邊距可以應(yīng)用于一個(gè)元素的所有邊垂蜗,也可以應(yīng)用于單獨(dú)的邊楷扬。

*外邊距可以是負(fù)值,而且在很多情況下都要使用負(fù)值的外邊距贴见。

內(nèi)邊距(padding)

*元素的內(nèi)邊距在邊框和內(nèi)容區(qū)之間烘苹。控制該區(qū)域最簡單的屬性是 padding 屬性片部。CSS padding 屬性定義元素邊框與元素內(nèi)容之間的空白區(qū)域螟加。


body{padding: top right bottom left}

h1 {

  padding-top: 10px;

  padding-right: 0.25em;

  padding-bottom: 2ex;

  padding-left: 20%;

  }

  h1 {

    padding: 10px 20px 10px 20px

  }

  p {padding: 10% 10%;}

  p {padding: 10%;}

屬性

padding 簡寫屬性。作用是在一個(gè)聲明中設(shè)置元素的所內(nèi)邊距屬性

padding—left 設(shè)置元素的左內(nèi)邊距

padding-right 設(shè)置元素的右內(nèi)邊距

padding-top 設(shè)置元素的上內(nèi)邊距

padding-bottom 設(shè)置元素的下內(nèi)邊距

分別設(shè)置上吞琐、右、下然爆、左內(nèi)邊距

邊框(boder)

元素的邊框 (border) 是圍繞元素內(nèi)容和內(nèi)邊距的一條或多條線站粟。CSS border 屬性允許你規(guī)定元素邊框的樣式、寬度和顏色曾雕。


p.aside {border-style: solid dotted dashed double;}

上面這條規(guī)則為類名為 aside 的段落定義了四種邊框樣式:實(shí)線上邊框奴烙、點(diǎn)線右邊框、虛線下邊框和一個(gè)雙線左邊框剖张。


div {

    border: 1px solid #000;

    border-radius: 10px

    }

屬性分類

border 簡寫屬性切诀,用于把針對(duì)四個(gè)邊的屬性設(shè)置在一個(gè)聲明

border-style dotted solid double dashed 點(diǎn)狀 實(shí)線 雙線 虛線 用于設(shè)置元素所有邊框的樣式,或者單獨(dú)地為各邊設(shè)置邊框樣式搔弄。

border-width 簡寫屬性幅虑,用于為元素的所有邊框設(shè)置寬度,或者單獨(dú)地為各邊邊框設(shè)置寬度

border-color 簡寫屬性顾犹,設(shè)置元素的所有邊框中可見部分的顏色倒庵,或?yàn)?4 個(gè)邊分別設(shè)置顏色

border-[bottom|top|left|right] 簡寫屬性,用于把上下左右邊框的所有屬性設(shè)置到一個(gè)聲明中

border-[bottom|top|left|right]-color 設(shè)置元素的上下左右邊框的顏色

border-[bottom|top|left|right]-style 設(shè)置元素的上下左右邊框的樣式

border-[bottom|top|left|right]-width 設(shè)置元素的上下左右邊框的寬度

border-radius 設(shè)置元素邊框圓角屬性

外邊距(margin)

圍繞在元素邊框的空白區(qū)域是外邊距炫刷。設(shè)置外邊距會(huì)在元素外創(chuàng)建額外的“空白”擎宝。設(shè)置外邊距的最簡單的方法就是使用 margin 屬性,這個(gè)屬性接受任何長度單位浑玛、百分?jǐn)?shù)值甚至負(fù)值


body{margin: top right bottom left}

h1{margin: 10px 20px 10px 20px}

h1{margin: 10px 20px}

h1{margin: 10px}

屬性

margin 簡寫屬性绍申。在一個(gè)聲明中設(shè)置所有外邊距屬性

margin-top 設(shè)置元素的上外邊距

margin-right 設(shè)置元素的右外邊距

margin-bottom 設(shè)置元素的下外邊距

margin-left 設(shè)置元素的左外邊距

CSS樣式

CSS 尺寸 (Dimension)

CSS 尺寸 (Dimension) 屬性允許你控制元素的高度和寬度。同樣,它允許你增加行間距极阅。

所有CSS 尺寸 (Dimension)屬性

屬性

描述

height

設(shè)置元素的高度胃碾。

line-height

設(shè)置行高。

max-height

設(shè)置元素的最大高度涂屁。

max-width

設(shè)置元素的最大寬度书在。

min-height

設(shè)置元素的最小高度。

min-width

設(shè)置元素的最小寬度拆又。

width

設(shè)置元素的寬度儒旬。

CSS背景(background)

CSS 允許應(yīng)用純色作為背景,也允許使用背景圖像創(chuàng)建相當(dāng)復(fù)雜的效果帖族。


body

{

    background: #00ff00 url('smiley.gif') no-repeat fixed center;

}

background-color 指定要使用的背景顏色

background-position 指定背景圖像的位置

background-size 指定背景圖片的大小

background-repeat 指定如何重復(fù)背景圖像

background-attachment 設(shè)置背景圖像是否固定或者隨著頁面的其余部分滾動(dòng)

background-image 指定要使用的一個(gè)或多個(gè)背景圖像

background-position 屬性取值

描述

left top

left center

left bottom

right top

right center

right bottom

center top

center center

center bottom

如果僅指定一個(gè)關(guān)鍵字栈源,其他值將會(huì)是"center"

x% y%

第一個(gè)值是水平位置,第二個(gè)值是垂直竖般。左上角是0%0%甚垦。右下角是100%100%。如果僅指定了一個(gè)值涣雕,其他值將是50%艰亮。 。默認(rèn)值為:0%0%

xpos ypos

第一個(gè)值是水平位置挣郭,第二個(gè)值是垂直迄埃。左上角是0。單位可以是像素(0px0px)或任何其他 CSS單位兑障。如果僅指定了一個(gè)值侄非,其他值將是50%。你可以混合使用%和positions

inherit

指定background-position屬性設(shè)置應(yīng)該從父元素繼承

background-attachment屬性取值

說明

scroll

背景圖片隨頁面的其余部分滾動(dòng)流译。這是默認(rèn)

fixed

背景圖像是固定的

inherit

指定background-attachment的設(shè)置應(yīng)該從父元素繼承

background-repeat屬性取值

說明

repeat

背景圖像將向垂直和水平方向重復(fù)逞怨。這是默認(rèn)

repeat-x

只有水平位置會(huì)重復(fù)背景圖像

repeat-y

只有垂直位置會(huì)重復(fù)背景圖像

no-repeat

background-image不會(huì)重復(fù)

inherit

指定background-repea屬性設(shè)置應(yīng)該從父元素繼承

CSS文本(Text)

CSS 文本屬性可定義文本的外觀。通過文本屬性福澡,您可以改變文本的顏色叠赦、字符間距,對(duì)齊文本革砸,裝飾文本眯搭,對(duì)文本進(jìn)行縮進(jìn),等等

屬性

描述

color

設(shè)置文本顏色

direction

設(shè)置文本方向业岁。

line-height

設(shè)置行高鳞仙。

letter-spacing

設(shè)置字符間距。

text-align

對(duì)齊元素中的文本笔时。

text-indent

縮進(jìn)元素中文本的首行棍好。

text-shadow

設(shè)置文本陰影。CSS2 包含該屬性,但是 CSS2.1 沒有保留該屬性借笙。

text-transform

控制元素中的字母扒怖。

white-space

設(shè)置元素中空白的處理方式。

word-spacing

設(shè)置字間距业稼。


div {

    text-indent: 10px;

    color: red;

    line-height: 1.5;

    text-align: center;

    white-space: nowrap;//不折行

    }

    ```

### CSS字體(fonts)

CSS 字體屬性定義文本的字體系列盗痒、大小、加粗低散、風(fēng)格(如斜體)和變形(如小型大寫字母)俯邓。

body {

font-family: sans-serif;

font-style:normal;

font-weight:normal;

font-size:60px;

}

font-style 屬性最常用于規(guī)定斜體文本。

該屬性有三個(gè)值:

normal - 文本正常顯示

italic - 文本斜體顯示

oblique - 文本傾斜顯示

使用 bold 關(guān)鍵字可以將文本設(shè)置為粗體熔号。

關(guān)鍵字 100 ~ 900 為字體指定了 9 級(jí)加粗度稽鞭。如果一個(gè)字體內(nèi)置了這些

加粗級(jí)別,那么這些數(shù)字就直接映射到預(yù)定義的級(jí)別引镊,100 對(duì)應(yīng)最細(xì)的字體

變形朦蕴,900 對(duì)應(yīng)最粗的字體變形。數(shù)字 400 等價(jià)于 normal弟头,而 700 等

價(jià)于 bold吩抓。

#### 屬性

描述

font

簡寫屬性。作用是把所有針對(duì)字體的屬性設(shè)置在一個(gè)聲明中赴恨。

font-family

設(shè)置字體系列疹娶。

font-size

設(shè)置字體的尺寸屈溉。

font-style

設(shè)置字體風(fēng)格。

font-weight

設(shè)置字體的粗細(xì)失受。

###CSS鏈接(link)

為鏈接設(shè)置樣式

a:link {color:#FF0000;} /* 未被訪問的鏈接 */

a:visited {color:#00FF00;} /* 已被訪問的鏈接 */

a:hover {color:#FF00FF;} /* 鼠標(biāo)指針移動(dòng)到鏈接上 */

a:active {color:#0000FF;} /* 正在被點(diǎn)擊的鏈接 */

a:link {text-decoration:none;}

a:visited {text-decoration:none;}

a:hover {text-decoration:underline;}

a:active {text-decoration:underline;}


### CSS列表(ul)

CSS 列表屬性允許你放置勺阐、改變列表項(xiàng)標(biāo)志,或者將圖像作為列表項(xiàng)標(biāo)志

`li {list-style : url(example.gif) square inside}`

#### 屬性

描述

list-style

簡寫屬性匹舞。用于把所有用于列表的屬性設(shè)置于一個(gè)聲明中。

list-style-image

將圖象設(shè)置為列表項(xiàng)標(biāo)志。

list-style-position

設(shè)置列表中列表項(xiàng)標(biāo)志的位置汛聚。

list-style-type

設(shè)置列表項(xiàng)標(biāo)志的類型。

list-style-type屬性值

####值

描述

none

無標(biāo)記短荐。

disc

默認(rèn)倚舀。標(biāo)記是實(shí)心圓。

circle

標(biāo)記是空心圓忍宋。

square

標(biāo)記是實(shí)心方塊痕貌。

decimal

標(biāo)記是數(shù)字。

decimal-leading-zero

0開頭的數(shù)字標(biāo)記糠排。(01, 02, 03, 等舵稠。)

Demo

### CSS表格(Table)

table, th, td{

border: 1px solid blue;

}

td{

height:50px;

vertical-align:bottom;

text-align:right;

}

th{

background-color:green;

color:white;

}


#### 屬性

描述

border-collapse

設(shè)置是否把表格邊框合并為單一的邊框。

border-spacing

設(shè)置分隔單元格邊框的距離。

caption-side

設(shè)置表格標(biāo)題的位置哺徊。

empty-cells

設(shè)置是否顯示表格中的空單元格室琢。

table-layout

設(shè)置顯示單元、行和列的算法盈滴。

### CSS 輪廓(outline)

輪廓(outline)是繪制于元素周圍的一條線,位于邊框邊緣的外圍轿钠,可起到突出元素的作用巢钓。CSS outline 屬性規(guī)定元素輪廓的樣式、顏色和寬度谣膳。

#### 屬性

描述

CSS

outline

在一個(gè)聲明中設(shè)置所有的輪廓屬性竿报。

outline-color

設(shè)置輪廓的顏色。

outline-style

設(shè)置輪廓的樣式继谚。

outline-width

設(shè)置輪廓的寬度烈菌。

p {

border:red solid thin;

outline:#00ff00 dotted thick;

}


## CSS定位(position)

CSS 定位 (Positioning) 屬性允許你對(duì)元素進(jìn)行定位,CSS 為定位和浮動(dòng)提供了一些屬性花履,利用這些屬性芽世,可以建立列式布局,將布局的一部分與另一部分重疊诡壁,定位的基本思想很簡單济瓢,它允許你定義元素框相對(duì)于其正常位置應(yīng)該出現(xiàn)的位置,或者相對(duì)于父元素妹卿、另一個(gè)元素甚至瀏覽器窗口本身的位置旺矾。

### static 定位

HTML 元素的默認(rèn)值,即沒有定位夺克,遵循正常的文檔流對(duì)象箕宙。靜態(tài)定位的元素不會(huì)受到 top, bottom, left, right影響。

div.static {

position: static;

border: 3px solid #73AD21;

}


### 絕對(duì)定位(absolute)

設(shè)置為絕對(duì)定位的元素框從文檔流完全刪除铺纽,并相對(duì)于其包含塊定位柬帕,包含塊可能是文檔中的另一個(gè)元素或者是初始包含塊。元素原先在正常文檔流中所占的空間會(huì)關(guān)閉狡门,就好像該元素原來不存在一樣陷寝。元素定位后生成一個(gè)塊級(jí)框,而不論原來它在正常流中生成何種類型的框其馏。

box_relative {

position: absolute;

left: 30px;

top: 20px;

}


### 相對(duì)定位(relative)

設(shè)置為相對(duì)定位的元素框會(huì)偏移某個(gè)距離凤跑。元素仍然保持其未定位前的形狀,它原本所占的空間仍保留

box_relative {

position: relative;

left: 30px;

top: 20px;

}


### 相對(duì)定位和絕對(duì)定位關(guān)系

在沒有父級(jí)元素定位時(shí)叛复,以瀏覽器的左上角為基準(zhǔn)

有父級(jí)的情況下饶火,父級(jí)設(shè)置相對(duì)定位鹏控,子級(jí)設(shè)置絕對(duì)定位 是以父盒子進(jìn)行定位的

html代碼

<div class="parent">

<div class="child"></div>

</div>

css代碼

.parent{

position: relative;

top: 10px;

left: 10px;

}

.child{

position: absolute;

top: 10px;

left: 10px;

}


### fixed 定位

元素的位置相對(duì)于瀏覽器窗口是固定位置,即使窗口是滾動(dòng)的它也不會(huì)移動(dòng):

p.pos_fixed

{

position:fixed;

top:30px;

right:5px;

}


### CSS 浮動(dòng)

浮動(dòng)的框可以向左或向右移動(dòng),直到它的外邊緣碰到包含框或另一個(gè)浮動(dòng)框的邊框?yàn)橹狗羟蕖S捎诟?dòng)框不在文檔的普通流中当辐,所以文檔的普通流中的塊框表現(xiàn)得就像浮動(dòng)框不存在一樣。

html代碼

<div>

<span></span>

<span></span>

<span></span>

</div>

css代碼

span{

float:left;

width:50px;

height: 50px;

}

```

clear 屬性

阻止行框圍繞浮動(dòng)框鲤看,需要對(duì)該框應(yīng)用 clear 屬性缘揪。clear 屬性的值可以是 left、right义桂、both 或 none找筝,它表示框的哪些邊不應(yīng)該挨著浮動(dòng)框。


.news {

  background-color: gray;

  border: solid 1px black;

  }

.news img {

  float: left;

  }

.news p {

  float: right;

  }

.clear {

  clear: both;

  }

<div class="news">

  <img src="news-pic.jpg" />

  <p>some text</p>

<div class="clear"></div>

</div>

屬性

說明|值

bottom|定義了定位元素下外邊距邊界與其包含塊下邊界之間的偏移慷吊。

auto

length

%

inherit

clip

剪輯一個(gè)絕對(duì)定位的元素

shape

auto

inherit

cursor

顯示光標(biāo)移動(dòng)到指定的類型

url

auto

crosshair

default

pointer

move

e-resize

ne-resize

nw-resize

n-resize

se-resize

sw-resize

s-resize

w-resize

text

wait

help

left

定義了定位元素左外邊距邊界與其包含塊左邊界之間的偏移袖裕。

auto

length

%

inherit

overflow

設(shè)置當(dāng)元素的內(nèi)容溢出其區(qū)域時(shí)發(fā)生的事情。

auto

hidden

scroll

visible

inherit

overflow-y

指定如何處理頂部/底部邊緣的內(nèi)容溢出元素的內(nèi)容區(qū)域

auto

hidden

scroll

visible

no-display

no-content

overflow-x

指定如何處理右邊/左邊邊緣的內(nèi)容溢出元素的內(nèi)容區(qū)域

auto

hidden

scroll

visible

no-display

no-content

position

指定元素的定位類型

absolute

fixed

relative

static

inherit

right

定義了定位元素右外邊距邊界與其包含塊右邊界之間的偏移溉瓶。

auto

length

%

inherit

top

定義了一個(gè)定位元素的上外邊距邊界與其包含塊上邊界之間的偏移急鳄。

auto

length

%

inherit

z-index

設(shè)置元素的堆疊順序

number

auto

inherit

Display(顯示) 與 Visibility(可見性)

隱藏元素 - display:none或visibility:hidden

隱藏一個(gè)元素可以通過把display屬性設(shè)置為"none",或把visibility屬性設(shè)置為"hidden"堰酿。但是請(qǐng)注意疾宏,這兩種方法會(huì)產(chǎn)生不同的結(jié)果。visibility:hidden可以隱藏某個(gè)元素触创,但隱藏的元素仍需占用與未隱藏之前一樣的空間坎藐。也就是說,該元素雖然被隱藏了哼绑,但仍然會(huì)影響布局岩馍。


h1.hidden {visibility:hidden;}

h1.hidden {display:none;}

CSS Display - 塊和內(nèi)聯(lián)元素

塊級(jí)元素(block)特性:

總是獨(dú)占一行,表現(xiàn)為另起一行開始抖韩,而且其后的元素也必須另起一行顯示;

寬度(width)蛀恩、高度(height)、內(nèi)邊距(padding)和外邊距(margin)都可控制;

內(nèi)聯(lián)元素(inline)特性:

和相鄰的內(nèi)聯(lián)元素在同一行;

寬度(width)帽蝶、高度(height)赦肋、內(nèi)邊距的top/bottom(padding-top/padding-bottom)和外邊距的top/bottom(margin-top/margin-bottom)都不可改變块攒,就是里面文字或圖片的大小;

塊級(jí)元素主要有:

address , blockquote , center , dir , div , dl , fieldset , form , h1 , h2 , h3 , h4 , h5 , h6 , hr , isindex , menu , noframes , noscript , ol , p , pre , table , ul , li

內(nèi)聯(lián)元素主要有:

a , abbr , acronym , b , bdo , big , br , cite , code , dfn , em , font , i , img , input , kbd , label , q , s , samp , select , small , span , strike , strong , sub , sup ,textarea , tt , u , var

可變?cè)?根據(jù)上下文關(guān)系確定該元素是塊元素還是內(nèi)聯(lián)元素):

applet ,button ,del ,iframe , ins ,map ,object , script

CSS中塊級(jí)励稳、內(nèi)聯(lián)元素的應(yīng)用:

利用CSS我們可以擺脫上面表格里HTML標(biāo)簽歸類的限制,自由地在不同標(biāo)簽/元素上應(yīng)用我們需要的屬性囱井。

主要用的CSS樣式有以下三個(gè):

display:block -- 顯示為塊級(jí)元素

display:inline -- 顯示為內(nèi)聯(lián)元素

display:inline-block -- 顯示為內(nèi)聯(lián)塊元素驹尼,表現(xiàn)為同行顯示并可修改寬高內(nèi)外邊距等屬性

我們常將元素加上display:inline-block樣式,原本垂直的列表就可以水平顯示了庞呕。

CSS3 彈性盒子(Flex Box)

彈性盒子是 CSS3 的一種新的布局模式新翎。CSS3 彈性盒( Flexible Box 或 flexbox)程帕,是一種當(dāng)頁面需要適應(yīng)不同的屏幕大小以及設(shè)備類型時(shí)確保元素?fù)碛星‘?dāng)?shù)男袨榈牟季址绞健R霃椥院胁季帜P偷哪康氖翘峁┮环N更加有效的方式來對(duì)一個(gè)容器中的子元素進(jìn)行排列地啰、對(duì)齊和分配空白空間愁拭。

彈性盒子內(nèi)容

彈性盒子由彈性容器(Flex container)和彈性子元素(Flex item)組成。彈性容器通過設(shè)置 display 屬性的值為 flex 或 inline-flex將其定義為彈性容器亏吝。彈性容器內(nèi)包含了一個(gè)或多個(gè)彈性子元素岭埠。


<!DOCTYPE html>

<html>

<head>

<style>

.flex-container {

    display: -webkit-flex;

    display: flex;

    width: 400px;

    height: 250px;

    background-color: lightgrey;

}

.flex-item {

    background-color: cornflowerblue;

    width: 100px;

    height: 100px;

    margin: 10px;

}

</style>

</head>

<body>

<div class="flex-container">

  <div class="flex-item">flex item 1</div>

  <div class="flex-item">flex item 2</div>

  <div class="flex-item">flex item 3</div>

</div>

</body>

</html>

flex-direction

flex-direction 屬性指定了彈性子元素在父容器中的位置。

語法

flex-direction: row | row-reverse | column | column-reverse

flex-direction的值有:

row:橫向從左到右排列(左對(duì)齊)蔚鸥,默認(rèn)的排列方式惜论。

row-reverse:反轉(zhuǎn)橫向排列(右對(duì)齊,從后往前排止喷,最后一項(xiàng)排在最前面馆类。

column:縱向排列。

column-reverse:反轉(zhuǎn)縱向排列弹谁,從后往前排乾巧,最后一項(xiàng)排在最上面。

.flex-container {

display: -webkit-flex;

display: flex;

-webkit-flex-direction: row-reverse;

flex-direction: row-reverse;

width: 400px;

height: 250px;

background-color: lightgrey;

}

justify-content 屬性

內(nèi)容對(duì)齊(justify-content)屬性應(yīng)用在彈性容器上僵闯,把彈性項(xiàng)沿著彈性容器的主軸線(main axis)對(duì)齊卧抗。

justify-content 語法如下:

justify-content: flex-start | flex-end | center | space-between | space-around

各個(gè)值解析:

flex-start:彈性項(xiàng)目向行頭緊挨著填充。這個(gè)是默認(rèn)值鳖粟。第一個(gè)彈性項(xiàng)的main-start外邊距邊線被放置在該行的main-start邊線社裆,而后續(xù)彈性項(xiàng)依次平齊擺放。

flex-end:彈性項(xiàng)目向行尾緊挨著填充向图。第一個(gè)彈性項(xiàng)的main-end外邊距邊線被放置在該行的main-end邊線泳秀,而后續(xù)彈性項(xiàng)依次平齊擺放。

center:彈性項(xiàng)目居中緊挨著填充榄攀。(如果剩余的自由空間是負(fù)的嗜傅,則彈性項(xiàng)目將在兩個(gè)方向上同時(shí)溢出)。

space-between:彈性項(xiàng)目平均分布在該行上檩赢。如果剩余空間為負(fù)或者只有一個(gè)彈性項(xiàng)吕嘀,則該值等同于flex-start。否則贞瞒,第1個(gè)彈性項(xiàng)的外邊距和行的main-start邊線對(duì)齊偶房,而最后1個(gè)彈性項(xiàng)的外邊距和行的main-end邊線對(duì)齊,然后剩余的彈性項(xiàng)分布在該行上军浆,相鄰項(xiàng)目的間隔相等棕洋。

space-around:彈性項(xiàng)目平均分布在該行上,兩邊留有一半的間隔空間乒融。如果剩余空間為負(fù)或者只有一個(gè)彈性項(xiàng)掰盘,則該值等同于center摄悯。否則,彈性項(xiàng)目沿該行分布愧捕,且彼此間隔相等(比如是20px)奢驯,同時(shí)首尾兩邊和彈性容器之間留有一半的間隔(1/2*20px=10px)。


.flex-container {

    display: -webkit-flex;

    display: flex;

    -webkit-justify-content: flex-end;

    justify-content: flex-end;

    width: 400px;

    height: 250px;

    background-color: lightgrey;

}

align-items 屬性

align-items 設(shè)置或檢索彈性盒子元素在側(cè)軸(縱軸)方向上的對(duì)齊方式次绘。

語法

align-items: flex-start | flex-end | center | baseline | stretch

各個(gè)值解析:

flex-start:彈性盒子元素的側(cè)軸(縱軸)起始位置的邊界緊靠住該行的側(cè)軸起始邊界叨橱。

flex-end:彈性盒子元素的側(cè)軸(縱軸)起始位置的邊界緊靠住該行的側(cè)軸結(jié)束邊界。

center:彈性盒子元素在該行的側(cè)軸(縱軸)上居中放置断盛。(如果該行的尺寸小于彈性盒子元素的尺寸罗洗,則會(huì)向兩個(gè)方向溢出相同的長度)。

baseline:如彈性盒子元素的行內(nèi)軸與側(cè)軸為同一條钢猛,則該值與'flex-start'等效伙菜。其它情況下,該值將參與基線對(duì)齊命迈。

stretch:如果指定側(cè)軸大小的屬性值為'auto'贩绕,則其值會(huì)使項(xiàng)目的邊距盒的尺寸盡可能接近所在行的尺寸,但同時(shí)會(huì)遵照'min/max-width/height'屬性的限制壶愤。

.flex-container {

display: -webkit-flex;

display: flex;

-webkit-align-items: stretch;

align-items: stretch;

width: 400px;

height: 250px;

background-color: lightgrey;

}

flex-wrap 屬性

flex-wrap 屬性用于指定彈性盒子的子元素?fù)Q行方式淑倾。

語法

flex-wrap: nowrap|wrap|wrap-reverse|initial|inherit;

各個(gè)值解析:

nowrap - 默認(rèn), 彈性容器為單行征椒。該情況下彈性子項(xiàng)可能會(huì)溢出容器娇哆。

wrap - 彈性容器為多行。該情況下彈性子項(xiàng)溢出的部分會(huì)被放置到新行勃救,子項(xiàng)內(nèi)部會(huì)發(fā)生斷行

wrap-reverse -反轉(zhuǎn) wrap 排列碍讨。


.flex-container {

    display: -webkit-flex;

    display: flex;

    -webkit-flex-wrap: nowrap;

    flex-wrap: nowrap;

    width: 300px;

    height: 250px;

    background-color: lightgrey;

}

彈性子元素屬性

排序

語法

order:

各個(gè)值解析:

<integer>:用整數(shù)值來定義排列順序,數(shù)值小的排在前面蒙秒〔颍可以為負(fù)值。

order 屬性設(shè)置彈性容器內(nèi)彈性子元素的屬性:

對(duì)齊

設(shè)置"margin"值為"auto"值晕讲,自動(dòng)獲取彈性容器中剩余的空間覆获。所以設(shè)置垂直方向margin值為"auto",可以使彈性子元素在彈性容器的兩上軸方向都完全居中瓢省。

以下實(shí)例在第一個(gè)彈性子元素上設(shè)置了 margin-right: auto; 弄息。 它將剩余的空間放置在元素的右側(cè):

完美的居中

以下實(shí)例將完美解決我們平時(shí)碰到的居中問題。

使用彈性盒子净捅,居中變的很簡單疑枯,只想要設(shè)置 margin: auto; 可以使得彈性子元素在兩上軸方向上完全居中:

align-self

align-self 屬性用于設(shè)置彈性元素自身在側(cè)軸(縱軸)方向上的對(duì)齊方式辩块。

語法

align-self: auto | flex-start | flex-end | center | baseline | stretch

各個(gè)值解析:

auto:如果'align-self'的值為'auto'蛔六,則其計(jì)算值為元素的父元素的'align-items'值荆永,如果其沒有父元素,則計(jì)算值為'stretch'国章。

flex-start:彈性盒子元素的側(cè)軸(縱軸)起始位置的邊界緊靠住該行的側(cè)軸起始邊界具钥。

flex-end:彈性盒子元素的側(cè)軸(縱軸)起始位置的邊界緊靠住該行的側(cè)軸結(jié)束邊界。

center:彈性盒子元素在該行的側(cè)軸(縱軸)上居中放置液兽。(如果該行的尺寸小于彈性盒子元素的尺寸骂删,則會(huì)向兩個(gè)方向溢出相同的長度)。

baseline:如彈性盒子元素的行內(nèi)軸與側(cè)軸為同一條四啰,則該值與'flex-start'等效宁玫。其它情況下,該值將參與基線對(duì)齊柑晒。

stretch:如果指定側(cè)軸大小的屬性值為'auto'欧瘪,則其值會(huì)使項(xiàng)目的邊距盒的尺寸盡可能接近所在行的尺寸,但同時(shí)會(huì)遵照'min/max-width/height'屬性的限制匙赞。

flex

flex 屬性用于指定彈性子元素如何分配空間佛掖。

語法

flex: auto | initial | none | inherit | [ flex-grow ] || [ flex-shrink ] || [ flex-basis ]

各個(gè)值解析:

auto: 計(jì)算值為 1 1 auto

initial: 計(jì)算值為 0 1 auto

none:計(jì)算值為 0 0 auto

inherit:從父元素繼承

[ flex-grow ]:定義彈性盒子元素的擴(kuò)展比率。

[ flex-shrink ]:定義彈性盒子元素的收縮比率涌庭。

[ flex-basis ]:定義彈性盒子元素的默認(rèn)基準(zhǔn)值芥被。

CSS3 彈性盒子屬性

屬性

描述

display

指定 HTML 元素盒子類型。

flex-direction

指定了彈性容器中子元素的排列方式

justify-content

設(shè)置彈性盒子元素在主軸(橫軸)方向上的對(duì)齊方式坐榆。

align-items

設(shè)置彈性盒子元素在側(cè)軸(縱軸)方向上的對(duì)齊方式拴魄。

flex-wrap

設(shè)置彈性盒子的子元素超出父容器時(shí)是否換行。

align-content

修改 flex-wrap 屬性的行為席镀,類似 align-items, 但不是設(shè)置子元素對(duì)齊羹铅,而是設(shè)置行對(duì)齊

flex-flow

flex-direction 和 flex-wrap 的簡寫

order

設(shè)置彈性盒子的子元素排列順序。

align-self

在彈性子元素上使用愉昆。覆蓋容器的 align-items 屬性职员。

flex

設(shè)置彈性盒子的子元素如何分配空間。

垂直居中方案

方法1:table-cell


html結(jié)構(gòu):

<div class="box box1"><span>垂直居中</span></div>

css

.box1{

    display: table-cell;

    vertical-align: middle;

    text-align: center;

    }

方法2:display:flex


.box2{

    display: flex;

    justify-content:center;

    align-items:Center;

    }

    ```

方法3:絕對(duì)定位和負(fù)邊

.box3{position:relative;}

.box3 span{

        position: absolute;

        width:100px;

        height: 50px;

        top:50%;

        left:50%;

        margin-left:-50px;

        margin-top:-25px;

        text-align: center;

    }

方法4:絕對(duì)定位和0

.box4 span{

width: 50%;

height: 50%;

background: #000;

overflow: auto;

margin: auto;

position: absolute;

top: 0;

left: 0;

bottom: 0;

right: 0;

}

這種方法跟上面的有些類似跛溉,但是這里是通過margin:auto和top,left,right,bottom都設(shè)置為0實(shí)現(xiàn)居中焊切,很神奇吧。不過這里得確定內(nèi)部元素的高度芳室,可以用百分比专肪,比較適合移動(dòng)端。

方法5:translate

這實(shí)際上是方法3的變形堪侯,移位是通過translate來實(shí)現(xiàn)的嚎尤。

.box6 span{

position: absolute;

top:50%;

left:50%; 

width:100%;

transform:translate(-50%,-50%); 

text-align: center;

}

方法6:display:inline-block

.box7{

text-align:center;

font-size:0;

}

.box7 span{

vertical-align:middle;

display:inline-block; 

font-size:16px;

}

.box7:after{

content:'';

width:0;

height:100%;

display:inline-block;

vertical-align:middle;

}


這種方法確實(shí)巧妙...通過:after來占位。

方法7:display:flex和margin:auto

.box8{

display: flex;

text-align: center;

}

.box8 span{margin: auto;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末伍宦,一起剝皮案震驚了整個(gè)濱河市芽死,隨后出現(xiàn)的幾起案子乏梁,更是在濱河造成了極大的恐慌,老刑警劉巖关贵,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遇骑,死亡現(xiàn)場離奇詭異,居然都是意外死亡揖曾,警方通過查閱死者的電腦和手機(jī)落萎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炭剪,“玉大人练链,你說我怎么就攤上這事∨梗” “怎么了兑宇?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長粱坤。 經(jīng)常有香客問我隶糕,道長,這世上最難降的妖魔是什么站玄? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任枚驻,我火速辦了婚禮,結(jié)果婚禮上株旷,老公的妹妹穿的比我還像新娘再登。我一直安慰自己,他們只是感情好晾剖,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布锉矢。 她就那樣靜靜地躺著,像睡著了一般齿尽。 火紅的嫁衣襯著肌膚如雪沽损。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天循头,我揣著相機(jī)與錄音绵估,去河邊找鬼。 笑死卡骂,一個(gè)胖子當(dāng)著我的面吹牛国裳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播全跨,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼缝左,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起渺杉,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤蛇数,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后少办,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诵原,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年英妓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绍赛。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蔓纠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吗蚌,到底是詐尸還是另有隱情腿倚,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布蚯妇,位于F島的核電站敷燎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏箩言。R本人自食惡果不足惜硬贯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望陨收。 院中可真熱鬧饭豹,春花似錦、人聲如沸务漩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饵骨。三九已至翘悉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間居触,已是汗流浹背镐确。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饼煞,地道東北人源葫。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像砖瞧,于是被迫代替她去往敵國和親息堂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評(píng)論 1 92
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color荣堰,font床未,text-align,li...
    love2013閱讀 2,303評(píng)論 0 11
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color振坚,font薇搁,text-align,li...
    wzhiq896閱讀 1,730評(píng)論 0 2
  • 一渡八、CSS入門 1啃洋、css選擇器 選擇器的作用是“用于確定(選定)要進(jìn)行樣式設(shè)定的標(biāo)簽(元素)”。 有若干種形式的...
    寵辱不驚丶?xì)q月靜好閱讀 1,584評(píng)論 0 6
  • H5移動(dòng)端知識(shí)點(diǎn)總結(jié) 閱讀目錄 移動(dòng)開發(fā)基本知識(shí)點(diǎn) calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,395評(píng)論 0 26