美文网首页
box-sizing布局

box-sizing布局

作者: BULL_DEBUG | 来源:发表于2018-01-18 15:39 被阅读10次

盒子模型


  • 关于CSS重要的一个概念就是CSS盒子模型。它控制着页面这些元素的高度和宽度。盒子模型多少会让人产生一些困惑,尤其当涉及到高度和宽度计算的时候。真正盒子的宽度(在页面呈现出来的宽度)和高度,需要加上一些其它的属性,例如:

    • padding + border + width= 盒子的宽度

    • padding+ border + height = 盒子的高度

  • 这看起来并不是那么直观,那么我们看一个图:

1516260682(1).jpg
  • 这意味着,如果我们设置一个宽度为200px,而实际呈现的盒子的宽度可能会大于200px(除非没有左右边框和左右补白)。这可能看起来比较怪,CSS设置的宽度仅仅是内容区的宽度,而非盒子的宽度。同样,高度类似

  • 这导致的直接结果是当我们希望页面呈现的盒子的宽度是200px的时候,我们需要减去它的左右边框和左右补白,然后设置为对应的CSS宽度。例如上图,我们设置希望盒子宽度为200px,则需要先减去左右补白各20px,左右边框各1px,然后设置对应的CSS宽度158px

  • 幸运的是,我们有更好的方法达到我们想要的目的


box-sizing

  • 语法:box-sizing: content-box | border-box | inherit;

  • 与上面不同的是,当你设置box-sizing:border-box以后,这就能达到你想要的目的。例如,上面我们想要一个宽度为200px的盒子,那么我们直接设置宽度为200px。是不是看起来清晰多了。当再设置它的左右边框和左右补白后,它的内容区会自动调整。这可能更直接和一目了然。CSS代码如下:

div {
    box-sizing: border-box;
    width: 200px;
    padding: 20px;
    border: 1px solid #DDD;
}

1516260751(1).jpg
  • 实际上,这更被设计者和开发者推崇

  • 一些开发人员觉得box-sizing使用起来十分方便,所以他们主张通过通用选择器将这个属性应用于每个元素

  • 但这样的观点未免有些偏激,而且还会导致不必要的困难,所以更好的方法是只在实际需要时才使用这个属性

*{
     margin:0;
      padding:0;
     box-sizing:border-box;
}

  • 写上 box-sizing: border-box; ,设置padding值 也不用担心没有减小宽度值而变形

box-sizing其它的值

  • content-box

    • 描述:在宽度和高度之外绘制元素的内边距和边框。
1516261019(1).jpg
  • border-box

    • 描述:为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制
1516261035(1).jpg
  • inherit

    • 描述:继承 父元素 box-sizing属性的值

浏览器兼容性

  • IE8及以上版本支持该属性,Firefox 需要加上浏览器厂商前缀-moz-,对于低版本的IOSAndroid浏览器也需要加上-webkit-。实际上,很多reset.css或者normal.css里都包含如下CSS语句,也是比较赞成的用法:
*, *:before, *:after {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  }

box-sizing 布局三栏目案例

div{
        height:700px;
        float:left;
}
div.left{
        width:25%;
        background:red;
}
div.cent{
        width:50%;
        box-sizing:border-box;/*可以改变元素以使其宽度包含填充*/
                /* 现在整个元素,包括填充在内,占页面总宽度的50%,所以元素的组合宽度为100%,这全程它们很好地适应于它们的容器.*/
        background:yellow;
        padding:0 20px;/*加了这个会使盒子内容溢出 但是box-sizing很好的自适应了*/
}
div.right{
       width:25%;
        background:blue;
}

<div class="left"></div>
<div class="cent"></div>
<div class="right"></div>

  • 效果
1516261105(1).jpg

转自:https://www.jianshu.com/p/e2eb0d8c9de6

相关文章

  • box-sizing布局

    盒子模型 关于CSS重要的一个概念就是CSS盒子模型。它控制着页面这些元素的高度和宽度。盒子模型多少会让人产生一些...

  • CSS布局理解笔记

    flex-wrap: wrap; 弹性布局,超出一行自动换行。 box-sizing:border-box :内容...

  • 使用box-sizing布局

    盒模型 在css中比较重要的就是 盒模型,它是在web中比较重要的一个基础点,当然其中涉及到 高度和宽度计算。 w...

  • box-sizing挽救布局

    常见的三栏布局有圣杯布局和双飞翼布局,在这里我们不深究圣杯布局跟双飞翼布局的起源,说一下如何进行box-sizin...

  • box-sizing布局笔记

    首先学习box-sizing布局之前,来了解一下css盒子模型(Box Model) 盒子模型(Box Model...

  • css

    css 1.盒模型 页面渲染时,dom元素所采用的布局模型。 可以通过box-sizing 进行设置。根据计算宽高...

  • H5移动端知识点总结

    阅读目录移动开发基本知识点 calc基本用法box-sizing的理解及使用理解display:box的布局理解f...

  • 有关border-box的知识及延伸

    标签(空格分隔): CSS布局 说起box-sizing:border-box我们就不能不理解盒子模型。这里我简要...

  • 前端面试题搜集

    HTML+CSS 布局相关 不用百分比方式,实现均分 html5的新特性 盒子模型(box-sizing) 浮动:...

  • 学会使用box-sizing布局

    盒子模型 关于CSS重要的一个概念就是CSS盒子模型。它控制着页面这些元素的高度和宽度。盒子模型多少会让人产生一些...

网友评论

      本文标题:box-sizing布局

      本文链接:https://www.haomeiwen.com/subject/jcjwoxtx.html