1、私有前缀
在标准还未确定时,部分浏览器已经根据最初草案实现了部分功能,为了与之后确定下来的标准进行兼容,所以每种浏览器使用了自己的私有前缀与标准进行区分,当标准确立后,各大浏览器将逐步支持不带前缀的css3新属性
目前已有很多私有前缀可以不写了,但为了兼容老版本的浏览器,可以仍沿用私有前缀和标准方法,逐渐过渡。
一般来说,移动端更新迭代很快,对CSS3支持良好, 因此我们在移动端没必要写太多的前缀,因为移动端的ios和Android的浏览器都是webkit内核。
css3需要增加的私有前缀
-webkit-border-radius:50%; //谷歌
-moz-border-radius:50%; //火狐
-ms-border-radius:50% ; //ie
-o-border-radius:50%; //欧朋
border-radius:50% ; //标准写法
提倡写法:
css3包含哪些属性呢? 比如说border属性:border-radius 比如说background属性:background-size等 比如说box-shadow、text-shadow,box-sizing等 比如说transform、animation、transition等
box-shadow:
线性渐变
-
线性渐变
线性渐变 默认是从上到下
渐变的写法:
- 从上到下(默认):background: linear-gradient(red,blue);
- 从左到右:background: linear-gradient(to right,red,blue);
- 对角:background: linear-gradient(to right bottom,red,blue);
- 角度:background: linear-gradient(45deg,red,blue);
1、从上到下
.box {
width: 400px;
height: 200px;
background: linear-gradient(red, green);
background: -webkit-linear-gradient(red, green);
}
2、从一个方向到另一个方向(left 、right 、bottom、top)
下面的例子就是从左到右
.box {
width: 400px;
height: 200px;
background: linear-gradient(to right,red, green);
background: -webkit-linear-gradient(to right,red, green);
}
3、对角的,两个方向可以进行组合,比如下面的就是从左上角到右下角
.box {
width: 400px;
height: 200px;
background: linear-gradient(to bottom right, red, green);
background: -webkit-linear-gradient(to bottom right, red, green);
}
4、还可以是角度
background:linear-gradient(90deg,red,green);
background:-webkit-linear-gradient(90deg,red,green);
重复线性渐变
/* 从第30像素是黑色,然后30像素到60像素是黑变红,60到100是红变绿,剩余的空间复制很多份*/
background-image: repeating-linear-gradient(#252220 30px, #E94057 60px, #27e056 100px);
案例
1、发廊灯
<!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>
.wrap {
width: 300px;
height: 100px;
border: 1px solid #333333;
margin: 50px auto;
overflow: hidden;
}
.son {
width: 1800px;
height: 100px;
background-image: repeating-linear-gradient(45deg, #fff 0px, #ffffff 25px, #000000 25px, #000000 50px);
animation: run 10s linear infinite;
}
@keyframes run {
from {
transform: translate(0px, 0px);
}
to {
transform: translate(-1500px, 0px);
}
}
</style>
</head>
<body>
<div class="wrap">
<div class="son"></div>
</div>
</body>
</html>
发廊灯效果
径向渐变
- radial-gradient()
可以定义中心的位置,百分比相对的是宽高,要用at加上position的值div {
width: 300px;
height: 300px;
/* background-image: radial-gradient(circle, red, green); */
/* 默认是椭圆,但是正方形是看不出区别的 */
background-image: radial-gradient(red, green);
}
案例—电蚊香 ```javascript <!DOCTYPE html>div {
width: 400px;
height: 400px;
background-image: radial-gradient(circle at 25% 25%, red, yellow, green);
}

<a name="eZTl5"></a>
## 4、less简介
定义:less是css的一门预处理的语言<br />作用:less就是就是css的加强版,可以用更少的代码实现更强大的样式<br />css中也是支持变量的,但是IE不支持
```javascript
<!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>
html {
/* 变量存储 */
--color: #a5a5a5
}
.box1 {
color: var(--color);
}
</style>
</head>
<body>
<div class="box1">hahhahaha</div>
</body>
</html>
css中也有计算属性,但是ie9以下不支持
<style>
html {
/* 变量存储 */
--color: #a5a5a5
}
.box1 {
width: calc(500px/2);
color: var(--color);
}
</style>
less的语法和css的语法大致上都是一样的,但是less做了一些扩展,浏览器无法执行less,所以需要讲less编译成css。
那如何编译呢?
1、在vscode中先安装一个插件(easy less)
- less结构嵌套清晰
5、less语法
1、结构嵌套的关系可以这么写
.box {
width: 200px;
.box2 {
width: 100px;
}
}
2、less中的单行注释不会编译到css文件中
3、变量的使用
@width: 500px;
.box2 {
width: @width;
height: @width;
background-color: lightcoral;
}
4、如果写了多个一样的变量,我们变量使用的规则是就近原则
5、变量也可以先使用然后再去声明
6、使用已有属性的值
.box2 {
width: @width;
height: @width;
color: #f5f5f5;
// 使用已有属性的值
background-color: $color;
}
7、错误示范
.father {
color: red;
// 需求:hover father的时候颜色变成绿色
.father:hover {
color: green;
}
}
正确的应该怎么写呢?
.father {
color: red;
// 需求:hover father的时候颜色变成绿色
&:hover {
color: green;
}
}