CSS3的學習之路


課程目標:

  1. 學會使用CSS選擇器
  2. 熟記CSS樣式和外觀屬性
  3. 熟練掌握CSS各種選擇器
  4. 熟練掌握CSS各種選擇器
  5. 熟練掌握CSS三種顯示模式
  6. 熟練掌握CSS背景屬性
  7. 熟練掌握CSS三大特性
  8. 熟練掌握CSS盒子模型
  9. 熟練掌握CSS浮動
    10.熟練掌握CSS定位
    11.熟練掌握CSS高級技巧強化CSS
    typora-copy-images-to: media

CSS的發展歷程

從HTML被發明開始,樣式就以各種形式存在。不同的瀏覽器結合它們各自的樣式語言為用戶提供頁面效果的控制。最初的HTML只包含很少的顯示屬性。
隨著HTML的成長,為了滿足頁面設計者的要求,HTML添加了很多顯示功能。但是隨著這些功能的增加,HTML變的越來越雜亂,而且HTML頁面也越來越臃腫。于是CSS便誕生了。

CSS 網頁的美容師

CSS的出現,拯救了混亂的HTML,當讓更加拯救了我們web開發者。 讓我們的網頁更加豐富多彩。

CSS的最大貢獻就是: 讓 HTML 從樣式中解脫苦海, 實現了 HTML 專注去做 結構呈現。 而樣式交給 CSS 后,你完全可以放心的早點洗洗睡了!

而且。。。。。 CSS 做的很出色,如果JavaScript是網頁的魔法師,那么CSS它是我們網頁的美容師,不信,你看:

<img src="media/baby.jpeg" />

ps: 你跟Angelababy只差了一個妝容的距離

有人說, 沒有不漂亮的女人,只有不會打扮的女人。

我想說, 沒有不好看的網頁,只有不會CSS的前端。

CSS初識

CSS(Cascading Style Sheets) 美化樣式

CSS通常稱為CSS樣式表或層疊樣式表(級聯樣式表),主要用于設置HTML頁面中的文本內容(字體、大小、對齊方式等)、圖片的外形(寬高、邊框樣式、邊距等)以及版面的布局等外觀顯示樣式。

CSS以HTML為基礎,提供了豐富的功能,如字體、顏色、背景的控制及整體排版等,而且還可以針對不同的瀏覽器設置不同的樣式。

引入CSS樣式表(書寫位置)

CSS可以寫到那個位置? 是不是一定寫到html文件里面呢?

內部樣式表

內嵌式是將CSS代碼集中寫在HTML文檔的head頭部標簽中,并且用style標簽定義,其基本語法格式如下:

<head>
<style type="text/CSS">
    選擇器 {屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3;}
</style>
</head>

語法中,style標簽一般位于head標簽中title標簽之后,也可以把他放在HTML文檔的任何地方。

type="text/CSS" 在html5中可以省略, 寫上也比較符合規范, 所以這個地方可以寫也可以省略。

行內式(內聯樣式)

內聯樣式,又有人稱行內樣式、行間樣式、內嵌樣式。是通過標簽的style屬性來設置元素的樣式,其基本語法格式如下:

<標簽名 style="屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3;"> 內容 </標簽名>

語法中style是標簽的屬性,實際上任何HTML標簽都擁有style屬性,用來設置行內式。其中屬性和值的書寫規范與CSS樣式規則相同,行內式只對其所在的標簽及嵌套在其中的子標簽起作用。

外部樣式表(外鏈式)

鏈入式是將所有的樣式放在一個或多個以.CSS為擴展名的外部樣式表文件中,通過link標簽將外部樣式表文件鏈接到HTML文檔中,其基本語法格式如下:

<head>
  <link href="CSS文件的路徑"  rel="stylesheet" />
</head>

注意: link 是個單標簽哦!!!

該語法中,link標簽需要放在head頭部標簽中,并且必須指定link標簽的三個屬性,具體如下:

href:定義所鏈接外部樣式表文件的URL,可以是相對路徑,也可以是絕對路徑。
type:定義所鏈接文檔的類型,在這里需要指定為“text/CSS”,表示鏈接的外部文件為CSS樣式表。
rel:定義當前文檔與被鏈接文檔之間的關系,在這里需要指定為“stylesheet”,表示被鏈接的文檔是一個樣式表文件。

三種樣式表總結(位置)

樣式表 優點 缺點 使用情況 控制范圍
行內樣式表 書寫方便,權重高 沒有實現樣式和結構相分離 較少 控制一個標簽(少)
內部樣式表 部分結構和樣式相分離 沒有徹底分離 較多 控制一個頁面(中)
外部樣式表 完全實現結構和樣式相分離 需要引入 最多,強烈推薦 控制整個站點(多)

CSS樣式規則

使用HTML時,需要遵從一定的規范。CSS亦如此,要想熟練地使用CSS對網頁進行修飾,首先需要了解CSS樣式規則,具體格式如下:

<img src="media/gz.png" />

在上面的樣式規則中:

1.選擇器用于指定CSS樣式作用的HTML對象,花括號內是對該對象設置的具體樣式。
2.屬性和屬性值以“鍵值對”的形式出現。
3.屬性是對指定的對象設置的樣式屬性,例如字體大小、文本顏色等。
4.屬性和屬性值之間用英文“:”連接。
5.多個“鍵值對”之間用英文“;”進行區分。
可以用段落 和 表格的對齊的演示。

選擇器(重點)

要想將CSS樣式應用于特定的HTML元素,首先需要找到該目標元素。在CSS中,執行這一任務的樣式規則部分被稱為選擇器(選擇符)。

<img src="media/ax.png" />

如上圖所以,要把里面的小黃人分為2組,最快的方法怎辦?

很多, 比如 一只眼睛的一組,剩下的一組

選擇器干啥的? 選擇標簽用的

這就用到基礎選擇器組:

CSS基礎選擇器

標簽選擇器(元素選擇器)

標簽選擇器是指用HTML標簽名稱作為選擇器,按標簽名稱分類,為頁面中某一類標簽指定統一的CSS樣式。其基本語法格式如下:

標簽名{屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }  或者
元素名{屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }

標簽選擇器最大的優點是能快速為頁面中同類型的標簽統一樣式,同時這也是他的缺點,不能設計差異化樣式。

標簽選擇器 可以把某一類標簽全部選擇出來 div span

課堂案例:

傳智簡介

類選擇器

類選擇器使用“.”(英文點號)進行標識,后面緊跟類名,其基本語法格式如下:

.類名{屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }
 標簽調用的時候用 class=“類名”  即可。

類選擇器最大的優勢是可以為元素對象定義單獨或相同的樣式。 可以選擇一個或者多個標簽

<img src="media/good.png" />小技巧:

1.長名稱或詞組可以使用中橫線來為選擇器命名。
2.不建議使用“_”下劃線來命名CSS選擇器。

? 輸入的時候少按一個shift鍵;
 瀏覽器兼容問題 (比如使用tips的選擇器命名,在IE6是無效的)
 能良好區分JavaScript變量命名(JS變量命名是用“
”)

3.不要純數字、中文等命名, 盡量使用英文字母來表示。

猜謎底游戲:

<img src="media/midi.png" width="450" /> 你猜?

命名規范: 見附件(Web前端開發規范手冊.doc)

命名是我們通俗約定的,但是沒有規定必須用這些常用的命名。

課堂案例:

<img src="media/go.png" />














<head>
        <meta charset="utf-8">
        <style>
        span {
            font-size: 100px;
        }
        .blue {
            color: blue;
        }
        .red {
            color: red;
        }
        .orange {
            color: orange;
        }
        .green {
            color: green;
        }
        </style>
    </head>
    <body>
        <span class="blue">G</span>
        <span class="red">o</span>
        <span class="orange">o</span>
        <span class="blue">g</span>
        <span class="green">l</span>
        <span class="red">e</span>
    </body>

多類名選擇器

我們可以給標簽指定多個類名,從而達到更多的選擇目的。

<img src="media/lei.png" />

注意:

1. 樣式顯示效果跟HTML元素中的類名先后順序沒有關系,受CSS樣式書寫的上下順序有關。
2. 各個類名中間用空格隔開。

多類名選擇器在后期布局比較復雜的情況下,還是較多使用的。

<div class="pink fontWeight font20">亞瑟</div>
<div class="font20">劉備</div>
<div class="font14 pink">安其拉</div>
<div class="font14">貂蟬</div>

類名選擇器 :< div class=“nav”> 這個 div 的名字 就是 nav nav 就是 div 這個 div 也是 nav

< 人 class = 劉德華 > 我們想要吧div 找到 div {} .nav {}

id選擇器

id選擇器使用“#”進行標識,后面緊跟id名,其基本語法格式如下:

#id名{屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }

該語法中,id名即為HTML元素的id屬性值,大多數HTML元素都可以定義id屬性,元素的id值是唯一的,只能對應于文檔中某一個具體的元素。

用法基本和類選擇器相同。

id選擇器和類選擇器區別

W3C標準規定,在同一個頁面內,不允許有相同名字的id對象出現,但是允許相同名字的class。

類選擇器(class) 好比人的名字, 是可以多次重復使用的, 比如 張偉 王偉 李偉 李娜

id選擇器 好比人的身份證號碼, 全中國是唯一的, 不得重復。 只能使用一次。

id選擇器和類選擇器最大的不同在于 使用次數上。

<img src="media/zfb.jpg" />

通配符選擇器

通配符 選擇器用“*”號表示,他是所有選擇器中作用范圍最廣的,能匹配頁面中所有的元素。其基本語法格式如下:

* { 屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }

例如下面的代碼,使用通配符選擇器定義CSS樣式,清除所有HTML標記的默認邊距。

* {
  margin: 0;                    /* 定義外邊距*/
  padding: 0;                   /* 定義內邊距*/
}

注意:

這個通配符選擇器,就像我們的電影明星中的夢中情人, 想想它就好了,但是它不會和你過日子。

CSS字體樣式屬性

font-size:字號大小

font-size屬性用于設置字號,該屬性的值可以使用相對長度單位,也可以使用絕對長度單位。其中,相對長度單位比較常用,推薦使用像素單位px,絕對長度單位使用較少。具體如下:

<img src="media/dd.png" />

font-family:字體

font-family屬性用于設置字體。網頁中常用的字體有宋體、微軟雅黑、黑體等,例如將網頁中所有段落文本的字體設置為微軟雅黑,可以使用如下CSS樣式代碼:

p{ font-family:"微軟雅黑";}

可以同時指定多個字體,中間以逗號隔開,表示如果瀏覽器不支持第一個字體,則會嘗試下一個,直到找到合適的字體。

<img src="media/good.png" />常用技巧:

1. 現在網頁中普遍使用14px+。
2. 盡量使用偶數的數字字號。ie6等老式瀏覽器支持奇數會有bug。
3. 各種字體之間必須使用英文狀態下的逗號隔開。
4. 中文字體需要加英文狀態下的引號,英文字體一般不需要加引號。當需要設置英文字體時,英文字體名必須位于中文字體名之前。
5. 如果字體名中包含空格、#、$等符號,則該字體必須加英文狀態下的單引號或雙引號,例如font-family: "Times New Roman";。
6. 盡量使用系統默認字體,保證在任何用戶的瀏覽器中都能正確顯示。

CSS Unicode字體

在 CSS 中設置字體名稱,直接寫中文是可以的。但是在文件編碼(GB2312、UTF-8 等)不匹配時會產生亂碼的錯誤。xp 系統不支持 類似微軟雅黑的中文。

方案一: 你可以使用英文來替代。 比如 font-family:"Microsoft Yahei"。

方案二: 在 CSS 直接使用 Unicode 編碼來寫字體名稱可以避免這些錯誤。使用 Unicode 寫中文字體名稱,瀏覽器是可以正確的解析的。
font-family: "\5FAE\8F6F\96C5\9ED1",表示設置字體為“微軟雅黑”。

<img src="media/shs.png" />

可以通過escape() 來測試屬于什么字體。

字體名稱 英文名稱 Unicode 編碼
宋體 SimSun \5B8B\4F53
新宋體 NSimSun \65B0\5B8B\4F53
黑體 SimHei \9ED1\4F53
微軟雅黑 Microsoft YaHei \5FAE\8F6F\96C5\9ED1
楷體_GB2312 KaiTi_GB2312 \6977\4F53_GB2312
隸書 LiSu \96B6\4E66
幼園 YouYuan \5E7C\5706
華文細黑 STXihei \534E\6587\7EC6\9ED1
細明體 MingLiU \7EC6\660E\4F53
新細明體 PMingLiU \65B0\7EC6\660E\4F53

為了照顧不同電腦的字體安裝問題,我們盡量只使用宋體和微軟雅黑中文字體

font-weight:字體粗細

字體加粗除了用 b 和 strong 標簽之外,可以使用CSS 來實現,但是CSS 是沒有語義的。

font-weight屬性用于定義字體的粗細,其可用屬性值:normal、bold、bolder、lighter、100~900(100的整數倍)。

<img src="media/good.png" />小技巧:

數字 400 等價于 normal,而 700 等價于 bold。  但是我們更喜歡用數字來表示。  

font-style:字體風格

字體傾斜除了用 i 和 em 標簽之外,可以使用CSS 來實現,但是CSS 是沒有語義的。

font-style屬性用于定義字體風格,如設置斜體、傾斜或正常字體,其可用屬性值如下:

normal:默認值,瀏覽器會顯示標準的字體樣式。

italic:瀏覽器會顯示斜體的字體樣式。

oblique:瀏覽器會顯示傾斜的字體樣式。

<img src="media/good.png" />小技巧:

平時我們很少給文字加斜體,反而喜歡給斜體標簽(em,i)改為普通模式。

font:綜合設置字體樣式 (重點)

font屬性用于對字體樣式進行綜合設置,其基本語法格式如下:

選擇器{font: font-style  font-weight  font-size/line-height  font-family;}
使用font屬性時,必須按上面語法格式中的順序書寫,不能更換順序,各個屬性以空格隔開。

注意:其中不需要設置的屬性可以省略(取默認值),但必須保留font-size和font-family屬性,否則font屬性將不起作用。

CSS外觀屬性

color:文本顏色

color屬性用于定義文本的顏色,其取值方式有如下3種:

1.預定義的顏色值,如red,green,blue等。

2.十六進制,如#FF0000,#FF6600,#29D794等。實際工作中,十六進制是最常用的定義顏色的方式。

3.RGB代碼,如紅色可以表示為rgb(255,0,0)或rgb(100%,0%,0%)。

需要注意的是,如果使用RGB代碼的百分比顏色值,取值為0時也不能省略百分號,必須寫為0%。

line-height:行間距

ine-height屬性用于設置行間距,就是行與行之間的距離,即字符的垂直間距,一般稱為行高。line-height常用的屬性值單位有三種,分別為像素px,相對值em和百分比%,實際工作中使用最多的是像素px

一般情況下,行距比字號大7.8像素左右就可以了。

text-align:水平對齊方式

text-align屬性用于設置文本內容的水平對齊,相當于html中的align對齊屬性。其可用屬性值如下:

left:左對齊(默認值)

right:右對齊

center:居中對齊

是讓盒子里面的內容水平居中, 而不是讓盒子居中對齊

text-indent:首行縮進

text-indent屬性用于設置首行文本的縮進,其屬性值可為不同單位的數值、em字符寬度的倍數、或相對于瀏覽器窗口寬度的百分比%,允許使用負值, 建議使用em作為設置單位。

1em 就是一個字的寬度 如果是漢字的段落, 1em 就是一個漢字的寬度

text-decoration 文本的裝飾

text-decoration 通常我們用于給鏈接修改裝飾效果

描述
none 默認。定義標準的文本。
underline 定義文本下的一條線。下劃線 也是我們鏈接自帶的
overline 定義文本上的一條線。
line-through 定義穿過文本下的一條線。

開發者工具(chrome)

此工具是我們的必備工具,以后代碼出了問題,我們首先第一反應就是:

“按F12”或者是 “shift+ctrl+i” 打開 開發者工具。

菜單: 右擊網頁空白出---查看

<img src="media/chrome.png" />

<img src="media/good.png" />小技巧:

  1. ctrl+滾輪 可以 放大開發者工具代碼大小。
  2. 左邊是HTML元素結構 右邊是CSS樣式。
  3. 右邊CSS樣式可以改動數值和顏色查看更改后效果。

CSS復合選擇器

復合選擇器是由兩個或多個基礎選擇器,通過不同的方式組合而成的,目的是為了可以選擇更準確更精細的目標元素標簽。

交集選擇器

交集選擇器由兩個選擇器構成,其中第一個為標簽選擇器,第二個為class選擇器,兩個選擇器之間不能有空格,如h3.special。

<img src="media/jiao.png" />

記憶技巧:

交集選擇器 是 并且的意思。 即...又...的意思

比如:   p.one   選擇的是: 類名為 .one  的 段落標簽。  

用的相對來說比較少,不太建議使用。

并集選擇器

并集選擇器(CSS選擇器分組)是各個選擇器通過<strong style="color:#f00">逗號</strong>連接而成的,任何形式的選擇器(包括標簽選擇器、class類選擇器id選擇器等),都可以作為并集選擇器的一部分。如果某些選擇器定義的樣式完全相同,或部分相同,就可以利用并集選擇器為它們定義相同的CSS樣式。

<img src="media/bing.png" />

記憶技巧:

并集選擇器 和 的意思, 就是說,只要逗號隔開的,所有選擇器都會執行后面樣式。

比如  .one, p , #test {color: #F00;}  表示   .one 和 p  和 #test 這三個選擇器都會執行顏色為紅色。  通常用于集體聲明。

<img src="media/hu.gif" /> 他和他,在一起, 在一起 一起的意思

后代選擇器

后代選擇器又稱為包含選擇器,用來選擇元素或元素組的后代,其寫法就是把外層標簽寫在前面,內層標簽寫在后面,中間用空格分隔。當標簽發生嵌套時,內層標簽就成為外層標簽的后代。

<img src="media/hou.png" />

子孫后代都可以這么選擇。 或者說,它能選擇任何包含在內 的標簽。

<img src="media/li.png" />

子元素選擇器

子元素選擇器只能選擇作為某元素子元素的元素。其寫法就是把父級標簽寫在前面,子級標簽寫在后面,中間跟一個 > 進行連接,注意,符號左右兩側各保留一個空格。

<img src="media/zi1.png" />

白話: 這里的子 指的是 親兒子 不包含孫子 重孫子之類。

 比如:  .demo > h3 {color: red;}   說明  h3 一定是demo 親兒子。  demo 元素包含著h3。

<img src="media/san.jpg" />

測試題

<div class="nav">    <!-- 主導航欄 -->
  <ul>
    <li><a href="#">公司首頁</a></li>
    <li><a href="#">公司簡介</a></li>
    <li><a href="#">公司產品</a></li>
    <li>
         <a href="#">聯系我們</a>
         <ul>
                    <li><a href="#">公司郵箱</a></li>
                    <li><a href="#">公司電話</a></li>
         </ul>
    </li>
  </ul>
</div>
<div class="sitenav">    <!-- 側導航欄 -->
  <div class="site-l">左側側導航欄</div>
  <div class="site-r"><a href="#">登錄</a></div>
</div>

在不修改以上代碼的前提下,完成以下任務:

  1. 鏈接 登錄 的顏色為紅色,同時主導航欄里面的所有的鏈接改為橙色 (簡單)
  2. 主導航欄和側導航欄里面文字都是14像素并且是微軟雅黑。(中等)
  3. 主導航欄里面的一級菜單鏈接文字顏色為綠色。(難)

偽類選擇器

偽類選擇器用于向某些選擇器添加特殊的效果。比如給鏈接添加特殊效果, 比如可以選擇 第1個,第n個元素。

偽娘

類 .one

偽類 :link

為了和我們剛才學的類選擇器相區別,  類選擇器是一個點 比如 .demo {}   而我們的偽類 用 2個點 就是 冒號  比如  :link{}

鏈接偽類選擇器

  • :link /* 未訪問的鏈接 */
  • :visited /* 已訪問的鏈接 */
  • :hover /* 鼠標移動到鏈接上 */
  • :active /* 選定的鏈接 */

注意寫的時候,他們的順序盡量不要顛倒 按照 lvha 的順序。 love hate 愛上了討厭 記憶法 或者 lv 包包 非常 hao

a {   /* a是標簽選擇器  所有的鏈接 */
            font-weight: 700;
            font-size: 16px;
            color: gray;
        }
a:hover {   /* :hover 是鏈接偽類選擇器 鼠標經過 */
            color: red; /*  鼠標經過的時候,由原來的 灰色 變成了紅色 */
}

CSS注釋

CSS規則是使用     /*  需要注釋的內容  */  進行注釋的,即在需要注釋的內容前使用 “/*” 標記開始注釋,在內容的結尾使用 “*/”結束。

例如:

p {
  font-size: 14px;                 /* 所有的字體是14像素大小*/
}

sublime快捷方式

sublime可以快速提高我們代碼的書寫方式

  1. 生成標簽 直接輸入標簽名 按tab鍵即可 比如 div 然后tab 鍵, 就可以生成 <div></div>

  2. 如果想要生成多個相同標簽 加上 * 就可以了 比如 div*3 就可以快速生成3個div

  3. 如果有父子級關系的標簽,可以用 > 比如 ul > li就可以了

  4. 如果有兄弟關系的標簽,用 + 就可以了 比如 div+p

  5. 如果生成帶有類名或者id名字的, 直接寫 .demo 或者 #two tab 鍵就可以了

    ?

標簽顯示模式(display)

<img src="media/people.png" />

非洲黑人: 皮膚內黑色素含量高,以吸收陽光中的紫外線,保護皮膚內部結構免遭損害,頭發象羊毛一樣卷曲,使每根卷發周圍都有許多空隙,空隙充滿空氣,卷發有隔熱作用。

歐洲白人: 生活寒帶或著是說常年溫度較低的地緣,加上年日照時間少,身體的黑色素沉淀比較少``所以出現皮膚、發色、瞳暈都呈現淺色

傳智黃人: 我中間的。。。 <img src="media/h.jpg" alt="" />

最重要的總結: 是為了更好的適應環境而完成的自然選擇。

同理,我們網頁的標簽非常多,再不同地方會用到不同類型的標簽,以便更好的完成我們的網頁。

標簽的類型(顯示模式)

HTML標簽一般分為塊標簽和行內標簽兩種類型,它們也稱塊元素和行內元素。具體如下:

塊級元素(block-level)

每個塊元素通常都會獨自占據一整行或多整行,可以對其設置寬度、高度、對齊等屬性,常用于網頁布局和網頁結構的搭建。 霸道

常見的塊元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>標簽是最典型的塊元素。

<img src="media/xtf.jpg" />

塊級元素的特點:

(1)總是從新行開始

(2)高度,行高、外邊距以及內邊距都可以控制。

(3)寬度默認是容器的100%

(4)可以容納內聯元素和其他塊元素。

行內元素(inline-level)

行內元素(內聯元素)不占有獨立的區域,僅僅靠自身的字體大小和圖像尺寸來支撐結構,一般不可以設置寬度、高度、對齊等屬性,常用于控制頁面中文本的樣式。

常見的行內元素有<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等,其中<span>標簽最典型的行內元素。

<img src="media/wf.jpg" /> 我一樣重要

行內元素的特點:

(1)和相鄰行內元素在一行上。

(2)高、寬無效,但水平方向的padding和margin可以設置,垂直方向的無效。

(3)默認寬度就是它本身內容的寬度。

(4)行內元素只能容納文本或則其他行內元素。(a特殊 a里面可以放塊級元素 )

<img src="media/w.jpg" /> 注意:

  1. 只有 文字才 能組成段落 因此 p 里面不能放塊級元素,同理還有這些標簽h1,h2,h3,h4,h5,h6,dt,他們都是文字類塊級標簽,里面不能放其他塊級元素。
  2. 鏈接里面不能再放鏈接。
  3. a里面可以放塊級元素

塊級元素和行內元素區別

塊級元素的特點:
(1)總是從新行開始
(2)高度,行高、外邊距以及內邊距都可以控制。
(3)寬度默認是容器的100%
(4)可以容納內聯元素和其他塊元素。
行內元素的特點:
(1)和相鄰行內元素在一行上。
(2)高、寬無效,但水平方向的padding和margin可以設置,垂直方向的無效。
(3)默認寬度就是它本身內容的寬度。
(4)行內元素只能容納文本或則其他行內元素。

行內塊元素(inline-block)

在行內元素中有幾個特殊的標簽——<img />、<input />、<td>,可以對它們設置寬高和對齊屬性,有些資料可能會稱它們為行內塊元素。

行內塊元素的特點:
(1)和相鄰行內元素(行內塊)在一行上,但是之間會有空白縫隙。
(2)默認寬度就是它本身內容的寬度。
(3)高度,行高、外邊距以及內邊距都可以控制。

<img src="media/lyc.jpg" width="400" />

標簽顯示模式轉換 display

塊轉行內:display:inline;

行內轉塊:display:block;

塊、行內元素轉換為行內塊: display: inline-block;

此階段,我們只需關心這三個,其他的是我們后面的工作。

課堂練習

1.寫 三個 div 給定 100 * 100 的紅色盒子 -- 寬度 高度 背景色

2.三個 span 也要求 150 * 150 綠色盒子

  1. 三個 a 鏈接 80 * 20 藍色 盒子 要求 必須一行顯示 這三個盒子
  2. 鼠標經過3個a鏈接的時候, 背景顏色變為 橙色 hover bgc
  3. 導航欄案例

CSS書寫規范

開始就形成良好的書寫規范,是你專業化的開始。

空格規范

【強制】 選擇器 與 { 之間必須包含空格。

示例: .selector { }

【強制】 屬性名 與之后的 : 之間不允許包含空格, : 與 屬性值 之間必須包含空格。

示例:

font-size: 12px;

選擇器規范

【強制】 當一個 rule 包含多個 selector 時,每個選擇器聲明必須獨占一行。

示例:

/* good */
.post,
.page,
.comment {
    line-height: 1.5;
}


/* bad */
.post, .page, .comment {
    line-height: 1.5;
}

【建議】 選擇器的嵌套層級應不大于 3 級,位置靠后的限定條件應盡可能精確。

示例:

/* good */
#username input {}
.comment .avatar {}

/* bad */
.page .header .login #username input {}
.comment div * {}

屬性規范

【強制】 屬性定義必須另起一行。

示例:

/* good */
.selector {
    margin: 0;
    padding: 0;
}

/* bad */
.selector { margin: 0; padding: 0; }

【強制】 屬性定義后必須以分號結尾。

示例:

/* good */
.selector {
    margin: 0;
}

/* bad */
.selector {
    margin: 0
}

行高的測量

<img src="media/line1.png" />

<img src="media/line2.png" />

行高我們利用最多的一個地方是: 可以讓一行文本在盒子中垂直居中對齊。

做法就是: 文字的行高等于盒子的高度。

這里情況些許復雜,開始學習,我們可以先從簡單地方入手學會。

<img src="media/1.png" />

上距離和下距離總是相等的,因此文字看上去是垂直居中的。

如果 行高 等 height 高度 文字會 垂直居中

如果行高 大于 高度 文字會 偏下

如果行高小于高度 文字會 偏上

CSS 三大特性

層疊 繼承 優先級 是我們學習CSS 必須掌握的三個特性。

CSS層疊性

所謂層疊性是指多種CSS樣式的疊加。

是瀏覽器處理沖突的一個能力,如果一個屬性通過兩個相同選擇器設置到同一個元素上,那么這個時候一個屬性就會將另一個屬性層疊掉

比如先給某個標簽指定了內部文字顏色為紅色,接著又指定了顏色為藍色,此時出現一個標簽指定了相同樣式不同值的情況,這就是樣式沖突。 就近原則

一般情況下,如果出現樣式沖突,則會按照CSS書寫的順序,以最后的樣式為準。

  1. 樣式沖突,遵循的原則是就近原則。 那個樣式離著結構近,就執行那個樣式。
  2. 樣式不沖突,不會層疊
CSS最后的執行口訣:  長江后浪推前浪,前浪死在沙灘上。

<img src="media/hai.gif" width="600" height="400" />

CSS繼承性

所謂繼承性是指書寫CSS樣式表時,子標簽會繼承父標簽的某些樣式,如文本顏色和字號。想要設置一個可繼承的屬性,只需將它應用于父元素即可。

簡單的理解就是: 子承父業。

CSS最后的執行口訣:  龍生龍,鳳生鳳,老鼠生的孩子會打洞。

<img src="media/shu.gif" />

注意:

恰當地使用繼承可以簡化代碼,降低CSS樣式的復雜性。子元素可以繼承父元素的樣式(text-,font-,line-這些元素開頭的都可以繼承,以及color屬性)

CSS優先級

定義CSS樣式時,經常出現兩個或更多規則應用在同一元素上,這時就會出現優先級的問題。

在考慮權重時,初學者還需要注意一些特殊的情況,具體如下:

繼承樣式的權重為0。即在嵌套結構中,不管父元素樣式的權重多大,被子元素繼承時,他的權重都為0,也就是說子元素定義的樣式會覆蓋繼承來的樣式。

行內樣式優先。應用style屬性的元素,其行內樣式的權重非常高,可以理解為遠大于100。總之,他擁有比上面提高的選擇器都大的優先級。

權重相同時,CSS遵循就近原則。也就是說靠近元素的樣式具有最大的優先級,或者說排在最后的樣式優先級最大。

CSS定義了一個!important命令,該命令被賦予最大的優先級。也就是說不管權重如何以及樣式位置的遠近,!important都具有最大優先級。

CSS特殊性(Specificity)

關于CSS權重,我們需要一套計算公式來去計算,這個就是 CSS Specificity,我們稱為CSS 特性或稱非凡性,它是一個衡量CSS值優先級的一個標準 具體規范入如下:

specificity用一個四位的數 字串(CSS2是三位)來表示,更像四個級別,值從左到右,左面的最大,一級大于一級,數位之間沒有進制,級別之間不可超越。

繼承或者* 的貢獻值 0,0,0,0
每個元素(標簽)貢獻值為 0,0,0,1
每個類,偽類貢獻值為 0,0,1,0
每個ID貢獻值為 0,1,0,0
每個行內樣式貢獻值 1,0,0,0
每個!important貢獻值 重要的 ∞ 無窮大

權重是可以疊加的

比如的例子:

div ul  li   ------>      0,0,0,3

.nav ul li   ------>      0,0,1,2

a:hover      -----—>      0,0,1,1

.nav a       ------>      0,0,1,1   

#nav p       ----->       0,1,0,1

?

?

<img src="media/w.jpg" /> 注意:

1.數位之間沒有進制 比如說: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0, 所以不會存在10個div能趕上一個類選擇器的情況。

  1. 繼承的 權重是 0

總結優先級:

  1. 使用了 !important聲明的規則。
  2. 內嵌在 HTML 元素的 style屬性里面的聲明。
  3. 使用了 ID 選擇器的規則。
  4. 使用了類選擇器、屬性選擇器、偽元素和偽類選擇器的規則。
  5. 使用了元素選擇器的規則。
  6. 只包含一個通用選擇器的規則。
  7. 同一類選擇器則遵循就近原則。
總結:權重是優先級的算法,層疊是優先級的表現

CSS 背景(background)

CSS 可以添加背景顏色和背景圖片,以及來進行圖片設置。

background-color 背景顏色
background-image 背景圖片地址
background-repeat 是否平鋪
background-position 背景位置
background-attachment 背景固定還是滾動
背景的合寫(復合屬性)
background:背景顏色 背景圖片地址 背景平鋪 背景滾動 背景位置

背景圖片(image)

語法:

background-image : none | url (url) 

參數:

none :  無背景圖(默認的)
url :  使用絕對或相對地址指定背景圖像

background-image 屬性允許指定一個圖片展示在背景中(只有CSS3才可以多背景)可以和 background-color 連用。 如果圖片不重復地話,圖片覆蓋不到地地方都會被背景色填充。 如果有背景圖片平鋪,則會覆蓋背景顏色。

小技巧: 我們提倡 背景圖片后面的地址,url不要加引號。

背景平鋪(repeat)

語法:

background-repeat : repeat | no-repeat | repeat-x | repeat-y 

參數:

repeat :  背景圖像在縱向和橫向上平鋪(默認的)

no-repeat :  背景圖像不平鋪

repeat-x :  背景圖像在橫向上平鋪

repeat-y :  背景圖像在縱向平鋪

設置背景圖片時,默認把圖片在水平和垂直方向平鋪以鋪滿整個元素。

repeat-x :  背景圖像在橫向上平鋪

repeat-y :  背景圖像在縱向平鋪

<img src="media/y.png" width="600"/>

設置背景圖片時,默認把圖片在水平和垂直方向平鋪以鋪滿整個元素。

<img src="media/q.png" width="600"/>

背景位置(position)

語法:

background-position : length || length

background-position : position || position 

參數:

length :  百分數 | 由浮點數字和單位標識符組成的長度值。請參閱長度單位
position :  top | center | bottom | left | center | right

說明:

設置或檢索對象的背景圖像位置。必須先指定background-image屬性。默認值為:(0% 0%)。
如果只指定了一個值,該值將用于橫坐標。縱坐標將默認為50%。第二個值將用于縱坐標。

注意:

  1. position 后面是x坐標和y坐標。 可以使用方位名詞或者 精確單位。
  2. 如果和精確單位和方位名字混合使用,則必須是x坐標在前,y坐標后面。比如 background-position: 15px top; 則 15px 一定是 x坐標 top是 y坐標。

實際工作用的最多的,就是背景圖片居中對齊了。

背景附著

語法:

background-attachment : scroll | fixed 

參數:

scroll :  背景圖像是隨對象內容滾動
fixed :  背景圖像固定

說明:

設置或檢索背景圖像是隨對象內容滾動還是固定的。

背景簡寫

background屬性的值的書寫順序官方并沒有強制標準的。為了可讀性,建議大家如下寫:

background:背景顏色 背景圖片地址 背景平鋪 背景滾動 背景位置

background: transparent url(image.jpg) repeat-y  scroll 50% 0 ;

背景透明(CSS3)

CSS3支持背景半透明的寫法語法格式是:

background: rgba(0,0,0,0.3);

最后一個參數是alpha 透明度 取值范圍 0~1之間

注意: 背景半透明是指盒子背景半透明, 盒子里面的內容不收影響。

導航欄案例

使用技巧:在一行內的盒子內,我們設定行高等于盒子的高度,就可以使文字垂直居中。

<head>
        <meta charset="utf-8">
        <style>
        body {
            background-color: #000;
        }
        a {
            width: 200px;
            height: 50px;
            /* background-color: orange; */
            display: inline-block;  /* 把a 行內元素轉換為行內塊元素 */
            text-align: center;  /* 文字水平居中 */
            line-height: 50px;  /* 我們設定行高等于盒子的高度,就可以使文字垂直居中 */
            color: #fff;
            font-size: 22px;
            text-decoration: none;  /* 取消下劃線 文本裝飾 */
        }
        a:hover {  /* 鼠標經過 給我們的鏈接添加背景圖片*/
            background: url(images/h.png) no-repeat; 
        }
        </style>
    </head>
    <body>
    <a href="#">專區說明</a>
    <a href="#">申請資格</a>
    <a href="#">兌換獎勵</a>
    <a href="#">下載游戲</a>
    </body>

盒子模型(CSS重點)

其實,CSS就三個大模塊: 盒子模型 、 浮動 、 定位,其余的都是細節。要求這三部分,無論如何也要學的非常精通。

所謂盒子模型就是把HTML頁面中的元素看作是一個矩形的盒子,也就是一個盛裝內容的容器。每個矩形都由元素的內容、內邊距(padding)、邊框(border)和外邊距(margin)組成。

看透網頁布局的本質

網頁布局中,我們是如何把里面的文字,圖片,按照美工給我們的效果圖排列的整齊有序呢?

<img src="media/t.png" />

牛奶是怎樣運輸,讓消費者購買的呢?

<img src="media/m.jpg" />

我們說過,行內元素比如 文字 類似牛奶,也需要一個盒子把他們裝起來,我們前面學過的雙標簽都是一個盒子。有了盒子,我們就可以隨意的,自由的,擺放位置了。

看透網頁布局的本質: 把網頁元素比如文字圖片等等,放入盒子里面,然后利用CSS擺放盒子的過程,就是網頁布局。

<img src="media/t1.png" />

CSS 其實沒有太多邏輯可言 , 類似我們小時候玩的積木,我們可以自由的,隨意的擺放出我們想要的效果。

<img src="media/j.jpg" width="300" />

盒子模型(Box Model)

這里略過 老舊的ie盒子模型(IE6以下),對不起,我都沒見過IE5的瀏覽器。

首先,我們來看一張圖,來體會下什么是盒子模型。

<img src="media/box.png" width="700" />

所有的文檔元素(標簽)都會生成一個矩形框,我們成為元素框(element box),它描述了一個文檔元素再網頁布局匯總所占的位置大小。因此,<strong style="color: #f00;">每個盒子除了有自己大小和位置外,還影響著其他盒子的大小和位置。</strong>

<img src="media/boxs.png" width="700" />

盒子邊框(border)

邊框就是那層皮。 橘子皮。。柚子皮。。橙子皮。。。

語法:

border : border-width || border-style || border-color 

邊框屬性—設置邊框樣式(border-style)

邊框樣式用于定義頁面中邊框的風格,常用屬性值如下:

none:沒有邊框即忽略所有邊框的寬度(默認值)

solid:邊框為單實線(最為常用的)

dashed:邊框為虛線  

dotted:邊框為點線

double:邊框為雙實線

盒子邊框寫法總結表

設置內容 樣式屬性 常用屬性值
上邊框 border-top-style:樣式; border-top-width:寬度;border-top-color:顏色;border-top:寬度 樣式 顏色;
下邊框 border-bottom-style:樣式;border- bottom-width:寬度;border- bottom-color:顏色;border-bottom:寬度 樣式 顏色;
左邊框 border-left-style:樣式; border-left-width:寬度;border-left-color:顏色;border-left:寬度 樣式 顏色;
右邊框 border-right-style:樣式;border-right-width:寬度;border-right-color:顏色;border-right:寬度 樣式 顏色;
樣式綜合設置 border-style:上邊 [右邊 下邊 左邊]; none無(默認)、solid單實線、dashed虛線、dotted點線、double雙實線
寬度綜合設置 border-width:上邊 [右邊 下邊 左邊]; 像素值
顏色綜合設置 border-color:上邊 [右邊 下邊 左邊]; 顏色值、#十六進制、rgb(r,g,b)、rgb(r%,g%,b%)
邊框綜合設置 border:四邊寬度 四邊樣式 四邊顏色;
    border-top: 1px solid red; /*上邊框*/
    border-bottom: 2px solid green; /*下邊框*/
    border-left: 1px solid blue;
    border-right: 5px solid pink;
    
    border: 1px solid red;

表格的細線邊框

以前學過的html表格邊框很粗,這里只需要CSS一句話就可以美觀起來。 讓我們真的相信,CSS就是我們的白馬王子(白雪公主)。

table{ border-collapse:collapse; } collapse 單詞是合并的意思

border-collapse:collapse; 表示相鄰邊框合并在一起。

內邊距(padding)

padding屬性用于設置內邊距。 是指 邊框與內容之間的距離。

padding-top:上內邊距

padding-right:右內邊距

padding-bottom:下內邊距

padding-left:左內邊距

<img src="media/w.jpg"/>注意: 后面跟幾個數值表示的意思是不一樣的。

值的個數 表達意思
1個值 padding:上下左右邊距 比如padding: 3px; 表示上下左右都是3像素
2個值 padding: 上下邊距 左右邊距 比如 padding: 3px 5px; 表示 上下3像素 左右 5像素
3個值 padding:上邊距 左右邊距 下邊距 比如 padding: 3px 5px 10px; 表示 上是3像素 左右是5像素 下是10像素
4個值 padding:上內邊距 右內邊距 下內邊距 左內邊距 比如: padding: 3px 5px 10px 15px; 表示 上3px 右是5px 下 10px 左15px 順時針

課堂案例: 新浪導航

<img src="media/al.gif" />

關于盒子寬度下列正確的是()

(A) 盒子寬:就是width的大小

(B) 盒子寬: padding-left + width + padding-right

(C) 盒子寬: border-left + width + border-right

(D) 盒子寬: border-left+ padding-left + width + padding-right + border-right

w 100 padding 10 border 5 ? 實際大小 ? 130

3關于盒子高度下列正確的是()

(A) 盒子高:就是height的大小

(B) 盒子高:padding-top +height + padding-bottom

(C) 盒子高:border-top + height + border-bottom

(D) 盒子高:border-top + padding-top +height + padding-bottom + border-bottom

**4**** 關于根據下列代碼計算 盒子寬高下列說法正確的是()******

div {

? width: 200px;

? height: 200px;

? border: 1px solid #000000;

? border-top: 5px solid blue;

? padding: 50px;

? padding-left: 100px;

? }

(A) 寬度為200px 高度為200px

(B) 寬度為352px 高度為306px

(C) 寬度為302px 高度為307px

(D) 寬度為302px 高度為252px

外邊距(margin)

margin屬性用于設置外邊距。 設置外邊距會在元素之間創建“空白”, 這段空白通常不能放置其他內容。

margin-top:上外邊距

margin-right:右外邊距

margin-bottom:下外邊距

margin-left:上外邊距

margin:上外邊距 右外邊距 下外邊距 左外邊

取值順序跟內邊距相同。

外邊距實現盒子居中

可以讓一個盒子實現水平居中,需要滿足一下兩個條件:

  1. 必須是塊級元素。
  2. 盒子必須指定了寬度(width)

然后就給左右的外邊距都設置為auto,就可使塊級元素水平居中。

實際工作中常用這種方式進行網頁布局,示例代碼如下:

.header{ width:960px; margin:0 auto;}

文字盒子居中圖片和背景區別

  1. 文字水平居中是 text-align: center
  2. 盒子水平居中 左右margin 改為 auto
text-align: center; /*  文字居中水平 */
margin: 10px auto;  /* 盒子水平居中  左右margin 改為 auto 就闊以了 */
  1. 插入圖片 我們用的最多 比如產品展示類
  2. 背景圖片我們一般用于小圖標背景 或者 超大背景圖片
section img {  
        width: 200px;/* 插入圖片更改大小 width 和 height */
        height: 210px;
        margin-top: 30px;  /* 插入圖片更改位置 可以用margin 或padding  盒模型 */
        margin-left: 50px; /* 插入當圖片也是一個盒子 */
    }

aside {
        width: 400px;
        height: 400px;
        border: 1px solid purple;
        background: #fff url(images/sun.jpg) no-repeat;
    
        background-size: 200px 210px; /*  背景圖片更改大小只能用 background-size */
        background-position: 30px 50px; /* 背景圖片更該位置 我用 background-position */
    }

清除元素的默認內外邊距

為了更方便地控制網頁中的元素,制作網頁時,可使用如下代碼清除元素的默認內外邊距:

* {
   padding:0;         /* 清除內邊距 */
   margin:0;          /* 清除外邊距 */
}

注意: 行內元素是只有左右外邊距的,是沒有上下外邊距的。 內邊距,在ie6等低版本瀏覽器也會有問題。

我們盡量不要給行內元素指定上下的內外邊距就好了。

外邊距合并

使用margin定義塊元素的垂直外邊距時,可能會出現外邊距的合并。

相鄰塊元素垂直外邊距的合并

當上下相鄰的兩個塊元素相遇時,如果上面的元素有下外邊距margin-bottom,下面的元素有上外邊距margin-top,則他們之間的垂直間距不是margin-bottom與margin-top之和,而是兩者中的較大者。這種現象被稱為相鄰塊元素垂直外邊距的合并(也稱外邊距塌陷)。

<img src="media/www.png" />

解決方案: 避免就好了。

嵌套塊元素垂直外邊距的合并

對于兩個嵌套關系的塊元素,如果父元素沒有上內邊距及邊框,則父元素的上外邊距會與子元素的上外邊距發生合并,合并后的外邊距為兩者中的較大者,即使父元素的上外邊距為0,也會發生合并。

<img src="media/n.png" />

解決方案:

  1. 可以為父元素定義1像素的上邊框或上內邊距。
  2. 可以為父元素添加overflow:hidden。

待續。。。。

content寬度和高度

使用寬度屬性width和高度屬性height可以對盒子的大小進行控制。

width和height的屬性值可以為不同單位的數值或相對于父元素的百分比%,實際工作中最常用的是像素值。

大多數瀏覽器,如Firefox、IE6及以上版本都采用了W3C規范,符合CSS規范的盒子模型的總寬度和總高度的計算原則是:

  /*外盒尺寸計算(元素空間尺寸)*/
  Element空間高度 = content height + padding + border + margin
  Element 空間寬度 = content width + padding + border + margin
  /*內盒尺寸計算(元素實際大小)*/
  Element Height = content height + padding + border (Height為內容高度)
  Element Width = content width + padding + border (Width為內容寬度)

注意:

1、寬度屬性width和高度屬性height僅適用于塊級元素,對行內元素無效( img 標簽和 input除外)。

2、計算盒子模型的總高度時,還應考慮上下兩個盒子垂直外邊距合并的情況。

3、如果一個盒子則會和父親一樣寬 占滿父親的寬度, 如果此盒子沒有給定寬度 則padding 不會影響本盒子大小

盒子模型布局穩定性

開始學習盒子模型,同學們最大的困惑就是, 分不清內外邊距的使用,什么情況下使用內邊距,什么情況下使用外邊距?

答案是: 其實他們大部分情況下是可以混用的。 就是說,你用內邊距也可以,用外邊距也可以。 你覺得哪個方便,就用哪個。

但是,總有一個最好用的吧,我們根據穩定性來分,建議如下:

按照 優先使用 寬度 (width) 其次 使用內邊距(padding) 再次 外邊距(margin)。

  width >  padding  >   margin   

原因:

  1. margin 會有外邊距合并 還有 ie6下面margin 加倍的bug(討厭)所以最后使用。

  2. padding 會影響盒子大小, 需要進行加減計算(麻煩) 其次使用。

  3. width 沒有問題(嗨皮)我們經常使用寬度剩余法 高度剩余法來做。

    ?

圓角邊框(CSS3)

從此以后,我們的世界不只有矩形。radius 半徑(距離)

語法格式:

border-radius: 50%;   讓一個正方形  變成圓圈

盒子陰影(CSS3)

語法格式:

box-shadow:水平陰影 垂直陰影 模糊距離(虛實)  陰影尺寸(影子大小)  陰影顏色  內/外陰影;

[圖片上傳失敗...(image-b724f3-1542596902028)]

  1. 前兩個屬性是必須寫的。其余的可以省略。
  2. 外陰影 (outset) 但是不能寫 默認 想要內陰影 inset
div {
            width: 200px;
            height: 200px;
            border: 10px solid red;
            /* box-shadow: 5px 5px 3px 4px rgba(0, 0, 0, .4);  */
            /* box-shadow:水平位置 垂直位置 模糊距離 陰影尺寸(影子大小) 陰影顏色  內/外陰影; */
            box-shadow: 0 15px 30px  rgba(0, 0, 0, .4);
            
}

浮動(float)

普通流(normal flow)

這個單詞很多人翻譯為 文檔流 , 字面翻譯 普通流 或者標準流都可以。

前面我們說過,網頁布局的核心,就是用CSS來擺放盒子位置。如何把盒子擺放到合適的位置?

CSS的定位機制有3種:普通流(標準流)、浮動和定位。

html語言當中另外一個相當重要的概念----------標準流!或者普通流。普通流實際上就是一個網頁內標簽元素正常從上到下,從左到右排列順序的意思,比如塊級元素會獨占一行,行內元素會按順序依次前后排列;按照這種大前提的布局排列之下絕對不會出現例外的情況叫做普通流布局。

<img src="media/t.jpg" />

浮動(float)

浮動最早是用來控制圖片,以便達到其他元素(特別是文字)實現“環繞”圖片的效果。

<img src="media/l.png" style="width: 600px; border: 2px solid #000;"/>

后來,我們發現浮動有個很有意思的事情:就是讓任何盒子可以一行排列,因此我們就慢慢的偏離主題,用浮動的特性來布局了。(CSS3已經我們真正意義上的網頁布局,具體CSS3我們會詳細解釋)

<img src="media/d.png" />

什么是浮動?

元素的浮動是指設置了浮動屬性的元素會脫離標準標準流的控制,移動到其父元素中指定位置的過程。

在CSS中,通過float屬性來定義浮動,其基本語法格式如下:

選擇器{float:屬性值;}
屬性值 描述
left 元素向左浮動
right 元素向右浮動
none 元素不浮動(默認值)

浮動詳細內幕特性

浮動脫離標準流,====脫標==== 不占位置,會影響標準流。浮動只有左右浮動。

1. 浮動首先創建包含塊的概念(包裹)。就是說, 浮動的元素總是找理它最近的父級元素對齊。但是不會超出內邊距的范圍。 

<img src="media/one.jpg" width="500" />

2.一個父盒子里面的子盒子,如果其中一個子級有浮動的,則其他子級都需要浮動。這樣才能一行對齊顯示。
3. 元素添加浮動后,元素會具有行內塊元素的特性。元素的大小完全取決于定義的大小或者默認的內容多少浮動根據元素書寫的位置來顯示相應的浮動。

總結: 浮動 --->

浮動的目的就是為了讓多個塊級元素同一行上顯示。 最核心的關鍵點就是 怎么排列的, 是否占有位置

float 浮 漏 特

浮: 加了浮動的元素盒子是浮起來的,漂浮在其他的標準流盒子上面。
漏: 加了浮動的盒子,不占位置的,它浮起來了,它原來的位置漏 給了標準流的盒子。
特: 特別注意,首先浮動的盒子需要和標準流的父級搭配使用, 其次 特別的注意浮動可以使元素顯示模式體現為行內塊特性。

版心和布局流程

閱讀報紙時容易發現,雖然報紙中的內容很多,但是經過合理地排版,版面依然清晰、易讀。同樣,在制作網頁時,要想使頁面結構清晰、有條理,也需要對網頁進行“排版”。

“版心”(可視區) 是指網頁中主體內容所在的區域。一般在瀏覽器窗口中水平居中顯示,常見的寬度值為960px、980px、1000px、1200px等。

布局流程

為了提高網頁制作的效率,布局時通常需要遵守一定的布局流程,具體如下:

1、確定頁面的版心(可視區)。

2、分析頁面中的行模塊,以及每個行模塊中的列模塊。

3、制作HTML結構 。

4、CSS初始化,然后開始運用盒子模型的原理,通過DIV+CSS布局來控制網頁的各個模塊。

一列固定寬度且居中

<img src="media/yl.jpg" width="400" />

最普通的,最為常用的結構

兩列左窄右寬型

<img src="media/ll.jpg" width="400" />

比如小米 <a target="_blank"> 小米官網 </a>

通欄平均分布型

<img src="media/tl.jpg" width="600" />

比如錘子 <a target="_blank"> 錘子官網 </a>

清除浮動

人生就像乘坐北京地鐵一號線:

途經國貿,羨慕繁華;

途經天安門,幻想權力;

途經金融街,夢想發財;

經過公主墳,遙想華麗家族;

經過玉泉路,依然雄心勃勃…

這時,有個聲音飄然入耳:乘客你好,八寶山馬上就要到了!

頓時醒悟:人生苦短,有始有終。

好比我們的浮動,有浮動開始,則就應該有浮動結束。

為什么要清除浮動

我們前面說過,浮動本質是用來做一些文字混排效果的,但是被我們拿來做布局用,則會有很多的問題出現, 但是,你不能說浮動不好 <img src="media/wq.jpg" height="100" />。

由于浮動元素不再占用原文檔流的位置,所以它會對后面的元素排版產生影響,為了解決這些問題,此時就需要在該元素中清除浮動。

準確地說,并不是清除浮動,而是清除浮動后造成的影響

如果浮動一開始就是一個美麗的錯誤,那么請用正確的方法挽救它。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,030評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,310評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,951評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,796評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,566評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,055評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,303評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,799評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,683評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,899評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,135評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,520評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,757評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,528評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,844評論 2 372

推薦閱讀更多精彩內容

  • 1:感恩京東商城,買東西非常方便,物美價廉,送貨速度飛快,太方便了,謝謝謝謝謝謝! 2:感恩金錢,可以買到想買的東...
    車海亮閱讀 77評論 0 0
  • 當我拿起話筒的那一刻 心里滿滿地都是喜悅 靜靜地期待著你的問候 用心地聆聽 時間在一分一秒地流逝 此刻 我心醉魂飛...
    從心活過閱讀 343評論 2 6
  • 18屆考研,考取34所某校,初試專業第一名,現在正在準備復試中,寫得不好,還請見諒。只希望對19屆的你們會有所幫助...
    清清Echo閱讀 809評論 2 34