CSS3 | 青训营笔记

125 阅读6分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第3天

什么是CSS3?

CSS3是CSS(层叠样式表)技术的升级版本,是CSS2的升级版本,3只是版本号,它在CSS2.1 的基础上增加了很多强大的新功能。CSS3原理同CSS,是在网页中自定义样式表的选择符,然后在网页中大量引用这些选择符。

CSS3的新特性

CSS3可以使用的图片和脚本来实现的效果 比如:圆角、图片边框、文字阴影和盒阴景、渐变、个性化字体、多图片背景、过渡、动画、多栏布局、媒体查询等

  • Border-radius
  • Box-shadow
  • Text-shadow
  • 线性渐变和射线渐变
  • Transform
  • Transition
  • Animation
  • 绘制特殊图形

一、Border-radius

定义

使用 CSS3 border-radius 属性,可以给任何元素制作 "圆角"。

语法

border-radius:指定每个圆角

如果你在 border-radius 属性中只指定一个值,那么将生成 4 个 圆角。

但是,如果你要在四个角上一一指定,可以使用以下规则:

  1. 四个值: 第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角。
  2. 三个值: 第一个值为左上角, 第二个值为右上角和左下角,第三个值为右下角
  3. 两个值: 第一个值为左上角与右下角,第二个值为右上角与左下角
  4. 一个值: 四个圆角值相同
<div class="rcorners1"></div>
<div class="rcorners2"></div>
<div class="rcorners3"></div>

.rcorners1 {
border-radius: 15px 50px 30px 5px;
background: #8AC007;
padding: 20px; 
width: 200px;
height: 150px; 
}
.rcorners2 {
border-radius: 15px 50px 30px;
background: #8AC007;
padding: 20px; 
width: 200px;
height: 150px; 
}
.rcorners3 {
border-radius: 15px 50px;
background: #8AC007;
padding: 20px; 
width: 200px;
height: 150px; 
}

二、阴影

定义

box-shadow 向框添加一个或多个阴影, text-shadow 属性向文本设置阴影。

语法

box-shadow: h-shadow v-shadow blur spread color inset;

image.png

text-shadow: h-shadow v-shadow blur color;

image.png

三、背景渐变

定义

CSS3 渐变(gradients)可以让你在两个或多个指定的颜色之间显示平稳的过渡。

以前,你必须使用图像来实现这些效果。但是,通过使用 CSS3 渐变,你可以减少下载的时间和宽带的使用。此外,渐变效果的元素在放大时看起来效果更好,因为渐变是由浏览器生成的。

CSS3 定义了两种类型的渐变(gradients):

  • 线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向
  • 径向渐变(Radial Gradients)- 由它们的中心定义
语法

线性渐变:background: linear-gradient(direction, color-stop1, color-stop2, ...);

#grad {
width: 300px;
height: 300px;
background: linear-gradient(to bottom right, red , blue); 
}

image.png

如果你想要在渐变的方向上做更多的控制,你可以定义一个角度,而不用预定义方向(to bottom、to top、to right、to left、to bottom right,等等)。

background: linear-gradient(angle, color-stop1, color-stop2);

径向渐变:background: radial-gradient(center, shape size, start-color, ..., last-color);

为了创建一个径向渐变,你也必须至少定义两种颜色结点。颜色结点即你想要呈现平稳过渡的颜色。同时,你也可以指定渐变的中心、形状(圆形或椭圆形)、大小。默认情况下,渐变的中心是 center(表示在中心点),渐变的形状是 ellipse(表示椭圆形),渐变的大小是 farthest-corner(表示到最远的角落)。

#grad {
width: 300px;
height: 300px;
background: radial-gradient(red, yellow, green);
}

image.png

#grad {
width: 300px;
height: 300px;
background: radial-gradient(red 5%, green 15%, blue 60%); 
}

image.png

四、转换

定义

转换的效果是让某个元素改变形状,大小和位置。 transform 属性向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。

  • translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动
  • rotate()方法,在一个给定度数顺时针旋转的元素。负值是允许的,这样是元素逆时针旋转
  • scale()方法,该元素增加或减少的大小,取决于宽度(X轴)和高度(Y轴)的参数:
  • skew()方法,包含两个参数值,分别表示X轴和Y轴倾斜的角度,如果第二个参数为空,则默认为0,参数为负表示向相反方向倾斜。

image.png

语法

transform: none|transform-functions;

image.png

.box {
width: 100px;
height: 80px;
background-color: rgba(255,0,0,.8);
transform: translate(50px,100px);
 }

image.png

.box {
width: 100px;
height: 80px;
background-color: rgba(255,0,0,.8);
transform: rotate(30deg);}

image.png

.box {
width: 100px;
height: 80px;
background-color: rgba(255,0,0,.8);
transform: scale(2,3); 
}

image.png

.box {
width: 100px;
height: 80px;
background-color: rgba(255,0,0,.8);
transform: skew(30deg,20deg);
}

五、过渡

定义

CSS3 过渡是元素从一种样式逐渐改变为另一种的效果。 通过过渡transition,可以让web前端开发人员不需要javascript就可以实现简单的动画交互效果。

语法

过渡transition是一个复合属性,包括transition-property、transition-durationtransition-timing-function、transition-delay这四个子属性。通过这四个子属性的配合来完成一个完整的过渡效果。

image.png

可过渡的样式:

不是所有的CSS样式值都可以过渡,只有具有中间值的属性才具备过渡效果

  • 取值为颜色
  • 取值为数值
  • 阴影(box-shadow,text-shadow)
  • 转换(transform)
  • 背景渐变(gradient)

六、动画

定义

CSS3 可以创建动画,它可以取代许多网页动画图像、Flash 动画和 JavaScript 实现的效果。

  1. Css动画是使元素从一种样式逐渐变化为另一种样式的效果。
  2. 可以改变任意多的样式任意多的次数。
  3. 用百分比来规定变化发生的时间,或用关键词 “from” 和 “to”,等同于 0% 和 100%。
  4. 0% 是动画的开始,100% 是动画的完成。
  5. 为了得到最佳的浏览器支持,您应该始终定义 0% 和 100% 选择器。

要创建 Css3 动画,你需要了解 @keyframes 规则

  • @keyframes 规则是创建动画。
  • @keyframes 规则内指定一个 Css 样式和动画将逐步从目前的样式更改为新的样式。

当在 @keyframes 创建动画,把它绑定到一个选择器,否则动画不会有任何效果。 指定至少这两个Css3的动画属性绑定向一个选择器:

  • 规定动画的名称
  • 规定动画的时长
语法

image.png

当动画为 25%50% 时改变背景色,然后当动画 100% 完成时再次改变:

@keyframes myfirst
{
    0%   {background: red;}
    25%  {background: yellow;}
    50%  {background: blue;}
    100% {background: green;}
}
 
@-webkit-keyframes myfirst /* Safari 与 Chrome */
{
    0%   {background: red;}
    25%  {background: yellow;}
    50%  {background: blue;}
    100% {background: green;}
}

辨析:CSS动画相关属性

transition, transform, animation;我分别理解为过渡变换动画

  • transitions

其作用是:平滑的改变CSS的值。无论是点击事件,焦点事件,还是鼠标hover,只要值改变了,就是平滑的,就是动画。

  • transform

transform指变换,拉伸,压缩,旋转,偏移.

  • animation

@keyframes 规则是创建动画。 @keyframes 规则内指定一个 CSS 样式和动画将逐步从目前的样式更改为新的样式。

七、绘制特殊图形

//利用圆角绘制圆
.box{
width: 200px;
height: 200px;
background-color: #1EC7E6;
border-radius: 50%;
}

image.png

//利用边框绘制三角形
.box{
width:0;
height: 0;
border-top:50px solid red;
border-left:50px solid blue;
border-right:50px solid orange;
border-bottom:50px solid green;
}

image.png

//利用边框绘制梯形
.box{
width: 100px;
height: 0;
border-bottom: 80px solid red;
border-left: 50px solid transparent;
border-right: 50px solid transparent;}

image.png