CSS疑难总结

写在前面

本文主要用于项目中碰到的关于css的疑难点或者易忘点的总结。

布局篇

  1. flex布局

    Flex布局以后,子元素的float、clear和vertical-align属性将失效。

    img

    flex布局示意图

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    .container {
    display:-webkit-flex; //与flex一起写,是一个好习惯 ???什么是webkit内核
    display: flex;
    flex-flow: row | row-reverse | column | column-reverse [nowrap|wrap|wrap-reverse];//前半部分为伸缩项目的伸缩方向 后半部分为是否另起一行
    justify-content: flex-start | flex-end | center | space-between | space-around; //伸缩项目的对齐方式
    align-items: flex-start | flex-end | center | baseline | stretch; //上下对齐
    align-content: flex-start | flex-end | center | space-between | space-around | stretch; //多根轴线的对齐方式
    }
    .tems {
    flex:none | <' flex-grow '> <' flex-shrink >'? || <' flex-basis '>
    order: <integer>; //数值越小越靠前
    align-self: auto | flex-start | flex-end | center | baseline | stretch; //单个项目可以自定义伸缩
    }

对于flex属性的参数解析可以参考CSS手册:

<’ flex-grow ‘>:

用来指定扩展比率,即剩余空间是正值时此「flex子项」相对于「flex容器」里其他「flex子项」能分配到空间比例。
在「flex」属性中该值如果被省略则默认为「1」

<’ flex-shrink ‘>:

用来指定收缩比率,即剩余空间是负值时此「flex子项」相对于「flex容器」里其他「flex子项」能收缩的空间比例。
在收缩的时候收缩比率会以伸缩基准值加权
在「flex」属性中该值如果被省略则默认为「1」

<’ flex-basis ‘>:

用来指定伸缩基准值,即在根据伸缩比率计算出剩余空间的分布之前,「flex子项」长度的起始数值。
在「flex」属性中该值如果被省略则默认为「0%」
在「flex」属性中该值如果被指定为「auto」,则伸缩基准值的计算值是自身的 <’ width ‘> 设置,如果自身的宽度没有定义,则长度取决于内容。

1528387809078

例子说明flex-grow,flex-shrink ,flex-basis之间的关系

  1. Position中Absolute和Relative
  1. BOM篇

  2. 关于浏览器内核和Javascript引擎之间的关系

  1. 论浏览器中的scroll
  1. CSS属性