标准盒模型
盒模型
盒模型是css布局的基石,它规定了网页元素如何显示以及元素间相互关系。css定义所有的元素都可以拥有像盒子一样的外形和平面空间。即都包含内容区、补白(填充)、边框、边界(外边距)这就是盒模型。
![标准盒模型](https://img-blog.csdnimg.cn/20200712101221192.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTI3ODUwNA==,size_16,color_FFFFFF,t_70)
1、padding
padding用法: | |
---|
| 1:padding是在盒子里面,在盒子与内容之间。 |
| 2:padding的作用:控制子元素在父元素里面的位置关系。 |
| 3:padding会把盒子撑大。 |
| 4:如果想让盒子保持原有的大小:在宽高基础上减掉。( 如果一个元素是被内容撑开的,没有设置固定的宽高,padding直接撑开。不用减掉 ) |
| 5:如果给单一方向添加padding |
| padding-top/bottom/left/right |
| 6:padding的设置特点: |
| padding:30px; 四周 |
| padding:10px 30px; 上下 左右 |
| padding:10px 30px 50px 上 左右 下 |
| padding:10px 30px 50px 100px 上右下左 |
| 7:padding不会对背景图的位置造成影响。 |
2、margin
margin用法 (外边距、边界) | |
---|
| 1:margin在元素外围,不会撑大元素的大小 |
| 2:作用:控制元素与元素之间的间距。 |
| 3:给单一方向添加margin |
| margin-left/right/top/bottom |
| 4 :margin设置方法: |
| margin:30px; 四周 |
| margin:10px 30px; 上下 左右 |
| margin:10px 30px 50px 上 左右 下 |
| margin:10px 30px 50px 100px 上右下左 |
| |
| 5:margin:0 auto; |
| 让当前元素在父元素里面左右居中。 |
| 6:margin常出现的bug |
| a:两个相邻元素上下的margin值 不会叠加 按照较大值设置。 |
| b:如果父元素和第一个子元素没有浮动的情况下,给第一个子元素添加margin-top,会错误放在父元素上面。 |
3、盒子大小计算
![盒子大小计算](https://img-blog.csdnimg.cn/20200712101849188.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTI3ODUwNA==,size_16,color_FFFFFF,t_70)
4、小结
外边距: 改变元素外边的间距
内边距: 改变元素与内容的间距
padding:一个值; 一个值,改变四个方向
padding:上下 左右;
padding:上 左右 下;
padding:上 右 下 左;顺时针方向变化
padding-top:顶部内边距;
padding-right:右内边距;
padding-bottom:底部内边距;
padding-left:左内边距;
注意:内边距没有负值;
margin:四个方向;
margin:上下 左右;
margin:上 左右 下;
margin:上 右 下 左;
margin-top:上外边距;
marign-right:右外边距;
marign-bottom:下外边距;
marign-left:左外边距;
注意: margin可以为负值, auto自适应
margin常见bug:
1: 上下外边距相遇,只显示较大值
2: 嵌套关系的元素,子元素的上外边距和父元素的上外边距相遇,取较大值
盒模型占位计算:
w= width+左右边框+左右内边距+左右外边距
h= height+上下边框+上下内边距+上下外边距
版心是页面的内容显示区域
有具体宽度 width:;
左右居中 marign:auto;
ps切图方式:
矩形选框工具选中==> ctrl+c ==> ctrl+n ==> ctrl+v ==> ctrl+shift+alt+s存储
ps切图方式二:
切片工具==>选中区域==>ctrl+shift+alt+s进行保存
文本溢出
1、overflow
visible:默认值,内容不会被修剪,会呈现在元素框之外;
hidden:内容会被修剪,并且其余内容是不可见的;
scroll:内容会被修剪,但是浏览器会显示滚动条,以便查看其余的内容;
auto:如果内容被修剪,则浏览器会显示滚动条,以便查看其他的内容;
inherit:规定应该从父元素继承overflow属性的值。
2、white-space
normal:默认值,多余空白会被浏览器忽略只保留一个;
pre:空白会被浏览器保留;
pre-wrap:保留一部分空白符序列,但是正常的进行换行;
pre-line:合并空白符序列,但是保留换行符;
nowrap:文本不会换行,文本会在同一行上继续,直到遇到<br/>标签为止;
3、text-overflow
clip:不显示省略号(...),而是简单的裁切;
ellipsis:当对象内文本溢出时,显示省略标记;
4、文本溢出变省略号设置
text-overflow属性仅是:当文本溢出时是否显示省略标记,并不具备其它的样式属性定义,要实现溢出时产生省略号的效果还需定义:
1、容器宽度:width:value;(px、%,都可以)
2、强制文本在一行内显示:white-space:nowrap;
3、溢出内容为隐藏:overflow:hidden;
4、溢出文本显示省略号:
text-overflow:ellipsis;
注:必须是单行文本才能设置本文溢出!!
小结
overflow:文本溢出设置;
hidden 超出隐藏
scroll 超出时,滚动查看(未超出也会有滚动机制)
auto 超出时,滚动查看(自适应,未超出时不会有滚动机制)
inherit 继承父级的overflow设置
white-space:文本空白;
normal 默认值
pre 保留原格式,且不会被迫换行
pre-wrap 保留原格式,会被迫换行
pre-line 保留换行,不保留缩进和多个空格符
nowrap 强制不换行,但是干不掉br标签
text-overflow:文本省略号;
clip 裁剪
ellipsis 省略号
想要显示省略号四部曲:
1: 元素设置宽度,且内容足够
2: white-sapce:nowrap;强制不换行
3: overflow:hidden;超出隐藏
4: text-overflow:ellipsis;变成省略号
注意: 只针对单行文本有效