天天看點

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

第四章 CSS布局

  • 一、CSS布局過渡曆程
  • 二、常用布局方法
    • 2.1、表格布局
      • 2.1.1、使用table實作表格布局
      • 2.1.2、另一種實作表格布局
    • 2.2、布局屬性
    • 2.3、flexbox布局
    • 2.4、float布局
      • 2.4.1、對自身的影響
      • 2.4.2、對兄弟的影響
      • 2.4.3、對父級元素的影響
      • 2.4.4、清除浮動影響
      • 2.4.5、使用float的兩欄布局
      • 2.4.6、使用float的三欄布局
    • 2.5、inline-block布局
    • 2.6、響應式設計和布局
      • 2.6.1、案例一
      • 2.6.2、案例二
        • 2.6.2.1、使用媒體查詢适配
        • 2.6.2.2、使用viewport适配(等比例變換效果)
        • 2.6.2.3、使用rem機關适配
        • 2.6.2.4、使用rem機關适配
    • 2.7、主流網站使用的布局方式
    • 2.8、CSS面試題

一、CSS布局過渡曆程

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

二、常用布局方法

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.1、表格布局

2.1.1、使用table實作表格布局

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.1.2、另一種實作表格布局

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.2、布局屬性

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
  1. width,height的設定隻對内容區content生效,即藍色部分。
  2. padding指的是内容區和border邊框之間的距離。
  3. margin指的是元素和元素之間的距離。
    【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

    注意點: inline元素是不可以指定寬高的,即指定了寬高也無效。

    元素預設是按照static布局的,可以了解為靜态布局,或者說是按文檔流布局的。

    【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

    relative的偏移是相對于元素本身的,偏移的時候不會影響本來的占位。

    fixed是指相對于可視區域的對齊的。

    absolute是相對于最近的absolute或者relative來定位的。

    通過z-index可以确定顯示的層級。定義為relative,fixed,absolute的元素可以設定z-index。

    【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.3、flexbox布局

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

如果要設定某一塊div的寬度為固定px;可以直接寫width:30px;

2.4、float布局

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

如下圖所示的,p1是一個左浮動的效果,看上去像是浮動在p2上面,但是p2上的文字是被擠到了右側開始的,這個屬性本來是被用來做圖文的混排的。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.4.1、對自身的影響

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

下圖中,span元素為inline元素,理論上是不可以設定寬高的,但是這裡卻可以設定寬高。是因為float自動将inline元素格式化為block元素。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.4.2、對兄弟的影響

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

如果寬度增加,則右邊的這個float會被擠到下一行上去。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

如果寬度調小後,又會擠到同一行。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.4.3、對父級元素的影響

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

從下圖中可以看到,紅色塊的高度,和藍色塊的高度,分别用紅色框辨別了。然後,綠色的float部分是脫離了紅色塊的。這個其實就是高度塌陷的表現。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

可以給父級元素添加下面的這個overflow: 屬性;讓父元素去關注内部元素的加載情況。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.4.4、清除浮動影響

消除浮動的影響主要是用來消除背景圖的高度問題。如果不加overflow屬性,可以添加一個僞元素,通過僞元素來撐開背景圖。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.4.5、使用float的兩欄布局

主要使用到了左側的float:left;然後右側的,margin-left:200px;height:100%;

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.4.6、使用float的三欄布局

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

如上圖所示,但是發現右側的藍色div并沒有和前面的對齊,而是挂在中間的div下面。浮動的元素會盡量向上靠,但是繞不過中間一些不是浮動的元素,既然這樣,可以将right部分的div往上移動一層。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.5、inline-block布局

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

從上圖中可以看到,設定了inline-block但是,還是上下顯示,明顯是寬度的問題。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

調整後,顯示在同一行。但是出現了空隙。inline-block可以想象成一個文字,文字之間是有間隙的。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

當給外部設定font-size:0;的時候就會消除間隙,但是會出現另一個問題,就是紅色和藍色塊中的文字沒有了。這就要求我們,需要給内部元素設定字型大小。

通過觀察,可以看到,這裡的這個間隙也是來源于div之間的間隙。(PS:這個是怎麼觀察出來的不清楚)

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

這樣處理了之後,同樣可以達到消除間隙的效果。或者通過下圖中的注釋的方式。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

推薦還是使用字型的方式來處理這個間隙的問題。如果是定寬的問題,可以使用這個inline-block的方式來處理布局。

2.6、響應式設計和布局

2.6.1、案例一

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

如下圖,如果要适配不同分辨率首先要加的是這個viewport。

再是在下面加了一個@media媒體查詢。并在這裡設定了,如果寬度小于640px的情況下。則影藏左側部分的内容。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.6.2、案例二

2.6.2.1、使用媒體查詢适配

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

效果圖,如下圖展示

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

切換到移動端的時候,顯示得不是很好。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

添加媒體查詢,來做适配。設定居中,并且設定了display:block;使得元素垂直排布。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.6.2.2、使用viewport适配(等比例變換效果)

動态計算width的值的方式。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.6.2.3、使用rem機關适配

html元素預設有一個font-size屬性,預設為16px;為了友善計算,我們可以設定這個font-size的值為20px(或者10px都行);設定之後,1rem=20px。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.6.2.4、使用rem機關适配

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

從上圖中可以看到,我們在使用了rem之後但是還是出現了另一個問題,就是在不同的顯示屏大小下,邊框變寬了,要解決這個問題,就需要我們随着螢幕尺寸大小去更新html的font-size的大小。

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

在原來的css樣式中增加如上圖的的媒體查詢。這裡需要注意的是需要把大的統配媒體查詢寫在上面,範圍小的放下面。

這裡還有一個問題是rem由于是經過計算的,是以精确性上沒有px精确。

2.7、主流網站使用的布局方式

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法

2.8、CSS面試題

【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法
【全面系統講解CSS】學習筆記-第四章 CSS布局一、CSS布局過渡曆程二、常用布局方法