最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 这是你还不知道的CSS包含块规则吗?

    正文概述 掘金(DYBOY)   2021-03-14   502

    一、确立包含块

    包含块是一个非常重要的概念,通常包含块是当前元素的最近祖先元素的内容区,包含块的形成依赖于CSS position属性。

    在我们常用的场景中,position的值有relativeabsolutefixedstatic,且这四种属性为代表,浏览器对于这四种属性的包含块确立规则如下:

    说明
    absolute绝对定位,包含块就是由它的最近的 position 的值不是static的祖先元素的内边距区的边缘组成。fixed固定定位,在连续媒体下(continuous media)包含块是 viewport(视口) ,在分页媒体(paged media)下的情况下包含块是分页区域(page area)relative相对定位,包含块是最近祖先块级元素或格式化上下文static默认值,没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明),同relative规则

    二、百分比值计算规则

    CSS中例如widthheightpadding等属性在设置百分比值时,浏览器会动态计算实际的像素值,百分比的计算基数就是该元素的包含块对应的实际属性值。

    百分比单位计算基数属性当前属性备注
    包含块的widthwidthleftrightpaddingmargin若包含块position值为relative或static,则当前元素的计算值为auto包含块的heightheighttopbottom

    例如计算当前元素的百分比值的height属性

    则其值为:包含块height值 * 当前元素height百分比值

    三、包含块原理的应用场景

    自己之前一直有个误区,认为paddingmargin的百分比单位的计算基数是当前元素矩形区域宽高来算,但是根据包含块的规则,他们的计算基数应该是包含块的width值。

    那么看看下面这个问题

    之前团队里大佬洪岩问:“如何实现一个高度是自适应宽度3倍的图片?”

    通过思考,大致有如下的实现方式,大家可以参考

    实现方法1: 利用Chrome浏览器最新支持的aspect-ratio属性,其问题就是C端浏览器兼容性不好

    .box {
        aspect-ratio: 1/3; // width/height 宽高比
    }
    

    这是你还不知道的CSS包含块规则吗?

    实现方法2: 巧用包含块规则(paddingwidth属性百分比值的计算基数是包含块的宽度)+ 背景图实现

    <div class="box">
      <div class="bg-box"></div>
    </div>
    
    .box {
        width: 100px;
        margin: 100px auto;
        position: relative;
        background-color: #00abef;
    }
    .bg-box {
        width: 100%;
        padding-top: 300%;
        background-image: url('https://ww3.sinaimg.cn/large/006pGbWsly1go7xqwfjw0j30ef0fewfp.jpg');
        background-repeat: no-repeat;
        background-size: 100% 100%;
    }
    

    效果如下图:

    这是你还不知道的CSS包含块规则吗?

    CodePen地址: codepen.io/DYBOY/pen/J…

    四、总结

    熟记包含块规则,有利于在实际开发中解决一些“小块”的布局问题。有需要内推“字节跳动”的同学欢迎加我微信,一对一沟通对接到入职,WX:DYBOY2020


    起源地下载网 » 这是你还不知道的CSS包含块规则吗?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元