zoukankan      html  css  js  c++  java
  • CSS重要概念

    CSS层叠概念
    层叠上下文
        可以想象一张桌子,上面有一堆物品,这张桌子就代表着一个层叠上下文。 如果在第一张桌子旁还有第二张桌子,那第二张桌子就代表着另一个层叠上下文;
        现在想象在第一张桌子上有四个小方块,他们都直接放在桌子上。 在这四个小方块之上有一片玻璃,而在玻璃片上有一盘水果。 这些方块、玻璃片、水果盘,
        各自都代表着层叠上下文中一个不同的层叠层,而这个层叠上下文就是桌子
        形成层叠上下文的条件:
        根元素 <html></html>
        position值为 absolute|relative,且 z-index值不为 auto
        position 值为 fixed|sticky
        z-index 值不为 auto 的flex元素,即:父元素 display:flex|inline-flex
        opacity 属性值小于 1 的元素
        transform 属性值不为 none的元素
        mix-blend-mode 属性值不为 normal 的元素
        filter、 perspective、 clip-path、 mask、 mask-image、 mask-border、 motion-path 值不为 none 的元素
        perspective 值不为 none 的元素
        isolation 属性被设置为 isolate 的元素
        will-change 中指定了任意 CSS 属性,即便你没有直接指定这些属性的值
        -webkit-overflow-scrolling 属性被设置 touch的元素
    层叠等级
        决定了同一个层叠上下文中元素在z轴上的显示顺序
        层叠等级不一定由Z-index决定,只有定位元素的层叠等级才由 z-index 决定
    Z-index
        元素的 z-index 值只在同一个层叠上下文中有意义
    层叠顺序
        背景和边框:形成层叠上下文的元素的背景和边框。
        负z-index值:层叠上下文内有着负z-index值的定位子元素,负的越大层叠等级越低;
        块级盒:文档流中块级、非定位子元素;
        浮动盒:非定位浮动元素;
        行内盒:文档流中行内、非定位子元素;
        z-index: 0:z-index为0或auto的定位元素, 这些元素形成了新的层叠上下文;
        正z-index值:z-index 为正的定位元素,正的越大层叠等级越高
    产生BFC的条件
    1. 根元素或包含根元素的元素
    2. 浮动元素(元素的 float 不是 none)
    3. 绝对定位元素(元素的 position 为 absolute 或 fixed)
    4. 行内块元素(元素的 display 为 inline-block)
    5. 表格单元格(元素的 display为 table-cell,HTML表格单元格默认为该值)
    6. 表格标题(元素的 display 为 table-caption,HTML表格标题默认为该值)
    7. 匿名表格单元格元素(元素的 display为 table、table-row、 table-row-group、table-header-group、table-footer-group(分别是HTML table、row、tbody、thead、tfoot的默认属性)或 inline-table)
    8. overflow 值不为 visible 的块元素
    9. display 值为 flow-root 的元素
    10. contain 值为 layout、content或 strict 的元素
    11. 弹性元素(display为 flex 或 inline-flex元素的直接子元素)
    12. 网格元素(display为 grid 或 inline-grid 元素的直接子元素)
    13. 多列容器(元素的 column-count 或 column-width 不为 auto,包括 column-count 为 1)
    14. column-span 为 all 的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中(标准变更,Chrome bug)。
    BFC的约束条件
    1:内部的Box会在垂直方向上一个接一个的放置
    2:垂直方向的距离有margin决定(属于同一个BFC的两个相邻Box的margin会发生重叠,与方向无关):
    3:每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此,BFC的区域不会与float的元素区域重叠
    4:计算BFC的高度时,浮动子元素也参与计算
    BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面元素,反之亦然
    BFC解决的问题
    1:自适应两栏布局 (同下)
    2:阻止普通文档流被浮动元素覆盖(文字环绕效果)(原因是约束条件3,解决办法,BFC的区域不会与float的元素区域重叠)
    3:清除浮动(让元素变成BFC,从而计算高度时候,浮动元素也会计算进去)
    4:解决普通文档流元素的外边距折叠问题(让两个元素不在同一个BFC,就不会产生折叠了)
    不忘初心,不负梦想
  • 相关阅读:
    指向函数的指针 分类: C/C++ 2015-07-13 11:03 14人阅读 评论(0) 收藏
    Nginx平台构架 分类: Nginx 2015-07-13 10:55 205人阅读 评论(0) 收藏
    Nginx介绍 分类: Nginx 服务器搭建 2015-07-13 10:50 19人阅读 评论(0) 收藏
    C++ Virtual介绍 分类: C/C++ 2015-06-16 21:36 26人阅读 评论(0) 收藏
    Ubuntu vim+ ctags(包含系统函数) + taglist 配置 分类: vim ubuntu 2015-06-09 18:19 195人阅读 评论(0) 收藏
    Makefile 入门与基本语法 分类: C/C++ ubuntu 2015-05-18 11:16 466人阅读 评论(0) 收藏
    计算机视觉顶会 2015-05-03 16:17 47人阅读 评论(0) 收藏
    python如何使用 os.path.exists()--Learning from stackoverflow 分类: python 2015-04-23 20:48 139人阅读 评论(0) 收藏
    Python调用C可执行程序(subprocess) 分类: python 服务器搭建 C/C++ shell 2015-04-13 21:03 87人阅读 评论(0) 收藏
    C Struct Hack
  • 原文地址:https://www.cnblogs.com/panrui1994/p/9890266.html
Copyright © 2011-2022 走看看