CSS3盒模型之box-sizing

2023-11-05 12:08
文章标签 模型 frontend css3 box sizing

本文主要是介绍CSS3盒模型之box-sizing,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这些天在做一个手机端的页面,遇到了一些问题!首当其冲的就是盒子的溢出问题!大家都知道,手机的尺寸各异,各种型号的手机多得能闪瞎你们的眼睛,为了能 让这些设置更好的浏览我们的页面,我们已经不能固定页面的大小了。所以很多时候我们对于大小的设置都需要使用百分比,嗯,试试看吧!

    对于一个导航,我们初始是想这样:

代码如下:

css:

nav{ width 100% ; background #001125 ; overflow hidden }
nav a{ display block ; float left ; width 20% ; height 60px ; color #FFF ; text-align center ; font 16px / 60px  Microsoft YaHei; background #0A92CD }
nav a.p 1 { background : orange}
nav a.p 2 { background purple }
nav a.p 3 { background green }
nav a.p 4 { background blue }
nav a.p 5 { background gray }

 

效果如下:

嗯,看起来还是不错的!

但是,很显然,在实际开发过程中总是存在各种“但是”(比如,产品经理对设计师说:这样不好看,我们要背景一致,用竖线把它们分隔开来...由于是乎,设计师就把方案改了~ 结果,前端工程师就屁颠屁颠的改代码)

css:

 

nav{ width 100% ; background #001125 ; overflow hidden }
nav a{ display block ; float left ; width 20% ; height 60px ; border-right : 1px  solid  #001125 ; color #FFF ; text-align center ; font 16px / 60px  Microsoft YaHei; background #0A92CD }
nav a:last-child{ border-right none }

 

一段时间后...终于改好了!来看一下效果吧~

“帮助”你为什么没有跟你们兄弟站在一条战线上?

对啊,为什么呢?我翻资料,查找原因...我查...

原来:现代浏览器对于盒模型的解析引起的问题,它们不会将border和padding包含在width之内,所以,这里各自20%的宽度是不包括border-right:1px的,现在元素中20%*5+4px(4个border-right:1px,最后一个被nav a:last-child{border-right: none}去除了)当然就超过了父容器100%的宽度了,所以第一排已经容不下“帮助”了,它不得不孤独的自成一排。

那么,有什么办法可以让它们兄弟重新“团聚”呢?那就是我们今天的主角:box-sizing!只需要,在为所有兄弟设置box-sizing:border-box,就可以让它们合家团圆了!

css:

nav{ width 100% ; background #001125 ; overflow hidden }
nav a{ display block ; float left ; width 20% ; height 60px ; border-right : 1px  solid  #001125 ; color #FFF ; text-align center ; font 16px / 60px  Microsoft YaHei; background #0A92CD ;box-sizing:border-box}
nav a:last-child{ border-right none }

来看看是不是真的实现了呢?

那是必须的!




IE6以前的版本中,对盒模型的解析其实不需要设置border-box就已经是将border与padding包含在了width之内。所以,IE6以前版本的浏览器,在此前的dome中可能就已经没问题了。在我们开发的过程中会发现,有时候,如果对页面中的大区域进行设置时,将border、padding计算到width和height之内,反而更灵活。但W3C的 CSS2.1规范却规定了他们并不能被包含其中。所以才出现了刚才那样的问题。不过幸亏到了css3中引入了这个box-sizing的新属性,它具有 “content-box”和 “border-box”两个值。

box-sizing:content-box就是遵从之前CSS2.1的W3C标准,当它定义width和height时,宽度不包括border和padding。

box-sizing:border-box时便是能完美解决问题的包含其中的设置了!

这篇关于CSS3盒模型之box-sizing的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/349750

相关文章

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

SpringBoot+Vue3整合SSE实现实时消息推送功能

《SpringBoot+Vue3整合SSE实现实时消息推送功能》在日常开发中,我们经常需要实现实时消息推送的功能,这篇文章将基于SpringBoot和Vue3来简单实现一个入门级的例子,下面小编就和大... 目录前言先大概介绍下SSE后端实现(SpringBoot)前端实现(vue3)1. 数据类型定义2.

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

Java领域模型示例详解

《Java领域模型示例详解》本文介绍了Java领域模型(POJO/Entity/VO/DTO/BO)的定义、用途和区别,强调了它们在不同场景下的角色和使用场景,文章还通过一个流程示例展示了各模型如何协... 目录Java领域模型(POJO / Entity / VO/ DTO / BO)一、为什么需要领域模

深入理解Redis线程模型的原理及使用

《深入理解Redis线程模型的原理及使用》Redis的线程模型整体还是多线程的,只是后台执行指令的核心线程是单线程的,整个线程模型可以理解为还是以单线程为主,基于这种单线程为主的线程模型,不同客户端的... 目录1 Redis是单线程www.chinasem.cn还是多线程2 Redis如何保证指令原子性2.

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter