CSS之常見佈局|經常使用單位|水平垂直居中

常見佈局:javascript

  1. 流式佈局:百分比佈局,寬高、margin、pinding都是百分比html

  2. 固定佈局:盒子的寬高固定,如:margin、padding等java

  3. 浮動佈局:floatweb

  4. 彈性佈局:flex(Webkit內核的瀏覽器,必須加上-webkit前綴。)瀏覽器

  5. 響應式佈局:媒體查詢,如 &:hover函數

  6. 定位佈局:position佈局

 

  彈性佈局:字體

    概念:用Flex佈局的元素,稱爲Flex容器,他全部的子元素自動成爲成員,成爲Flex項目flex

    例舉做用:spa

      · 能夠經過設置項目(flex容器中的子元素)的 flex 值來實現自動伸縮

      · 能夠經過設置 justify-content(主軸的排列方式) 或者 align-items(交叉軸的排列方式) 的爲 center 來實現水平垂直居中

    容器的屬性:  

   flex-direction:row | row-reverse | column | column-reverse;//決定主軸的方向(即項目的排列方向)。
    row(默認值):主軸爲水平方向,起點在左端。
    row-reverse:主軸爲水平方向,起點在右端。
    column:主軸爲垂直方向,起點在上沿。
    column-reverse:主軸爲垂直方向,起點在下沿。


    flex-wrap//默認狀況下,項目都排在一條線(又稱」軸線」)上。flex-wrap屬性定義,若是一條軸線排不下,如何換行。
    nowrap(默認):不換行。
    wrap:換行,第一行在上方。
    wrap-reverse:換行,第一行在下方。


    flex-flow:<flex-direction> || <flex-wrap>;//是flex-direction屬性和flex-wrap屬性的簡寫形式,默認值爲row nowrap。


    justify-content:flex-start | flex-end | center | space-between | space-around;//屬性定義了項目在主軸上的對齊方式。
    具體對齊方式與軸的方向有關。下面假設主軸爲從左到右。
    flex-start(默認值):左對齊
    flex-end:右對齊
    center: 居中
    space-between:兩端對齊,項目之間的間隔都相等。
    space-around:每一個項目兩側的間隔相等。因此,項目之間的間隔比項目與邊框的間隔大一倍。


    align-items:flex-start | flex-end | center | baseline | stretch;//定義項目在交叉軸上如何對齊。
    它可能取5個值。具體的對齊方式與交叉軸的方向有關,下面假設交叉軸從上到下      
    flex-start:交叉軸的起點對齊。
    flex-end:交叉軸的終點對齊。
    center:交叉軸的中點對齊。
    baseline: 項目的第一行文字的基線對齊。
    stretch(默認值):若是項目未設置高度或設爲auto,將佔滿整個容器的高度。


    align-content//定義了多根軸線的對齊方式。若是項目只有一根軸線,該屬性不起做用。
    flex-start:與交叉軸的起點對齊。
    flex-end:與交叉軸的終點對齊。
    center:與交叉軸的中點對齊。
    space-between:與交叉軸兩端對齊,軸線之間的間隔平均分佈。
    space-around:每根軸線兩側的間隔都相等。因此,軸線之間的間隔比軸線與邊框的間隔大一倍。
    stretch(默認值):軸線佔滿整個交叉軸。

 

   項目屬性:

// 定義項目的排列順序。數值越小,排列越靠前,默認爲0。 
order: <integer>
// 定義項目的放大比例,默認爲0,即若是存在剩餘空間,也不放大
flex-grow: <number>
// 定義了項目的縮小比例,默認爲1,即若是空間不足,該項目將縮小。
flex-shrink:<number>;
// 定義了在分配多餘空間以前,項目佔據的主軸空間(main size)。
// 瀏覽器根據這個屬性,計算主軸是否有多餘空間。它的默認值爲auto,即項目的原本大小。
flex-basis:<length> | auto //是flex-grow, flex-shrink 和 flex-basis的簡寫,默認值爲0 1 auto。後兩個屬性可選。
// 該屬性有兩個快捷值:auto (1 1 auto) 和 none (0 0 auto)。
flex:none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] // 容許單個項目有與其餘項目不同的對齊方式,可覆蓋align-items屬性。默認值爲auto,
// 表示繼承父元素的align-items屬性,若是沒有父元素,則等同於stretch。
align-self: auto | flex-start | flex-end | center | baseline |stretch;

 

實現水平垂直居中的方式

  未知盒子寬高

    1. 使用 inline-block 和 text-align 及 vertical-align

    2. 使用table-cell(模擬表格), inline-block實現 (主要設置 text-align / vertical-align 屬性)

    3. 使用彈性佈局實現水平垂直居中 (justify-content: center; align-items: center;)

    4. 使用transform實現垂直居中

  2. 使用絕對定位和邊距的方式實現(已知盒子寬高)

 

經常使用單位及區別

  px:相對長度單位。相對於屏幕分辨率而言

  em:值不固定,繼承 父級元素 的字體大小

  rem:值根據 根元素(html)的字體大小而言的

  移動端rem單位大小自適應自適應代碼(直接設置 62.5% 會出現些一些小bug)

/*手機自適應*/
(function (doc,win) {
    let docEl = doc.documentElement // 根元素html 
     //判斷窗口有沒有orientationchange這個方法,有就賦值給一個變量,沒有就返回resize方法。
     let resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'         
     let recalc = function () {
          let clientWidth = docEl.clientWidth; if (!clientWidth) return; 
         // if(clientWidth>=560){
         //   clientWidth=560; 
         //   把document的fontSize大小設置成跟窗口成必定比例的大小,從而實現響應式效    果。
         // } 
        docEl.style.fontSize = 100 * (clientWidth / 750) + 'px'; 
    }; 
    if (!doc.addEventListener) return;
    recalc(); 
    //addEventListener事件方法接受三個參數:
    //第一個是事件名稱好比點擊事件onclick,第二個是要執行的函數,第三個是布爾
    win.addEventListener(resizeEvt, recalc, false);
  //綁定瀏覽器縮放與加載時間
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);

  

 

永遠不要自覺得是,在神面前你只是個愣頭青

相關文章
相關標籤/搜索