CSS之盒子模型(深入理解)
CSS--盒子模型(Box Model)
简介:
CSS盒子模型本质上是一个盒子,对网页中绝大部分的HTML元素进行包装定位(外边距,边框,内边距以及实际内容)。
但是并不是所有的HTML元素都可以看作是盒子模型,例如图片(img)就不能看作是盒子模型,因为img中只能放图片,并不能添加其他的东西,所以它属于文字流。而盒子模型进行封装的元素大部分是文档流。
盒子模型中主要的区域:
盒子模型中主要包含元素的宽,高,外边距,边框,内边距以及实际内容。
- Width:主要区域的内容(content)的宽。
- Height:主要区域的内容(content)的宽。
- Margen:外边距。即整个元素和其他元素的距离。
- Border:元素的边框。
- Padding:内边距。即元素的边与内容的距离。
- Content:内容。也就是实际所看到的区域。
下面的图片说明了盒子模型的区域:
下图为代码演示:
#test{
width: 100px;
height: 100px;
background-color: yellowgreen;
margin: 10px;
padding: 10px;
border: 5px solid blue;
}
盒子模型属性详解:
margen/padding: 外边距/内边距
只写1个值 : 表示四周的外边距都是一个值。
写2个值: 第一个值表示上下,第二个值表示左右。
写3个值: 分别表示上,右,下的值,左边的值默认等于右边。
写4个值: 分别表示上,右,下,左的值。
auto: 放弃某个方向的主导权,交由它的对方向主导。
水平居中:margen:0 auto;
竖直居中:margen:auto 0;
全局居中:margen:auto;
boder :边框 (宽度,样式,颜色) 实线:solid 虚线: dashed 样式可以省略,但是原则上三个属性都要写,三个属性的顺序可以随意颠倒,没有先后要求。
注意:
1.盒子模型可以随意指定任意方向的相关属性值。
2.使用padding后会撑大div的可见区域,所以使用时应注意div的实际大小。
当父盒子包裹子盒子,给子盒子添加margen-top时,子盒子和夫盒子的上边线重合,导致两个盒子同时下来。
<div id="d1">
<div id="d2"></div>
</div> #d1{
width: 200px;
height: 200px;
background-color: yellowgreen;
}
#d2{
width: 100px;
height: 100px;
background-color: deepskyblue;
margin-top: 10px;
}
【解决办法】
1、给父容器添加一定的padding-top ,会给父容器添加不必要的padding区域,不推荐。
2、给父容器添加一定的上边框,会导致父容器产生不必要的边框,不推荐。
3、给父容器或者子容器添加float属性。不推荐。
4、给任何一个容器添加一个属性: overflow:hidden。推荐使用。
border的补充:
border-radius: :边框圆角。
1.共接收8个属性值,分别表示:左上,右上,右下,左下/左上,右上,右下,左下(X轴/Y轴)。
2.省略Y轴默认与X轴相等。如果4个角写不全,默认对角相等。
3.只写一个值,默认8个值均等。
4.div为正方形,当圆角弧度大于等于其宽度的一半,那么该div将显示为圆形。
代码如下:
#div1{
background-image: url(img/cat.jpg);
height: 200px;
width: 200px;
border: 5px solid #FF9E01;
border-radius: 1030px;
background-repeat: no-repeat;
background-size: 200px 200px;
margin: 10px 0px;
} #div2{
background-image: url(img/cat.jpg);
height: 200px;
width: 200px;
border: 5px solid #FF9E01;
border-radius: 60px 0px;
background-repeat: no-repeat;
background-size: 200px 200px;
}
效果图:
border-image: :
为元素边框添加背景图片
。
第一个属性:图片的url地址。
第二个属性:为切线的大小。(
写法:第一个值/第二个值
)
第一个值是切的图片宽度:上右下左,通过四条切线分为九宫格,四个角分别对应边框的四个角,四个角不会平铺拉伸。(不能带单位)
第二个值是边框的宽度:上右下左,边框的四条边框。可以自行设置平铺拉伸。(必须带单位)
第三个属性:四个角除外的图片属性。拉伸:stretch,铺满:round,平铺:repeat。
例如: border-image:{url(img/QQ图片20180312161643.png 27/27px repeat;}
例子:
#image{
width: 200px;
height: 200px;
/*background-color: #Fd9d07;*/ border-image: url(img/QQ图片20180312161643.png)
27/27px
repeat;
}
- 水平阴影距离,可正可负。右正左负。(必填)
- 垂直阴影距离,可正可负。下正上负。(必填)
- 阴影模糊半径,只能为整数,默认为0,数值越大,阴影越模糊。
- 阴影拓展半径,可正可负,默认为0,数值增大,阴影扩大,数值减小,阴影缩小。
- 阴影颜色,默认为黑色。
- 内外阴影,默认为外阴影,inset表示内阴影
例子:
#shadow{
width: 200px;
height: 200px;
background-color: #F1B15A;
box-shadow: 0px 0px 10px 0px red inset; }

下面来介绍CSS属性中比较重要的属性--浮动(float):
浮动--float
规律1:标准流模型中的块级盒子,默认宽度是100%;而浮动的块级盒子,宽度不会自动伸展,而是由内容(文字、padding)撑开。浮动后的行级元素会变成块级元素, 可以设置宽度高度等属性值。
规律2:当一个盒子浮动后,标准流中的其他未浮动盒子将视浮动盒子不存在而占据浮动盒子(浮动盒子的背景会覆盖掉与之大小相同区域的未浮动盒子的背景),但是未浮动盒子中的文字内容,将会受到浮动盒子宽度的影响(浮动盒子不能盖住未浮动盒子的文字内容),也就是浮动可以打破文档流,但是不能打破文字流。
规律3:可以使用clear属性使未浮动的盒子不受浮动盒子的影响。
解决子盒子浮动父盒子塌陷的问题:
1.给父盒子添加overflow:hidden属性。[常用]
2.让父盒子也浮动(前提是父盒子的宽度为100%)。
3.在父容器的最后添加一个高度为0的空div并且添加clear:both属性。
4.使用伪对象选择器::after生成一个空的元素
#div4::after{
display: block;
content: "";
height: 0px;
clear: both;}

手动改变盒子模型:
#div{
box-sizing: border-box;
}
定位---position:
1、使用position:relative。设置成相对定位。
2、使用top/right/bottom/left设置定位的位置。
3、定位机制:
1.相对定位是相对自己原来所属位置进行定位。
2.相对定位不会释放掉原来自己所属的位置,也不会影响其他元素。
3.如果left/right同时存在,left生效。top/bottom同时存在,top生效。
4、关于Z轴的重叠次序:
1.定位元素,默认的Z轴高于普通文档流和浮动元素。
2.同为定位元素,后来者居上。
3.可以使用z-index调整上下层关系(只能使用在定位元素)

[绝对定位]:
1、使用position:absolute。设置成绝对定位。
2、定位机制:
1.相对与第一个有定位的父元素进行定位。(第一个使用定位)
2.如果元素没有已定位的祖先元素,那么它的位置相对于浏览器左上角定位。
3、绝对定位文档流会彻底删除,原空间被释放。

[固定定位]:
[Z-index]
1. 使用z-index可以调整层叠顺序。数值越大,层叠越往上;z-index数值相等,后来者居上。
2. z-index只能作用于定位元素。
3. 元素的z-index属性要考虑父容器的z-index约束。
4. z-index:0与z-index:auto区别:
z-index:auto和z-index:0处于同一层,且z-index:auto是默认值。
z-index:auto不约束子元素;z-index:0约束子元素。
left: 50%;
top: 50%;
margin-left: -(width/2)px;
margin-top: -(height/2)px;

CSS之盒子模型(深入理解)的更多相关文章
- 深入理解CSS系列(一):理解CSS的盒子模型
接触前端也有好几个年头了,但是,讲实话,对于CSS的理解真的是不敢恭维,相信很多同行也有类似的感受吧!这是为什么呢?因为我们都认为CSS太简单了,没有必要深入学习,果真如此?其实,只不过是自己图样图森 ...
- 深入了解CSS中盒子模型
CSS中盒子模型介绍 什么是盒子? 盒子是用来存储物品,我们可以将盒子理解为酒盒,酒盒有什么组成的呢? 有酒可以喝.有填充物保护酒防止酒被摔坏.纸盒子. 我们怎么理解CSS中的盒子呢,CSS中盒子有什 ...
- 这些HTML、CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML、CSS、盒子模型、内容布局)
这些HTML.CSS知识点,面试和平时开发都需要 No1-No4 系列知识点汇总 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) ...
- 使用css弹性盒子模型
提示: 当期内容不充实, 修改后再来看吧 以下称:弹性子元素: 子元素, 弹性容器: 容器 弹性盒子的属性 1. css弹性盒子模型规定了弹性元素如何在弹性容器内展示 2. 弹性元素默认显示在弹性容器 ...
- #CSS的盒子模型、元素类型
CSS的盒子模型.元素类型 本文首先介绍了CSS元素的统一内部结构模型,盒子模型:然后介绍了CSS元素基于不同分类标准定义的元素类型,包括基于不同内容设置方式定义的replaced元素和non-r ...
- CSS 弹性盒子模型
CSS 弹性盒子模型 https://www.w3.org/TR/2016/CR-css-flexbox-1-20160526/ CSS Flexible Box Layout Module Leve ...
- CSS盒子模型的理解
标准的CSS盒子模型包括:内容(content).填充(padding).边框(border).边界(margin) 这些属性,可以把它转移到我们日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子 ...
- css 大话盒子模型
什么是盒子模型? CSS中, Box Model叫盒子模型(或框模型),Box Model规定了元素框处理元素内容(element content).内边距(padding).边框(border) 和 ...
- CSS样式----盒子模型(图文详解)
盒子模型 盒子中的区域 一个盒子中主要的属性就5个:width.height.padding.border.margin.如下: width:内容的宽度.CSS中 width 指的是内容的宽度,而不是 ...
随机推荐
- Activiti 中的ACT_RU_TASK表中的EXECUTION_ID和PROC_INST_ID区别
当你的流程图为单向的时候则EXECUTION_ID和PROC_INST_ID是一样的 这种的流程图的话是一样的 这种的话就到支流是不一样的由于在节点处进行了分支,导致这个有三个方案.导致里面的分支分离 ...
- 浏览器输入URL到响应页面的全过程
B/S网络架构从前端到后端都得到了简化,都基于统一的应用层协议HTTP来交互数据,HTTP协议采用无状态的短链接的通信方式,通常情况下,一次请求就完成了一次数据交互,通常也对应一个业务逻辑,然后这次通 ...
- Jar程序使用MyBatis集成阿里巴巴druid连接池
在写jar程序,而不是web程序的时候,使用mybatis作为持久层,可以集成POOLED连接池,而阿里的druid不能用,确实很郁闷.不过有办法. 首先准备好数据库配置文件 然后对Druid进行一个 ...
- 在SpringBoot中使用FluentValidator验证插件
前言 在我们编写项目的时候,在controller中往往离不开对一些数据的校验.这里并不是说对于这些数据业务上面的校验,而是对这些数据进行空校验或者是长度校验等. 有些时候校验可以省略,根据业务的需要 ...
- Redis笔记2-发布订阅
发布/订阅"(publish/subscribe)模式可以实现进程间通信,订阅者可以订阅一个或多个频道(channel),而发布者可以向指定的频道发送消息,所有订阅次频道的订阅者都会收到次消 ...
- ACL访问控制列表
acl是基于文件系统的,所以支不支持acl在于使用什么文件系统. FAT32文件系统不支持权限,也不区分大小写 如果一个分区不是安装系统时分的分区,是一个新的分区的话,默认是不支持acl CentOS ...
- C#访问修饰符(public,private,protected,internal,sealed,abstract)
为了控件C#中的对象的访问权限,定义对象时可以在前面添加修饰符. 修饰符有五种:private(私有的),protected(受保护的),internal(程序集内部的),public(公开的),以及 ...
- 第4章 PCIe总线概述
随着现代处理器技术的发展,在互连领域中,使用高速差分总线替代并行总线是大势所趋.与单端并行信号相比,高速差分信号可以使用更高的时钟频率,从而使用更少的信号线,完成之前需要许多单端并行数据信号才能达到的 ...
- java常用字节流
常用的字节流有FileInputStream和FileOutputStream.BufferedInputStream和BufferedOutputStream.DataInputStream和Dat ...
- java发送邮件时遇到的坑
之前用163邮箱发邮件时明明是成功的,但是使用中国移动自己的邮箱时,无论如何在linux服务器中都发送不成功,一开始报如下错误: javax.mail.MessagingException: Unkn ...