add: clip-path 属性
This commit is contained in:
parent
1a7cd4cf80
commit
5414be9d2d
@ -6,7 +6,8 @@
|
||||
|
||||
## background 的常见背景属性
|
||||
|
||||
CSS样式中,常见的背景属性有以下几种:(经常用到,要记住)
|
||||
|
||||
**css2.1** 中,常见的背景属性有以下几种:(经常用到,要记住)
|
||||
|
||||
- `background-color:#ff99ff;` 设置元素的背景颜色。
|
||||
|
||||
@ -24,6 +25,16 @@ CSS样式中,常见的背景属性有以下几种:(经常用到,要记
|
||||
|
||||
- 另外还有一个综合属性叫做`background`,它的作用是:将上面的多个属性写在一个声明中。
|
||||
|
||||
**CSS3** 中,新增了一些background属性:
|
||||
|
||||
- background-origin
|
||||
|
||||
- background-clip 背景裁切
|
||||
|
||||
- background-size 调整尺寸
|
||||
|
||||
- 多重背景
|
||||
|
||||
上面这几个属性经常用到,需要记住。现在我们逐个进行讲解。
|
||||
|
||||
## background-color:背景颜色的表示方法
|
||||
@ -222,7 +233,6 @@ PS:padding的区域也是有背景图的。
|
||||
|
||||
![](http://img.smyhvae.com/2015-10-03-css-22.png)
|
||||
|
||||
|
||||
## `background-position`属性
|
||||
|
||||
`background-position`属性指的是**背景定位**属性。公式如下:
|
||||
@ -352,7 +362,520 @@ background属性和border一样,是一个综合属性,可以将多个属性
|
||||
|
||||
![](http://img.smyhvae.com/20170813_1515.png)
|
||||
|
||||
PS:以后的CSS3内容中,我们会接触到更多的background属性: background-origin、background-clip、background-size(在CSS2.1背景图片是不能调整尺寸,IE9开始兼容)、多背景。
|
||||
## `background-size`属性:背景尺寸
|
||||
|
||||
`background-size`属性:设置背景图片的尺寸。
|
||||
|
||||
格式举例:
|
||||
|
||||
```javascript
|
||||
/* 宽、高的具体数值 */
|
||||
background-size: 500px 500px;
|
||||
|
||||
/* 宽高的百分比(相对于容器的大小) */
|
||||
background-size: 50% 50%; // 如果两个属性值相同,可以简写成:background-size: 50%;
|
||||
|
||||
background-size: 100% auto; //这个属性可以自己试验一下。
|
||||
|
||||
/* cover:图片始终填充满容器,且保证长宽比不变。图片如果有超出部分,则超出部分会被隐藏。 */
|
||||
background-size: cover;
|
||||
|
||||
/* contain:将图片完整地显示在容器中,且保证长宽比不变。可能会导致容器的部分区域为空白。 */
|
||||
background-size: contain;
|
||||
```
|
||||
|
||||
这里我们对属性值 `cover` 和 `contain` 进行再次强调:
|
||||
|
||||
- `cover`:图片始终**填充满**容器,且保证**长宽比不变**。图片如果有超出部分,则超出部分会被隐藏。
|
||||
|
||||
- `contain`:将图片**完整地**显示在容器中,且保证**长宽比不变**。可能会导致容器的部分区域留白。
|
||||
|
||||
代码举例:(这张图片本身的尺寸是 1080 * 1350)
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
<style>
|
||||
.img_wrap {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.img {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
border:1px solid red;
|
||||
background: url(http://img.smyhvae.com/20191006_1330.jpg) no-repeat;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.div1 {
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
.div2 {
|
||||
background-size: cover;
|
||||
}
|
||||
.div3{
|
||||
background-size: contain;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<section class="img_wrap">
|
||||
<div class="img div1"></div>
|
||||
<div class="img div2"></div>
|
||||
<div class="img div3"></div>
|
||||
|
||||
</section>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
```
|
||||
|
||||
效果如下:
|
||||
|
||||
![](http://img.smyhvae.com/20191006_1350.png)
|
||||
|
||||
## 背景原点:`background-origin` 属性
|
||||
|
||||
`background-origin` 属性:控制背景从什么地方开始显示。
|
||||
|
||||
格式举例:
|
||||
|
||||
```javascript
|
||||
|
||||
/* 从 padding-box 内边距开始显示背景图 */
|
||||
background-origin: padding-box; //默认值
|
||||
|
||||
/* 从 border-box 边框开始显示背景图 */
|
||||
background-origin: border-box;
|
||||
|
||||
/* 从 content-box 内容区域开始显示背景图 */
|
||||
background-origin: content-box;
|
||||
|
||||
```
|
||||
|
||||
如果属性值设置成了`border-box`,那边框部分也会显示图片哦。
|
||||
|
||||
如下图所示:
|
||||
|
||||
![](http://img.smyhvae.com/20180207_2115.png)
|
||||
|
||||
## `background-clip`属性:设置元素的背景(背景图片或颜色)是否延伸到边框下面
|
||||
|
||||
格式举例:
|
||||
|
||||
`background-clip: content-box;` 超出的部分,将裁剪掉。属性值可以是:
|
||||
|
||||
- `border-box` 超出 border-box 的部分,将裁剪掉
|
||||
|
||||
- `padding-box` 超出 padding-box 的部分,将裁剪掉
|
||||
|
||||
- `content-box` 超出 content-box 的部分,将裁剪掉
|
||||
|
||||
假设现在有这样的属性设置:
|
||||
|
||||
```javascript
|
||||
background-origin: border-box;
|
||||
|
||||
background-clip: content-box;
|
||||
```
|
||||
|
||||
上方代码的意思是,背景图片从**边框部分**开始加载,但是呢,超出**内容区域**的部分将被裁减掉。
|
||||
|
||||
## 同时设置多个背景
|
||||
|
||||
我们可以给一个盒子同时设置多个背景,用以逗号隔开即可。可用于自适应局。
|
||||
|
||||
代码举例:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head lang="en">
|
||||
<meta charset="UTF-8">
|
||||
<title></title>
|
||||
<style>
|
||||
.box {
|
||||
height: 416px;
|
||||
border: 1px solid #000;
|
||||
margin: 100px auto;
|
||||
/* 给盒子加多个背景,按照背景语法格式书写,多个背景使用逗号隔开 */
|
||||
background: url(images/bg1.png) no-repeat left top,
|
||||
url(images/bg2.png) no-repeat right top,
|
||||
url(images/bg3.png) no-repeat right bottom,
|
||||
url(images/bg4.png) no-repeat left bottom,
|
||||
url(images/bg5.png) no-repeat center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="box"></div>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
实现效果如下:
|
||||
|
||||
![](http://img.smyhvae.com/20180207_2140.gif)
|
||||
|
||||
上方代码中,我们其实给盒子设置了五张小图,拼成的一张大图。当改变浏览器窗口大小时,可以自适应布局。
|
||||
|
||||
## 渐变:background-image
|
||||
|
||||
渐变是CSS3当中比较丰富多彩的一个特性,通过渐变我们可以实现许多炫丽的效果,有效的减少图片的使用数量,并且具有很强的适应性和可扩展性。
|
||||
|
||||
渐变分为:
|
||||
|
||||
- 线性渐变:沿着某条直线朝一个方向产生渐变效果。
|
||||
|
||||
- 径向渐变:从一个**中心点**开始沿着**四周**产生渐变效果。
|
||||
|
||||
- 重复渐变。
|
||||
|
||||
见下图:
|
||||
|
||||
![](http://img.smyhvae.com/20180208_1140.png)
|
||||
|
||||
### 线性渐变
|
||||
|
||||
格式:
|
||||
|
||||
```javascript
|
||||
|
||||
background-image: linear-gradient(方向, 起始颜色, 终止颜色);
|
||||
|
||||
background-image: linear-gradient(to right, yellow, green);
|
||||
```
|
||||
|
||||
参数解释:
|
||||
|
||||
- 方向可以是:`to left`、`to right`、`to top`、`to bottom`、角度`30deg`(指的是顺时针方向30°)。
|
||||
|
||||
格式举例:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head lang="en">
|
||||
<meta charset="UTF-8">
|
||||
<title></title>
|
||||
<style>
|
||||
div {
|
||||
width: 500px;
|
||||
height: 100px;
|
||||
margin: 10px auto;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
|
||||
/* 语法:
|
||||
linear-gradient(方向,起始颜色,终止颜色);
|
||||
方向:to left to right to top to bottom 角度 30deg
|
||||
起始颜色
|
||||
终止颜色
|
||||
*/
|
||||
div:nth-child(1) {
|
||||
background-image: linear-gradient(to right, yellow, green);
|
||||
}
|
||||
|
||||
/* 不写方向,表示默认的方向是:从上往下 */
|
||||
div:nth-child(2) {
|
||||
background-image: linear-gradient(yellow, green);
|
||||
}
|
||||
|
||||
/* 方向可以指定角度 */
|
||||
div:nth-child(3) {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-image: linear-gradient(135deg, yellow, green);
|
||||
}
|
||||
|
||||
/* 0%的位置开始出现黄色,40%的位置开始出现红色的过度。70%的位置开始出现绿色的过度,100%的位置开始出现蓝色 */
|
||||
div:nth-child(4) {
|
||||
background-image: linear-gradient(to right,
|
||||
yellow 0%,
|
||||
red 40%,
|
||||
green 70%,
|
||||
blue 100%);
|
||||
|
||||
}
|
||||
|
||||
/* 颜色之间,出现突变 */
|
||||
div:nth-child(5) {
|
||||
background-image: linear-gradient(45deg,
|
||||
yellow 0%,
|
||||
yellow 25%,
|
||||
blue 25%,
|
||||
blue 50%,
|
||||
red 50%,
|
||||
red 75%,
|
||||
green 75%,
|
||||
green 100%
|
||||
);
|
||||
}
|
||||
|
||||
div:nth-child(6) {
|
||||
background-image: linear-gradient(to right,
|
||||
#000 0%,
|
||||
#000 25%,
|
||||
#fff 25%,
|
||||
#fff 50%,
|
||||
#000 50%,
|
||||
#000 75%,
|
||||
#fff 75%,
|
||||
#fff 100%
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
效果如下:
|
||||
|
||||
![](http://img.smyhvae.com/20180207_2222.png)
|
||||
|
||||
**举例**:按钮
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>CSS3 渐变</title>
|
||||
<style>
|
||||
html, body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #f8fcd4;
|
||||
}
|
||||
|
||||
.nav {
|
||||
width: 800px;
|
||||
text-align: center;
|
||||
padding-top: 50px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
/*设置按钮基本样式*/
|
||||
.nav a {
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
height: 30px;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
border: 1px solid #e59500;
|
||||
background-color: #FFB700;
|
||||
background-image: linear-gradient(
|
||||
to bottom,
|
||||
#FFB700 0%,
|
||||
#FF8C00 100%
|
||||
);
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<a href="javascript:;">导航1</a>
|
||||
<a href="javascript:;">导航2</a>
|
||||
<a href="javascript:;">导航3</a>
|
||||
<a href="javascript:;">导航4</a>
|
||||
<a href="javascript:;">导航5</a>
|
||||
<a href="javascript:;">导航6</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
效果:
|
||||
|
||||
![](http://img.smyhvae.com/20180207_2301.png)
|
||||
|
||||
### 径向渐变
|
||||
|
||||
格式:
|
||||
|
||||
```
|
||||
background-image: radial-gradient(辐射的半径大小, 中心的位置, 起始颜色, 终止颜色);
|
||||
|
||||
background-image: radial-gradient(100px at center,yellow ,green);
|
||||
|
||||
```
|
||||
|
||||
解释:围绕中心点做渐变,半径是150px,从黄色到绿色做渐变。
|
||||
|
||||
中心点的位置可以是:at left right center bottom top。如果以像素为单位,则中心点参照的是盒子的左上角。
|
||||
|
||||
当然,还有其他的各种参数。格式举例:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head lang="en">
|
||||
<meta charset="UTF-8">
|
||||
<title></title>
|
||||
<style>
|
||||
div {
|
||||
width: 250px;
|
||||
height: 250px;
|
||||
border: 1px solid #000;
|
||||
margin: 20px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
/*
|
||||
径向渐变:
|
||||
radial-gradient(辐射的半径大小, 中心的位置,起始颜色,终止颜色);
|
||||
中心点位置:at left right center bottom top
|
||||
*/
|
||||
|
||||
/*辐射半径为100px,中心点在中间*/
|
||||
div:nth-child(1) {
|
||||
background-image: radial-gradient(100px at center, yellow, green);
|
||||
}
|
||||
|
||||
/*中心点在左上角*/
|
||||
div:nth-child(3) {
|
||||
background-image: radial-gradient(at left top, yellow, green);
|
||||
}
|
||||
|
||||
div:nth-child(2) {
|
||||
background-image: radial-gradient(at 50px 50px, yellow, green);
|
||||
}
|
||||
|
||||
/*设置不同的颜色渐变*/
|
||||
div:nth-child(4) {
|
||||
background-image: radial-gradient(100px at center,
|
||||
yellow 0%,
|
||||
green 30%,
|
||||
blue 60%,
|
||||
red 100%);
|
||||
}
|
||||
|
||||
/*如果辐射半径的宽高不同,那就是椭圆*/
|
||||
div:nth-child(5) {
|
||||
background-image: radial-gradient(100px 50px at center, yellow, green);
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="box"></div>
|
||||
<div class="box"></div>
|
||||
<div class="box"></div>
|
||||
<div class="box"></div>
|
||||
<div class="box"></div>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
效果如下:
|
||||
|
||||
![](http://img.smyhvae.com/20180207_2256.png)
|
||||
|
||||
**举例:**利用径向渐变和边框圆角的属性,生成按钮。代码如下:
|
||||
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>CSS3 渐变</title>
|
||||
<style>
|
||||
|
||||
div:nth-child(1) {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
margin: 40px auto;
|
||||
border-radius: 100px;
|
||||
background-color: yellowgreen;
|
||||
}
|
||||
|
||||
div:nth-child(2) {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
margin: 40px auto;
|
||||
border-radius: 100px;
|
||||
background-color: yellowgreen;
|
||||
background-image: radial-gradient(
|
||||
200px at 100px 100px,
|
||||
rgba(0, 0, 0, 0),
|
||||
rgba(0, 0, 0, 0.5)
|
||||
);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div></div>
|
||||
<div></div>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
效果如下:
|
||||
|
||||
![](http://img.smyhvae.com/20180208_1133.png)
|
||||
|
||||
上图中,给第二个div设置的透明度是从0到0.5。如果设置的透明度是从0到0,则样式无变化,和第一个div一样。如果设置的透明度是从1到1,则盒子是全黑的。
|
||||
|
||||
## clip-path:裁剪出元素的部分区域做展示
|
||||
|
||||
`clip-path`属性可以创建一个只有元素的部分区域可以显示的剪切区域。区域内的部分显示,区域外的隐藏。
|
||||
|
||||
虽然`clip-path`不是背景属性,但往往会结合背景属性一起使用,达到一些效果。
|
||||
|
||||
举例:(鼠标悬停时,放大裁剪的区域)
|
||||
|
||||
```css
|
||||
.div1 {
|
||||
width: 320px;
|
||||
height: 320px;
|
||||
border: 1px solid red;
|
||||
background: url(http://img.smyhvae.com/20191006_1410.png) no-repeat;
|
||||
background-size: cover;
|
||||
|
||||
/* 裁剪出圆形区域 */
|
||||
clip-path: circle(50px at 100px 100px);
|
||||
transition: clip-path .4s;
|
||||
}
|
||||
.div1:hover{
|
||||
/* 鼠标悬停时,裁剪出更大的圆形 */
|
||||
clip-path: circle(80px at 100px 100px);
|
||||
}
|
||||
```
|
||||
|
||||
`clip-path`属性的好处是,即使做了任何裁剪,**容器的占位大小是不变的**。比如上方代码中,容器的占位大小一直都是 320px * 320px。这样的话,也方便我们做一些动画效果。
|
||||
|
||||
`clip-path: polygon()`举例:
|
||||
|
||||
![](http://img.smyhvae.com/20191006_1430.png)
|
||||
|
||||
另外,还可以引入 svg 图形,这里就不详细展开了。
|
||||
|
||||
## 我的公众号
|
||||
|
||||
|
@ -171,7 +171,7 @@ CSS3 对盒模型做出了新的定义,即允许开发人员**指定盒子宽
|
||||
|
||||
单个属性的写法:
|
||||
|
||||
```
|
||||
```css
|
||||
border-top-left-radius: 60px 120px; //参数解释:水平半径 垂直半径
|
||||
|
||||
border-top-right-radius: 60px 120px;
|
||||
@ -358,443 +358,6 @@ CSS3 对盒模型做出了新的定义,即允许开发人员**指定盒子宽
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## 背景属性
|
||||
|
||||
背景属性在 CSS3 中也得到很大程度的增强,比如背景图片尺寸、背景裁切区域、背景定位参照点、多重背景等。
|
||||
|
||||
### 背景尺寸:`background-size`属性
|
||||
|
||||
`background-size`属性:设置背景图片的尺寸。
|
||||
|
||||
格式举例:
|
||||
|
||||
```javascript
|
||||
/* 宽、高的具体数值 */
|
||||
background-size: 500px 500px;
|
||||
|
||||
/* 宽高的百分比 */
|
||||
background-size: 50% 50%; // 如果两个属性值相同,可以简写成:background-size: 50%;
|
||||
|
||||
background-size: 100% auto; //这个属性可以自己试验一下。
|
||||
|
||||
/* cover:会自动调整缩放比例,保证图片始终填充满背景区域,如有溢出部分则会被隐藏。 */
|
||||
background-size: cover;
|
||||
|
||||
/* contain:会自动调整缩放比例,保证图片始终完整显示在背景区域。 */
|
||||
background-size: contain;
|
||||
```
|
||||
|
||||
这里我们对属性值 `cover` 和 `contain`进行再次强调:
|
||||
|
||||
- `cover`:会自动调整缩放比例,保证图片始终**填充满**背景区域,如有**溢出部分**则会被隐藏。也就是说,保证背景图片完全覆盖盒子,但不能保证完整显示。
|
||||
|
||||
- `contain`:会自动调整缩放比例,保证图片始终**完整显示**在背景区域。也就是说,保证背景图片最大化地在盒子里,**等比例**显示,但不保证能铺满盒子。
|
||||
|
||||
|
||||
### 背景原点:`background-origin` 属性
|
||||
|
||||
`background-origin` 属性:控制背景从什么地方开始显示。
|
||||
|
||||
格式举例:
|
||||
|
||||
```javascript
|
||||
|
||||
/* 从 padding-box 内边距开始显示背景图 */
|
||||
background-origin: padding-box; //默认值
|
||||
|
||||
/* 从 border-box 边框开始显示背景图 */
|
||||
background-origin: border-box;
|
||||
|
||||
/* 从 content-box 内容区域开始显示背景图 */
|
||||
background-origin: content-box;
|
||||
|
||||
```
|
||||
|
||||
如果属性值设置成了`border-box`,那边框部分也会显示图片哦。
|
||||
|
||||
如下图所示:
|
||||
|
||||
![](http://img.smyhvae.com/20180207_2115.png)
|
||||
|
||||
### 背景裁剪:`background-clip`属性
|
||||
|
||||
格式举例:
|
||||
|
||||
`background-clip: content-box;` 超出的部分,将裁剪掉。属性值可以是:
|
||||
|
||||
- `border-box` 超出 border-box 的部分,将裁剪掉
|
||||
|
||||
- `padding-box` 超出 padding-box 的部分,将裁剪掉
|
||||
|
||||
- `content-box` 超出 content-box 的部分,将裁剪掉
|
||||
|
||||
假设现在有这样的属性设置:
|
||||
|
||||
|
||||
```javascript
|
||||
background-origin: border-box;
|
||||
|
||||
background-clip: content-box;
|
||||
```
|
||||
|
||||
上方代码的意思是,背景图片从**边框部分**开始加载,但是呢,超出**内容区域**的部分将被裁减掉。
|
||||
|
||||
### 同时设置多个背景
|
||||
|
||||
我们可以给一个盒子同时设置多个背景,用以逗号隔开即可。可用于自适应局。
|
||||
|
||||
代码举例:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head lang="en">
|
||||
<meta charset="UTF-8">
|
||||
<title></title>
|
||||
<style>
|
||||
.box {
|
||||
height: 416px;
|
||||
border: 1px solid #000;
|
||||
margin: 100px auto;
|
||||
/* 给盒子加多个背景,按照背景语法格式书写,多个背景使用逗号隔开 */
|
||||
background: url(images/bg1.png) no-repeat left top,
|
||||
url(images/bg2.png) no-repeat right top,
|
||||
url(images/bg3.png) no-repeat right bottom,
|
||||
url(images/bg4.png) no-repeat left bottom,
|
||||
url(images/bg5.png) no-repeat center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="box"></div>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
实现效果如下:
|
||||
|
||||
![](http://img.smyhvae.com/20180207_2140.gif)
|
||||
|
||||
上方代码中,我们其实给盒子设置了五张小图,拼成的一张大图。当改变浏览器窗口大小时,可以自适应布局。
|
||||
|
||||
## 渐变:background-image
|
||||
|
||||
渐变是CSS3当中比较丰富多彩的一个特性,通过渐变我们可以实现许多炫丽的效果,有效的减少图片的使用数量,并且具有很强的适应性和可扩展性。
|
||||
|
||||
渐变分为:
|
||||
|
||||
- 线性渐变:沿着某条直线朝一个方向产生渐变效果。
|
||||
|
||||
- 径向渐变:从一个**中心点**开始沿着**四周**产生渐变效果。
|
||||
|
||||
- 重复渐变。
|
||||
|
||||
见下图:
|
||||
|
||||
![](http://img.smyhvae.com/20180208_1140.png)
|
||||
|
||||
### 线性渐变
|
||||
|
||||
格式:
|
||||
|
||||
```javascript
|
||||
|
||||
background-image: linear-gradient(方向, 起始颜色, 终止颜色);
|
||||
|
||||
background-image: linear-gradient(to right, yellow, green);
|
||||
```
|
||||
|
||||
参数解释:
|
||||
|
||||
- 方向可以是:`to left`、`to right`、`to top`、`to bottom`、角度`30deg`(指的是顺时针方向30°)。
|
||||
|
||||
格式举例:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head lang="en">
|
||||
<meta charset="UTF-8">
|
||||
<title></title>
|
||||
<style>
|
||||
div {
|
||||
width: 500px;
|
||||
height: 100px;
|
||||
margin: 10px auto;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
|
||||
/* 语法:
|
||||
linear-gradient(方向,起始颜色,终止颜色);
|
||||
方向:to left to right to top to bottom 角度 30deg
|
||||
起始颜色
|
||||
终止颜色
|
||||
*/
|
||||
div:nth-child(1) {
|
||||
background-image: linear-gradient(to right, yellow, green);
|
||||
}
|
||||
|
||||
/* 不写方向,表示默认的方向是:从上往下 */
|
||||
div:nth-child(2) {
|
||||
background-image: linear-gradient(yellow, green);
|
||||
}
|
||||
|
||||
/* 方向可以指定角度 */
|
||||
div:nth-child(3) {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-image: linear-gradient(135deg, yellow, green);
|
||||
}
|
||||
|
||||
/* 0%的位置开始出现黄色,40%的位置开始出现红色的过度。70%的位置开始出现绿色的过度,100%的位置开始出现蓝色 */
|
||||
div:nth-child(4) {
|
||||
background-image: linear-gradient(to right,
|
||||
yellow 0%,
|
||||
red 40%,
|
||||
green 70%,
|
||||
blue 100%);
|
||||
|
||||
}
|
||||
|
||||
/* 颜色之间,出现突变 */
|
||||
div:nth-child(5) {
|
||||
background-image: linear-gradient(45deg,
|
||||
yellow 0%,
|
||||
yellow 25%,
|
||||
blue 25%,
|
||||
blue 50%,
|
||||
red 50%,
|
||||
red 75%,
|
||||
green 75%,
|
||||
green 100%
|
||||
);
|
||||
}
|
||||
|
||||
div:nth-child(6) {
|
||||
background-image: linear-gradient(to right,
|
||||
#000 0%,
|
||||
#000 25%,
|
||||
#fff 25%,
|
||||
#fff 50%,
|
||||
#000 50%,
|
||||
#000 75%,
|
||||
#fff 75%,
|
||||
#fff 100%
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
效果如下:
|
||||
|
||||
![](http://img.smyhvae.com/20180207_2222.png)
|
||||
|
||||
**举例**:按钮
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>CSS3 渐变</title>
|
||||
<style>
|
||||
html, body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #f8fcd4;
|
||||
}
|
||||
|
||||
.nav {
|
||||
width: 800px;
|
||||
text-align: center;
|
||||
padding-top: 50px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
/*设置按钮基本样式*/
|
||||
.nav a {
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
height: 30px;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
border: 1px solid #e59500;
|
||||
background-color: #FFB700;
|
||||
background-image: linear-gradient(
|
||||
to bottom,
|
||||
#FFB700 0%,
|
||||
#FF8C00 100%
|
||||
);
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<a href="javascript:;">导航1</a>
|
||||
<a href="javascript:;">导航2</a>
|
||||
<a href="javascript:;">导航3</a>
|
||||
<a href="javascript:;">导航4</a>
|
||||
<a href="javascript:;">导航5</a>
|
||||
<a href="javascript:;">导航6</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
效果:
|
||||
|
||||
![](http://img.smyhvae.com/20180207_2301.png)
|
||||
|
||||
### 径向渐变
|
||||
|
||||
格式:
|
||||
|
||||
```
|
||||
background-image: radial-gradient(辐射的半径大小, 中心的位置, 起始颜色, 终止颜色);
|
||||
|
||||
background-image: radial-gradient(100px at center,yellow ,green);
|
||||
|
||||
```
|
||||
|
||||
解释:围绕中心点做渐变,半径是150px,从黄色到绿色做渐变。
|
||||
|
||||
中心点的位置可以是:at left right center bottom top。如果以像素为单位,则中心点参照的是盒子的左上角。
|
||||
|
||||
当然,还有其他的各种参数。格式举例:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head lang="en">
|
||||
<meta charset="UTF-8">
|
||||
<title></title>
|
||||
<style>
|
||||
div {
|
||||
width: 250px;
|
||||
height: 250px;
|
||||
border: 1px solid #000;
|
||||
margin: 20px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
/*
|
||||
径向渐变:
|
||||
radial-gradient(辐射的半径大小, 中心的位置,起始颜色,终止颜色);
|
||||
中心点位置:at left right center bottom top
|
||||
*/
|
||||
|
||||
/*辐射半径为100px,中心点在中间*/
|
||||
div:nth-child(1) {
|
||||
background-image: radial-gradient(100px at center, yellow, green);
|
||||
}
|
||||
|
||||
/*中心点在左上角*/
|
||||
div:nth-child(3) {
|
||||
background-image: radial-gradient(at left top, yellow, green);
|
||||
}
|
||||
|
||||
div:nth-child(2) {
|
||||
background-image: radial-gradient(at 50px 50px, yellow, green);
|
||||
}
|
||||
|
||||
/*设置不同的颜色渐变*/
|
||||
div:nth-child(4) {
|
||||
background-image: radial-gradient(100px at center,
|
||||
yellow 0%,
|
||||
green 30%,
|
||||
blue 60%,
|
||||
red 100%);
|
||||
}
|
||||
|
||||
/*如果辐射半径的宽高不同,那就是椭圆*/
|
||||
div:nth-child(5) {
|
||||
background-image: radial-gradient(100px 50px at center, yellow, green);
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="box"></div>
|
||||
<div class="box"></div>
|
||||
<div class="box"></div>
|
||||
<div class="box"></div>
|
||||
<div class="box"></div>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
效果如下:
|
||||
|
||||
![](http://img.smyhvae.com/20180207_2256.png)
|
||||
|
||||
**举例:**利用径向渐变和边框圆角的属性,生成按钮。代码如下:
|
||||
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>CSS3 渐变</title>
|
||||
<style>
|
||||
|
||||
div:nth-child(1) {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
margin: 40px auto;
|
||||
border-radius: 100px;
|
||||
background-color: yellowgreen;
|
||||
}
|
||||
|
||||
div:nth-child(2) {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
margin: 40px auto;
|
||||
border-radius: 100px;
|
||||
background-color: yellowgreen;
|
||||
background-image: radial-gradient(
|
||||
200px at 100px 100px,
|
||||
rgba(0, 0, 0, 0),
|
||||
rgba(0, 0, 0, 0.5)
|
||||
);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div></div>
|
||||
<div></div>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
效果如下:
|
||||
|
||||
![](http://img.smyhvae.com/20180208_1133.png)
|
||||
|
||||
上图中,给第二个div设置的透明度是从0到0.5。如果设置的透明度是从0到0,则样式无变化,和第一个div一样。如果设置的透明度是从1到1,则盒子是全黑的。
|
||||
|
||||
CSS3的更多属性,且看下文继续。
|
||||
|
||||
## 我的公众号
|
||||
|
@ -120,4 +120,18 @@ css 中的字体族可以理解成是某一类字体。常见的字体族可以
|
||||
- 替代方案:针对性加 class
|
||||
|
||||
|
||||
## CSS 效果
|
||||
|
||||
我们可以利用 CSS 实现各种效果,常见的效果属性有:
|
||||
|
||||
- box-shadow:盒子的阴影
|
||||
|
||||
- text-shadow:文本的阴影
|
||||
|
||||
- border-radius
|
||||
|
||||
- background
|
||||
|
||||
- clip-path
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user