知识导航:
- 盒子边框
- 盒子内边距
- 盒子外边距
- 涉及部分c3内容
网页的本质就是利用css设置盒子的大小,摆放盒子的位置。最后把内容图片、文字等放入其中。
标准的盒子模型:
1. 盒子边框
基本语法:
border : border-width || border-style || border-color
属性 | 作用 |
---|---|
border-width | 定义边框粗细,单位是px |
border-style | 边框的样式 |
border-color | 边框颜色 |
解释:
边框的样式属性:
- none:无边框,即忽略边框的宽度
- solid:边框为单实线
- dashed:边框为虚线
- dotted:边框为点线
边框的综合设置
语法:
例如:
border: 1px solid red; 没有顺序
盒子边框写法总结
很多情况,对四条边框我们不需要全部进行设置。
上边框 | 下边框 | 左边框 | 右边框 |
---|---|---|---|
border-top-style:样式; | border-bottom-style:样式; | border-left-style:样式; | border-right-style:样式; |
border-top-width:宽度; | border- bottom-width:宽度; | border-left-width:宽度; | border-right-width:宽度; |
border-top-color:颜色; | border- bottom-color:颜色; | border-left-color:颜色; | border-right-color:颜色; |
border-top:宽度 样式 颜色; | border-bottom:宽度 样式 颜色; | border-left:宽度 样式 颜色; | border-right:宽度 样式 颜色; |
表格的细线边框
当我们为表格设置边框的时候,将单元格之间的距离设置为0 。便出现了下面的情况
容易看出内部的线是要比外部的深。出现这种情况的原因是两个单元格之间的边框出现了重叠。
解决方法:
通过css属性:table{ border-collapse:collapse; }
2. 内边距
对应属性:
属性 | 作用 |
---|---|
padding-left | 左内边距 |
padding-right | 右内边距 |
padding-top | 上内边距 |
padding-bottom | 下内边距 |
综合写法(根据属性值个数的不同有):
值的个数 | 表达意思 |
---|---|
1个值 | padding:上下左右内边距; |
2个值 | padding: 上下内边距 左右内边距 ; |
3个值 | padding:上内边距 左右内边距 下内边距; |
4个值 | padding: 上内边距 右内边距 下内边距 左内边距 ;(顺时针) |
当我们设置了padding之后会发生两件事。
- 内容与边框之间出现了距离
- 盒子被撑大了
盒子是实际大小=内容的宽高+padding+边框
内边距产生的原因
我们在css中为盒子设置的宽高其实只是内容的。当我们增加padding时。盒子自然就被撑大了
解决方法:给设置了宽高的盒子-设置的相应padding值。维持盒子本身的大小
padding不影响盒子大小的情况
看下面这段代码
<style>
div {
width: 100px;
height: 100px;
background-color: red;
border: 1px solid red;
}
p {
padding: 0px 10px;
height: 100px;
background-color: yellow;
}
</style>
<div>
<p></p>
</div>
p是块级元素,它的宽充满整个父级。即为100px,但我又为它设置了左右padding。它的宽度应为120px才对。
但是我们查看效果图:
发现仍是100 。只是内容被压缩了。这是什么情况呢?
原来:如果没有给一个盒子指定宽度, 此时,如果给这个盒子指定padding, 则不会撑开盒子。
3. 外边距
即为盒子与盒子之间的距离。
对应属性:(与padding相同)
属性 | 作用 |
---|---|
margin-left | 左外边距 |
margin-right | 右外边距 |
margin-top | 上外边距 |
margin-bottom | 下外边距 |
使块级元素水平居中
只需给这个盒子两个要求:
- 盒子必须指定了宽度
- 把它的左右外边距设为auto
常见的三种写法:
- margin-left: auto; margin-right: auto;
- margin: auto;
- margin: 0 auto;
值得注意的是:
- 为了更灵活方便地控制网页中的元素,制作网页时,我们需要将元素的默认内外边距清除
* {
padding:0;
margin:0;
}
- 行内元素为了照顾兼容性, 尽量只设置左右内外边距, 不要设置上下内外边距。
外边距合并问题(外边距塌陷)
使用margin定义块元素的垂直外边距时,可能会出现外边距的合并
当上下相邻的两个块元素相遇时,如果上面的元素有下外边距margin-bottom,下面的元素有上外边距margin-top,则他们之间的垂直间距不是margin-bottom与margin-top之和。而是两者最大的那个。
解决方法:设置一个的magin就行啦,非得设置两个?
嵌套块元素垂直外边距的合并(塌陷)问题
对于两个嵌套关系的块元素,如果父元素没有上内边距及边框,父元素的上magin会与子元素的上magin发生合并。
解决方案:
- 可以为父元素定义上边框。
- 可以为父元素定义上padding
- 可以为父元素添加overflow:hidden。
当然还有其他方法了
4. 涉及到的c3
圆角边框
语法:
比如让正方形成一个圆
即让它的radius为高宽的一半就可以了,可以写具体像素。也可以简单如下:
border-radius: 50%;
但是要实现这种效果:
只需把radius设为矩形高度的一半就行了。
盒子阴影
语法:
box-shadow:
水平阴影(影子在水平方向上移动,单位px)
垂直阴影(在竖直方向移动,px)
模糊距离(虚实,单位px) 阴影尺寸(影子大小,单位px)
阴影颜色
内/外阴影(外阴影省略即可默认的但不可写,内可以写inset)一般均省略因为都是外阴影又不用写;
举个例子
div {
width: 200px;
height: 200px;
border: 10px solid red;
box-shadow: 5px 5px 3px 4px rgba(0, 0, 0, .4);