zoukankan      html  css  js  c++  java
  • #css3# box-sizing

    box-sizing属性让css布局更容易并且更直观。但是为什么它有效又被热爱,先让我们看下它的历史。

    盒子模型历史

    自从css诞生,盒子模型就这样默认的工作:

    width + padding + border = 元素被渲染的/实际可见的宽度

    height + padding + border = 元素被渲染的/实际可见的高度

    这可能是违法直觉的,因为一旦你给元素加了padding或border你设置的高度/宽度就会跑出window。

    回顾一下web设计,IE早起的版本(<IE 6)在 quirks mode下处理盒子模型是不同的:

    width = 元素被渲染的/实际可见的宽度
    
    height = 元素被渲染的/实际可见的高度

    border/padding的值被放进了元素盒子里,通过减小盒子的宽/高,而不是扩展它。

    一些人更喜欢这种quirky的盒子模型,认为它更直观。

    但是,在固定宽度设计的时代,一旦你理解了默认盒子模型,使用起来就不太复杂。你可以通过简单的数学计算出你需要设置多宽多高。对于现在的开发者的问题是那些绝对的px长度不会翻译成自适应的设计i,所以相同的数学问题不再适用。

    自适应设计开始变得流行,开发者和设计者希望更新盒子模型。伟大的设计者Jon Hicks,以他的优秀的流式宽度设计出名,在CSS wishlist上加了这个主题:

    我想要一个不一样的盒子模型。我发现一个把padding/border加在元素的宽度上很奇怪,希望能给出一种方式,比如textarea 100% 宽,3px padding,不用担心它会怎样布局。也许可以是一个内置padding?

    现代box-sizing

    这些想法促进了box-sizing属性被引入css3.即使box-sizing有三种值:content-box,padding-box,border-box,最常用的是border-box。

    现在,所有浏览器的最新版本使用了原始的:width/height + padding + border = 实际宽/高 的盒子模型。用box-sizing:border-bbox;我们可以改变盒子模型为曾经的quirky方式,这种方式元素的具体宽高并不会受padding/border影响。这已经证明了自适应设计中很有用。

    因此,你可能会自问,“是不是旧版本的IE做了正确的事情?”一些人是这样认为的。

    Good,Better,and (probably) Best box-sizing Reset Methods

    # The “old” border-box reset

    * {
      box-sizing: border-box;
    }
    

    # Universal Box Sizing

    *, *:before, *:after {
      box-sizing: border-box;
    }
    //这种方法包含了伪类元素。但是*选择器让开发者在别的地方使用content-box/padding-box比较困难。

    # Universal Box Sizing with Inheritance

    html {
      box-sizing: border-box;
    }
    *, *:before, *:after {
      box-sizing: inherit;
    }
    // 这种reset方法比之前的方法给你了更大的灵活性 -- 你可以任意使用content-box/padding-box,不用担心通配选择器覆盖你的css。

      

  • 相关阅读:
    ELK日志分析系统
    amoeba_mysql 读写分离
    while for if ---语句和编写计划任务
    Shell awk文本处理,shell脚本编写
    shell---正则表达式和文本处理器
    linux---网络相关配置,ssh服务,bash命令及优先级,元字符
    linux---nginx服务nfs服务nginx反向代理三台web
    linux---进程,(rpm,yum)软件包
    linux---tar命令,vim编辑器,磁盘分区,挂载,链接
    linux命令权限
  • 原文地址:https://www.cnblogs.com/tianmuxi/p/9076373.html
Copyright © 2011-2022 走看看