• 《CSS世界》读书笔记(四)--宽度分离


    <!-- 《CSS世界》张鑫旭著 -->

    CSS流体布局下的宽度分离原则

    所谓“宽度分离原则”,就是CSS中的width属性不与影响宽度的padding/border(有时候包括margin)属性共存,也就是不能出现以下的组合:

    .box { 100px; border: 1px solid; }

    或者

    .box{ 100px; padding: 20px; }

    而是利用宽度分离原则,width独立占用一层标签,而padding、border、margin利用流动性在内部自适应呈现。

    .father {
         180px;
    }
    
    .son {
        margin: 0 20px;
        padding: 20px;
        border: 1px solid;
    }
    

     宽度分离便于维护。当一件事情的发展可以被多个因素左右的时候,这个事情最终的结果就会变数很大而不可预期。宽度在这里也是类似,由于盒尺寸中的4个盒子都能影响宽度,自然页面元素的最终宽度就很容易发生变化而导致意想不到的布局发生。

    width、padding、border混用的时候,当我们需要修改padding或者border-width的时候,就要重新计算width,而使用width分离之后,我们没有任何计算,浏览器会自动计算,完全不用担心尺寸的变化,页面结构更加稳固。

      宽度分离多使用了一层标签,增加了HTML成本。

    而既无需计算,又无需额外嵌套标签的实现,就是改变width作用细节的box-sizing属性。

    改变width/height作用细节的box-sizing

    box-sizing被直译为“盒尺寸”,实际上,更准确的叫法应该是“盒尺寸的作用细节”,或者说更通俗一点,叫“width作用的细节”,也就是说,box-sizing属性的作用是改变width的作用细节。

    box-sizing的值有content-box、padding-box、border-box;content-box是默认值,padding-box只有Firefox曾经支持过,border-box全线支持。

    为何box-sizing不支持margin-box?

    没有价值!如果我们使用width或height设定好了尺寸,margin不会影响offset尺寸。

    并且对于box-sizing的margin-box效果,如果是IE10及以上版本浏览器,可以试试flex布局;如果是IE8及以上版本可以使用“宽度分离”,或者特定场景下使用“格式化宽度”来实现,也就是并不是强需求。

  • 相关阅读:
    现代程序设计 作业1
    现代程序设计课程简介
    ubuntu 下解决安装包依赖问题
    centos下安装nginx和php-fpm
    如何在本机上将localhost改为www.dev.com
    神器
    脚本监测 前十名磁盘空间用户的列表
    使用xml来显示获取的mysql数据
    linux使用脚本自动连接数据库
    shell script的连接符是逗号,不是英文的句号
  • 原文地址:https://www.cnblogs.com/beginner2014/p/9346019.html
Copyright © 2020-2023  润新知