在写响应式布局时,发现border所占据空间的问题让人很头疼。下面举例说说遇到的问题和解决方法!


上例中的盒子box1和box2,因为宽度和刚好等于父元素盒子宽度,可以完美的排在同一行。


但我们给box2加一个边框,就会发现,box2的宽度增加了,box3被挤到了下面一行去。虽然我们只是添加了1px的边框,但它对布局的影响确实很大。在我们需要使用伪类显示边框时,突然出现的边框常常会对我们的布局造成影响,严重拉低体验。我尝试了两个方法消除边框影响。一是outline代替border来展示边框


以上的代码,box2四周也会出现边框,并且不会布局。但也会看到,box2部分边的边框线会被遮住而看不到,所以这种方法有局限性,不是很推荐,用在四周没有紧贴的其他元素的情况下比较好。第二种方法是给box2设置属性box-sizing:border-box;


可以看到,这次既显示了边框线,有没有影响我们的布局,除了降低了内容区大小,这个方法接近完美。box-sizing是css3的属性,它有三个值,content-box,border-box,inherit。content-box,宽度和高度分别应用到元素的内容框,在宽度和高度之外绘制元素的内边距和边框。这也是box-sizing的默认值。border-box,为元素设定的宽度和高度决定了元素的边框盒,就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制,通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。inherit,规定应从父元素继承 box-sizing 属性的值。
制图网(www.makepic.net),专业的logo免费设计在线生成网站,全自动智能化logo设计,商标设计,logo在线生成!
欢迎使用制图网制作属于您公司自己的logo,不仅专业而且经济实惠,全方位满足您公司品牌化、视觉化的需求。
只需简单一步,使用微信扫码(或长按识别二维码)并在任一小程序首页根据提示获取激活码!
chatGPT中文网页版,无需注册,快来体验全网最火爆的人工智能应用!
只需简单一步,使用微信扫码(或长按识别二维码)并在任一小程序首页根据提示获取激活码!
chatGPT中文网页版,无需注册,快来体验全网最火爆的人工智能应用!