Appearance
CSS3教程 - 6 盒子模型2
继续盒子模型...
6.7 盒子大小
默认情况下,盒子可见框的大小由内容区、内边距和边框共同决定。
但是这个规则是可以修改的。
例如:
html
<style>
.box {
width: 100px;
height: 100px;
background-color: #bfa;
padding: 10px;
border: 10px solid red;
}
</style>
<body>
<div class="box"></div>
</body>
上面 box 的可见框尺寸为:内容区(100) + 内边距(10*2) + 边框(10*2) = 140px;
这里盒子尺寸的计算方式是可以使用 box-sizing 属性来修改的。
box-sizing 可选值:
content-box:默认值,宽度和高度用来设置内容区的大小。border-box:宽度和高度用来设置整个盒子可见框的大小。当 box-sizing 设置为 border-box 时width和height指的是内容区、内边距和边框的总大小。
css
.box {
width: 100px;
height: 100px;
background-color: #bfa;
padding: 10px;
border: 10px solid red;
box-sizing: border-box;
}当给 box 设置 box-sizing: border-box; 会明显发现元素尺寸变小了。因为内容区 + 内边距 + 边框 = 100px;

通过设置 box-sizing: border-box; 我们在调整 padding 或 border 的时候 ,就不会影响元素的整体大小了。
6.8 轮廓
outline 用来设置元素的轮廓线,用法和 border 一样。
轮廓和边框不同点是,轮廓不会影响到可见框的大小。
1 边框
举个栗子:
html
<style>
.box {
width: 100px;
height: 100px;
background-color: #bfa;
padding: 10px;
border: 10px solid red;
}
</style>
<body>
<div class="box"></div>
<span>Hello</span>
</body>通过 border 设置边框,显示如下:

2 轮廓
举个栗子:
css
.box {
width: 100px;
height: 100px;
background-color: #bfa;
padding: 10px;
outline: 10px solid red;
}通过 outline 设置轮廓,显示如下:

可以很明显看到 outline 与 border的区别, outline 没有影响 元素的尺寸和布局。
outline 一般有什么使用场景的?
我们一般会在将鼠标移入某个元素的时候,给元素添加一个边框,添加的边框还不影响元素的布局,这个时候 outline 就比 border 合适。
css
.box:hover {
outline: 10px red solid;
}
可以很清晰地看出,outline 属性并没有改变盒子的大小和布局。
6.9 阴影
box-shadow 属性用于在一个元素的框架周围添加阴影效果,阴影不会影响页面布局。
举个栗子:
html
<style>
.box {
width: 100px;
height: 100px;
background-color: #bfa;
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
}
</style>
<body>
<div class="box"></div>
</body>显示如下:

解释一下参数:
css
/*
第一个值:阴影的水平偏移量
第二个值:阴影的垂直偏移量
第三个值:阴影的模糊半径,如果不设置水平和垂直的偏移量,且不设置模糊半径,那么阴影是在元素的正下方,将看不见阴影
第四个值:阴影的颜色,一般会设置一个透明度,会显得更逼真。
*/
box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5);6.10 圆角
border-radius :属性使一个元素的角变成圆角。
举个栗子:
html
<style>
.box {
width: 100px;
height: 100px;
background-color: red;
/* 设置元素的圆角 */
border-radius: 20px;
}
</style>
<div class="box"></div>border-radius的值设置的是圆的半径大小。
显示如下:

1 使用多个值设置
设置 border-radius 的时候,可以使用两个值、三个值、和四个值来设置:
- 一个值:
设置 4 个角
- 四个值:
左上角右上角右下角左下角 - 三个值:
左上角右上角/左下角右下角 - 两个值:
左上角/右下角右上角/左下角
css
border-radius: 20px 30px;效果显示如下:

2 单独设置一个角
border-radius 还可以拆分成四个角,单独去设置,对应的属性如下:
border-top-left-radiusborder-top-right-radiusborder-bottom-left-radiusborder-bottom-right-radius
举个栗子:
css
border-top-left-radius: 20px;显示如下:

3 设置椭圆角
可以设置一个半径来做圆角,也可以设置两个半径来做椭圆角。圆角的半径原理如下图:

举个栗子:
css
border-top-left-radius: 20px 40px;
4 圆
我们可以将一个元素通过 border-radius 属性设置显示为圆形。
原理很简单,就是将一个正方形元素的四个角的圆角半径设置为正方形的一半。
css
.box {
width: 100px;
height: 100px;
background-color: red;
border-radius: 50%;
}
5 椭圆
上面设置成圆形是因为元素的长宽是一样的,如果元素的长和宽不同,则会变成椭圆形。
css
.box {
width: 200px;
height: 100px;
background-color: red;
border-radius: 50%;
}
6.11 透明度
在 CSS 中,透明度可以通过 opacity 属性来控制,透明度影响元素及其所有子元素,包括文本和背景。
透明度的值范围从 0 到 1,如果将一个元素的透明度设置为 0.5,那么该元素及其所有内容都会显示为半透明。
0表示完全透明,元素不可见;1表示完全不透明,元素完全可见;
举个栗子:
html
<!DOCTYPE html>
<html>
<head>
<style>
.box1 {
width: 200px;
height: 200px;
background-color: skyblue
}
.box2 {
opacity: 0.3; /* 设置透明度 */
width: 100px;
height: 100px;
background-color: white;
}
</style>
</head>
<body>
<div class="box1">
<div class="box2">
foooor
</div>
</div>
</body>
</html>- 上面设置父元素为蓝色背景,子元素为白色,并设置了透明度,所以可以透过子元素看到父元素。
显示如下:
