CSS盒模型布局规则

目录

一、水平布局:

二、垂直布局:

三、垂直外边距的重叠:

解决父子外边距重叠的问题

四、内联元素(行内元素)的盒子:

五、默认样式:

面试题:目前常用的重置样式表有哪些?他们的区别是什么

六、盒子的大小:


一、水平布局:

过度约束:浏览器的一种渲染机制,一种规则

元素水平方向七个值:margin-left border-left padding-left width padding-rigt border-right margin-right相加,必须等于其父元素内容区的宽度,如果不相等,浏览器就会强制调整7个值中某些值(margin、width),实现全等。

浏览器如何调整呢?

满足以下条件:

七个值中,有margin-left width margin-right可以被设置为auto

1、如果这七个值里面没有设置为auto的,那么浏览器默认margin-right为auto,增加margin-right值使这七个值相加等于父元素内容区宽度。

2、如果给width(默认就是子元素内容区宽度)设置auto,由于它的优先级最高,不管其它值有没有设置auto,都是给它调整大小。

3、如果单独给margin-left或margin-right设置auto,那么设谁auto就改谁,都设auto就平分,使盒子居中。


二、垂直布局:

一般情况下,我们是不给外层框架,设置固定高度,让其被内容撑开,随着子元素的变化而变化

如果设置了高度,内容就可能会溢出,可以用overflow样式设置

可选值:

visible 文本正常显示,不生成滚动条

hidden 裁剪多余

scroll 生成两侧滚动条

auto 根据实际内容大小自动生成滚动条

有滚动效果,但不希望有滚动槽: scrollbar-width: none;


现在我在div里面加了个p,给div设置了宽高和背景色,文字就溢出了,会影响下面的盒子,这时候可以使用overflow:hidden;来裁剪多余

css 复制代码
.box1 {
  width: 200px;
  height: 200px;
  background-color: #bfa;
  margin: 50px auto 0px;/*这里是上边距50px,左右自动使box1居中,底部为0 */
  overflow: hidden;/*hidden属性值就是裁剪多余*/
  /* 去除滚动槽 */
  /* scrollbar-width: none; */
}
p {
  /* width: 400px; */
  height: 400px;
}
 


三、垂直外边距的重叠:

兄弟元素:

兄的下外边距和弟的上外边距重叠在一起了

1、如果都是正值,以较大的为准

2、如果都是负值,以绝对值较大的为准

3、如果一正一负,两者相加

兄弟元素的外边距,一般不需要做额外处理

父子元素

如果父子元素的垂直外边距相邻了,则子元素的外边距会传递给父元素,导致父元素位置发生改变

解决父子外边距重叠的问题

1、overflow:非visble默认值即可,

因为它开启了BFC(块级格式化),是标签的隐藏属性,会使这个标签

成为一个独立的区块,不受其他标签样式影响

2、设置透明的边框线,隔开父子元素

3、定义一个单独的类名,哪里需要,在哪里添加这个类名

css 复制代码
.clearfix::before {
  /* 增加空内容 */
  content: "";
  /* 将空内容转换类型为空表格 */
  display: table;
}
 

四、内联元素(行内元素)的盒子:

内容区:不可以被设置大小,是被内容撑开

内边距/边框 :可以设置,而且垂直方向不会挤其他元素,让其他元素位置发生变化,只会覆盖其他元素

外边距:水平方向可以设置,水平方向的外边距会叠加(设右外边距会动,不同于块元素没反应)

垂直方向设置不生效


五、默认样式:

浏览器为了在页面中没有样式时,也可以有一个比较好的显示效果,所以为很多的元素都设置了一些默认的margin和padding,而它的这些默认样式,正常情况下我们是不需要使用的。

所以我们往往在编写样式之前需要将浏览器中的默认的margin和padding统统的去掉

html 复制代码
<head>
  <!-- 重置样式表 -->
  <link rel="stylesheet" href="./reset.css" />
  <!-- 自己的样式 -->
  <link rel="stylesheet" href="./index.css" />
</head>
 

注意:自己的样式要写在重置样式表下面,不然会被覆盖


面试题:目前常用的重置样式表有哪些?他们的区别是什么

reset.css/Normalize.css

都可以解决浏览器对默认样式的兼容性问题

reset.css解决方案是,将默认样式都去除掉,需要什么样式,程序员自己写

Normalize.css解决方案是:不去除默认样式,而是解决你不同浏览器对默认样式解析不一样的问题


六、盒子的大小:

默认情况下:盒子可见宽的大小由内容区,内边距,边框共同决定

box-sizing 用来设置盒子尺寸的计算方式 即width/height 指的是谁

可选值:

content-box 内容区 默认值

border-box 宽度和高度用来设置整个盒子可见框的大小,包括边框,padding,内容区

css 复制代码
.box {
  width: 100px;
  height: 100px;
  background-color: red;
  border: 10px solid yellowgreen;
  box-sizing: border-box;
  /* 设置border-box后,上面的width和height就是我整个盒子的大小,即内容区加边框等于100 10+80+10 */
}
 
相关推荐
qq_316837754 小时前
uni.chooseMedia 读取base64 或 二进制
开发语言·前端·javascript
Zoey的笔记本5 小时前
2026告别僵化工作流:支持自定义字段的看板工具选型与部署指南
大数据·前端·数据库
小二·5 小时前
Python Web 开发进阶实战:混沌工程初探 —— 主动注入故障,构建高韧性系统
开发语言·前端·python
gis开发5 小时前
【无标题】
java·前端·javascript
小二·5 小时前
Python Web 开发进阶实战:低代码平台集成 —— 可视化表单构建器 + 工作流引擎实战
前端·python·低代码
慧一居士5 小时前
Vite 中配置环境变量方法及完整示例
前端·vue.js
梦因you而美5 小时前
XPath 元素定位全方位技术文档
javascript·xpath·xpath定位
天意pt5 小时前
Idempotency 幂等性 - 点赞和投票功能
前端·javascript·express
weixin_427771616 小时前
cursor 智能commit
前端
努力的小陈^O^6 小时前
问题:Spring循环依赖问题排查与解决
java·开发语言·前端