使用box-sizing让CSS布局更直观

所属分类: 软件教程 / 系统工具 阅读数: 1041
收藏 0 赞 0 分享

  box-sizing 属性允许您以特定的方式定义匹配某个区域的特定元素。box-sizing是CSS3的box属性之一。一说到CSS的盒模型(Box model)我想很多人都会比较烦,特别是对于新手,然而这个Box model又是我们CSS运用中比较重要的一个属性。那么CSS3的Box-sizing跟盒模型有什么关系呢?第一句话就说了,Box-sizing是CSS3的Box属性之一,那他当然也遵循CSS的Box model原理,为了能更好的学习和理解这个Box-sizing属性,我们有必要先了解一下CSS中Box model的原理。

  例如,假如您需要并排放置两个带边框的框,可通过将 box-sizing 设置为 "border-box"。这可令浏览器呈现出带有指定宽度和高度的框,并把边框和内边距放入框中。

  如果你写过CSS或者你接触过CSS,相信你一定对盒子模型一点都不陌生。CSS其中一个让人比较困惑的地方就在于它的盒子模型中关于高度和宽度的计算,别说那些初学者了,就是写过很久CSS的人也一样会有如此的感觉。CSS中的高度和宽度总是不那么直观,让你总是很困惑,不能一眼就能分辨出其高度和宽度。有的时候你希望它的宽度是100px,但实际情况却总不是这样。然而,设置正确的box-sizing的属性,盒子的高度和宽度会的确就是你设置的100px。是否有点晕了呢,好了,下面我详细介绍下。

  1、盒子模型

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

  padding + border + width = 盒子的宽度

  padding + border + height = 盒子的高度

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

box-sizing让CSS布局更加直观 三联

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

  这导致的直接结果是当我们希望页面呈现的盒子的宽度是200px的时候,我们需要减去它的左右边框和左右补白,然后设置为对应的CSS宽度。例如上图,我们设置希望盒子宽度为200px,则需要先减去左右补白各20px,左右边框各1px,然后设置对应的CSS宽度158px。这让代码看起来有点匪夷所思,尤其是对新手来说(我就在这个问题上困惑了很久)。我明明设置的宽度是158px,它却呈现了200px。这多少有点不那么直观和一目了然。

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

  2、box-sizing

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

  div {

  box-sizing: border-box;

  width: 200px;

  padding: 20px;

  border: 1px solid #DDD;

  }

  如下图:

  实际上,这更被设计者和开发者推崇。

  3、box-sizing其它的值

  box-sizing同样可以设置为content-box,这样设置CSS的宽度的时候仅仅是设置的它的内容区的宽度,浏览器默认都是如此。如我们1中举得例子。

  box-sizing也可以设置为inherit,也就是说从父级元素中继承该属性。

  4、浏览器兼容性

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

  *, *:before, *:after {

  -moz-box-sizing: border-box;

  -webkit-box-sizing: border-box;

  box-sizing: border-box;

  }

  结束语

  看到这儿,相信你肯定明白了box-sizing的含义。那么同样告诉你的是,这是很多前端面试题常见的知识点之一。面试官通常会问你,CSS设置如下语句后*{box-sizing:border-box;},其作用是什么?相信你看到现在肯定会清楚的回答这个问题了。

更多精彩内容其他人还在看

画图工具怎么在多张A4纸上打印一张长图片?

画图工具怎么在多张A4纸上打印一张长图片?有一张很长的图片文件,需要打印在多张a4纸中,该怎么打印呢?下面我们就来看看使用画图工具实现的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

AMD新驱动17.4.1 Beta发布:支持DP1.4 HBR3、8K 60H双缆

今天AMD将驱动更新至Radeon Software ReLive Crimson Edition 17.4.1版本,主要支持VR环境下的两项主流的异步扭曲技术,为VR体验带来更流畅的视听享受,同时,新驱动正式支持DP1.4 HBR3、8K 60Hz双缆、8K 30Hz单缆,详情
收藏 0 赞 0 分享

Titan Xp显卡首款正式版驱动发布:完美支持Win10.3

就在我们以为NVIDIA Pascal家族已经圆满的时候,有消息说还会有一款入门级的GTX 1030,而现在NVIDIA官方突然发布了一款“Titan Xp”,一举超越GTX 1080 Ti而轻松封皇,与此同时还释放了首款正式版驱动程序,版本号381.65,完美支持Win10.3
收藏 0 赞 0 分享

AMD上线Linux专版驱动17.10:支持Ubuntu16.04.2/修复BUG

Linux虽然自带有AMD开源显卡驱动,但若是要获得更好的体验还是必须得依靠AMD官方的闭源驱动才行,毕竟人家是专业的,AMD近日发布了AMDGPU-PRO 17.10驱动,服务Linux平台,于17.10中修复了BUG,也兼容更多的Linux分支系统,来看看吧
收藏 0 赞 0 分享

AMD最新版显卡驱动17.4.2发布:支持Win10创意者更新

AMD今天放出了最新版显卡驱动Radeon Software Crimson ReLive Edition 17.4.2,修复了几大问题,比如部分混合双显卡系统安装驱动并重启后弹出Windows安全提示等问题,另外,还支持Win10创意者更新,A卡用户不容错过
收藏 0 赞 0 分享

显卡识别必备工具GPU-Z 1.20.0发布:修复RX500 BIOS提取问题

AMD刚刚正式发布了新一代Radeon RX 500系列显卡,包括RX 580、RX 570、RX 560、RX 550四款型号,与此同时,显卡识别必备工具GPU-Z 1.20.0紧急发布,主要是修复RX500 BIOS提取问题,详情我们来看看吧
收藏 0 赞 0 分享

upupoo动态视频桌面怎么样 upupoo动态视频桌面图标不显示解决办法

upupoo动态视频桌面是一款不错的动态视频桌面,能让小伙伴们的桌面变得更加的有意思,能让小伙伴们不用面对枯燥的桌面。不少小伙伴想知道在哪下载,因此就让小编给大家详细的讲讲吧
收藏 0 赞 0 分享

upupoo动态视频桌面怎么下载素材以及电脑上进行设置

upupoo动态视频桌面现在最火的动态桌面,很多小伙伴在进行使用的时候,想知道自己该怎么下载素材,怎么进行设置,因此不少小伙伴不知道怎么设置
收藏 0 赞 0 分享

VRMark破解安装详细图文教程

VRMark是一款非常保护多的vr性能测试软件,近日有网友咨询小编VRMark怎么破解?今天脚本之家小编就给大家带来VRMark破解安装详细图文教程,需要的朋友一起去看看吧
收藏 0 赞 0 分享

geforce experience扫描不到游戏的解决方法

geforce experience 是N卡为用户提供游戏优化的一款应用软件。可是有些小伙伴在用geforce experience优化游戏的时候却扫描不到游戏,这是什么情况?如何解决?下面小编就为大家带来geforce experience扫描不到游戏的解决方法
收藏 0 赞 0 分享
查看更多