响应式Web设计经常需要我们通过百分比设置组件宽度。如果我们不考虑边框,那么很容易就可以实现,但如果你给每一列以及总宽度都采用百分比设置,那这个时候固定的边框大小就会出来捣乱。下面我们将看到一组方法去解决这个问题,你会学到如何创建一个流式布局,而不用担心额外的边框以及内边距。
假设我们需要一个五列的布局。我们要考虑的第一件事就是外边距(margins).假设所有的列都需要4%的外边距,我们需要为所有的外边距保留20%(4%*5(5列)=20%)的占宽比;然后我们从总宽比(100%)里面减去20%,得到的就是所有列实际占的总宽比。所以每一列的占宽比即16%(80% /5)。下面是一个详细的图表:

相应的CSS代码如下:

.column{
width:16%;
margin: 2% 2%;
float: left;
background: #03a8d2;
}

对应的界面是:

当我们给每一列添加一个2px的边框时,问题出现了,如下图,最后一列被挤到下面去了。

解决方案当然应该是:在之前的计算中我们应该考虑到边框(border),但是我们怎么去做呢?结论是,我们不能用百分比去设置border边框的大小,只能用一个固定的值。因为如果所有的都使用百分比设置,那么我们留给border的空间也会是一个变化的值,也就是说当页面宽度变化时,border的值也会跟着变化,这样是有问题的。这使得我们没有办法去决定我们边框的宽度!

解决方案
设置CSS的box-sizing属性值为“border-box”,这样就会把borders和padding全都包含在定义的宽高里面。这就意味着一个带有2px边框的200px的div仍然宽度是200px!!是不是很神奇呢?

.column{
width: 16%;
margin: 2% 2%;
float: left;
background:#03a8d2;
border: 2px solid black;
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
}

即使我们加上padding,也同样可以正常显示:

浏览器兼容性问题:
兼容性和上面的一样,除了IE需要8以上的版本,其他浏览器均可兼容,同时这个方法不会出现上面提到的阴影问题。
转载自:http://blog.sina.com.cn/s/blog_771875550101hv5f.html

css3属性box-sizing:border-box 用法解析 击败边框:带border的百分比布局相关推荐

  1. html图片与周围元素边界5px,css3如何将图像设置为元素周围的边框

    css3将图像设置为元素周围的边框的方法:首先创建一个HTML示例文件:然后在body中创建一些p元素:最后通过css3中的border-image属性将图像设置为元素周围的边框即可. 本文操作环境: ...

  2. html怎么把图片放入边框,css3如何将图像设置为元素周围的边框

    在网页设计过程中,使用css3图像边框属性可以大大的提升网页整体美观效果,以及丰富页面内容.那么css3中的图像边框属性也就是border-image 属性. 推荐学习:<CSS3教程> ...

  3. html5调盒子边框大小,CSS3 - 盒子大小(CSS3 - Box Sizing)

    CSS3 - 盒子大小(CSS3 - Box Sizing) Box大小调整属性用于更改元素的高度和宽度. 从css2开始,box属性的工作方式如下所示 -width + padding + bord ...

  4. css3属性box-sizing:border-box 用法解析

    响应式Web设计经常需要我们通过百分比设置组件宽度.如果我们不考虑边框,那么很容易就可以实现,但如果你给每一列以及总宽度都采用百分比设置,那这个时候固定的边框大小就会出来捣乱.下面我们将看到一组方法去 ...

  5. [css] 如何使用CSS3的属性设置模拟边框跟border效果一样?

    [css] 如何使用CSS3的属性设置模拟边框跟border效果一样? <!DOCTYPE html> <html lang="en"> <head& ...

  6. html5 box sizing,CSS 盒模型与box-sizing

    一.盒模型 一个web页面由许多html元素组成,而每一个html元素都可以表示为一个矩形的盒子,CSS盒模型正是描述这些矩形盒子的存在. MDN的描述: When laying out a docu ...

  7. html5 css3 marquee,marquee的详细用法解析

    marquee的详细用法解析 更新时间:2006年08月28日 00:00:00   作者: 先看下 marquee 的html 属性 BEHAVIOR="-" BGCOLOR=& ...

  8. html中的变圆的属性,CSS3属性之圆角效果——border-radius属性

    在css3之前,要实现圆角的效果可以通过图片或者用margin属性实现(可以参考这里:http://www.hicss.net/css-practise-of-image-round-box/).实现 ...

  9. CSS3属性border-radius参数详解

    border-radius,国内翻译成圆角,你可能以为这个属性就是用来画圆角,没错,但是除此之外,它还可以做点别的事情.radius其实指的是边框所在圆的半径,这个CSS3属性不仅能够创建圆角,还可以 ...

最新文章

  1. 你向 Mysql 数据库插入 100w 条数据用了多久?
  2. SAP Basis DEBUG改表数据权限角色设计
  3. Qt for Android解决启动时黑屏(或白屏)的问题
  4. 计算机网络重要机制(一)可靠数据传输
  5. linux-安装-MySQL
  6. 【debug】python打包成exe,太大了该怎么解决?
  7. java图像在背景图移动_java – 在Swing中移动背景图像
  8. [考试反思]0813NOIP模拟测试20
  9. 原生小程序和 mpvue对比(开发前)
  10. 统一社会信用代码解析登记管理部门和机构类别
  11. 为什么要进行前后端分离
  12. 笔记本开发android占用,安卓笔记本是什么样子的?Bliss OS进入开发阶段
  13. 矩阵中的旋转(Rotation)
  14. vivo手机如何使用非官方手机主题
  15. 关系数据库设计 函数依赖 逻辑蕴含
  16. Rasa课程、Rasa培训、Rasa面试系列之: Rasa NLU意图和实体-分词器
  17. mysql sphinx windows_sphinx安装 Windows端
  18. 《魔灵保卫者》服务端架构及实现
  19. 农夫过河——python贪心算法实现
  20. MYSQL之慢SQL

热门文章

  1. Windows平台:Nginx+Tornado部署Flask
  2. 在Win7上安装WINDRIVER.TORNADO.V2.2.FOR.PENTIUM与运行HelloWorld
  3. 6264:走出迷宫(DFS和BFS)
  4. AES加密补位填充的一个问题
  5. BootStrap_01之全局样式
  6. 在java web项目中编写自己的代码生成器
  7. floa和position
  8. PostgreSQL处理xml数据初步
  9. 第十八章 20结构体与string
  10. 59.进程的三种状态,以及之间转换的过程