自學前端到上岸工作系列之css02

一、 css常見佈局

文檔流(normal flow)
- 網頁是一個多層的結構,一層摞着一層
- 通過CSS可以分別爲每一層來設置樣式
- 作爲用戶來講只能看到最頂上一層
- 這些層中,最底下的一層稱爲文檔流,文檔流是網頁的基礎
我們所創建的元素默認都是在文檔流中進行排列
- 對於我們來元素主要有兩個狀態
在文檔流中
不在文檔流中(脫離文檔流)

        - 元素在文檔流中有什麼特點:
            - 塊元素
                - 塊元素會在頁面中獨佔一行(自上向下垂直排列)
                - 默認寬度是父元素的全部(會把父元素撐滿)
                - 默認高度是被內容撐開(子元素)

            - 行內元素
                - 行內元素不會獨佔頁面的一行,只佔自身的大小
                - 行內元素在頁面中左向右水平排列,如果一行之中不能容納下所有的行內元素
                    則元素會換到第二行繼續自左向右排列(書寫習慣一致)
                - 行內元素的默認寬度和高度都是被內容撐開

二、盒模型

  內容區(content),元素中的所有的子元素和文本內容都在內容區中排列  
                內容區的大小由width 和 height兩個屬性來設置
                    width 設置內容區的寬度
                    height 設置內容區的高度  	

 邊框(border),邊框屬於盒子邊緣,邊框裏邊屬於盒子內部,出了邊框都是盒子的外部
                邊框的大小會影響到整個盒子的大小
            要設置邊框,需要至少設置三個樣式:
                邊框的寬度 border-width
                邊框的顏色 border-color
                邊框的樣式 border-style
  盒模型、盒子模型、框模型(box model)
        - CSS將頁面中的所有元素都設置爲了一個矩形的盒子
        - 將元素設置爲矩形的盒子後,對頁面的佈局就變成將不同的盒子擺放到不同的位置
        - 每一個盒子都由一下幾個部分組成:
            內容區(content)
            內邊距(padding)
            邊框(border)
            外邊距(margin)  			

三、盒模型邊框

  border-width: 10px; 
            默認值,一般都是 3個像素
            border-width可以用來指定四個方向的邊框的寬度
                值的情況
                    四個值:上 右 下 左
                    三個值:上 左右 下
                    兩個值:上下 左右
                    一個值:上下左右
                
            除了border-width還有一組 border-xxx-width
                xxx可以是 top right bottom left
                用來單獨指定某一個邊的寬度
   
     border-color用來指定邊框的顏色,同樣可以分別指定四個邊的邊框
                規則和border-width一樣

              border-color也可以省略不寫,如果省略了則自動使用color的顏色值
	border-style 指定邊框的樣式
                solid 表示實線
                dotted 點狀虛線
                dashed 虛線
                double 雙線

                border-style的默認值是none 表示沒有邊框		
         border簡寫屬性,通過該屬性可以同時設置邊框所有的相關樣式,並且沒有順序要求

            除了border以外還有四個 border-xxx
                border-top
                border-right
                border-bottom
                border-left

   內邊距(padding)
                - 內容區和邊框之間的距離是內邊距
                - 一共有四個方向的內邊距:
                    padding-top
                    padding-right
                    padding-bottom
                    padding-left

                - 內邊距的設置會影響到盒子的大小
                - 背景顏色會延伸到內邊距上

            一共盒子的可見框的大小,由內容區 內邊距 和 邊框共同決定,
                所以在計算盒子大小時,需要將這三個區域加到一起計算

  外邊距(margin)
                - 外邊距不會影響盒子可見框的大小
                - 但是外邊距會影響盒子的位置
                - 一共有四個方向的外邊距:
                    margin-top
                        - 上外邊距,設置一個正值,元素會向下移動
                    margin-right
                        - 默認情況下設置margin-right不會產生任何效果
                    margin-bottom
                        - 下外邊距,設置一個正值,其下邊的元素會向下移動
                    margin-left
                        - 左外邊距,設置一個正值,元素會向右移動

                    - margin也可以設置負值,如果是負值則元素會向相反的方向移動

                - 元素在頁面中是按照自左向右的順序排列的,
                    所以默認情況下如果我們設置的左和上外邊距則會移動元素自身
                    而設置下和右外邊距會移動其他元素

                - margin的簡寫屬性
                    margin 可以同時設置四個方向的外邊距 ,用法和padding一樣

                - margin會影響到盒子實際佔用空間
          
            元素的水平方向的佈局:
                元素在其父元素中水平方向的位置由以下幾個屬性共同決定“
                    margin-left
                    border-left
                    padding-left
                    width
                    padding-right
                    border-right
                    margin-right

                一個元素在其父元素中,水平佈局必須要滿足以下的等式

margin-left+border-left+padding-left+width+padding-right+border-right+margin-right = 其父元素內容區的寬度 (必須滿足)

            0 + 0 + 0 + 200 + 0 + 0 + 0 = 800
            0 + 0 + 0 + 200 + 0 + 0 + 600 = 800


            100 + 0 + 0 + 200 + 0 + 0 + 400 = 800
            100 + 0 + 0 + 200 + 0 + 0 + 500 = 800
                - 以上等式必須滿足,如果相加結果使等式不成立,則稱爲過度約束,則等式會自動調整
                    - 調整的情況:
                        - 如果這七個值中沒有爲 auto 的情況,則瀏覽器會自動調整margin-right值以使等式滿足
                - 這七個值中有三個值和設置爲auto
                    width
                    margin-left
                    maring-right
                    - 如果某個值爲auto,則會自動調整爲auto的那個值以使等式成立
                        0 + 0 + 0 + auto + 0 + 0 + 0 = 800  auto = 800
                        0 + 0 + 0 + auto + 0 + 0 + 200 = 800  auto = 600
                        200 + 0 + 0 + auto + 0 + 0 + 200 = 800  auto = 400

                        auto + 0 + 0 + 200 + 0 + 0 + 200 = 800  auto = 400


                        auto + 0 + 0 + 200 + 0 + 0 + auto = 800  auto = 300

                    - 如果將一個寬度和一個外邊距設置爲auto,則寬度會調整到最大,設置爲auto的外邊距會自動爲0
                    - 如果將三個值都設置爲auto,則外邊距都是0,寬度最大
                    - 如果將兩個外邊距設置爲auto,寬度固定值,則會將外邊距設置爲相同的值
                        所以我們經常利用這個特點來使一個元素在其父元素中水平居中
                        示例:
                            width:xxxpx;
                            margin:0 auto;

子元素是在父元素的內容區中排列的,
如果子元素的大小超過了父元素,則子元素會從父元素中溢出
使用 overflow 屬性來設置父元素如何處理溢出的子元素

                可選值:
                    visible,默認值 子元素會從父元素中溢出,在父元素外部的位置顯示
                    hidden 溢出內容將會被裁剪不會顯示
                    scroll 生成兩個滾動條,通過滾動條來查看完整的內容
                    auto 根據需要生成滾動條

            overflow-x: 
            overflow-y:
   垂直外邊距的重疊(摺疊)
            - 相鄰的垂直方向外邊距會發生重疊現象
            - 兄弟元素
                - 兄弟元素間的相鄰垂直外邊距會取兩者之間的較大值(兩者都是正值)
                - 特殊情況:
                    如果相鄰的外邊距一正一負,則取兩者的和
                    如果相鄰的外邊距都是負值,則取兩者中絕對值較大的

                - 兄弟元素之間的外邊距的重疊,對於開發是有利的,所以我們不需要進行處理


            - 父子元素
                - 父子元素間相鄰外邊距,子元素的會傳遞給父元素(上外邊距)
                - 父子外邊距的摺疊會影響到頁面的佈局,必須要進行處理

四、行內塊元素的盒模型

display 用來設置元素顯示的類型
可選值:
inline 將元素設置爲行內元素
block 將元素設置爲塊元素
inline-block 將元素設置爲行內塊元素
行內塊,既可以設置寬度和高度又不會獨佔一行
table 將元素設置爲一個表格
none 元素不在頁面中顯示

            visibility 用來設置元素的顯示狀態
                可選值:
                    visible 默認值,元素在頁面中正常顯示
                    hidden 元素在頁面中隱藏 不顯示,但是依然佔據頁面的位置

重置樣式表:專門用來對瀏覽器的樣式進行重置的
reset.css 直接去除了瀏覽器的默認樣式
normalize.css 對默認樣式進行了統一
默認樣式:
- 通常情況,瀏覽器都會爲元素設置一些默認樣式
- 默認樣式的存在會影響到頁面的佈局,
通常情況下編寫網頁時必須要去除瀏覽器的默認樣式(PC端的頁面)
默認情況下,盒子可見框的大小由內容區、內邊距和邊框共同決定

                box-sizing 用來設置盒子尺寸的計算方式(設置width和height的作用)
                    可選值:
                        content-box 默認值,寬度和高度用來設置內容區的大小
                        border-box 寬度和高度用來設置整個盒子可見框的大小
                            width 和 height 指的是內容區 和 內邊距 和 邊框的總大小
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章