CSS 用于控制网页的样式和布局。而CSS3是CSS技术的升级版本,CSS3语言开发是朝着模块化发展的。

CSS3 是最新的 CSS 标准。

本教程向您讲解CSS3 中的新特性以及关于CSS3的使用规则等。

接下来让我们开始学习 CSS3!


CSS3 Transforms



OperaSafariChromeFirefoxInternet Explorer

CSS3 实例

div
{
transform:rotate(30deg);
}

尝试一下 »

点击 "尝试一下" 按钮查看在线实例。

CSS3 参考手册

在W3Cschool教程中,我们提供完整的 CSS3 参考手册,包括所有属性和选择器的语法、实例、浏览器支持信息。

CSS 属性参考手册

CSS3 浏览器支持情况

CSS 选择器参考手册

CSS 颜色参考手册

从css3参考手册中,您可以轻松地查找到所有您需要的css3的属性、语法、实例等等,开始您的学习吧!

CSS3已经完全向后兼容,所以你就不必改变现有的设计。浏览器一般情况下都会支持CSS2。


CSS3 模块

CSS3被拆分为"模块"。旧规范已拆分成小块,还增加了新的规范。

一些最重要CSS3模块如下:


CSS3建议

W3C的CSS3规范目前已经开发的差不多,并且已经有许多新的CSS3属性已在现代浏览器使用,所以学习CSS3对于您是非常必要的,下面开始您的学习吧!


用CSS3,您可以创建圆角边框,添加阴影框,并作为边界的形象而不使用设计程序(如Photoshop等作图软件),极大地帮助您节省了很多时间。

而在本节中,您将了解以下的边框属性有:

  • border-radius

  • box-shadow

  • border-image(需要注意的是:该属性不支持ie浏览器)

Internet Explorer 9+ 支持 border-radius 和 box-shadow 属性。

Firefox、Chrome 以及 Safari 支持所有新的边框属性。

注释:对于 border-image,Safari 5 以及更老的版本需要前缀 -webkit-。

Opera 支持 border-radius 和 box-shadow 属性,但是对于 border-image 需要前缀 -o-。


CSS3 圆角

在CSS2中添加圆角是需要一些技巧的,尤其对于新手来说更加难了,所有我们不得不在每个角落使用不同的图像。

但是如果您在CSS3中,就能够很容易创建圆角。在CSS3中border-radius属性就是被用于创建圆角的:

以下示例即:圆角边框,您可以尝试着做一个!

实例

在div中添加圆角元素:

div
{
border:2px solid;
border-radius:25px;
}

尝试一下 »



CSS3盒阴影

CSS3中的box-shadow属性被用来添加阴影:

实例

在div中添加box-shadow属性

div
{
box-shadow: 10px 10px 5px #888888;
}

尝试一下 »



CSS3边界图片

有了CSS3的border-image属性,你可以使用图像创建一个边框:

border-image属性允许你指定一个图片作为边框!用于创建上文边框的原始图像:

在div中使用图片创建边框:

Border

实例

在div中使用图片创建边框

div
{
border-image:url(border.png) 30 30 round;
-webkit-border-image:url(border.png) 30 30 round; /* Safari 5 and older */
-o-border-image:url(border.png) 30 30 round; /* Opera */
}

尝试一下 »



新边框属性

属性说明CSS
border-image设置所有边框图像的速记属性。3
border-radius一个用于设置所有四个边框- *-半径属性的速记属性3
box-shadow附加一个或多个下拉框的阴影3

以上就是本节的全部内容,关于CSS3边框,您是否学会了呢?如果还是有些疑惑,建议您多看几遍,或者对着上文中的示例多做几遍!


使用了CSS3 border-radius属性的界面显示如下图:


CSS3 圆角

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

您可以尝试使用CSS3 圆角制作器制作您的第一个css3圆角!


浏览器支持

表格中的数字表示支持该属性的第一个浏览器的版本号。

-webkit- 或 -moz- 前面的数字表示支持该前缀的第一个版本。

属性     
border-radius9.05.0
4.0 -webkit-
4.0
3.0 -moz-
5.0
3.1 -webkit-
10.5

CSS3 border-radius 属性

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

以下为三个实例:

1. 指定背景颜色的元素圆角:

圆角!

2. 指定边框的元素圆角:

圆角!

3. 指定背景图片的元素圆角:

圆角!

代码如下:

实例

#rcorners1 {
    border-radius: 25px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners2 {
    border-radius: 25px;
    border: 2px solid #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners3 {
    border-radius: 25px;
    background: url(/statics/images/course/paper.gif);
    background-position: left top;
    background-repeat: repeat;
    padding: 20px;
    width: 200px;
    height: 150px;
}

尝试一下 »

CSS3 border-radius - 指定每个圆角

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

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

  • 四个值: 第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角。

  • 三个值: 第一个值为左上角, 第二个值为右上角和左下角,第三个值为右下角

  • 两个值: 第一个值为左上角与右下角,第二个值为右上角与左下角

  • 一个值: 四个圆角值相同

以下为三个实例:

1. 四个值 - border-radius: 15px 50px 30px 5px:

2. 三个值 - border-radius: 15px 50px 30px:

3. 两个值 - border-radius: 15px 50px:

以下为源代码:

实例

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

#rcorners5 {
    border-radius: 15px 50px 30px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners6 {
    border-radius: 15px 50px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

尝试一下 »

您还可以创建椭圆边角:

实例

#rcorners7 {
    border-radius: 50px/15px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners8 {
    border-radius: 15px/50px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners9 {
    border-radius: 50%;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

尝试一下 »

CSS3 圆角属性

属性描述
border-radius所有四个边角 border-*-*-radius 属性的缩写
border-top-left-radius定义了左上角的弧度
border-top-right-radius定义了右上角的弧度
border-bottom-right-radius定义了右下角的弧度
border-bottom-left-radius定义了左下角的弧度

通过以上5种圆角属性,希望您能够做出最满意的圆角。


CSS3 圆角生成器

在线CSS3 圆角生成器

 


CSS3更新了几个新的背景属性,提供更大背景元素控制,通过这几个背景属性,您能够做出更加精美的样式,。

在本节中您将了解以下4种背景属性:

  • background-image
  • background-size
  • background-origin
  • background-clip

此外您还将学习如何使用多重背景图像。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性     
background-image
(with multiple backgrounds)
4.09.03.63.111.5
background-size4.0
1.0 -webkit-
9.04.0
3.6 -moz-
4.1
3.0 -webkit-
10.5
10.0 -o-
background-origin1.09.04.03.010.5
background-clip4.09.04.03.010.5

CSS3 background-image属性

CSS3中可以通过background-image属性添加背景图片。

不同的背景图像和图像用逗号隔开,所有的图片中显示在最顶端的为第一张。

实例

#example1 {
background-image: url(img_flwr.gif), url(paper.gif);
background-position: right bottom, left top;
background-repeat: no-repeat, repeat;
}

尝试一下 »


可以给不同的图片设置多个不同的属性

实例

#example1 {
background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat;
}

尝试一下 »


CSS3 background-size 属性

background-size指定背景图像的大小。CSS3以前,背景图像大小由图像的实际大小决定。

CSS3中可以指定背景图片,让我们重新在不同的环境中指定背景图片的大小。您可以指定像素或百分比大小。

你指定的大小是相对于父元素的宽度和高度的百分比的大小。

OperaSafariChromeFirefoxInternet Explorer

实例 1

重置背景图像:

div
{
background:url(img_flwr.gif);
background-size:80px 60px;
background-repeat:no-repeat;
}

尝试一下 »

OperaSafariChromeFirefoxInternet Explorer

实例 2

伸展背景图像完全填充内容区域:

div
{
background:url(img_flwr.gif);
background-size:100% 100%;
background-repeat:no-repeat;
}

尝试一下 »


CSS3的background-Origin属性

background-Origin属性指定了背景图像的位置区域。

content-box, padding-box,和 border-box区域内可以放置背景图像。



OperaSafariChromeFirefoxInternet Explorer

实例

在 content-box 中定位背景图片:

div
{
background:url(img_flwr.gif);
background-repeat:no-repeat;
background-size:100% 100%;
background-origin:content-box;
}

尝试一下 »


CSS3 多个背景图像

CSS3 允许你在元素中添加多个背景图像。

OperaSafariChromeFirefoxInternet Explorer

实例

在 body 元素中设置两个背景图像:

body
{
background-image:url(img_flwr.gif),url(img_tree.gif);
}

尝试一下 »


CSS3 background-clip属性

CSS3中background-clip背景剪裁属性是从指定位置开始绘制

实例

#example1 {
border: 10px dotted black;
padding: 35px;
background: yellow;
background-clip: content-box;
}

尝试一下 »


新的背景属性

顺序描述CSS
background-clip规定背景的绘制区域。3
background-origin规定背景图片的定位区域。3
background-size规定背景图片的尺寸。3

新的CSS3背景属性中,您不仅能够规定背景的绘制区域,对于背景图片的定位区域和尺寸也同样能够惊喜设置!

线性渐变

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

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

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

  • 线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向

  • 径向渐变(Radial Gradients)- 由它们的中心定义


浏览器支持

表中的数字指定了完全支持该属性的第一个浏览器版本。

后边跟 -webkit-、-moz- 或 -o- 的数字指定了需加上前缀才能支持属性的第一个版本。

属性     
linear-gradient10.026.0
10.0 -webkit-
16.0
3.6 -moz-
6.1
5.1 -webkit-
12.1
11.1 -o-
radial-gradient10.026.0
10.0 -webkit-
16.0
3.6 -moz-
6.1
5.1 -webkit-
12.1
11.6 -o-
repeating-linear-gradient10.026.0
10.0 -webkit-
16.0
3.6 -moz-
6.1
5.1 -webkit-
12.1
11.1 -o-
repeating-radial-gradient10.026.0
10.0 -webkit-
16.0
3.6 -moz-
6.1
5.1 -webkit-
12.1
11.6 -o-


CSS3 线性渐变

为了创建一个线性渐变,你必须至少定义两种颜色结点。颜色结点即你想要呈现平稳过渡的颜色。同时,你也可以设置一个起点和一个方向(或一个角度)。

线性渐变的实例:

线性渐变

语法

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

线性渐变 - 从上到下(默认情况下)

下面的实例演示了从顶部开始的线性渐变。起点是红色,慢慢过渡到蓝色:

实例

从上到下的线性渐变:

#grad {
  background: -webkit-linear-gradient(red, blue); /* Safari 5.1 - 6.0 */
  background: -o-linear-gradient(red, blue); /* Opera 11.1 - 12.0 */
  background: -moz-linear-gradient(red, blue); /* Firefox 3.6 - 15 */
  background: linear-gradient(red, blue); /* 标准的语法 */
}

尝试一下 »

线性渐变 - 从左到右

下面的实例演示了从左边开始的线性渐变。起点是红色,慢慢过渡到蓝色:

实例

从左到右的线性渐变:

#grad {
  background: -webkit-linear-gradient(left, red , blue); /* Safari 5.1 - 6.0 */
  background: -o-linear-gradient(right, red, blue); /* Opera 11.1 - 12.0 */
  background: -moz-linear-gradient(right, red, blue); /* Firefox 3.6 - 15 */
  background: linear-gradient(to right, red , blue); /* 标准的语法 */
}

尝试一下 »

线性渐变 - 对角

你可以通过指定水平和垂直的起始位置来制作一个对角渐变。

下面的实例演示了从左上角开始(到右下角)的线性渐变。起点是红色,慢慢过渡到蓝色:

实例

从左上角到右下角的线性渐变:

#grad {
  background: -webkit-linear-gradient(left top, red , blue); /* Safari 5.1 - 6.0 */
  background: -o-linear-gradient(bottom right, red, blue); /* Opera 11.1 - 12.0 */
  background: -moz-linear-gradient(bottom right, red, blue); /* Firefox 3.6 - 15 */
  background: linear-gradient(to bottom right, red , blue); /* 标准的语法 */
}

尝试一下 »


使用角度

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

语法

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

角度是指水平线和渐变线之间的角度,顺时针方向计算。换句话说,0deg 将创建一个从下到上的渐变,90deg 将创建一个从左到右的渐变。

 

但是,请注意很多浏览器(Chrome,Safari,fiefox等)的使用了旧的标准,即 0deg 将创建一个从下到上的渐变,90deg 将创建一个从左到右的渐变。换算公式 90 - x = y 其中 x 为标准角度,y为非标准角度。

下面的实例演示了如何在线性渐变上使用角度:

实例

带有指定的角度的线性渐变:

#grad {
  background: -webkit-linear-gradient(180deg, red, blue); /* Safari 5.1 - 6.0 */
  background: -o-linear-gradient(180deg, red, blue); /* Opera 11.1 - 12.0 */
  background: -moz-linear-gradient(180deg, red, blue); /* Firefox 3.6 - 15 */
  background: linear-gradient(180deg, red, blue); /* 标准的语法 */
}

尝试一下 »


使用多个颜色结点

下面的实例演示了如何设置多个颜色结点:

实例

带有多个颜色结点的从上到下的线性渐变:

#grad {
  background: -webkit-linear-gradient(red, green, blue); /* Safari 5.1 - 6.0 */
  background: -o-linear-gradient(red, green, blue); /* Opera 11.1 - 12.0 */
  background: -moz-linear-gradient(red, green, blue); /* Firefox 3.6 - 15 */
  background: linear-gradient(red, green, blue); /* 标准的语法 */
}

尝试一下 »

下面的实例演示了如何创建一个带有彩虹颜色和文本的线性渐变:

实例

#grad {
  /* Safari 5.1 - 6.0 */
  background: -webkit-linear-gradient(left,red,orange,yellow,green,blue,indigo,violet);
 /* Opera 11.1 - 12.0 */
  background: -o-linear-gradient(left,red,orange,yellow,green,blue,indigo,violet);
  /* Firefox 3.6 - 15 */
  background: -moz-linear-gradient(left,red,orange,yellow,green,blue,indigo,violet);
 /* 标准的语法 */
  background: linear-gradient(to right, red,orange,yellow,green,blue,indigo,violet);
}

尝试一下 »


使用透明度(Transparency)

CSS3 渐变也支持透明度(transparency),可用于创建减弱变淡的效果。

为了添加透明度,我们使用 rgba() 函数来定义颜色结点。rgba() 函数中的最后一个参数可以是从 0 到 1 的值,它定义了颜色的透明度:0 表示完全透明,1 表示完全不透明。

下面的实例演示了从左边开始的线性渐变。起点是完全透明,慢慢过渡到完全不透明的红色:

实例

从左到右的线性渐变,带有透明度:

#grad {
  background: -webkit-linear-gradient(left,rgba(255,0,0,0),rgba(255,0,0,1)); /* Safari 5.1 - 6 */
  background: -o-linear-gradient(right,rgba(255,0,0,0),rgba(255,0,0,1)); /* Opera 11.1 - 12*/
  background: -moz-linear-gradient(right,rgba(255,0,0,0),rgba(255,0,0,1)); /* Firefox 3.6 - 15*/
  background: linear-gradient(to right, rgba(255,0,0,0), rgba(255,0,0,1)); /* 标准的语法 */
}

尝试一下 »


重复的线性渐变

repeating-linear-gradient() 函数用于重复线性渐变:

实例

一个重复的线性渐变:

#grad {
  /* Safari 5.1 - 6.0 */
  background: -webkit-repeating-linear-gradient(red, yellow 10%, green 20%);
  /* Opera 11.1 - 12.0 */
  background: -o-repeating-linear-gradient(red, yellow 10%, green 20%);
  /* Firefox 3.6 - 15 */
  background: -moz-repeating-linear-gradient(red, yellow 10%, green 20%);
  /* 标准的语法 */
  background: repeating-linear-gradient(red, yellow 10%, green 20%);
}

尝试一下 »


CSS3 径向渐变

径向渐变由它的中心定义。

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

径向渐变的实例:

Radial gradient

语法

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

径向渐变 - 颜色结点均匀分布(默认情况下)

实例

颜色结点均匀分布的径向渐变:

#grad {
  background: -webkit-radial-gradient(red, green, blue); /* Safari 5.1 - 6.0 */
  background: -o-radial-gradient(red, green, blue); /* Opera 11.6 - 12.0 */
  background: -moz-radial-gradient(red, green, blue); /* Firefox 3.6 - 15 */
  background: radial-gradient(red, green, blue); /* 标准的语法 */
}

尝试一下 »

径向渐变 - 颜色结点不均匀分布

实例

颜色结点不均匀分布的径向渐变:

#grad {
  background: -webkit-radial-gradient(red 5%, green 15%, blue 60%); /* Safari 5.1 - 6.0 */
  background: -o-radial-gradient(red 5%, green 15%, blue 60%); /* Opera 11.6 - 12.0 */
  background: -moz-radial-gradient(red 5%, green 15%, blue 60%); /* Firefox 3.6 - 15 */
  background: radial-gradient(red 5%, green 15%, blue 60%); /* 标准的语法 */
}

尝试一下 »


设置形状

shape 参数定义了形状。它可以是值 circle 或 ellipse。其中,circle 表示圆形,ellipse 表示椭圆形。默认值是 ellipse。

实例

形状为圆形的径向渐变:

#grad {
  background: -webkit-radial-gradient(circle, red, yellow, green); /* Safari 5.1 - 6.0 */
  background: -o-radial-gradient(circle, red, yellow, green); /* Opera 11.6 - 12.0 */
  background: -moz-radial-gradient(circle, red, yellow, green); /* Firefox 3.6 - 15 */
  background: radial-gradient(circle, red, yellow, green); /* 标准的语法 */
}

尝试一下 »


不同尺寸大小关键字的使用

size 参数定义了渐变的大小。它可以是以下四个值:

  • closest-side

  • farthest-side

  • closest-corner

  • farthest-corner

实例

带有不同尺寸大小关键字的径向渐变:

#grad1 {
  /* Safari 5.1 - 6.0 */
  background: -webkit-radial-gradient(60% 55%, closest-side,blue,green,yellow,black);
  /* Opera 11.6 - 12.0 */
 background: -o-radial-gradient(60% 55%, closest-side,blue,green,yellow,black);
 /* Firefox 3.6 - 15 */
  background: -moz-radial-gradient(60% 55%, closest-side,blue,green,yellow,black);
  /* 标准的语法 */
 background: radial-gradient(60% 55%, closest-side,blue,green,yellow,black);
}

#grad2 {
 /* Safari 5.1 - 6.0 */
  background: -webkit-radial-gradient(60% 55%, farthest-side,blue,green,yellow,black);
 /* Opera 11.6 - 12.0 */
  background: -o-radial-gradient(60% 55%, farthest-side,blue,green,yellow,black);
  /* Firefox 3.6 - 15 */
 background: -moz-radial-gradient(60% 55%, farthest-side,blue,green,yellow,black);
 /* 标准的语法 */
  background: radial-gradient(60% 55%, farthest-side,blue,green,yellow,black);
}

尝试一下 »


重复的径向渐变

repeating-radial-gradient() 函数用于重复径向渐变:

实例

一个重复的径向渐变:

#grad {
  /* Safari 5.1 - 6.0 */
  background: -webkit-repeating-radial-gradient(red, yellow 10%, green 15%);
  /* Opera 11.6 - 12.0 */
  background: -o-repeating-radial-gradient(red, yellow 10%, green 15%);
  /* Firefox 3.6 - 15 */
  background: -moz-repeating-radial-gradient(red, yellow 10%, green 15%);
  /* 标准的语法 */
  background: repeating-radial-gradient(red, yellow 10%, green 15%);
}

尝试一下 »

以上便是本节CSS3渐变的全部内容,通过学习,希望您能够多进行实战练习,灵活掌握渐变,能够让您的样式更加美观!

CSS3中包含几个新的文本特征。

在本节中您将了解以下文本属性:

  • text-shadow

  • box-shadow

  • text-overflow

  • word-wrap

  • word-break


浏览器支持

属性     
text-shadow4.010.03.54.09.5
box-shadow10.0
4.0 -webkit-
9.04.0
3.5 -moz-
5.1
3.1 -webkit-
10.5
text-overflow4.06.07.03.111.0
9.0 -o-
word-wrap23.05.53.56.112.1
word-break4.05.515.03.115.0

CSS3的文本阴影

CSS3中,text-shadow属性适用于文本阴影。

Text shadow effect!

您指定了水平阴影,垂直阴影,模糊的距离,以及阴影的颜色:

OperaSafariChromeFirefoxInternet Explorer

实例

给标题添加阴影:

h1
{
    text-shadow: 5px 5px 5px #FF0000;
}

尝试一下 »

CSS3 box-shadow属性

CSS3 中 CSS3 box-shadow 属性适用于盒子阴影

实例

div { box-shadow: 10px10px;}

尝试一下 »

接下来给阴影添加颜色

实例

div { box-shadow: 10px10px grey;}

尝试一下 »

接下来给阴影添加一个模糊效果

实例

div { box-shadow: 10px10px 5px grey;}

尝试一下 »

你也可以在 ::before 和 ::after 两个伪元素中添加阴影效果

实例

#boxshadow { 
    position: relative
    box-shadow: 1px 2px 4px rgba(0,0, 0, .5)
    padding: 10px;bac kground: white;
} 
#boxshadow img { 
    width: 100%
    border: 1px solid#8a4419
    border-style: inset;
} 
#boxshadow::after{ 
    content: ''
    position: absolute
    z-index: -1; /* hide shadow behind image */ 
    box-shadow: 015px 20px rgba(0,0, 0, 0.3)
    width: 70%
    left: 15%; /* one half of the remaining 30% */ 
    height: 100px
    bottom: 0;
}

尝试一下 »

阴影的一个使用特例是卡片效果

实例

div.card { 
    width: 250px
    box-shadow: 0 4px8px 0 rgba(0,0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)
    text-align: center;
}

文字卡片 » 尝试一下 »

CSS3 Text Overflow属性

CSS3文本溢出属性指定应向用户如何显示溢出内容

实例

p.test1 { 
    white-space: nowrap
    width: 200px
    border: 1px solid#000000
    overflow: hidden
    text-overflow: clip
} 
p.test2 { 
    white-space: nowrap
    width: 200px
    border: 1px solid#000000
    overflow: hidden
    text-overflow: ellipsis
}

尝试一下 »

CSS3的换行

如果某个单词太长,不适合在一个区域内,它扩展到外面:

CSS3中,自动换行属性允许您强制文本换行 - 即使这意味着分裂它中间的一个字:

CSS代码如下:

OperaSafariChromeFirefoxInternet Explorer

实例

允许长文本换行:

p {word-wrap:break-word;}

尝试一下 »

CSS3 单词拆分换行

CSS3 单词拆分换行属性指定换行规则:

CSS代码如下:

实例

p.test1 { 
    word-break: keep-all;
} 
p.test2 { 
    word-break: break-all;
}

尝试一下 »

New Text Properties

属性描述CSS
hanging-punctuation规定标点字符是否位于线框之外。3
punctuation-trim规定是否对标点字符进行修剪。3
text-align-last设置如何对齐最后一行或紧挨着强制换行符之前的行。3
text-emphasis向元素的文本应用重点标记以及重点标记的前景色。3
text-justify规定当  text-align 设置为 "justify" 时所使用的对齐方法。3
text-outline规定文本的轮廓。3
text-overflow规定当文本溢出包含元素时发生的事情。3
text-shadow向文本添加阴影。3
text-wrap规定文本的换行规则。3
word-break规定非中日韩文本的换行规则。3
word-wrap允许对长的不可分割的单词进行分割并换行到下一行。3


With CSS3, web designers are no longer forced to use only web-safe fonts


CSS3 @font-face 规则

在CSS3之前,web设计师必须使用已在用户计算机上安装好的字体,不能够使用离线字体,不过通过CSS3,web设计师可以使用他们喜欢的任意字体。

当您找到或购买到希望使用的字体时,可将该字体文件存放到web服务器上,它会在需要时被自动下载到用户的计算机上。

您"自己的"的字体是在 CSS3 @font-face 规则中定义的。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

属性     
@font-face4.09.03.53.210.0

Internet Explorer 9+, Firefox, Chrome, Safari, 和 Opera 支持 WOFF (Web Open Font Format) 字体.

Firefox, Chrome, Safari, 和 Opera 支持 .ttf(True Type字体)和.otf(OpenType)字体字体类型)。

Chrome, Safari 和 Opera 也支持 SVG 字体/折叠.

Internet Explorer 同样支持 EOT (Embedded OpenType) 字体.

需要注意的是: Internet Explorer 8 以及更早的版本不支持新的 @font-face 规则。


使用您需要的字体

在新的 @font-face 规则中,您必须首先定义字体的名称(比如 myFirstFont),然后指向该字体文件。

lamp 提示:URL请使用小写字母的字体,大写字母在IE中会产生意外的结果

如果需要为 HTML 元素使用字体,请通过 font-family 属性来引用字体的名称 (myFirstFont),通过下面的实例您可以尝试操作一下:

OperaSafariChromeFirefoxInternet Explorer

实例

<style>
@font-face
{
   font-family: myFirstFont;
   src: url(sansation_light.woff);
}

div
{
   font-family:myFirstFont;
}
</style>

尝试一下 »



使用粗体文本

您必须添加另一个包含粗体文字的@font-face规则:

OperaSafariChromeFirefoxInternet Explorer

实例

@font-face
{
   font-family: myFirstFont;
   src: url(sansation_bold.woff);
   font-weight:bold;
}

尝试一下 »

该文件"Sansation_Bold.ttf"是另一种字体文件,包含Sansation字体的粗体字。

浏览器使用这一文本的字体系列"myFirstFont"时应该呈现为粗体。

这样你就可以有许多相同的字体@font-face的规则。


CSS3 字体描述

下表列出了所有的字体描述和里面的@font-face规则定义:

描述符描述
font-familyname必需。规定字体的名称。
srcURL必需。定义字体文件的 URL。
font-stretch
  • normal

  • condensed

  • ultra-condensed

  • extra-condensed

  • semi-condensed

  • expanded

  • semi-expanded

  • extra-expanded

  • ultra-expanded

可选。定义如何拉伸字体。默认是 "normal"。
font-style
  • normal

  • italic

  • oblique

可选。定义字体的样式。默认是 "normal"。
font-weight
  • normal

  • bold

  • 100

  • 200

  • 300

  • 400

  • 500

  • 600

  • 700

  • 800

  • 900

可选。定义字体的粗细。默认是 "normal"。
unicode-rangeunicode-range可选。定义字体支持的 UNICODE 字符范围。默认是 "U+0-10FFFF"。
您最好收藏或者保存好上表中的字体描述,以便您将来编程时需要用,方面查找!这将会为您省去很多宝贵的工作时间。

CSS3 转换

CSS3转换,我们可以移动,比例化,反过来,旋转,和拉伸元素。

接下去您将会学到关于CSS3 2D转换的内容,当您学到一个新知识的时候,最好能够自己进行操作一下,点击代码下方的

尝试一下

能够让您真正掌握这一知识点!


它是如何工作?

变换的效果,让某个元素改变形状,大小和位置。

您可以转换您使用2D或3D元素。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性     
transform36.0
4.0 -webkit-
10.0
9.0 -ms-
16.0
3.5 -moz-
3.2 -webkit-23.0
15.0 -webkit-
12.1
10.5 -o-
transform-origin
(two-value syntax)
36.0
4.0 -webkit-
10.0
9.0 -ms-
16.0
3.5 -moz-
3.2 -webkit-23.0
15.0 -webkit-
12.1
10.5 -o-

Internet Explorer 10, Firefox, 和 Opera支持transform 属性.

Chrome 和 Safari 要求前缀 -webkit- 版本.

注意: Internet Explorer 9 要求前缀 -ms- 版本.


2D 转换

在本章您将了解2D变换方法:

  • translate()

  • rotate()

  • scale()

  • skew()

  • matrix()

在下一章中您将了解3D转换。

实例

div
{
transform: rotate(30deg);
-ms-transform: rotate(30deg); /* IE 9 */
-webkit-transform: rotate(30deg); /* Safari and Chrome */
}  

尝试一下 »



translate() 方法

translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动。

实例

div
{
transform: translate(50px,100px);
-ms-transform: translate(50px,100px); /* IE 9 */
-webkit-transform: translate(50px,100px); /* Safari and Chrome */
}  

尝试一下 »

translate值(50px,100px)是从左边元素移动50个像素,并从顶部移动100像素。


rotate() 方法

rotate()方法,在一个给定度数顺时针旋转的元素。负值是允许的,这样是元素逆时针旋转。

实例

div
{
transform: rotate(30deg);
-ms-transform: rotate(30deg); /* IE 9 */
-webkit-transform: rotate(30deg); /* Safari and Chrome */
}  

尝试一下 »

rotate值(30deg)元素顺时针旋转30度。


scale() 方法

scale()方法,该元素增加或减少的大小,取决于宽度(X轴)和高度(Y轴)的参数:

实例

div
{
transform: scale(2,4);
-ms-transform: scale(2,4); /* IE 9 */
-webkit-transform: scale(2,4); /* Safari and Chrome */
}  

尝试一下 »

scale(2,4)转变宽度为原来的大小的2倍,和其原始大小4倍的高度。


skew() 方法

包含两个参数值,分别表示X轴和Y轴倾斜的角度,如果第二个参数为空,则默认为0,参数为负表示向相反方向倾斜。

  • skewX( );表示只在X轴(水平方向)倾斜。
  • skewY( );表示只在Y轴(垂直方向)倾斜。

实例

div
{
transform: skew(30deg,20deg);
-ms-transform: skew(30deg,20deg); /* IE 9 */
-webkit-transform: skew(30deg,20deg); /* Safari and Chrome */
}  

尝试一下 »

skew(30deg,20deg) 是元素在X轴和Y轴上倾斜30度和20度。


matrix() 方法

matrix()方法和2D变换方法合并成一个。

matrix 方法有六个参数,包含旋转,缩放,移动(平移)和倾斜功能。

实例

利用matrix()方法旋转div元素30°

div
{
transform:matrix(0.866,0.5,-0.5,0.866,0,0);
-ms-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* IE 9 */
-webkit-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Safari and Chrome */
}  

尝试一下 »



新转换属性

以下列出了所有的转换属性:

Property描述CSS
transform适用于2D或3D转换的元素3
transform-origin允许您更改转化元素位置3

2D 转换方法

函数描述
matrix(n,n,n,n,n,n)定义 2D 转换,使用六个值的矩阵。
translate(x,y)定义 2D 转换,沿着 X 和 Y 轴移动元素。
translateX(n)定义 2D 转换,沿着 X 轴移动元素。
translateY(n)定义 2D 转换,沿着 Y 轴移动元素。
scale(x,y)定义 2D 缩放转换,改变元素的宽度和高度。
scaleX(n)定义 2D 缩放转换,改变元素的宽度。
scaleY(n)定义 2D 缩放转换,改变元素的高度。
rotate(angle)定义 2D 旋转,在参数中规定角度。
skew(x-angle,y-angle)定义 2D 倾斜转换,沿着 X 和 Y 轴。
skewX(angle)定义 2D 倾斜转换,沿着 X 轴。
skewY(angle)定义 2D 倾斜转换,沿着 Y 轴。

熟练使用CSS3 2D转换方法,能够让您在设计中游刃有余!



CSS3 transform(变形)和transform-origin(变形原点)调试工具

CSS3 transform(变形)和transform-origin(变形原点)调试工具




CSS3 允许您使用 3D 转换来对元素进行格式化。

点击下面的元素,您可以看到 2D 转换与 3D 转换之间的不同之处,根据自己的需求选择哪一种转换: 

2D rotate
3D rotate


浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性谷歌浏览器ie浏览器搜狐浏览器webkit浏览器

opera浏览器

transform36.0
12.0 -webkit-
10.016.0
10.0 -moz-
4.0 -webkit-23.0
15.0 -webkit-
transform-origin
(three-value syntax)
36.0
12.0 -webkit-
10.016.0
10.0 -moz-
4.0 -webkit-23.0
15.0 -webkit-
transform-style36.0
12.0 -webkit-
11.016.0
10.0 -moz-
4.0 -webkit-23.0
15.0 -webkit-
perspective36.0
12.0 -webkit-
10.016.0
10.0 -moz-
4.0 -webkit-23.0
15.0 -webkit-
perspective-origin36.0
12.0 -webkit-
10.016.0
10.0 -moz-
4.0 -webkit-23.0
15.0 -webkit-
backface-visibility36.0
12.0 -webkit-
10.016.0
10.0 -moz-
4.0 -webkit-23.0
15.0 -webkit-

rotateX() 方法

Rotate X

rotateX()方法,围绕其在一个给定度数X轴旋转的元素。

<!DOCTYPE html><html><head><meta charset="utf-8"> <title>W3C(51coolma.cn)</title> <style> div{    width:100px;    height:75px;    background-color:red;    border:1px solid black;}div#div2{    transform:rotateX(120deg);    -webkit-transform:rotateX(120deg); /* Safari and Chrome */}</style></head><body><p><b>注意:</b> Internet Explorer 9 (以及更早版本的浏览器) 和 Opera 不支持 rotateX 方法.</p><div>Hello. This is a DIV element.</div><div id="div2">Hello. This is a DIV element.</div></body></html>

rotateY() 方法

Rotate Y

rotateY()方法,围绕其在一个给定度数Y轴旋转的元素。

<!DOCTYPE html><html><head><meta charset="utf-8"> <title>W3C(51coolma.cn)</title> <style> div{	width:100px;	height:75px;	background-color:red;	border:1px solid black;}div#div2{	transform:rotateY(130deg);	-webkit-transform:rotateY(130deg); /* Safari and Chrome */}</style></head><body><p><b>注意:</b> Internet Explorer 9 (以及更早版本的浏览器) 和 Opera 不支持 rotateY方法.</p><div>Hello. This is a DIV element.</div><div id="div2">Hello. This is a DIV element.</div></body></html>

转换属性

下表列出了CSS3所有的转换属性:

属性描述CSS
transform向元素应用 2D 或 3D 转换。3
transform-origin允许你改变被转换元素的位置。3
transform-style规定被嵌套元素如何在 3D 空间中显示。3
perspective规定 3D 元素的透视效果。3
perspective-origin规定 3D 元素的底部位置。3
backface-visibility定义元素在不面对屏幕时是否可见。3

3D 转换方法

函数描述
matrix3d(n,n,n,n,n,n ,
n,n,n,n,n,n, n,n,n,n )
定义 3D 转换使用 16 个值的 4x4 矩阵。
translate3d(x,y,z)定义 3D 转化。
translateX(x)定义 3D 转化仅使用用于 X 轴的值。
translateY(y)定义 3D 转化仅使用用于 Y 轴的值。
translateZ(z)定义 3D 转化仅使用用于 Z 轴的值。
scale3d(x,y,z)定义 3D 缩放转换。
scaleX(x)定义 3D 缩放转换通过给定一个 X 轴的值。
scaleY(y)定义 3D 缩放转换通过给定一个 Y 轴的值。
scaleZ(z)定义 3D 缩放转换通过给定一个 Z 轴的值。
rotate3d(x,y,z,angle)定义 3D 旋转。
rotateX(angle)定义沿 X 轴的 3D 旋转。
rotateY(angle)定义沿 Y 轴的 3D 旋转。
rotateZ(angle)定义沿 Z 轴的 3D 旋转。
perspective(n)定义 3D 转换元素的透视视图。

通过学习3D转化,可以让您的样式更加立体化,W3Cschool建议您最好能够收藏本篇文章,或者保存到本地,方便以后查找!


CSS3中,我们为了添加某种效果可以从一种样式转变到另一个的时候,无需使用Flash动画或JavaScript。用鼠标移过下面的元素:


用鼠标移过下面的元素:

CSS3
过渡

浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性     
transition26.0
4.0 -webkit-
10.016.0
4.0 -moz-
6.1
3.1 -webkit-
12.1
10.5 -o-
transition-delay26.0
4.0 -webkit-
10.016.0
4.0 -moz-
6.1
3.1 -webkit-
12.1
10.5 -o-
transition-duration26.0
4.0 -webkit-
10.016.0
4.0 -moz-
6.1
3.1 -webkit-
12.1
10.5 -o-
transition-property26.0
4.0 -webkit-
10.016.0
4.0 -moz-
6.1
3.1 -webkit-
12.1
10.5 -o-
transition-timing-function26.0
4.0 -webkit-
10.016.0
4.0 -moz-
6.1
3.1 -webkit-
12.1
10.5 -o-

它是如何工作?

CSS3 过渡是元素从一种样式逐渐改变为另一种的效果。

要实现这一点,必须规定两项内容:

  • 指定要添加效果的CSS属性

  • 指定效果的持续时间。

OperaSafariChromeFirefoxInternet Explorer

实例

应用于宽度属性的过渡效果,时长为 2 秒:

div
{
transition: width 2s;
-webkit-transition: width 2s; /* Safari */
}  

注意: 如果未指定的期限,transition将没有任何效果,因为默认值是0。

指定的CSS属性的值更改时效果会发生变化。一个典型CSS属性的变化是用户鼠标放在一个元素上时:

OperaSafariChromeFirefoxInternet Explorer

实例

规定当鼠标指针悬浮(:hover)于 <div>元素上时:

div:hover
{
width:300px;
}  

尝试一下 »

注意: 当鼠标光标移动到该元素时,它逐渐改变它原有样式。


多项改变

要添加多个样式的变换效果,添加的属性由逗号分隔:

OperaSafariChromeFirefoxInternet Explorer

实例

添加了宽度,高度和转换效果:

div
{
transition: width 2s, height 2s, transform 2s;
-webkit-transition: width 2s, height 2s, -webkit-transform 2s;
}  

尝试一下 »



过渡属性

下表列出了所有的过渡属性:

属性描述CSS
transition简写属性,用于在一个属性中设置四个过渡属性。3
transition-property规定应用过渡的 CSS 属性的名称。3
transition-duration定义过渡效果花费的时间。默认是 0。3
transition-timing-function规定过渡效果的时间曲线。默认是 "ease"。3
transition-delay规定过渡效果何时开始。默认是 0。3

下面的两个例子设置所有过渡属性:

OperaSafariChromeFirefoxInternet Explorer

实例

在一个例子中使用所有过渡属性:

div
{
transition-property: width;
transition-duration: 1s;
transition-timing-function: linear;
transition-delay: 2s;
/* Safari */
-webkit-transition-property:width;
-webkit-transition-duration:1s;
-webkit-transition-timing-function:linear;
-webkit-transition-delay:2s;
}

尝试一下 »
OperaSafariChromeFirefoxInternet Explorer

实例

与上面的例子相同的过渡效果,但是使用了简写的 transition 属性:

div
{
transition: width 1s linear 2s;
/* Safari */
-webkit-transition:width 1s linear 2s;
}  

尝试一下 »

如果您对于CSS3过渡还是不太了解,建议您通过上文的“尝试一下”进行多加练习。


CSS3,我们可以创建动画,它可以取代许多网页动画图像,Flash动画,和JAVAScripts。


CSS3
动画

CSS3 @keyframes 规则

表格中的数字表示支持该属性的第一个浏览器版本号。

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


浏览器支持

Internet Explorer 10、Firefox 以及 Opera 支持 @keyframes 规则和 animation 属性。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性     
@keyframes43.0
4.0 -webkit-
10.016.0
5.0 -moz-
9.0
4.0 -webkit-
30.0
15.0 -webkit-
12.0 -o-
animation43.0
4.0 -webkit-
10.016.0
5.0 -moz-
9.0
4.0 -webkit-
30.0
15.0 -webkit-
12.0 -o-

OperaSafariChromeFirefoxInternet Explorer

实例

@keyframes myfirst
{
from {background: red;}
to {background: yellow;}
}

@-webkit-keyframes myfirst /* Safari and Chrome */
{
from {background: red;}
to {background: yellow;}
}



CSS3 动画

当在@keyframe创建动画,把它绑定到一个选择器,否则动画不会有任何效果。

指定至少这两个CSS3的动画属性绑定向一个选择器:

  • 规定动画的名称

  • 规定动画的时长

OperaSafariChromeFirefoxInternet Explorer

实例

把 "myfirst" 动画捆绑到 div 元素,时长:5 秒:

div
{
animation: myfirst 5s;
-webkit-animation: myfirst 5s; /* Safari and Chrome */
}  

尝试一下 »

注意: 您必须定义动画的名称和动画的持续时间。如果省略的持续时间,动画将无法运行,因为默认值是0。


CSS3动画是什么?

动画是使元素从一种样式逐渐变化为另一种样式的效果。

您可以改变任意多的样式任意多的次数。

请用百分比来规定变化发生的时间,或用关键词 "from" 和 "to",等同于 0% 和 100%。

0% 是动画的开始,100% 是动画的完成。

为了得到最佳的浏览器支持,您应该始终定义 0% 和 100% 选择器。

OperaSafariChromeFirefoxInternet Explorer

实例

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

@keyframes myfirst
{
0%   {background: red;}
25%  {background: yellow;}
50%  {background: blue;}
100% {background: green;}
}

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

尝试一下 »


OperaSafariChromeFirefoxInternet Explorer

实例

改变背景色和位置:

@keyframes myfirst
{
0%   {background: red; left:0px; top:0px;}
25%  {background: yellow; left:200px; top:0px;}
50%  {background: blue; left:200px; top:200px;}
75%  {background: green; left:0px; top:200px;}
100% {background: red; left:0px; top:0px;}
}

   @-webkit-keyframes myfirst /* Safari and Chrome */
{
0%   {background: red; left:0px; top:0px;}
25%  {background: yellow; left:200px; top:0px;}
50%  {background: blue; left:200px; top:200px;}
75%  {background: green; left:0px; top:200px;}
100% {background: red; left:0px; top:0px;}
}

尝试一下 »



CSS3的动画属性

下面的表格列出了 @keyframes 规则和所有动画属性:

属性描述CSS
@keyframes规定动画。3
animation所有动画属性的简写属性,除了 animation-play-state 属性。3
animation-name规定 @keyframes 动画的名称。3
animation-duration规定动画完成一个周期所花费的秒或毫秒。默认是 0。3
animation-timing-function规定动画的速度曲线。默认是 "ease"。3
animation-delay规定动画何时开始。默认是 0。3
animation-iteration-count规定动画被播放的次数。默认是 1。3
animation-direction规定动画是否在下一周期逆向地播放。默认是 "normal"。3
animation-play-state规定动画是否正在运行或暂停。默认是 "running"。3

下面两个例子设置所有动画属性:

OperaSafariChromeFirefoxInternet Explorer

实例

运行myfirst动画,设置所有的属性:

div
{
animation-name: myfirst;
animation-duration: 5s;
animation-timing-function: linear;
animation-delay: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-play-state: running;
/* Safari and Chrome: */
-webkit-animation-name: myfirst;
-webkit-animation-duration: 5s;
-webkit-animation-timing-function: linear;
-webkit-animation-delay: 2s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
-webkit-animation-play-state: running;
}

尝试一下 »


OperaSafariChromeFirefoxInternet Explorer

实例

与上面的动画相同,但是使用了简写的动画 animation 属性:

div
{
animation: myfirst 5s linear 2s infinite alternate;
/* Safari and Chrome: */
-webkit-animation: myfirst 5s linear 2s infinite alternate;
}

尝试一下 »

上面两个例子设置所有动画属性,您最好都看几遍,并且自己操作一下!


通过 CSS3,您能够创建多个列来对文本进行布局 - 就像报纸那样,您可以收藏文章,需要用到的时候看一看。

在本章中,您将学习如下多列属性:

  • column-count

  • column-gap

  • column-rule

  • column-rule-color
  • column-rule-style
  • column-rule-width
  • column-width

浏览器支持

表格中的数字表示支持该方法的第一个浏览器的版本号。

紧跟在数字后面的 -webkit- 或 -moz- 为指定浏览器的前缀。

属性     
column-count4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit-
11.1
column-gap4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit-
11.1
column-rule4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit-
11.1
column-rule-color4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit
11.1
column-rule-style4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit
11.1
column-rule-width4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit
11.1
column-width4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit
11.1

CSS3创建多列

column-count属性指定元素的列数应分为:

OperaSafariChromeFirefoxInternet Explorer

实例

划分成三列的div元素的文本:

div
{
-moz-column-count:3; /* Firefox */
-webkit-column-count:3; /* Safari and Chrome */
column-count:3;
}

尝试一下 »



CSS3的指定列之间的差距

column-gap属性指定的列之间的差距:

OperaSafariChromeFirefoxInternet Explorer

实例

指定列之间40个像素差距:

div
{
-moz-column-gap:40px; /* Firefox */
-webkit-column-gap:40px; /* Safari and Chrome */
column-gap:40px;
}

尝试一下 »



CSS3列规则

column-rule属性设置列之间的宽度,样式和颜色。

OperaSafariChromeFirefoxInternet Explorer

实例

指定列之间的宽度,样式和颜色的规则:

div
{
-moz-column-rule:3px outset #ff00ff; /* Firefox */
-webkit-column-rule:3px outset #ff00ff; /* Safari and Chrome */
column-rule:3px outset #ff00ff;
}

尝试一下 »



CSS3 新多列属性

下表列出了所有 CSS3 的新多列属性,点击属性可以查看更多内容以及用法:

属性说明CSS
column-count指定元素应分为的列数3
column-fill指定如何填充列3
column-gap指定列之间差距3
column-rule一个用于设置所有列规则的简写属性3
column-rule-color指定的列之间颜色规则3
column-rule-style指定的列之间的样式规则3
column-rule-width指定的列之间的宽度规则3
column-span指定一个元素应该横跨多少列3
column-width指定列的宽度3
columns缩写属性设置列宽和列数3

 


在 CSS3 中, 增加了一些新的用户界面特性来调整元素尺寸,框尺寸和外边框。

在本章中,您将了解以下的用户界面属性:

  • resize

  • box-sizing

  • outline-offset


浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性     
resize4.0不兼容5.0
4.0 -moz-
4.015.0
box-sizing10.0
4.0 -webkit-
8.029.0
2.0 -moz-
5.1
3.1 -webkit-
9.5
outline-offset4.0不兼容5.0
4.0 -moz-
4.09.5

CSS3 调整尺寸(Resizing)

CSS3中,resize属性指定一个元素是否应该由用户去调整大小。

这个 div 元素由用户调整大小。 (在 Firefox 4+, Chrome, 和 Safari中)

CSS代码如下:

OperaSafariChromeFirefoxInternet Explorer

实例

由用户指定一个div元素尺寸大小:

div
{
    resize:both;
    overflow:auto;
}

尝试一下 »



CSS3 方框大小调整(Box Sizing)

box-sizing 属性允许您以确切的方式定义适应某个区域的具体内容。

OperaSafariChromeFirefoxInternet Explorer

实例

规定两个并排的带边框方框:

div
{
    box-sizing:border-box;
    -moz-box-sizing:border-box; /* Firefox */
    width:50%;
    float:left;
}

尝试一下 »



CSS3 外形修饰(outline-offset )

outline-offset 属性对轮廓进行偏移,并在超出边框边缘的位置绘制轮廓。

轮廓与边框有两点不同:

  • 轮廓不占用空间

  • 轮廓可能是非矩形

这个 div 在边框之外 15 像素处有一个轮廓。

The CSS code is as follows:

OperaSafariChromeFirefoxInternet Explorer

实例

规定边框边缘之外 15 像素处的轮廓:

div
{
    border:2px solid black;
    outline:2px solid red;
    outline-offset:15px;
}

尝试一下 »



新的用户界面特性

下表中为CSS3的新用户界面属性,您可以点击对应的属性,了解到更多的内容以及对应属性的用法等等:

属性说明CSS
appearance允许您使一个元素的外观像一个标准的用户界面元素3
box-sizing允许你以适应区域而用某种方式定义某些元素3
iconProvides the author the ability to style an element with an iconic equivalent3
nav-down指定在何处使用箭头向下导航键时进行导航3
nav-index指定一个元素的Tab的顺序3
nav-left指定在何处使用左侧的箭头导航键进行导航3
nav-right指定在何处使用右侧的箭头导航键进行导航3
nav-up指定在何处使用箭头向上导航键时进行导航3
outline-offset外轮廓修饰并绘制超出边框的边缘3
resize指定一个元素是否是由用户调整大小3


本章节将为大家介绍如何使用 CSS 来布局图片。


圆角图片

实例

圆角图片:

img {
    border-radius: 8px;
}

尝试一下 »

实例

椭圆形图片:

img {
    border-radius: 50%;
}

尝试一下 »

缩略图

我们使用 border 属性来创建缩略图。

实例

img {
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 5px;
}

<img src="paris.jpg" alt="Paris">

尝试一下 »

实例

a {
    display: inline-block;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 5px;
    transition: 0.3s;
}

a:hover {
    box-shadow: 0 0 2px 1px rgba
    (0, 140, 186, 0.5);

}

<a href="paris.jpg">
  <img src="paris.jpg" alt="Paris">
</a>

尝试一下 »

响应式图片

响应式图片会自动适配各种尺寸的屏幕。

实例中,你可以通过重置浏览器大小查看效果:

Norway

如果你需要自由缩放图片,且图片放大的尺寸不大于其原始的最大值,则可使用以下代码:

实例

img {
    max-width: 100%;
    height: auto;
}

尝试一下 »

提示: Web 响应式设计更多内容可以参考CSS 响应式设计教程


图片文本

如何定位图片文本:

实例

Norway
左下角
左上角
右上角
右下角
居中

尝试一下:

左上角 » 右上角 » 左下角 » 右下角 » 居中 »

卡片式图片

实例

div.polaroid {
    width: 80%;
    background-color: white;
    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}

img {width: 100%}

div.container {
    text-align: center;
    padding: 10px 20px;
}

尝试一下 »

图片滤镜

CSS filter 属性用为元素添加可视效果 (例如:模糊与饱和度) 。

注意: Internet Explorer或 Safari 5.1 (及更早版本) 不支持该属性。

实例

修改所有图片的颜色为黑白 (100% 灰度):

img {
    -webkit-filter: grayscale(100%); /* Chrome, Safari, Opera */
    filter: grayscale(100%);
}

尝试一下 »

提示: 访问 CSS 滤镜参考手册 查看更多内容。


响应式图片相册

实例

.responsive {
    padding: 0 6px;
    float: left;
    width: 24.99999%;
}

@media only screen and (max-width: 700px){
    .responsive {
        width: 49.99999%;
        margin: 6px 0;
    }
}

@media only screen and (max-width: 500px){
    .responsive {
        width: 100%;
    }
}

尝试一下 »

图片 Modal(模态)

本实例演示了如何结合 CSS 和 JavaScript 来一起渲染图片。

首先,我们使用 CSS 来创建 modal 窗口 (对话框), 默认是隐藏的。

然后,我们使用 JavaScript 来显示模态窗口,当我们点击图片时,图片会在弹出的窗口中显示:

实例

// 获取模态窗口
var modal = document.getElementById('myModal');

// 获取图片模态框,alt 属性作为图片弹出中文本描述
var img = document.getElementById('myImg');
var modalImg = document.getElementById("img01");
var captionText = document.getElementById("caption");
img.onclick = function(){
    modal.style.display = "block";
    modalImg.src = this.src;
    modalImg.alt = this.alt;
    captionText.innerHTML = this.alt;
}

// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];

// When the user clicks on <span> (x), close the modal
span.onclick = function() {
    modal.style.display = "none";
}

尝试一下 »

本章节我们为大家介绍使用 CSS 来制作按钮。


基本按钮样式

CSS 实例

.button {
    background-color: #4CAF50; /* Green */
    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
}

尝试一下 »

按钮颜色

       


我们可以使用 background-color 属性来设置按钮颜色:

CSS 实例

.button1 {background-color: #4CAF50;} /* Green */
.button2{background-color: #008CBA;} /* Blue */
.button3 {background-color:#f44336;} /* Red */
.button4 {background-color: #e7e7e7; color: black;} /* Gray */
.button5{background-color: #555555;} /* Black */

尝试一下 »

按钮大小

       

我们可以使用 font-size 属性来设置按钮大小:

CSS 实例

.button1 {font-size: 10px;}
.button2 {font-size: 12px;}
.button3{font-size: 16px;}
.button4 {font-size: 20px;}
.button5 {font-size: 24px;}

尝试一下 »

圆角按钮

2px4px8px12px50%

我们可以使用 border-radius 属性来设置圆角按钮:

CSS 实例

.button1 {border-radius: 2px;}
.button2 {border-radius: 4px;}
.button3{border-radius: 8px;}
.button4 {border-radius: 12px;}
.button5 {border-radius: 50%;}

尝试一下 »

按钮边框颜色

绿蓝红灰黑

我们可以使用 border 属性设置按钮边框颜色:

CSS 实例

.button1 {
    background-color: white;
    color: black;
   border: 2px solid #4CAF50; /* Green */
}
...

尝试一下 »

鼠标悬停按钮

绿蓝红灰黑
绿蓝红灰黑

我们可以使用 :hover 选择器来修改鼠标悬停在按钮上的样式。

提示: 我们可以使用 transition-duration 属性来设置 "hover" 效果的速度:

CSS 实例

.button {
    -webkit-transition-duration: 0.4s; /* Safari */
   transition-duration: 0.4s;
}

.button:hover {
   background-color: #4CAF50; /* Green */
    color: white;
}
...

尝试一下 »

按钮阴影

阴影按钮鼠标悬停后显示阴影

我们可以使用 box-shadow 属性来为按钮添加阴影:

CSS 实例

.button1 {
    box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2), 0 6px 20px 0rgba(0,0,0,0.19);
}

.button2:hover {
    box-shadow: 0 12px16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);
}

尝试一下 »

禁用按钮

正常按钮禁用按钮

我们可以使用 opacity 属性为按钮添加透明度 (看起来类似"disabled" 属性效果)。

提示: 我们可以添加 cursor 属性并设置为"not-allowed" 来设置一个禁用的图片:

CSS 实例

.disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

尝试一下 »

按钮宽度

250px
50%100%

默认情况下,按钮的大小有按钮上的文本内容决定( 根据文本内容匹配长度 )。 我们可以使用 width 属性来设置按钮的宽度:

提示: 如果要设置固定宽度可以使用像素 (px) 为单位,如果要设置响应式的按钮可以设置为百分比。

CSS 实例

.button1 {width: 250px;}
.button2 {width: 50%;}
.button3 {width:100%;}

尝试一下 »

按钮组

ButtonButtonButtonButton


移除外边距并添加 float:left 来设置按钮组:

CSS 实例

.button {
    float: left;
}

尝试一下 »

带边框按钮组

ButtonButtonButtonButton


我们可以使用 border 属性来设置带边框的按钮组:

CSS 实例

.button {
    float: left;
    border: 1pxsolid green
}

尝试一下 »

按钮动画

CSS 实例

鼠标移动到按钮上后添加箭头标记:

Hover

尝试一下 »

CSS 实例

点击时添加 "波纹" 效果:

Click

尝试一下 »

CSS 实例

点击时添加 "压下" 效果:

Click

尝试一下 »

本章节我们将为大家介绍如何通过使用 CSS 来创建分页的实例。


简单分页

如果你的网站有很多个页面,你就需要使用分页来为每个页面做导航。

以下实例演示了如何使用 HTML 和 CSS 来创建分页:

CSS 实例

ul.pagination {
    display: inline-block;
    padding: 0;
    margin: 0;
}

ul.pagination li {display: inline;}

ul.pagination li a {
    color: black;
    float: left;
    padding: 8px 16px;
    text-decoration: none;
}

尝试一下 »

点击及鼠标悬停分页样式

如果点击当前页,可以使用 .active 来设置当期页样式,鼠标悬停可以使用 :hover 选择器来修改样式:

CSS 实例

ul.pagination li a.active {
    background-color: #4CAF50;
    color: white;
}

ul.pagination li a:hover:not(.active) {background-color: #ddd;}

尝试一下 »

圆角样式

可以使用 border-radius 属性为选中的页码来添加圆角样式:

CSS 实例

ul.pagination li a {
    border-radius: 5px;
}

ul.pagination li a.active {
    border-radius: 5px;
}

尝试一下 »

鼠标悬停过渡效果

我们可以通过添加 transition 属性来为鼠标移动到页码上时添加过渡效果 to the page links to create a transition effect on hover:

CSS 实例

ul.pagination li a {
    transition: background-color .3s;
}

尝试一下 »

带边框分页

我们可以使用 border 属性来添加带边框分页:

CSS 实例

ul.pagination li a {
    border: 1px solid #ddd; /* Gray */
}

尝试一下 »

圆角边框

提示: 在第一个分页链接和最后一个分页链接添加圆角:

CSS 实例

.pagination li:first-child a {
    border-top-left-radius: 5px;
    border-bottom-left-radius: 5px;
}

.pagination li:last-child a {
    border-top-right-radius: 5px;
    border-bottom-right-radius: 5px;
}

尝试一下 »

分页间隔

提示: 你可以使用 margin 属性来为每个页码直接添加空格:

CSS 实例

ul.pagination li a {
    margin: 0 4px; /* 0 is for top and bottom. Feel free to change it */
}

尝试一下 »

分页字体大小

我们可以使用 font-size 属性来设置分页的字体大小:

CSS 实例

ul.pagination li a {
    font-size: 22px;
}

尝试一下 »

居中分页

如果要让分页居中,可以在容器元素上 (如 <div>) 添加 text-align:center 样式:

CSS 实例

div.center {
    text-align: center;
}

尝试一下 »

更多实例

CSS 实例


尝试一下 »

面包屑导航

另外一种导航为面包屑导航,实例如下:

CSS 实例

ul.breadcrumb {
    padding: 8px 16px;
    list-style: none;
    background-color: #eee;
}

ul.breadcrumb li {display: inline;}

ul.breadcrumb li+li:before {
    padding: 8px;
    color: black;
    content: "/0a0";
}

尝试一下 »


CSS3 box-sizing 属性可以设置 width 和 height 属性中包含了 padding(内边距) 和 border(边框)。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器的版本号。

紧跟在数字后面的 -webkit- 或 -moz- 为指定浏览器的前缀。

属性     
box-sizing10.0
4.0 -webkit-
8.029.0
2.0 -moz-
5.1
3.1 -webkit-
9.5

不使用 CSS3 box-sizing 属性

默认情况下,元素的宽度与高度计算方式如下:

width(宽) + padding(内边距) + border(边框) = 元素实际宽度

height(高) + padding(内边距) + border(边框) = 元素实际高度

这就意味着我们在设置元素的 width/height 时,元素真实展示的高度与宽度会更大(因为元素的边框与内边距也会计算在 width/height 中)。

这个是个较小的框 (width 为 300px ,height 为 100px)。

这个是个较大的框 (width 为 300px ,height 为 100px)。

以上两个 <div> 元素虽然宽度与高度设置一样,但真实展示的大小不一致,因为 div2 指定了内边距:

实例

.div1 {
    width: 300px;
    height:100px;
    border: 1px solid blue;
}

.div2 {
    width: 300px;
   height: 100px;
    padding: 50px;
   border: 1px solid red;
}

尝试一下 »

使用这种方式如果想要获得较小的那个框且包含内边距,就不得不考虑到边框和内边距的宽度。

CSS3 的 box-sizing 属性很好的解决了这个问题。


使用 CSS3 box-sizing 属性

CSS3 box-sizing 属性在一个元素的 width 和 height 中包含 padding(内边距) 和 border(边框)。

如果在元素上设置了 box-sizing: border-box; 则 padding(内边距) 和 border(边框) 也包含在 width 和 height 中:

两个 div 现在是一样大小的!

W3Cschool教程!

以下是两个 <div> 元素添加 box-sizing: border-box; 属性的简单实例。

实例

.div1 {
    width: 300px;
    height:100px;
    border: 1px solid blue;
   box-sizing: border-box;
}

.div2 {
    width: 300px;
   height: 100px;
    padding: 50px;
   border: 1px solid red;
    box-sizing: border-box;
}

尝试一下 »

从结果上看 box-sizing: border-box; 效果更好,也正是很多开发人员需要的效果。

以下代码可以让所有元素以更直观的方式展示大小。很多浏览器已经支持 box-sizing: border-box; (但是并非所有 - 这就是为什么input 和 text 元素设置了 width: 100%; 后的宽度却不一样)。

所有元素使用 box-sizing 是比较推荐的:

实例

* {
    box-sizing: border-box;
}

尝试一下 »

弹性盒子是 CSS3 的一种新的布局模式。

CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。

引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器的版本号。

紧跟在数字后面的 -webkit- 或 -moz- 为指定浏览器的前缀。

属性     
Basic support
(single-line flexbox)
29.0
21.0 -webkit-
11.022.0
18.0 -moz-
6.1 -webkit-12.1 -webkit-
Multi-line flexbox29.0
21.0 -webkit-
11.028.06.1 -webkit-17.0
15.0 -webkit-
12.1

CSS3 弹性盒子内容

弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。

弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。

弹性容器内包含了一个或多个弹性子元素。

注意: 弹性容器外及弹性子元素内是正常渲染的。弹性盒子只定义了弹性子元素如何在弹性容器内布局。

弹性子元素通常在弹性盒子内一行显示。默认情况每个容器只有一行。

以下元素展示了弹性子元素在一行内显示,从左到右:

实例

<!DOCTYPE html>
<html>
<head>
<style>
.flex-container {
    display: -webkit-flex;
    display: flex;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

.flex-item{
    background-color: cornflowerblue;
    width: 100px;
    height: 100px;
   margin: 10px;
}
</style>
</head>
<body>

<div class="flex-container">
  <div class="flex-item">flex item 1</div>
  <div class="flex-item">flex item 2</div>
  <div class="flex-item">flex item 3</div>
</div>

</body>
</html>

尝试一下 »

当然我们可以修改排列方式。

如果我们设置 direction 属性为 rtl (right-to-left),弹性子元素的排列方式也会改变,页面布局也跟着改变:

实例

body {
    direction: rtl;
}

.flex-container {
    display: -webkit-flex;
    display: flex;
    width:400px;
    height: 250px;
    background-color: lightgrey;
}

.flex-item {
    background-color: cornflowerblue;
    width: 100px;
    height: 100px;
   margin: 10px;
}

尝试一下 »

flex-direction

flex-direction 顺序指定了弹性子元素在父容器中的位置。

语法

flex-direction: row | row-reverse | column | column-reverse

flex-direction的值有:

  • row:横向从左到右排列(左对齐),默认的排列方式。
  • row-reverse:反转横向排列(右对齐,从后往前排,最后一项排在最前面。
  • column:纵向排列。
  • column-reverse:反转纵向排列,从后往前排,最后一项排在最上面。

以下实例演示了 row-reverse 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: row-reverse;
    flex-direction: row-reverse;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}


尝试一下 »

以下实例演示了 column 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: column;
    flex-direction: column;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 column-reverse 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: column-reverse;
    flex-direction: column-reverse;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

justify-content 属性

内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis,也可理解为横轴)对齐。

 内容对齐可以理解为弹性盒子的Y轴坐标不变,盒子只会有X轴的变化,所以实际上内容对齐用于设置列对齐。像flex-start效果就有点像左对齐。

justify-content 语法如下:

justify-content: flex-start | flex-end | center | space-between | space-around

各个值解析:

  • flex-start:

    弹性项目向行头紧挨着填充。这个是默认值。第一个弹性项的main-start外边距边线被放置在该行的main-start边线,而后续弹性项依次平齐摆放。

  • flex-end:

    弹性项目向行尾紧挨着填充。第一个弹性项的main-end外边距边线被放置在该行的main-end边线,而后续弹性项依次平齐摆放。

  • center:

    弹性项目居中紧挨着填充。(如果剩余的自由空间是负的,则弹性项目将在两个方向上同时溢出)。

  • space-between:

    弹性项目平均分布在该行上。如果剩余空间为负或者只有一个弹性项,则该值等同于flex-start。否则,第1个弹性项的外边距和行的main-start边线对齐,而最后1个弹性项的外边距和行的main-end边线对齐,然后剩余的弹性项分布在该行上,相邻项目的间隔相等。

  • space-around:

    弹性项目平均分布在该行上,两边留有一半的间隔空间。如果剩余空间为负或者只有一个弹性项,则该值等同于center。否则,弹性项目沿该行分布,且彼此间隔相等(比如是20px),同时首尾两边和弹性容器之间留有一半的间隔(1/2*20px=10px)。

效果图展示:


以下实例演示了 flex-end 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: flex-end;
    justify-content: flex-end;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 center 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: center;
    justify-content: center;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 space-between 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: space-between;
    justify-content: space-between;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 space-around 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: space-around;
    justify-content: space-around;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

align-items 属性

align-items (项目对齐)设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式。

 项目对齐可以理解为弹性盒子的X轴坐标不变,盒子只会有Y轴的变化,所以实际上内容对齐用于设置行对齐。

align-items属性可以理解为纵向的justify-content 

像center效果就是垂直方向的居中。

语法

align-items: flex-start | flex-end | center | baseline | stretch

各个值解析:

  • flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
  • flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
  • center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
  • baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。
  • stretch:如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。

以下实例演示了 stretch(默认值) 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: stretch;
    align-items: stretch;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 flex-start 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: flex-start;
    align-items: flex-start;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 flex-end 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: flex-end;
    align-items: flex-end;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 center 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: center;
    align-items: center;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 baseline 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: baseline;
    align-items: baseline;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

flex-wrap 属性

flex-wrap 属性用于指定弹性盒子的子元素换行方式。

语法

flex-wrap: nowrap|wrap|wrap-reverse|initial|inherit; 

各个值解析:

  • nowrap - 默认,弹性容器为单行。该情况下弹性子项可能会溢出容器。
  • wrap - 弹性容器为多行。该情况下弹性子项溢出的部分会被放置到新行,子项内部会发生断行
  • wrap-reverse -反转 wrap 排列。

以下实例演示了 nowrap 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: nowrap;
    flex-wrap: nowrap;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 wrap 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 wrap-reverse 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap-reverse;
    flex-wrap: wrap-reverse;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

align-content 属性

align-content 属性用于修改 flex-wrap 属性的行为。类似于 align-items, 但它不是设置弹性子元素的对齐,而是设置各个行的对齐。

语法

align-content: flex-start | flex-end | center | space-between | space-around | stretch

各个值解析:

  • stretch - 默认。各行将会伸展以占用剩余的空间。
  • flex-start - 各行向弹性盒容器的起始位置堆叠。
  • flex-end - 各行向弹性盒容器的结束位置堆叠。
  • center -各行向弹性盒容器的中间位置堆叠。
  • space-between -各行在弹性盒容器中平均分布。
  • space-around - 各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。

以下实例演示了 center 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    -webkit-align-content: center;
    align-content: center;
    width: 300px;
    height: 300px;
    background-color: lightgrey;
}

尝试一下 »

弹性子元素属性

排序

语法

order: 

各个值解析:

  • <integer>:没有设置order属性的顺序值默认为0.

    负值在前,然后默认为0,正值最后,顺序值越小越在前面

order 属性设置弹性容器内弹性子元素的属性:

实例

.flex-item {
    background-color: cornflowerblue;
    width: 100px;
    height: 100px;
    margin: 10px;
}

.first {
    -webkit-order: -1;
    order: -1;
}

尝试一下 »

对齐

设置"margin"值为"auto"值,自动获取弹性容器中剩余的空间。所以设置垂直方向margin值为"auto",可以使弹性子元素在弹性容器的两上轴方向都完全集中。

以下实例在第一个弹性子元素上设置了 margin-right: auto; 。 它将剩余的空间放置在元素的右侧:

实例

.flex-item {
    background-color: cornflowerblue;
    width: 75px;
    height: 75px;
    margin: 10px;
}

.flex-item:first-child {
    margin-right: auto;
}

尝试一下 »

完美的居中

以下实例将完美解决我们平时碰到的居中问题。

使用弹性盒子,居中变的很简单,只想要设置 margin: auto; 可以使得弹性子元素在两上轴方向上完全居中:

实例

.flex-item {
    background-color: cornflowerblue;
    width: 75px;
    height: 75px;
    margin: auto;
}

尝试一下 »

align-self

align-self 属性用于设置弹性元素自身在侧轴(纵轴)方向上的对齐方式。

语法

align-self: auto | flex-start | flex-end | center | baseline | stretch

各个值解析:

  • auto:如果'align-self'的值为'auto',则其计算值为元素的父元素的'align-items'值,如果其没有父元素,则计算值为'stretch'。
  • flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
  • flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
  • center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
  • baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。
  • stretch:如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。

以下实例演示了弹性子元素上 align-self 不同值的应用效果:

实例

.flex-item {
    background-color: cornflowerblue;
    width: 60px;
    min-height: 100px;
    margin: 10px;
}

.item1 {
    -webkit-align-self: flex-start;
    align-self: flex-start;
}
.item2 {
    -webkit-align-self: flex-end;
    align-self: flex-end;
}

.item3 {
    -webkit-align-self: center;
    align-self: center;
}

.item4 {
    -webkit-align-self: baseline;
    align-self: baseline;
}

.item5 {
    -webkit-align-self: stretch;
    align-self: stretch;
}

尝试一下 »

flex

flex 属性用于指定弹性子元素如何分配空间。

语法

flexnone | [ flex-grow ] || [ flex-shrink ] || [ flex-basis ]

各个值解析:

  • none:none关键字的计算值为: 0 0 auto
  • [ flex-grow ]:定义弹性盒子元素的扩展比率。
  • [ flex-shrink ]:定义弹性盒子元素的收缩比率。
  • [ flex-basis ]:定义弹性盒子元素的默认基准值。

以下实例中,第一个弹性子元素占用了 2/4 的空间,其他两个各占 1/4 的空间:

实例

.flex-item {
    background-color: cornflowerblue;
    margin: 10px;
}

.item1 {
    -webkit-flex: 2;
    flex: 2;
}

.item2 {
    -webkit-flex: 1;
    flex: 1;
}

.item3 {
    -webkit-flex: 1;
    flex: 1;
}

尝试一下 »

更多实例

使用弹性盒子创建响应式页面


CSS3 弹性盒子属性

下表列出了在弹性盒子中常用到的属性:

属性描述
display指定 HTML 元素盒子类型。
flex-direction指定了弹性容器中子元素的排列方式
justify-content设置弹性盒子元素在主轴(横轴)方向上的对齐方式。
align-items设置弹性盒子元素在侧轴(纵轴)方向上的对齐方式。
flex-wrap设置弹性盒子的子元素超出父容器时是否换行。
align-content修改 flex-wrap 属性的行为,类似align-items, 但不是设置子元素对齐,而是设置行对齐
flex-flowflex-direction 和 flex-wrap 的简写
order设置弹性盒子的子元素排列顺序。
align-self在弹性子元素上使用。覆盖容器的 align-items 属性。
flex设置弹性盒子的子元素如何分配空间。


CSS2 多媒体类型

@media 规则在 CSS2 中有介绍,针对不同媒体类型可以定制不同的样式规则。

例如:你可以针对不同的媒体类型(包括显示器、便携设备、电视机,等等)设置不同的样式规则。

但是这些多媒体类型在很多设备上支持还不够友好。


CSS3 多媒体查询

CSS3 的多媒体查询继承了 CSS2 多媒体类型的所有思想: 取代了查找设备的类型,CSS3 根据设置自适应显示。

媒体查询可用于检测很多事情,例如:

  • viewport(视窗) 的宽度与高度
  • 设备的宽度与高度
  • 朝向 (智能手机横屏,竖屏) 。
  • 分辨率

目前很多针对苹果手机,Android 手机,平板等设备都会使用到多媒体查询。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器的版本号。

属性     
@media21.09.03.54.09.0

多媒体查询语法

多媒体查询由多种媒体组成,可以包含一个或多个表达式,表达式根据条件是否成立返回 true 或 false。

@media not|only mediatype and (expressions) {    CSS-Code;}

如果指定的多媒体类型匹配设备类型则查询结果返回 true,文档会在匹配的设备上显示指定样式效果。

除非你使用了 not 或 only 操作符,否则所有的样式会适应在所有设备上显示效果。

  • not: not是用来排除掉某些特定的设备的,比如 @media not print(非打印设备)。

  • only: 用来定某种特别的媒体类型。对于支持Media Queries的移动设备来说,如果存在only关键字,移动设备的Web浏览器会忽略only关键字并直接根据后面的表达式应用样式文件。对于不支持Media Queries的设备但能够读取Media Type类型的Web浏览器,遇到only关键字时会忽略这个样式文件。

  • all: 所有设备,这个应该经常看到。

你也可以在不同的媒体上使用不同的样式文件:

<link rel="stylesheet" media="mediatype and|not|only (expressions)" href="print.css">

CSS3 多媒体类型

描述
all用于所有多媒体类型设备
print用于打印机
screen用于电脑屏幕,平板,智能手机等。
speech用于屏幕阅读器

多媒体查询简单实例

使用多媒体查询可以在指定的设备上使用对应的样式替代原有的样式。

以下实例中在屏幕可视窗口尺寸大于 480 像素的设备上修改背景颜色:

实例

@media screen and (min-width: 480px) {
    body {
       background-color: lightgreen;
    }
}

尝试一下 »

以下实例在屏幕可视窗口尺寸大于 480 像素时将菜单浮动到页面左侧:

实例

@media screen and (min-width: 480px) {
    #leftsidebar {width: 200px; float: left;}
    #main {margin-left:216px;}
}

尝试一下 »

CSS3 @media 参考

更多多媒体查询内容可以参考@media 规则。

本章节我们将为大家演示一些多媒体查询实例。

开始之前我们先制作一个电子邮箱的链接列表。HTML 代码如下:

实例 1

<!DOCTYPE html>
<html>
<head>
<style>
ul {
    list-style-type: none;
}

ul li a {
    color: green;
    text-decoration: none;
    padding: 3px;
    display: block;
}
</style>
</head>
<body>

<ul>
  <li><a data-email="johndoe@example.com"href="mailto:johndoe@example.com">John Doe</a></li>
  <li><a data-email="marymoe@example.com"href="mailto:marymoe@example.com">Mary Moe</a></li>
  <li><a data-email="amandapanda@example.com"href="mailto:amandapanda@example.com">Amanda Panda</a></li>
</ul>

</body>
</html>

尝试一下 »

注意 data-email 属性。在 HTML 中我们可以使用带 data- 前缀的属性来存储信息。


520 到 699px 宽度 - 添加邮箱图标

当浏览器的宽度在 520 到 699px, 邮箱链接前添加邮件图标:

实例 2

@media screen and (max-width: 699px) and (min-width: 520px) {
    ul li a {
        padding-left: 30px;
        background: url(email-icon.png) left center no-repeat;
    }
}

尝试一下 »

700 到 1000px - 添加文本前缀信息

当浏览器的宽度在 700 到 1000px, 会在邮箱链接前添加 "Email: ":

实例 3

@media screen and (max-width: 1000px) and (min-width: 700px) {
    ul li a:before {
        content: "Email: ";
        font-style: italic;
        color: #666666;
    }
}

尝试一下 »

大于 1001px 宽度 - 添加邮件地址

当浏览器的宽度大于 1001px 时,会在链接后添加邮件地址接。

我们会使用 data- 属性来为每个人名后添加邮件地址:

实例 4

@media screen and (min-width: 1001px) {
    ul li a:after {
        content: " (" attr(data-email) ")";
        font-size: 12px;
        font-style: italic;
        color: #666666;
    }
}

尝试一下 »

大于 1151px 宽度 - 添加图标

当浏览器的宽度大于 1001px 时,会在人名前添加图标。

实例中,我们没有编写额外的查询块,我们可以在已有的查询媒体后使用逗号分隔来添加其他媒体查询 (类似 OR 操作符):

实例 5

@media screen and (max-width: 699px) and (min-width: 520px), (min-width: 1151px) {
    ul li a {
        padding-left: 30px;
        background: url(email-icon.png) left center no-repeat;
    }
}

尝试一下 »

更多实例

在一个网页的侧栏上使用邮件列表链接
该实例在网页的左侧栏添加了邮件链接列表。

CSS 用于控制网页的样式和布局。而CSS3是CSS技术的升级版本,CSS3语言开发是朝着模块化发展的。

CSS3 是最新的 CSS 标准。

本教程向您讲解CSS3 中的新特性以及关于CSS3的使用规则等。

接下来让我们开始学习 CSS3!


CSS3 Transforms



OperaSafariChromeFirefoxInternet Explorer

CSS3 实例

div
{
transform:rotate(30deg);
}

尝试一下 »

点击 "尝试一下" 按钮查看在线实例。

CSS3 参考手册

在W3Cschool教程中,我们提供完整的 CSS3 参考手册,包括所有属性和选择器的语法、实例、浏览器支持信息。

CSS 属性参考手册

CSS3 浏览器支持情况

CSS 选择器参考手册

CSS 颜色参考手册

从css3参考手册中,您可以轻松地查找到所有您需要的css3的属性、语法、实例等等,开始您的学习吧!

CSS3已经完全向后兼容,所以你就不必改变现有的设计。浏览器一般情况下都会支持CSS2。


CSS3 模块

CSS3被拆分为"模块"。旧规范已拆分成小块,还增加了新的规范。

一些最重要CSS3模块如下:


CSS3建议

W3C的CSS3规范目前已经开发的差不多,并且已经有许多新的CSS3属性已在现代浏览器使用,所以学习CSS3对于您是非常必要的,下面开始您的学习吧!


用CSS3,您可以创建圆角边框,添加阴影框,并作为边界的形象而不使用设计程序(如Photoshop等作图软件),极大地帮助您节省了很多时间。

而在本节中,您将了解以下的边框属性有:

  • border-radius

  • box-shadow

  • border-image(需要注意的是:该属性不支持ie浏览器)

Internet Explorer 9+ 支持 border-radius 和 box-shadow 属性。

Firefox、Chrome 以及 Safari 支持所有新的边框属性。

注释:对于 border-image,Safari 5 以及更老的版本需要前缀 -webkit-。

Opera 支持 border-radius 和 box-shadow 属性,但是对于 border-image 需要前缀 -o-。


CSS3 圆角

在CSS2中添加圆角是需要一些技巧的,尤其对于新手来说更加难了,所有我们不得不在每个角落使用不同的图像。

但是如果您在CSS3中,就能够很容易创建圆角。在CSS3中border-radius属性就是被用于创建圆角的:

以下示例即:圆角边框,您可以尝试着做一个!

实例

在div中添加圆角元素:

div
{
border:2px solid;
border-radius:25px;
}

尝试一下 »



CSS3盒阴影

CSS3中的box-shadow属性被用来添加阴影:

实例

在div中添加box-shadow属性

div
{
box-shadow: 10px 10px 5px #888888;
}

尝试一下 »



CSS3边界图片

有了CSS3的border-image属性,你可以使用图像创建一个边框:

border-image属性允许你指定一个图片作为边框!用于创建上文边框的原始图像:

在div中使用图片创建边框:

Border

实例

在div中使用图片创建边框

div
{
border-image:url(border.png) 30 30 round;
-webkit-border-image:url(border.png) 30 30 round; /* Safari 5 and older */
-o-border-image:url(border.png) 30 30 round; /* Opera */
}

尝试一下 »



新边框属性

属性说明CSS
border-image设置所有边框图像的速记属性。3
border-radius一个用于设置所有四个边框- *-半径属性的速记属性3
box-shadow附加一个或多个下拉框的阴影3

以上就是本节的全部内容,关于CSS3边框,您是否学会了呢?如果还是有些疑惑,建议您多看几遍,或者对着上文中的示例多做几遍!


使用了CSS3 border-radius属性的界面显示如下图:


CSS3 圆角

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

您可以尝试使用CSS3 圆角制作器制作您的第一个css3圆角!


浏览器支持

表格中的数字表示支持该属性的第一个浏览器的版本号。

-webkit- 或 -moz- 前面的数字表示支持该前缀的第一个版本。

属性     
border-radius9.05.0
4.0 -webkit-
4.0
3.0 -moz-
5.0
3.1 -webkit-
10.5

CSS3 border-radius 属性

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

以下为三个实例:

1. 指定背景颜色的元素圆角:

圆角!

2. 指定边框的元素圆角:

圆角!

3. 指定背景图片的元素圆角:

圆角!

代码如下:

实例

#rcorners1 {
    border-radius: 25px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners2 {
    border-radius: 25px;
    border: 2px solid #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners3 {
    border-radius: 25px;
    background: url(/statics/images/course/paper.gif);
    background-position: left top;
    background-repeat: repeat;
    padding: 20px;
    width: 200px;
    height: 150px;
}

尝试一下 »

CSS3 border-radius - 指定每个圆角

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

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

  • 四个值: 第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角。

  • 三个值: 第一个值为左上角, 第二个值为右上角和左下角,第三个值为右下角

  • 两个值: 第一个值为左上角与右下角,第二个值为右上角与左下角

  • 一个值: 四个圆角值相同

以下为三个实例:

1. 四个值 - border-radius: 15px 50px 30px 5px:

2. 三个值 - border-radius: 15px 50px 30px:

3. 两个值 - border-radius: 15px 50px:

以下为源代码:

实例

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

#rcorners5 {
    border-radius: 15px 50px 30px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners6 {
    border-radius: 15px 50px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

尝试一下 »

您还可以创建椭圆边角:

实例

#rcorners7 {
    border-radius: 50px/15px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners8 {
    border-radius: 15px/50px;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

#rcorners9 {
    border-radius: 50%;
    background: #8AC007;
    padding: 20px;
    width: 200px;
    height: 150px;
}

尝试一下 »

CSS3 圆角属性

属性描述
border-radius所有四个边角 border-*-*-radius 属性的缩写
border-top-left-radius定义了左上角的弧度
border-top-right-radius定义了右上角的弧度
border-bottom-right-radius定义了右下角的弧度
border-bottom-left-radius定义了左下角的弧度

通过以上5种圆角属性,希望您能够做出最满意的圆角。


CSS3 圆角生成器

在线CSS3 圆角生成器

 


CSS3更新了几个新的背景属性,提供更大背景元素控制,通过这几个背景属性,您能够做出更加精美的样式,。

在本节中您将了解以下4种背景属性:

  • background-image
  • background-size
  • background-origin
  • background-clip

此外您还将学习如何使用多重背景图像。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性     
background-image
(with multiple backgrounds)
4.09.03.63.111.5
background-size4.0
1.0 -webkit-
9.04.0
3.6 -moz-
4.1
3.0 -webkit-
10.5
10.0 -o-
background-origin1.09.04.03.010.5
background-clip4.09.04.03.010.5

CSS3 background-image属性

CSS3中可以通过background-image属性添加背景图片。

不同的背景图像和图像用逗号隔开,所有的图片中显示在最顶端的为第一张。

实例

#example1 {
background-image: url(img_flwr.gif), url(paper.gif);
background-position: right bottom, left top;
background-repeat: no-repeat, repeat;
}

尝试一下 »


可以给不同的图片设置多个不同的属性

实例

#example1 {
background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat;
}

尝试一下 »


CSS3 background-size 属性

background-size指定背景图像的大小。CSS3以前,背景图像大小由图像的实际大小决定。

CSS3中可以指定背景图片,让我们重新在不同的环境中指定背景图片的大小。您可以指定像素或百分比大小。

你指定的大小是相对于父元素的宽度和高度的百分比的大小。

OperaSafariChromeFirefoxInternet Explorer

实例 1

重置背景图像:

div
{
background:url(img_flwr.gif);
background-size:80px 60px;
background-repeat:no-repeat;
}

尝试一下 »

OperaSafariChromeFirefoxInternet Explorer

实例 2

伸展背景图像完全填充内容区域:

div
{
background:url(img_flwr.gif);
background-size:100% 100%;
background-repeat:no-repeat;
}

尝试一下 »


CSS3的background-Origin属性

background-Origin属性指定了背景图像的位置区域。

content-box, padding-box,和 border-box区域内可以放置背景图像。



OperaSafariChromeFirefoxInternet Explorer

实例

在 content-box 中定位背景图片:

div
{
background:url(img_flwr.gif);
background-repeat:no-repeat;
background-size:100% 100%;
background-origin:content-box;
}

尝试一下 »


CSS3 多个背景图像

CSS3 允许你在元素中添加多个背景图像。

OperaSafariChromeFirefoxInternet Explorer

实例

在 body 元素中设置两个背景图像:

body
{
background-image:url(img_flwr.gif),url(img_tree.gif);
}

尝试一下 »


CSS3 background-clip属性

CSS3中background-clip背景剪裁属性是从指定位置开始绘制

实例

#example1 {
border: 10px dotted black;
padding: 35px;
background: yellow;
background-clip: content-box;
}

尝试一下 »


新的背景属性

顺序描述CSS
background-clip规定背景的绘制区域。3
background-origin规定背景图片的定位区域。3
background-size规定背景图片的尺寸。3

新的CSS3背景属性中,您不仅能够规定背景的绘制区域,对于背景图片的定位区域和尺寸也同样能够惊喜设置!

线性渐变

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

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

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

  • 线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向

  • 径向渐变(Radial Gradients)- 由它们的中心定义


浏览器支持

表中的数字指定了完全支持该属性的第一个浏览器版本。

后边跟 -webkit-、-moz- 或 -o- 的数字指定了需加上前缀才能支持属性的第一个版本。

属性     
linear-gradient10.026.0
10.0 -webkit-
16.0
3.6 -moz-
6.1
5.1 -webkit-
12.1
11.1 -o-
radial-gradient10.026.0
10.0 -webkit-
16.0
3.6 -moz-
6.1
5.1 -webkit-
12.1
11.6 -o-
repeating-linear-gradient10.026.0
10.0 -webkit-
16.0
3.6 -moz-
6.1
5.1 -webkit-
12.1
11.1 -o-
repeating-radial-gradient10.026.0
10.0 -webkit-
16.0
3.6 -moz-
6.1
5.1 -webkit-
12.1
11.6 -o-


CSS3 线性渐变

为了创建一个线性渐变,你必须至少定义两种颜色结点。颜色结点即你想要呈现平稳过渡的颜色。同时,你也可以设置一个起点和一个方向(或一个角度)。

线性渐变的实例:

线性渐变

语法

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

线性渐变 - 从上到下(默认情况下)

下面的实例演示了从顶部开始的线性渐变。起点是红色,慢慢过渡到蓝色:

实例

从上到下的线性渐变:

#grad {
  background: -webkit-linear-gradient(red, blue); /* Safari 5.1 - 6.0 */
  background: -o-linear-gradient(red, blue); /* Opera 11.1 - 12.0 */
  background: -moz-linear-gradient(red, blue); /* Firefox 3.6 - 15 */
  background: linear-gradient(red, blue); /* 标准的语法 */
}

尝试一下 »

线性渐变 - 从左到右

下面的实例演示了从左边开始的线性渐变。起点是红色,慢慢过渡到蓝色:

实例

从左到右的线性渐变:

#grad {
  background: -webkit-linear-gradient(left, red , blue); /* Safari 5.1 - 6.0 */
  background: -o-linear-gradient(right, red, blue); /* Opera 11.1 - 12.0 */
  background: -moz-linear-gradient(right, red, blue); /* Firefox 3.6 - 15 */
  background: linear-gradient(to right, red , blue); /* 标准的语法 */
}

尝试一下 »

线性渐变 - 对角

你可以通过指定水平和垂直的起始位置来制作一个对角渐变。

下面的实例演示了从左上角开始(到右下角)的线性渐变。起点是红色,慢慢过渡到蓝色:

实例

从左上角到右下角的线性渐变:

#grad {
  background: -webkit-linear-gradient(left top, red , blue); /* Safari 5.1 - 6.0 */
  background: -o-linear-gradient(bottom right, red, blue); /* Opera 11.1 - 12.0 */
  background: -moz-linear-gradient(bottom right, red, blue); /* Firefox 3.6 - 15 */
  background: linear-gradient(to bottom right, red , blue); /* 标准的语法 */
}

尝试一下 »


使用角度

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

语法

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

角度是指水平线和渐变线之间的角度,顺时针方向计算。换句话说,0deg 将创建一个从下到上的渐变,90deg 将创建一个从左到右的渐变。

 

但是,请注意很多浏览器(Chrome,Safari,fiefox等)的使用了旧的标准,即 0deg 将创建一个从下到上的渐变,90deg 将创建一个从左到右的渐变。换算公式 90 - x = y 其中 x 为标准角度,y为非标准角度。

下面的实例演示了如何在线性渐变上使用角度:

实例

带有指定的角度的线性渐变:

#grad {
  background: -webkit-linear-gradient(180deg, red, blue); /* Safari 5.1 - 6.0 */
  background: -o-linear-gradient(180deg, red, blue); /* Opera 11.1 - 12.0 */
  background: -moz-linear-gradient(180deg, red, blue); /* Firefox 3.6 - 15 */
  background: linear-gradient(180deg, red, blue); /* 标准的语法 */
}

尝试一下 »


使用多个颜色结点

下面的实例演示了如何设置多个颜色结点:

实例

带有多个颜色结点的从上到下的线性渐变:

#grad {
  background: -webkit-linear-gradient(red, green, blue); /* Safari 5.1 - 6.0 */
  background: -o-linear-gradient(red, green, blue); /* Opera 11.1 - 12.0 */
  background: -moz-linear-gradient(red, green, blue); /* Firefox 3.6 - 15 */
  background: linear-gradient(red, green, blue); /* 标准的语法 */
}

尝试一下 »

下面的实例演示了如何创建一个带有彩虹颜色和文本的线性渐变:

实例

#grad {
  /* Safari 5.1 - 6.0 */
  background: -webkit-linear-gradient(left,red,orange,yellow,green,blue,indigo,violet);
 /* Opera 11.1 - 12.0 */
  background: -o-linear-gradient(left,red,orange,yellow,green,blue,indigo,violet);
  /* Firefox 3.6 - 15 */
  background: -moz-linear-gradient(left,red,orange,yellow,green,blue,indigo,violet);
 /* 标准的语法 */
  background: linear-gradient(to right, red,orange,yellow,green,blue,indigo,violet);
}

尝试一下 »


使用透明度(Transparency)

CSS3 渐变也支持透明度(transparency),可用于创建减弱变淡的效果。

为了添加透明度,我们使用 rgba() 函数来定义颜色结点。rgba() 函数中的最后一个参数可以是从 0 到 1 的值,它定义了颜色的透明度:0 表示完全透明,1 表示完全不透明。

下面的实例演示了从左边开始的线性渐变。起点是完全透明,慢慢过渡到完全不透明的红色:

实例

从左到右的线性渐变,带有透明度:

#grad {
  background: -webkit-linear-gradient(left,rgba(255,0,0,0),rgba(255,0,0,1)); /* Safari 5.1 - 6 */
  background: -o-linear-gradient(right,rgba(255,0,0,0),rgba(255,0,0,1)); /* Opera 11.1 - 12*/
  background: -moz-linear-gradient(right,rgba(255,0,0,0),rgba(255,0,0,1)); /* Firefox 3.6 - 15*/
  background: linear-gradient(to right, rgba(255,0,0,0), rgba(255,0,0,1)); /* 标准的语法 */
}

尝试一下 »


重复的线性渐变

repeating-linear-gradient() 函数用于重复线性渐变:

实例

一个重复的线性渐变:

#grad {
  /* Safari 5.1 - 6.0 */
  background: -webkit-repeating-linear-gradient(red, yellow 10%, green 20%);
  /* Opera 11.1 - 12.0 */
  background: -o-repeating-linear-gradient(red, yellow 10%, green 20%);
  /* Firefox 3.6 - 15 */
  background: -moz-repeating-linear-gradient(red, yellow 10%, green 20%);
  /* 标准的语法 */
  background: repeating-linear-gradient(red, yellow 10%, green 20%);
}

尝试一下 »


CSS3 径向渐变

径向渐变由它的中心定义。

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

径向渐变的实例:

Radial gradient

语法

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

径向渐变 - 颜色结点均匀分布(默认情况下)

实例

颜色结点均匀分布的径向渐变:

#grad {
  background: -webkit-radial-gradient(red, green, blue); /* Safari 5.1 - 6.0 */
  background: -o-radial-gradient(red, green, blue); /* Opera 11.6 - 12.0 */
  background: -moz-radial-gradient(red, green, blue); /* Firefox 3.6 - 15 */
  background: radial-gradient(red, green, blue); /* 标准的语法 */
}

尝试一下 »

径向渐变 - 颜色结点不均匀分布

实例

颜色结点不均匀分布的径向渐变:

#grad {
  background: -webkit-radial-gradient(red 5%, green 15%, blue 60%); /* Safari 5.1 - 6.0 */
  background: -o-radial-gradient(red 5%, green 15%, blue 60%); /* Opera 11.6 - 12.0 */
  background: -moz-radial-gradient(red 5%, green 15%, blue 60%); /* Firefox 3.6 - 15 */
  background: radial-gradient(red 5%, green 15%, blue 60%); /* 标准的语法 */
}

尝试一下 »


设置形状

shape 参数定义了形状。它可以是值 circle 或 ellipse。其中,circle 表示圆形,ellipse 表示椭圆形。默认值是 ellipse。

实例

形状为圆形的径向渐变:

#grad {
  background: -webkit-radial-gradient(circle, red, yellow, green); /* Safari 5.1 - 6.0 */
  background: -o-radial-gradient(circle, red, yellow, green); /* Opera 11.6 - 12.0 */
  background: -moz-radial-gradient(circle, red, yellow, green); /* Firefox 3.6 - 15 */
  background: radial-gradient(circle, red, yellow, green); /* 标准的语法 */
}

尝试一下 »


不同尺寸大小关键字的使用

size 参数定义了渐变的大小。它可以是以下四个值:

  • closest-side

  • farthest-side

  • closest-corner

  • farthest-corner

实例

带有不同尺寸大小关键字的径向渐变:

#grad1 {
  /* Safari 5.1 - 6.0 */
  background: -webkit-radial-gradient(60% 55%, closest-side,blue,green,yellow,black);
  /* Opera 11.6 - 12.0 */
 background: -o-radial-gradient(60% 55%, closest-side,blue,green,yellow,black);
 /* Firefox 3.6 - 15 */
  background: -moz-radial-gradient(60% 55%, closest-side,blue,green,yellow,black);
  /* 标准的语法 */
 background: radial-gradient(60% 55%, closest-side,blue,green,yellow,black);
}

#grad2 {
 /* Safari 5.1 - 6.0 */
  background: -webkit-radial-gradient(60% 55%, farthest-side,blue,green,yellow,black);
 /* Opera 11.6 - 12.0 */
  background: -o-radial-gradient(60% 55%, farthest-side,blue,green,yellow,black);
  /* Firefox 3.6 - 15 */
 background: -moz-radial-gradient(60% 55%, farthest-side,blue,green,yellow,black);
 /* 标准的语法 */
  background: radial-gradient(60% 55%, farthest-side,blue,green,yellow,black);
}

尝试一下 »


重复的径向渐变

repeating-radial-gradient() 函数用于重复径向渐变:

实例

一个重复的径向渐变:

#grad {
  /* Safari 5.1 - 6.0 */
  background: -webkit-repeating-radial-gradient(red, yellow 10%, green 15%);
  /* Opera 11.6 - 12.0 */
  background: -o-repeating-radial-gradient(red, yellow 10%, green 15%);
  /* Firefox 3.6 - 15 */
  background: -moz-repeating-radial-gradient(red, yellow 10%, green 15%);
  /* 标准的语法 */
  background: repeating-radial-gradient(red, yellow 10%, green 15%);
}

尝试一下 »

以上便是本节CSS3渐变的全部内容,通过学习,希望您能够多进行实战练习,灵活掌握渐变,能够让您的样式更加美观!

CSS3中包含几个新的文本特征。

在本节中您将了解以下文本属性:

  • text-shadow

  • box-shadow

  • text-overflow

  • word-wrap

  • word-break


浏览器支持

属性     
text-shadow4.010.03.54.09.5
box-shadow10.0
4.0 -webkit-
9.04.0
3.5 -moz-
5.1
3.1 -webkit-
10.5
text-overflow4.06.07.03.111.0
9.0 -o-
word-wrap23.05.53.56.112.1
word-break4.05.515.03.115.0

CSS3的文本阴影

CSS3中,text-shadow属性适用于文本阴影。

Text shadow effect!

您指定了水平阴影,垂直阴影,模糊的距离,以及阴影的颜色:

OperaSafariChromeFirefoxInternet Explorer

实例

给标题添加阴影:

h1
{
    text-shadow: 5px 5px 5px #FF0000;
}

尝试一下 »

CSS3 box-shadow属性

CSS3 中 CSS3 box-shadow 属性适用于盒子阴影

实例

div { box-shadow: 10px10px;}

尝试一下 »

接下来给阴影添加颜色

实例

div { box-shadow: 10px10px grey;}

尝试一下 »

接下来给阴影添加一个模糊效果

实例

div { box-shadow: 10px10px 5px grey;}

尝试一下 »

你也可以在 ::before 和 ::after 两个伪元素中添加阴影效果

实例

#boxshadow { 
    position: relative
    box-shadow: 1px 2px 4px rgba(0,0, 0, .5)
    padding: 10px;bac kground: white;
} 
#boxshadow img { 
    width: 100%
    border: 1px solid#8a4419
    border-style: inset;
} 
#boxshadow::after{ 
    content: ''
    position: absolute
    z-index: -1; /* hide shadow behind image */ 
    box-shadow: 015px 20px rgba(0,0, 0, 0.3)
    width: 70%
    left: 15%; /* one half of the remaining 30% */ 
    height: 100px
    bottom: 0;
}

尝试一下 »

阴影的一个使用特例是卡片效果

实例

div.card { 
    width: 250px
    box-shadow: 0 4px8px 0 rgba(0,0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)
    text-align: center;
}

文字卡片 » 尝试一下 »

CSS3 Text Overflow属性

CSS3文本溢出属性指定应向用户如何显示溢出内容

实例

p.test1 { 
    white-space: nowrap
    width: 200px
    border: 1px solid#000000
    overflow: hidden
    text-overflow: clip
} 
p.test2 { 
    white-space: nowrap
    width: 200px
    border: 1px solid#000000
    overflow: hidden
    text-overflow: ellipsis
}

尝试一下 »

CSS3的换行

如果某个单词太长,不适合在一个区域内,它扩展到外面:

CSS3中,自动换行属性允许您强制文本换行 - 即使这意味着分裂它中间的一个字:

CSS代码如下:

OperaSafariChromeFirefoxInternet Explorer

实例

允许长文本换行:

p {word-wrap:break-word;}

尝试一下 »

CSS3 单词拆分换行

CSS3 单词拆分换行属性指定换行规则:

CSS代码如下:

实例

p.test1 { 
    word-break: keep-all;
} 
p.test2 { 
    word-break: break-all;
}

尝试一下 »

New Text Properties

属性描述CSS
hanging-punctuation规定标点字符是否位于线框之外。3
punctuation-trim规定是否对标点字符进行修剪。3
text-align-last设置如何对齐最后一行或紧挨着强制换行符之前的行。3
text-emphasis向元素的文本应用重点标记以及重点标记的前景色。3
text-justify规定当  text-align 设置为 "justify" 时所使用的对齐方法。3
text-outline规定文本的轮廓。3
text-overflow规定当文本溢出包含元素时发生的事情。3
text-shadow向文本添加阴影。3
text-wrap规定文本的换行规则。3
word-break规定非中日韩文本的换行规则。3
word-wrap允许对长的不可分割的单词进行分割并换行到下一行。3


With CSS3, web designers are no longer forced to use only web-safe fonts


CSS3 @font-face 规则

在CSS3之前,web设计师必须使用已在用户计算机上安装好的字体,不能够使用离线字体,不过通过CSS3,web设计师可以使用他们喜欢的任意字体。

当您找到或购买到希望使用的字体时,可将该字体文件存放到web服务器上,它会在需要时被自动下载到用户的计算机上。

您"自己的"的字体是在 CSS3 @font-face 规则中定义的。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

属性     
@font-face4.09.03.53.210.0

Internet Explorer 9+, Firefox, Chrome, Safari, 和 Opera 支持 WOFF (Web Open Font Format) 字体.

Firefox, Chrome, Safari, 和 Opera 支持 .ttf(True Type字体)和.otf(OpenType)字体字体类型)。

Chrome, Safari 和 Opera 也支持 SVG 字体/折叠.

Internet Explorer 同样支持 EOT (Embedded OpenType) 字体.

需要注意的是: Internet Explorer 8 以及更早的版本不支持新的 @font-face 规则。


使用您需要的字体

在新的 @font-face 规则中,您必须首先定义字体的名称(比如 myFirstFont),然后指向该字体文件。

lamp 提示:URL请使用小写字母的字体,大写字母在IE中会产生意外的结果

如果需要为 HTML 元素使用字体,请通过 font-family 属性来引用字体的名称 (myFirstFont),通过下面的实例您可以尝试操作一下:

OperaSafariChromeFirefoxInternet Explorer

实例

<style>
@font-face
{
   font-family: myFirstFont;
   src: url(sansation_light.woff);
}

div
{
   font-family:myFirstFont;
}
</style>

尝试一下 »



使用粗体文本

您必须添加另一个包含粗体文字的@font-face规则:

OperaSafariChromeFirefoxInternet Explorer

实例

@font-face
{
   font-family: myFirstFont;
   src: url(sansation_bold.woff);
   font-weight:bold;
}

尝试一下 »

该文件"Sansation_Bold.ttf"是另一种字体文件,包含Sansation字体的粗体字。

浏览器使用这一文本的字体系列"myFirstFont"时应该呈现为粗体。

这样你就可以有许多相同的字体@font-face的规则。


CSS3 字体描述

下表列出了所有的字体描述和里面的@font-face规则定义:

描述符描述
font-familyname必需。规定字体的名称。
srcURL必需。定义字体文件的 URL。
font-stretch
  • normal

  • condensed

  • ultra-condensed

  • extra-condensed

  • semi-condensed

  • expanded

  • semi-expanded

  • extra-expanded

  • ultra-expanded

可选。定义如何拉伸字体。默认是 "normal"。
font-style
  • normal

  • italic

  • oblique

可选。定义字体的样式。默认是 "normal"。
font-weight
  • normal

  • bold

  • 100

  • 200

  • 300

  • 400

  • 500

  • 600

  • 700

  • 800

  • 900

可选。定义字体的粗细。默认是 "normal"。
unicode-rangeunicode-range可选。定义字体支持的 UNICODE 字符范围。默认是 "U+0-10FFFF"。
您最好收藏或者保存好上表中的字体描述,以便您将来编程时需要用,方面查找!这将会为您省去很多宝贵的工作时间。

CSS3 转换

CSS3转换,我们可以移动,比例化,反过来,旋转,和拉伸元素。

接下去您将会学到关于CSS3 2D转换的内容,当您学到一个新知识的时候,最好能够自己进行操作一下,点击代码下方的

尝试一下

能够让您真正掌握这一知识点!


它是如何工作?

变换的效果,让某个元素改变形状,大小和位置。

您可以转换您使用2D或3D元素。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性     
transform36.0
4.0 -webkit-
10.0
9.0 -ms-
16.0
3.5 -moz-
3.2 -webkit-23.0
15.0 -webkit-
12.1
10.5 -o-
transform-origin
(two-value syntax)
36.0
4.0 -webkit-
10.0
9.0 -ms-
16.0
3.5 -moz-
3.2 -webkit-23.0
15.0 -webkit-
12.1
10.5 -o-

Internet Explorer 10, Firefox, 和 Opera支持transform 属性.

Chrome 和 Safari 要求前缀 -webkit- 版本.

注意: Internet Explorer 9 要求前缀 -ms- 版本.


2D 转换

在本章您将了解2D变换方法:

  • translate()

  • rotate()

  • scale()

  • skew()

  • matrix()

在下一章中您将了解3D转换。

实例

div
{
transform: rotate(30deg);
-ms-transform: rotate(30deg); /* IE 9 */
-webkit-transform: rotate(30deg); /* Safari and Chrome */
}  

尝试一下 »



translate() 方法

translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动。

实例

div
{
transform: translate(50px,100px);
-ms-transform: translate(50px,100px); /* IE 9 */
-webkit-transform: translate(50px,100px); /* Safari and Chrome */
}  

尝试一下 »

translate值(50px,100px)是从左边元素移动50个像素,并从顶部移动100像素。


rotate() 方法

rotate()方法,在一个给定度数顺时针旋转的元素。负值是允许的,这样是元素逆时针旋转。

实例

div
{
transform: rotate(30deg);
-ms-transform: rotate(30deg); /* IE 9 */
-webkit-transform: rotate(30deg); /* Safari and Chrome */
}  

尝试一下 »

rotate值(30deg)元素顺时针旋转30度。


scale() 方法

scale()方法,该元素增加或减少的大小,取决于宽度(X轴)和高度(Y轴)的参数:

实例

div
{
transform: scale(2,4);
-ms-transform: scale(2,4); /* IE 9 */
-webkit-transform: scale(2,4); /* Safari and Chrome */
}  

尝试一下 »

scale(2,4)转变宽度为原来的大小的2倍,和其原始大小4倍的高度。


skew() 方法

包含两个参数值,分别表示X轴和Y轴倾斜的角度,如果第二个参数为空,则默认为0,参数为负表示向相反方向倾斜。

  • skewX( );表示只在X轴(水平方向)倾斜。
  • skewY( );表示只在Y轴(垂直方向)倾斜。

实例

div
{
transform: skew(30deg,20deg);
-ms-transform: skew(30deg,20deg); /* IE 9 */
-webkit-transform: skew(30deg,20deg); /* Safari and Chrome */
}  

尝试一下 »

skew(30deg,20deg) 是元素在X轴和Y轴上倾斜30度和20度。


matrix() 方法

matrix()方法和2D变换方法合并成一个。

matrix 方法有六个参数,包含旋转,缩放,移动(平移)和倾斜功能。

实例

利用matrix()方法旋转div元素30°

div
{
transform:matrix(0.866,0.5,-0.5,0.866,0,0);
-ms-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* IE 9 */
-webkit-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Safari and Chrome */
}  

尝试一下 »



新转换属性

以下列出了所有的转换属性:

Property描述CSS
transform适用于2D或3D转换的元素3
transform-origin允许您更改转化元素位置3

2D 转换方法

函数描述
matrix(n,n,n,n,n,n)定义 2D 转换,使用六个值的矩阵。
translate(x,y)定义 2D 转换,沿着 X 和 Y 轴移动元素。
translateX(n)定义 2D 转换,沿着 X 轴移动元素。
translateY(n)定义 2D 转换,沿着 Y 轴移动元素。
scale(x,y)定义 2D 缩放转换,改变元素的宽度和高度。
scaleX(n)定义 2D 缩放转换,改变元素的宽度。
scaleY(n)定义 2D 缩放转换,改变元素的高度。
rotate(angle)定义 2D 旋转,在参数中规定角度。
skew(x-angle,y-angle)定义 2D 倾斜转换,沿着 X 和 Y 轴。
skewX(angle)定义 2D 倾斜转换,沿着 X 轴。
skewY(angle)定义 2D 倾斜转换,沿着 Y 轴。

熟练使用CSS3 2D转换方法,能够让您在设计中游刃有余!



CSS3 transform(变形)和transform-origin(变形原点)调试工具

CSS3 transform(变形)和transform-origin(变形原点)调试工具




CSS3 允许您使用 3D 转换来对元素进行格式化。

点击下面的元素,您可以看到 2D 转换与 3D 转换之间的不同之处,根据自己的需求选择哪一种转换: 

2D rotate
3D rotate


浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性谷歌浏览器ie浏览器搜狐浏览器webkit浏览器

opera浏览器

transform36.0
12.0 -webkit-
10.016.0
10.0 -moz-
4.0 -webkit-23.0
15.0 -webkit-
transform-origin
(three-value syntax)
36.0
12.0 -webkit-
10.016.0
10.0 -moz-
4.0 -webkit-23.0
15.0 -webkit-
transform-style36.0
12.0 -webkit-
11.016.0
10.0 -moz-
4.0 -webkit-23.0
15.0 -webkit-
perspective36.0
12.0 -webkit-
10.016.0
10.0 -moz-
4.0 -webkit-23.0
15.0 -webkit-
perspective-origin36.0
12.0 -webkit-
10.016.0
10.0 -moz-
4.0 -webkit-23.0
15.0 -webkit-
backface-visibility36.0
12.0 -webkit-
10.016.0
10.0 -moz-
4.0 -webkit-23.0
15.0 -webkit-

rotateX() 方法

Rotate X

rotateX()方法,围绕其在一个给定度数X轴旋转的元素。

<!DOCTYPE html><html><head><meta charset="utf-8"> <title>W3C(51coolma.cn)</title> <style> div{    width:100px;    height:75px;    background-color:red;    border:1px solid black;}div#div2{    transform:rotateX(120deg);    -webkit-transform:rotateX(120deg); /* Safari and Chrome */}</style></head><body><p><b>注意:</b> Internet Explorer 9 (以及更早版本的浏览器) 和 Opera 不支持 rotateX 方法.</p><div>Hello. This is a DIV element.</div><div id="div2">Hello. This is a DIV element.</div></body></html>

rotateY() 方法

Rotate Y

rotateY()方法,围绕其在一个给定度数Y轴旋转的元素。

<!DOCTYPE html><html><head><meta charset="utf-8"> <title>W3C(51coolma.cn)</title> <style> div{	width:100px;	height:75px;	background-color:red;	border:1px solid black;}div#div2{	transform:rotateY(130deg);	-webkit-transform:rotateY(130deg); /* Safari and Chrome */}</style></head><body><p><b>注意:</b> Internet Explorer 9 (以及更早版本的浏览器) 和 Opera 不支持 rotateY方法.</p><div>Hello. This is a DIV element.</div><div id="div2">Hello. This is a DIV element.</div></body></html>

转换属性

下表列出了CSS3所有的转换属性:

属性描述CSS
transform向元素应用 2D 或 3D 转换。3
transform-origin允许你改变被转换元素的位置。3
transform-style规定被嵌套元素如何在 3D 空间中显示。3
perspective规定 3D 元素的透视效果。3
perspective-origin规定 3D 元素的底部位置。3
backface-visibility定义元素在不面对屏幕时是否可见。3

3D 转换方法

函数描述
matrix3d(n,n,n,n,n,n ,
n,n,n,n,n,n, n,n,n,n )
定义 3D 转换使用 16 个值的 4x4 矩阵。
translate3d(x,y,z)定义 3D 转化。
translateX(x)定义 3D 转化仅使用用于 X 轴的值。
translateY(y)定义 3D 转化仅使用用于 Y 轴的值。
translateZ(z)定义 3D 转化仅使用用于 Z 轴的值。
scale3d(x,y,z)定义 3D 缩放转换。
scaleX(x)定义 3D 缩放转换通过给定一个 X 轴的值。
scaleY(y)定义 3D 缩放转换通过给定一个 Y 轴的值。
scaleZ(z)定义 3D 缩放转换通过给定一个 Z 轴的值。
rotate3d(x,y,z,angle)定义 3D 旋转。
rotateX(angle)定义沿 X 轴的 3D 旋转。
rotateY(angle)定义沿 Y 轴的 3D 旋转。
rotateZ(angle)定义沿 Z 轴的 3D 旋转。
perspective(n)定义 3D 转换元素的透视视图。

通过学习3D转化,可以让您的样式更加立体化,W3Cschool建议您最好能够收藏本篇文章,或者保存到本地,方便以后查找!


CSS3中,我们为了添加某种效果可以从一种样式转变到另一个的时候,无需使用Flash动画或JavaScript。用鼠标移过下面的元素:


用鼠标移过下面的元素:

CSS3
过渡

浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性     
transition26.0
4.0 -webkit-
10.016.0
4.0 -moz-
6.1
3.1 -webkit-
12.1
10.5 -o-
transition-delay26.0
4.0 -webkit-
10.016.0
4.0 -moz-
6.1
3.1 -webkit-
12.1
10.5 -o-
transition-duration26.0
4.0 -webkit-
10.016.0
4.0 -moz-
6.1
3.1 -webkit-
12.1
10.5 -o-
transition-property26.0
4.0 -webkit-
10.016.0
4.0 -moz-
6.1
3.1 -webkit-
12.1
10.5 -o-
transition-timing-function26.0
4.0 -webkit-
10.016.0
4.0 -moz-
6.1
3.1 -webkit-
12.1
10.5 -o-

它是如何工作?

CSS3 过渡是元素从一种样式逐渐改变为另一种的效果。

要实现这一点,必须规定两项内容:

  • 指定要添加效果的CSS属性

  • 指定效果的持续时间。

OperaSafariChromeFirefoxInternet Explorer

实例

应用于宽度属性的过渡效果,时长为 2 秒:

div
{
transition: width 2s;
-webkit-transition: width 2s; /* Safari */
}  

注意: 如果未指定的期限,transition将没有任何效果,因为默认值是0。

指定的CSS属性的值更改时效果会发生变化。一个典型CSS属性的变化是用户鼠标放在一个元素上时:

OperaSafariChromeFirefoxInternet Explorer

实例

规定当鼠标指针悬浮(:hover)于 <div>元素上时:

div:hover
{
width:300px;
}  

尝试一下 »

注意: 当鼠标光标移动到该元素时,它逐渐改变它原有样式。


多项改变

要添加多个样式的变换效果,添加的属性由逗号分隔:

OperaSafariChromeFirefoxInternet Explorer

实例

添加了宽度,高度和转换效果:

div
{
transition: width 2s, height 2s, transform 2s;
-webkit-transition: width 2s, height 2s, -webkit-transform 2s;
}  

尝试一下 »



过渡属性

下表列出了所有的过渡属性:

属性描述CSS
transition简写属性,用于在一个属性中设置四个过渡属性。3
transition-property规定应用过渡的 CSS 属性的名称。3
transition-duration定义过渡效果花费的时间。默认是 0。3
transition-timing-function规定过渡效果的时间曲线。默认是 "ease"。3
transition-delay规定过渡效果何时开始。默认是 0。3

下面的两个例子设置所有过渡属性:

OperaSafariChromeFirefoxInternet Explorer

实例

在一个例子中使用所有过渡属性:

div
{
transition-property: width;
transition-duration: 1s;
transition-timing-function: linear;
transition-delay: 2s;
/* Safari */
-webkit-transition-property:width;
-webkit-transition-duration:1s;
-webkit-transition-timing-function:linear;
-webkit-transition-delay:2s;
}

尝试一下 »
OperaSafariChromeFirefoxInternet Explorer

实例

与上面的例子相同的过渡效果,但是使用了简写的 transition 属性:

div
{
transition: width 1s linear 2s;
/* Safari */
-webkit-transition:width 1s linear 2s;
}  

尝试一下 »

如果您对于CSS3过渡还是不太了解,建议您通过上文的“尝试一下”进行多加练习。


CSS3,我们可以创建动画,它可以取代许多网页动画图像,Flash动画,和JAVAScripts。


CSS3
动画

CSS3 @keyframes 规则

表格中的数字表示支持该属性的第一个浏览器版本号。

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


浏览器支持

Internet Explorer 10、Firefox 以及 Opera 支持 @keyframes 规则和 animation 属性。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性     
@keyframes43.0
4.0 -webkit-
10.016.0
5.0 -moz-
9.0
4.0 -webkit-
30.0
15.0 -webkit-
12.0 -o-
animation43.0
4.0 -webkit-
10.016.0
5.0 -moz-
9.0
4.0 -webkit-
30.0
15.0 -webkit-
12.0 -o-

OperaSafariChromeFirefoxInternet Explorer

实例

@keyframes myfirst
{
from {background: red;}
to {background: yellow;}
}

@-webkit-keyframes myfirst /* Safari and Chrome */
{
from {background: red;}
to {background: yellow;}
}



CSS3 动画

当在@keyframe创建动画,把它绑定到一个选择器,否则动画不会有任何效果。

指定至少这两个CSS3的动画属性绑定向一个选择器:

  • 规定动画的名称

  • 规定动画的时长

OperaSafariChromeFirefoxInternet Explorer

实例

把 "myfirst" 动画捆绑到 div 元素,时长:5 秒:

div
{
animation: myfirst 5s;
-webkit-animation: myfirst 5s; /* Safari and Chrome */
}  

尝试一下 »

注意: 您必须定义动画的名称和动画的持续时间。如果省略的持续时间,动画将无法运行,因为默认值是0。


CSS3动画是什么?

动画是使元素从一种样式逐渐变化为另一种样式的效果。

您可以改变任意多的样式任意多的次数。

请用百分比来规定变化发生的时间,或用关键词 "from" 和 "to",等同于 0% 和 100%。

0% 是动画的开始,100% 是动画的完成。

为了得到最佳的浏览器支持,您应该始终定义 0% 和 100% 选择器。

OperaSafariChromeFirefoxInternet Explorer

实例

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

@keyframes myfirst
{
0%   {background: red;}
25%  {background: yellow;}
50%  {background: blue;}
100% {background: green;}
}

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

尝试一下 »


OperaSafariChromeFirefoxInternet Explorer

实例

改变背景色和位置:

@keyframes myfirst
{
0%   {background: red; left:0px; top:0px;}
25%  {background: yellow; left:200px; top:0px;}
50%  {background: blue; left:200px; top:200px;}
75%  {background: green; left:0px; top:200px;}
100% {background: red; left:0px; top:0px;}
}

   @-webkit-keyframes myfirst /* Safari and Chrome */
{
0%   {background: red; left:0px; top:0px;}
25%  {background: yellow; left:200px; top:0px;}
50%  {background: blue; left:200px; top:200px;}
75%  {background: green; left:0px; top:200px;}
100% {background: red; left:0px; top:0px;}
}

尝试一下 »



CSS3的动画属性

下面的表格列出了 @keyframes 规则和所有动画属性:

属性描述CSS
@keyframes规定动画。3
animation所有动画属性的简写属性,除了 animation-play-state 属性。3
animation-name规定 @keyframes 动画的名称。3
animation-duration规定动画完成一个周期所花费的秒或毫秒。默认是 0。3
animation-timing-function规定动画的速度曲线。默认是 "ease"。3
animation-delay规定动画何时开始。默认是 0。3
animation-iteration-count规定动画被播放的次数。默认是 1。3
animation-direction规定动画是否在下一周期逆向地播放。默认是 "normal"。3
animation-play-state规定动画是否正在运行或暂停。默认是 "running"。3

下面两个例子设置所有动画属性:

OperaSafariChromeFirefoxInternet Explorer

实例

运行myfirst动画,设置所有的属性:

div
{
animation-name: myfirst;
animation-duration: 5s;
animation-timing-function: linear;
animation-delay: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-play-state: running;
/* Safari and Chrome: */
-webkit-animation-name: myfirst;
-webkit-animation-duration: 5s;
-webkit-animation-timing-function: linear;
-webkit-animation-delay: 2s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
-webkit-animation-play-state: running;
}

尝试一下 »


OperaSafariChromeFirefoxInternet Explorer

实例

与上面的动画相同,但是使用了简写的动画 animation 属性:

div
{
animation: myfirst 5s linear 2s infinite alternate;
/* Safari and Chrome: */
-webkit-animation: myfirst 5s linear 2s infinite alternate;
}

尝试一下 »

上面两个例子设置所有动画属性,您最好都看几遍,并且自己操作一下!


通过 CSS3,您能够创建多个列来对文本进行布局 - 就像报纸那样,您可以收藏文章,需要用到的时候看一看。

在本章中,您将学习如下多列属性:

  • column-count

  • column-gap

  • column-rule

  • column-rule-color
  • column-rule-style
  • column-rule-width
  • column-width

浏览器支持

表格中的数字表示支持该方法的第一个浏览器的版本号。

紧跟在数字后面的 -webkit- 或 -moz- 为指定浏览器的前缀。

属性     
column-count4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit-
11.1
column-gap4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit-
11.1
column-rule4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit-
11.1
column-rule-color4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit
11.1
column-rule-style4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit
11.1
column-rule-width4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit
11.1
column-width4.0 -webkit-10.02.0 -moz-3.1 -webkit-15.0 -webkit
11.1

CSS3创建多列

column-count属性指定元素的列数应分为:

OperaSafariChromeFirefoxInternet Explorer

实例

划分成三列的div元素的文本:

div
{
-moz-column-count:3; /* Firefox */
-webkit-column-count:3; /* Safari and Chrome */
column-count:3;
}

尝试一下 »



CSS3的指定列之间的差距

column-gap属性指定的列之间的差距:

OperaSafariChromeFirefoxInternet Explorer

实例

指定列之间40个像素差距:

div
{
-moz-column-gap:40px; /* Firefox */
-webkit-column-gap:40px; /* Safari and Chrome */
column-gap:40px;
}

尝试一下 »



CSS3列规则

column-rule属性设置列之间的宽度,样式和颜色。

OperaSafariChromeFirefoxInternet Explorer

实例

指定列之间的宽度,样式和颜色的规则:

div
{
-moz-column-rule:3px outset #ff00ff; /* Firefox */
-webkit-column-rule:3px outset #ff00ff; /* Safari and Chrome */
column-rule:3px outset #ff00ff;
}

尝试一下 »



CSS3 新多列属性

下表列出了所有 CSS3 的新多列属性,点击属性可以查看更多内容以及用法:

属性说明CSS
column-count指定元素应分为的列数3
column-fill指定如何填充列3
column-gap指定列之间差距3
column-rule一个用于设置所有列规则的简写属性3
column-rule-color指定的列之间颜色规则3
column-rule-style指定的列之间的样式规则3
column-rule-width指定的列之间的宽度规则3
column-span指定一个元素应该横跨多少列3
column-width指定列的宽度3
columns缩写属性设置列宽和列数3

 


在 CSS3 中, 增加了一些新的用户界面特性来调整元素尺寸,框尺寸和外边框。

在本章中,您将了解以下的用户界面属性:

  • resize

  • box-sizing

  • outline-offset


浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性     
resize4.0不兼容5.0
4.0 -moz-
4.015.0
box-sizing10.0
4.0 -webkit-
8.029.0
2.0 -moz-
5.1
3.1 -webkit-
9.5
outline-offset4.0不兼容5.0
4.0 -moz-
4.09.5

CSS3 调整尺寸(Resizing)

CSS3中,resize属性指定一个元素是否应该由用户去调整大小。

这个 div 元素由用户调整大小。 (在 Firefox 4+, Chrome, 和 Safari中)

CSS代码如下:

OperaSafariChromeFirefoxInternet Explorer

实例

由用户指定一个div元素尺寸大小:

div
{
    resize:both;
    overflow:auto;
}

尝试一下 »



CSS3 方框大小调整(Box Sizing)

box-sizing 属性允许您以确切的方式定义适应某个区域的具体内容。

OperaSafariChromeFirefoxInternet Explorer

实例

规定两个并排的带边框方框:

div
{
    box-sizing:border-box;
    -moz-box-sizing:border-box; /* Firefox */
    width:50%;
    float:left;
}

尝试一下 »



CSS3 外形修饰(outline-offset )

outline-offset 属性对轮廓进行偏移,并在超出边框边缘的位置绘制轮廓。

轮廓与边框有两点不同:

  • 轮廓不占用空间

  • 轮廓可能是非矩形

这个 div 在边框之外 15 像素处有一个轮廓。

The CSS code is as follows:

OperaSafariChromeFirefoxInternet Explorer

实例

规定边框边缘之外 15 像素处的轮廓:

div
{
    border:2px solid black;
    outline:2px solid red;
    outline-offset:15px;
}

尝试一下 »



新的用户界面特性

下表中为CSS3的新用户界面属性,您可以点击对应的属性,了解到更多的内容以及对应属性的用法等等:

属性说明CSS
appearance允许您使一个元素的外观像一个标准的用户界面元素3
box-sizing允许你以适应区域而用某种方式定义某些元素3
iconProvides the author the ability to style an element with an iconic equivalent3
nav-down指定在何处使用箭头向下导航键时进行导航3
nav-index指定一个元素的Tab的顺序3
nav-left指定在何处使用左侧的箭头导航键进行导航3
nav-right指定在何处使用右侧的箭头导航键进行导航3
nav-up指定在何处使用箭头向上导航键时进行导航3
outline-offset外轮廓修饰并绘制超出边框的边缘3
resize指定一个元素是否是由用户调整大小3


本章节将为大家介绍如何使用 CSS 来布局图片。


圆角图片

实例

圆角图片:

img {
    border-radius: 8px;
}

尝试一下 »

实例

椭圆形图片:

img {
    border-radius: 50%;
}

尝试一下 »

缩略图

我们使用 border 属性来创建缩略图。

实例

img {
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 5px;
}

<img src="paris.jpg" alt="Paris">

尝试一下 »

实例

a {
    display: inline-block;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 5px;
    transition: 0.3s;
}

a:hover {
    box-shadow: 0 0 2px 1px rgba
    (0, 140, 186, 0.5);

}

<a href="paris.jpg">
  <img src="paris.jpg" alt="Paris">
</a>

尝试一下 »

响应式图片

响应式图片会自动适配各种尺寸的屏幕。

实例中,你可以通过重置浏览器大小查看效果:

Norway

如果你需要自由缩放图片,且图片放大的尺寸不大于其原始的最大值,则可使用以下代码:

实例

img {
    max-width: 100%;
    height: auto;
}

尝试一下 »

提示: Web 响应式设计更多内容可以参考CSS 响应式设计教程


图片文本

如何定位图片文本:

实例

Norway
左下角
左上角
右上角
右下角
居中

尝试一下:

左上角 » 右上角 » 左下角 » 右下角 » 居中 »

卡片式图片

实例

div.polaroid {
    width: 80%;
    background-color: white;
    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}

img {width: 100%}

div.container {
    text-align: center;
    padding: 10px 20px;
}

尝试一下 »

图片滤镜

CSS filter 属性用为元素添加可视效果 (例如:模糊与饱和度) 。

注意: Internet Explorer或 Safari 5.1 (及更早版本) 不支持该属性。

实例

修改所有图片的颜色为黑白 (100% 灰度):

img {
    -webkit-filter: grayscale(100%); /* Chrome, Safari, Opera */
    filter: grayscale(100%);
}

尝试一下 »

提示: 访问 CSS 滤镜参考手册 查看更多内容。


响应式图片相册

实例

.responsive {
    padding: 0 6px;
    float: left;
    width: 24.99999%;
}

@media only screen and (max-width: 700px){
    .responsive {
        width: 49.99999%;
        margin: 6px 0;
    }
}

@media only screen and (max-width: 500px){
    .responsive {
        width: 100%;
    }
}

尝试一下 »

图片 Modal(模态)

本实例演示了如何结合 CSS 和 JavaScript 来一起渲染图片。

首先,我们使用 CSS 来创建 modal 窗口 (对话框), 默认是隐藏的。

然后,我们使用 JavaScript 来显示模态窗口,当我们点击图片时,图片会在弹出的窗口中显示:

实例

// 获取模态窗口
var modal = document.getElementById('myModal');

// 获取图片模态框,alt 属性作为图片弹出中文本描述
var img = document.getElementById('myImg');
var modalImg = document.getElementById("img01");
var captionText = document.getElementById("caption");
img.onclick = function(){
    modal.style.display = "block";
    modalImg.src = this.src;
    modalImg.alt = this.alt;
    captionText.innerHTML = this.alt;
}

// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];

// When the user clicks on <span> (x), close the modal
span.onclick = function() {
    modal.style.display = "none";
}

尝试一下 »

本章节我们为大家介绍使用 CSS 来制作按钮。


基本按钮样式

CSS 实例

.button {
    background-color: #4CAF50; /* Green */
    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
}

尝试一下 »

按钮颜色

       


我们可以使用 background-color 属性来设置按钮颜色:

CSS 实例

.button1 {background-color: #4CAF50;} /* Green */
.button2{background-color: #008CBA;} /* Blue */
.button3 {background-color:#f44336;} /* Red */
.button4 {background-color: #e7e7e7; color: black;} /* Gray */
.button5{background-color: #555555;} /* Black */

尝试一下 »

按钮大小

       

我们可以使用 font-size 属性来设置按钮大小:

CSS 实例

.button1 {font-size: 10px;}
.button2 {font-size: 12px;}
.button3{font-size: 16px;}
.button4 {font-size: 20px;}
.button5 {font-size: 24px;}

尝试一下 »

圆角按钮

2px4px8px12px50%

我们可以使用 border-radius 属性来设置圆角按钮:

CSS 实例

.button1 {border-radius: 2px;}
.button2 {border-radius: 4px;}
.button3{border-radius: 8px;}
.button4 {border-radius: 12px;}
.button5 {border-radius: 50%;}

尝试一下 »

按钮边框颜色

绿蓝红灰黑

我们可以使用 border 属性设置按钮边框颜色:

CSS 实例

.button1 {
    background-color: white;
    color: black;
   border: 2px solid #4CAF50; /* Green */
}
...

尝试一下 »

鼠标悬停按钮

绿蓝红灰黑
绿蓝红灰黑

我们可以使用 :hover 选择器来修改鼠标悬停在按钮上的样式。

提示: 我们可以使用 transition-duration 属性来设置 "hover" 效果的速度:

CSS 实例

.button {
    -webkit-transition-duration: 0.4s; /* Safari */
   transition-duration: 0.4s;
}

.button:hover {
   background-color: #4CAF50; /* Green */
    color: white;
}
...

尝试一下 »

按钮阴影

阴影按钮鼠标悬停后显示阴影

我们可以使用 box-shadow 属性来为按钮添加阴影:

CSS 实例

.button1 {
    box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2), 0 6px 20px 0rgba(0,0,0,0.19);
}

.button2:hover {
    box-shadow: 0 12px16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);
}

尝试一下 »

禁用按钮

正常按钮禁用按钮

我们可以使用 opacity 属性为按钮添加透明度 (看起来类似"disabled" 属性效果)。

提示: 我们可以添加 cursor 属性并设置为"not-allowed" 来设置一个禁用的图片:

CSS 实例

.disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

尝试一下 »

按钮宽度

250px
50%100%

默认情况下,按钮的大小有按钮上的文本内容决定( 根据文本内容匹配长度 )。 我们可以使用 width 属性来设置按钮的宽度:

提示: 如果要设置固定宽度可以使用像素 (px) 为单位,如果要设置响应式的按钮可以设置为百分比。

CSS 实例

.button1 {width: 250px;}
.button2 {width: 50%;}
.button3 {width:100%;}

尝试一下 »

按钮组

ButtonButtonButtonButton


移除外边距并添加 float:left 来设置按钮组:

CSS 实例

.button {
    float: left;
}

尝试一下 »

带边框按钮组

ButtonButtonButtonButton


我们可以使用 border 属性来设置带边框的按钮组:

CSS 实例

.button {
    float: left;
    border: 1pxsolid green
}

尝试一下 »

按钮动画

CSS 实例

鼠标移动到按钮上后添加箭头标记:

Hover

尝试一下 »

CSS 实例

点击时添加 "波纹" 效果:

Click

尝试一下 »

CSS 实例

点击时添加 "压下" 效果:

Click

尝试一下 »

本章节我们将为大家介绍如何通过使用 CSS 来创建分页的实例。


简单分页

如果你的网站有很多个页面,你就需要使用分页来为每个页面做导航。

以下实例演示了如何使用 HTML 和 CSS 来创建分页:

CSS 实例

ul.pagination {
    display: inline-block;
    padding: 0;
    margin: 0;
}

ul.pagination li {display: inline;}

ul.pagination li a {
    color: black;
    float: left;
    padding: 8px 16px;
    text-decoration: none;
}

尝试一下 »

点击及鼠标悬停分页样式

如果点击当前页,可以使用 .active 来设置当期页样式,鼠标悬停可以使用 :hover 选择器来修改样式:

CSS 实例

ul.pagination li a.active {
    background-color: #4CAF50;
    color: white;
}

ul.pagination li a:hover:not(.active) {background-color: #ddd;}

尝试一下 »

圆角样式

可以使用 border-radius 属性为选中的页码来添加圆角样式:

CSS 实例

ul.pagination li a {
    border-radius: 5px;
}

ul.pagination li a.active {
    border-radius: 5px;
}

尝试一下 »

鼠标悬停过渡效果

我们可以通过添加 transition 属性来为鼠标移动到页码上时添加过渡效果 to the page links to create a transition effect on hover:

CSS 实例

ul.pagination li a {
    transition: background-color .3s;
}

尝试一下 »

带边框分页

我们可以使用 border 属性来添加带边框分页:

CSS 实例

ul.pagination li a {
    border: 1px solid #ddd; /* Gray */
}

尝试一下 »

圆角边框

提示: 在第一个分页链接和最后一个分页链接添加圆角:

CSS 实例

.pagination li:first-child a {
    border-top-left-radius: 5px;
    border-bottom-left-radius: 5px;
}

.pagination li:last-child a {
    border-top-right-radius: 5px;
    border-bottom-right-radius: 5px;
}

尝试一下 »

分页间隔

提示: 你可以使用 margin 属性来为每个页码直接添加空格:

CSS 实例

ul.pagination li a {
    margin: 0 4px; /* 0 is for top and bottom. Feel free to change it */
}

尝试一下 »

分页字体大小

我们可以使用 font-size 属性来设置分页的字体大小:

CSS 实例

ul.pagination li a {
    font-size: 22px;
}

尝试一下 »

居中分页

如果要让分页居中,可以在容器元素上 (如 <div>) 添加 text-align:center 样式:

CSS 实例

div.center {
    text-align: center;
}

尝试一下 »

更多实例

CSS 实例


尝试一下 »

面包屑导航

另外一种导航为面包屑导航,实例如下:

CSS 实例

ul.breadcrumb {
    padding: 8px 16px;
    list-style: none;
    background-color: #eee;
}

ul.breadcrumb li {display: inline;}

ul.breadcrumb li+li:before {
    padding: 8px;
    color: black;
    content: "/0a0";
}

尝试一下 »


CSS3 box-sizing 属性可以设置 width 和 height 属性中包含了 padding(内边距) 和 border(边框)。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器的版本号。

紧跟在数字后面的 -webkit- 或 -moz- 为指定浏览器的前缀。

属性     
box-sizing10.0
4.0 -webkit-
8.029.0
2.0 -moz-
5.1
3.1 -webkit-
9.5

不使用 CSS3 box-sizing 属性

默认情况下,元素的宽度与高度计算方式如下:

width(宽) + padding(内边距) + border(边框) = 元素实际宽度

height(高) + padding(内边距) + border(边框) = 元素实际高度

这就意味着我们在设置元素的 width/height 时,元素真实展示的高度与宽度会更大(因为元素的边框与内边距也会计算在 width/height 中)。

这个是个较小的框 (width 为 300px ,height 为 100px)。

这个是个较大的框 (width 为 300px ,height 为 100px)。

以上两个 <div> 元素虽然宽度与高度设置一样,但真实展示的大小不一致,因为 div2 指定了内边距:

实例

.div1 {
    width: 300px;
    height:100px;
    border: 1px solid blue;
}

.div2 {
    width: 300px;
   height: 100px;
    padding: 50px;
   border: 1px solid red;
}

尝试一下 »

使用这种方式如果想要获得较小的那个框且包含内边距,就不得不考虑到边框和内边距的宽度。

CSS3 的 box-sizing 属性很好的解决了这个问题。


使用 CSS3 box-sizing 属性

CSS3 box-sizing 属性在一个元素的 width 和 height 中包含 padding(内边距) 和 border(边框)。

如果在元素上设置了 box-sizing: border-box; 则 padding(内边距) 和 border(边框) 也包含在 width 和 height 中:

两个 div 现在是一样大小的!

W3Cschool教程!

以下是两个 <div> 元素添加 box-sizing: border-box; 属性的简单实例。

实例

.div1 {
    width: 300px;
    height:100px;
    border: 1px solid blue;
   box-sizing: border-box;
}

.div2 {
    width: 300px;
   height: 100px;
    padding: 50px;
   border: 1px solid red;
    box-sizing: border-box;
}

尝试一下 »

从结果上看 box-sizing: border-box; 效果更好,也正是很多开发人员需要的效果。

以下代码可以让所有元素以更直观的方式展示大小。很多浏览器已经支持 box-sizing: border-box; (但是并非所有 - 这就是为什么input 和 text 元素设置了 width: 100%; 后的宽度却不一样)。

所有元素使用 box-sizing 是比较推荐的:

实例

* {
    box-sizing: border-box;
}

尝试一下 »

弹性盒子是 CSS3 的一种新的布局模式。

CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。

引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器的版本号。

紧跟在数字后面的 -webkit- 或 -moz- 为指定浏览器的前缀。

属性     
Basic support
(single-line flexbox)
29.0
21.0 -webkit-
11.022.0
18.0 -moz-
6.1 -webkit-12.1 -webkit-
Multi-line flexbox29.0
21.0 -webkit-
11.028.06.1 -webkit-17.0
15.0 -webkit-
12.1

CSS3 弹性盒子内容

弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。

弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。

弹性容器内包含了一个或多个弹性子元素。

注意: 弹性容器外及弹性子元素内是正常渲染的。弹性盒子只定义了弹性子元素如何在弹性容器内布局。

弹性子元素通常在弹性盒子内一行显示。默认情况每个容器只有一行。

以下元素展示了弹性子元素在一行内显示,从左到右:

实例

<!DOCTYPE html>
<html>
<head>
<style>
.flex-container {
    display: -webkit-flex;
    display: flex;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

.flex-item{
    background-color: cornflowerblue;
    width: 100px;
    height: 100px;
   margin: 10px;
}
</style>
</head>
<body>

<div class="flex-container">
  <div class="flex-item">flex item 1</div>
  <div class="flex-item">flex item 2</div>
  <div class="flex-item">flex item 3</div>
</div>

</body>
</html>

尝试一下 »

当然我们可以修改排列方式。

如果我们设置 direction 属性为 rtl (right-to-left),弹性子元素的排列方式也会改变,页面布局也跟着改变:

实例

body {
    direction: rtl;
}

.flex-container {
    display: -webkit-flex;
    display: flex;
    width:400px;
    height: 250px;
    background-color: lightgrey;
}

.flex-item {
    background-color: cornflowerblue;
    width: 100px;
    height: 100px;
   margin: 10px;
}

尝试一下 »

flex-direction

flex-direction 顺序指定了弹性子元素在父容器中的位置。

语法

flex-direction: row | row-reverse | column | column-reverse

flex-direction的值有:

  • row:横向从左到右排列(左对齐),默认的排列方式。
  • row-reverse:反转横向排列(右对齐,从后往前排,最后一项排在最前面。
  • column:纵向排列。
  • column-reverse:反转纵向排列,从后往前排,最后一项排在最上面。

以下实例演示了 row-reverse 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: row-reverse;
    flex-direction: row-reverse;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}


尝试一下 »

以下实例演示了 column 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: column;
    flex-direction: column;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 column-reverse 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: column-reverse;
    flex-direction: column-reverse;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

justify-content 属性

内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis,也可理解为横轴)对齐。

 内容对齐可以理解为弹性盒子的Y轴坐标不变,盒子只会有X轴的变化,所以实际上内容对齐用于设置列对齐。像flex-start效果就有点像左对齐。

justify-content 语法如下:

justify-content: flex-start | flex-end | center | space-between | space-around

各个值解析:

  • flex-start:

    弹性项目向行头紧挨着填充。这个是默认值。第一个弹性项的main-start外边距边线被放置在该行的main-start边线,而后续弹性项依次平齐摆放。

  • flex-end:

    弹性项目向行尾紧挨着填充。第一个弹性项的main-end外边距边线被放置在该行的main-end边线,而后续弹性项依次平齐摆放。

  • center:

    弹性项目居中紧挨着填充。(如果剩余的自由空间是负的,则弹性项目将在两个方向上同时溢出)。

  • space-between:

    弹性项目平均分布在该行上。如果剩余空间为负或者只有一个弹性项,则该值等同于flex-start。否则,第1个弹性项的外边距和行的main-start边线对齐,而最后1个弹性项的外边距和行的main-end边线对齐,然后剩余的弹性项分布在该行上,相邻项目的间隔相等。

  • space-around:

    弹性项目平均分布在该行上,两边留有一半的间隔空间。如果剩余空间为负或者只有一个弹性项,则该值等同于center。否则,弹性项目沿该行分布,且彼此间隔相等(比如是20px),同时首尾两边和弹性容器之间留有一半的间隔(1/2*20px=10px)。

效果图展示:


以下实例演示了 flex-end 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: flex-end;
    justify-content: flex-end;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 center 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: center;
    justify-content: center;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 space-between 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: space-between;
    justify-content: space-between;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 space-around 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: space-around;
    justify-content: space-around;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

align-items 属性

align-items (项目对齐)设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式。

 项目对齐可以理解为弹性盒子的X轴坐标不变,盒子只会有Y轴的变化,所以实际上内容对齐用于设置行对齐。

align-items属性可以理解为纵向的justify-content 

像center效果就是垂直方向的居中。

语法

align-items: flex-start | flex-end | center | baseline | stretch

各个值解析:

  • flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
  • flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
  • center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
  • baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。
  • stretch:如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。

以下实例演示了 stretch(默认值) 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: stretch;
    align-items: stretch;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 flex-start 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: flex-start;
    align-items: flex-start;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 flex-end 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: flex-end;
    align-items: flex-end;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 center 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: center;
    align-items: center;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 baseline 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: baseline;
    align-items: baseline;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

flex-wrap 属性

flex-wrap 属性用于指定弹性盒子的子元素换行方式。

语法

flex-wrap: nowrap|wrap|wrap-reverse|initial|inherit; 

各个值解析:

  • nowrap - 默认,弹性容器为单行。该情况下弹性子项可能会溢出容器。
  • wrap - 弹性容器为多行。该情况下弹性子项溢出的部分会被放置到新行,子项内部会发生断行
  • wrap-reverse -反转 wrap 排列。

以下实例演示了 nowrap 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: nowrap;
    flex-wrap: nowrap;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 wrap 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

以下实例演示了 wrap-reverse 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap-reverse;
    flex-wrap: wrap-reverse;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

尝试一下 »

align-content 属性

align-content 属性用于修改 flex-wrap 属性的行为。类似于 align-items, 但它不是设置弹性子元素的对齐,而是设置各个行的对齐。

语法

align-content: flex-start | flex-end | center | space-between | space-around | stretch

各个值解析:

  • stretch - 默认。各行将会伸展以占用剩余的空间。
  • flex-start - 各行向弹性盒容器的起始位置堆叠。
  • flex-end - 各行向弹性盒容器的结束位置堆叠。
  • center -各行向弹性盒容器的中间位置堆叠。
  • space-between -各行在弹性盒容器中平均分布。
  • space-around - 各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。

以下实例演示了 center 的使用:

实例

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    -webkit-align-content: center;
    align-content: center;
    width: 300px;
    height: 300px;
    background-color: lightgrey;
}

尝试一下 »

弹性子元素属性

排序

语法

order: 

各个值解析:

  • <integer>:没有设置order属性的顺序值默认为0.

    负值在前,然后默认为0,正值最后,顺序值越小越在前面

order 属性设置弹性容器内弹性子元素的属性:

实例

.flex-item {
    background-color: cornflowerblue;
    width: 100px;
    height: 100px;
    margin: 10px;
}

.first {
    -webkit-order: -1;
    order: -1;
}

尝试一下 »

对齐

设置"margin"值为"auto"值,自动获取弹性容器中剩余的空间。所以设置垂直方向margin值为"auto",可以使弹性子元素在弹性容器的两上轴方向都完全集中。

以下实例在第一个弹性子元素上设置了 margin-right: auto; 。 它将剩余的空间放置在元素的右侧:

实例

.flex-item {
    background-color: cornflowerblue;
    width: 75px;
    height: 75px;
    margin: 10px;
}

.flex-item:first-child {
    margin-right: auto;
}

尝试一下 »

完美的居中

以下实例将完美解决我们平时碰到的居中问题。

使用弹性盒子,居中变的很简单,只想要设置 margin: auto; 可以使得弹性子元素在两上轴方向上完全居中:

实例

.flex-item {
    background-color: cornflowerblue;
    width: 75px;
    height: 75px;
    margin: auto;
}

尝试一下 »

align-self

align-self 属性用于设置弹性元素自身在侧轴(纵轴)方向上的对齐方式。

语法

align-self: auto | flex-start | flex-end | center | baseline | stretch

各个值解析:

  • auto:如果'align-self'的值为'auto',则其计算值为元素的父元素的'align-items'值,如果其没有父元素,则计算值为'stretch'。
  • flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
  • flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
  • center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
  • baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。
  • stretch:如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。

以下实例演示了弹性子元素上 align-self 不同值的应用效果:

实例

.flex-item {
    background-color: cornflowerblue;
    width: 60px;
    min-height: 100px;
    margin: 10px;
}

.item1 {
    -webkit-align-self: flex-start;
    align-self: flex-start;
}
.item2 {
    -webkit-align-self: flex-end;
    align-self: flex-end;
}

.item3 {
    -webkit-align-self: center;
    align-self: center;
}

.item4 {
    -webkit-align-self: baseline;
    align-self: baseline;
}

.item5 {
    -webkit-align-self: stretch;
    align-self: stretch;
}

尝试一下 »

flex

flex 属性用于指定弹性子元素如何分配空间。

语法

flexnone | [ flex-grow ] || [ flex-shrink ] || [ flex-basis ]

各个值解析:

  • none:none关键字的计算值为: 0 0 auto
  • [ flex-grow ]:定义弹性盒子元素的扩展比率。
  • [ flex-shrink ]:定义弹性盒子元素的收缩比率。
  • [ flex-basis ]:定义弹性盒子元素的默认基准值。

以下实例中,第一个弹性子元素占用了 2/4 的空间,其他两个各占 1/4 的空间:

实例

.flex-item {
    background-color: cornflowerblue;
    margin: 10px;
}

.item1 {
    -webkit-flex: 2;
    flex: 2;
}

.item2 {
    -webkit-flex: 1;
    flex: 1;
}

.item3 {
    -webkit-flex: 1;
    flex: 1;
}

尝试一下 »

更多实例

使用弹性盒子创建响应式页面


CSS3 弹性盒子属性

下表列出了在弹性盒子中常用到的属性:

属性描述
display指定 HTML 元素盒子类型。
flex-direction指定了弹性容器中子元素的排列方式
justify-content设置弹性盒子元素在主轴(横轴)方向上的对齐方式。
align-items设置弹性盒子元素在侧轴(纵轴)方向上的对齐方式。
flex-wrap设置弹性盒子的子元素超出父容器时是否换行。
align-content修改 flex-wrap 属性的行为,类似align-items, 但不是设置子元素对齐,而是设置行对齐
flex-flowflex-direction 和 flex-wrap 的简写
order设置弹性盒子的子元素排列顺序。
align-self在弹性子元素上使用。覆盖容器的 align-items 属性。
flex设置弹性盒子的子元素如何分配空间。


CSS2 多媒体类型

@media 规则在 CSS2 中有介绍,针对不同媒体类型可以定制不同的样式规则。

例如:你可以针对不同的媒体类型(包括显示器、便携设备、电视机,等等)设置不同的样式规则。

但是这些多媒体类型在很多设备上支持还不够友好。


CSS3 多媒体查询

CSS3 的多媒体查询继承了 CSS2 多媒体类型的所有思想: 取代了查找设备的类型,CSS3 根据设置自适应显示。

媒体查询可用于检测很多事情,例如:

  • viewport(视窗) 的宽度与高度
  • 设备的宽度与高度
  • 朝向 (智能手机横屏,竖屏) 。
  • 分辨率

目前很多针对苹果手机,Android 手机,平板等设备都会使用到多媒体查询。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器的版本号。

属性     
@media21.09.03.54.09.0

多媒体查询语法

多媒体查询由多种媒体组成,可以包含一个或多个表达式,表达式根据条件是否成立返回 true 或 false。

@media not|only mediatype and (expressions) {    CSS-Code;}

如果指定的多媒体类型匹配设备类型则查询结果返回 true,文档会在匹配的设备上显示指定样式效果。

除非你使用了 not 或 only 操作符,否则所有的样式会适应在所有设备上显示效果。

  • not: not是用来排除掉某些特定的设备的,比如 @media not print(非打印设备)。

  • only: 用来定某种特别的媒体类型。对于支持Media Queries的移动设备来说,如果存在only关键字,移动设备的Web浏览器会忽略only关键字并直接根据后面的表达式应用样式文件。对于不支持Media Queries的设备但能够读取Media Type类型的Web浏览器,遇到only关键字时会忽略这个样式文件。

  • all: 所有设备,这个应该经常看到。

你也可以在不同的媒体上使用不同的样式文件:

<link rel="stylesheet" media="mediatype and|not|only (expressions)" href="print.css">

CSS3 多媒体类型

描述
all用于所有多媒体类型设备
print用于打印机
screen用于电脑屏幕,平板,智能手机等。
speech用于屏幕阅读器

多媒体查询简单实例

使用多媒体查询可以在指定的设备上使用对应的样式替代原有的样式。

以下实例中在屏幕可视窗口尺寸大于 480 像素的设备上修改背景颜色:

实例

@media screen and (min-width: 480px) {
    body {
       background-color: lightgreen;
    }
}

尝试一下 »

以下实例在屏幕可视窗口尺寸大于 480 像素时将菜单浮动到页面左侧:

实例

@media screen and (min-width: 480px) {
    #leftsidebar {width: 200px; float: left;}
    #main {margin-left:216px;}
}

尝试一下 »

CSS3 @media 参考

更多多媒体查询内容可以参考@media 规则。

本章节我们将为大家演示一些多媒体查询实例。

开始之前我们先制作一个电子邮箱的链接列表。HTML 代码如下:

实例 1

<!DOCTYPE html>
<html>
<head>
<style>
ul {
    list-style-type: none;
}

ul li a {
    color: green;
    text-decoration: none;
    padding: 3px;
    display: block;
}
</style>
</head>
<body>

<ul>
  <li><a data-email="johndoe@example.com"href="mailto:johndoe@example.com">John Doe</a></li>
  <li><a data-email="marymoe@example.com"href="mailto:marymoe@example.com">Mary Moe</a></li>
  <li><a data-email="amandapanda@example.com"href="mailto:amandapanda@example.com">Amanda Panda</a></li>
</ul>

</body>
</html>

尝试一下 »

注意 data-email 属性。在 HTML 中我们可以使用带 data- 前缀的属性来存储信息。


520 到 699px 宽度 - 添加邮箱图标

当浏览器的宽度在 520 到 699px, 邮箱链接前添加邮件图标:

实例 2

@media screen and (max-width: 699px) and (min-width: 520px) {
    ul li a {
        padding-left: 30px;
        background: url(email-icon.png) left center no-repeat;
    }
}

尝试一下 »

700 到 1000px - 添加文本前缀信息

当浏览器的宽度在 700 到 1000px, 会在邮箱链接前添加 "Email: ":

实例 3

@media screen and (max-width: 1000px) and (min-width: 700px) {
    ul li a:before {
        content: "Email: ";
        font-style: italic;
        color: #666666;
    }
}

尝试一下 »

大于 1001px 宽度 - 添加邮件地址

当浏览器的宽度大于 1001px 时,会在链接后添加邮件地址接。

我们会使用 data- 属性来为每个人名后添加邮件地址:

实例 4

@media screen and (min-width: 1001px) {
    ul li a:after {
        content: " (" attr(data-email) ")";
        font-size: 12px;
        font-style: italic;
        color: #666666;
    }
}

尝试一下 »

大于 1151px 宽度 - 添加图标

当浏览器的宽度大于 1001px 时,会在人名前添加图标。

实例中,我们没有编写额外的查询块,我们可以在已有的查询媒体后使用逗号分隔来添加其他媒体查询 (类似 OR 操作符):

实例 5

@media screen and (max-width: 699px) and (min-width: 520px), (min-width: 1151px) {
    ul li a {
        padding-left: 30px;
        background: url(email-icon.png) left center no-repeat;
    }
}

尝试一下 »

更多实例

在一个网页的侧栏上使用邮件列表链接
该实例在网页的左侧栏添加了邮件链接列表。

CSS 主要用于控制网页的外观,CSS 代码可以随意变化网页的布局和网页的内容样式。当 CSS3 出现以后,更是可以让网页增添了不少动画元素,随着IE6,7的淘汰,手机端的崛起更是让它成熟了许多。CSS3 动画简洁方便,高端大气,让网页变得易于交互且生动有趣。CSS3 动画其实不算复杂,比 JS 简单得多,下面 51coolma 就为大家精挑细选了多个种类的 CSS 动画源代码下载地址,希望对你有所帮助。

纯 css3 云彩动画效果

云彩动画

效果描述:
  • 纯 CSS3 实现的云彩动画飘动效果
  • 非常逼真实用
使用方法:
  1. 将 body 中的代码部分拷贝到你的页面中
  2. 引入对应的 CSS 文件即可

多款炫酷鼠标悬停图文动画效果

鼠标悬停图文动画

效果描述:
  • 纯 CSS3 实现的鼠标悬停动画效果,各种炫酷动画,用户体验非常好
使用方法:
  1. 将 CSS 代码引入到你的网页中
  2. 将 body 中的代码部分拷贝到你的页面中

简单漂亮的CSS3图片悬停遮罩效果

图片悬停遮罩

效果描述:
  • 纯 CSS3 实现的动画遮罩效果
  • 当鼠标悬停在图片上,会从右上角一个沿着逆时针方向旋转过来的动画效果
  • 鼠标移走后遮罩复位
使用方法:
  1. 将 CSS 样式拷贝过去
  2. 将 ​index.html​ 中的代码部分拷贝过去即可
    (注意保持文件路径正确)

纯CSS3模拟风车转动效果

模拟风车

效果描述:
  • 圆形自动旋转,对于 CSS3 来说已经是非常常见的功能了
  • 一个简单的 keyframes 即可实现

使用方法:
  1. 将 CSS 样式拷贝过去
  2. 将 ​index.html​ 中的代码部分拷贝过去即可
    (注意保持文件路径正确)

纯CSS3模拟摩天轮旋转动画效果

模拟摩天轮

效果描述:
  • 这是用纯 CSS3 实现的一个旋转动画效果,模拟游乐场里的摩天轮旋转动画效果
  • 效果逼真好用

使用方法:
  1. 引入 css 样式
  2. 将​ index.html​ 中的代码部分拷贝过去即可

纯CSS3鼠标悬停抖动效果

鼠标悬停抖动
效果描述:
  • 网页上有时候需要显示出抖动提示用户的效果
  • 比如鼠标悬停在一个按钮上,按钮呈现抖动的效果
  • 今天给大家推荐的这个就是使用 CSS3 实现的效果
  • 当你的鼠标悬停在按钮上的时候,按钮会抖动
使用方法:
  1. 将 CSS 样式复制到你的页面中
  2. 给需要抖动的按钮加对应的class即可

用于图片列表排列(文字说明较多)的CSS3动画效果

图文列表

效果描述:
  • 我们在很多网站上看到一些比较漂亮的图片列表排列效果
  • 当鼠标悬停在任意一个图片上的时候,会有一些让人非常舒服的动画
  • 今天推荐一个列表,其中有好多个动画
  • 可以任意挑选一个放到你的网站上,非常不错
使用方法:
  1. 将 CSS 样式引入到网页中
  2. 将 ​index.html​ 中的代码部分拷贝到你的网页中

简单好看的纯CSS3翻书效果

翻书效果

效果描述:
  • 好久没有看到如此高逼格的纯 CSS3 特效了
  • 蛮精致的一款纯 CSS3 模拟书本翻页效果
  • 如果看不到效果,建议用最新版的谷歌浏览器查看
使用方法:
  1. 将 CSS 样式引入到网页中
  2. 将 ​index.html​ 中的代码部分拷贝到你的网页中

纯CSS3立体式3D鼠标悬停效果

3D鼠标悬停效果

效果描述:

  • 只用 CSS3 实现的图片翻转动画效果
  • 非常简单好用,且不需要任何 js 就可以实现
  • 对于 js 较若的同学来说,是非常欢喜的一件事
  • 注意:不支持低版本浏览器
使用方法:
  1. 将 CSS 样式拷贝到你的网页中
  2. 将 body 中需要的代码部分拷贝到你需要的地方即可

多个CSS3实现的星级评分效果

星级评分

效果描述:
  • 不需要 js 支持,只用 CSS3 就可以实现的评分效果
使用方法:
  1. 将 CSS 中的样式拷贝到你的网页中
  2. 将 body 中需要的代码部分拷贝到你需要的地方即可

纯CSS3鼠标滑过图片效果动画

鼠标滑过图片效果

效果描述:
  • imagehover.css​ CSS 库
  • 里面包含了好多纯 CSS3 鼠标悬停后的图片效果
  • 可以直接拿来使用
使用方法:
  1. 将 CSS 中的样式拷贝到你的网页中
  2. 将 body 中的代码部分拷贝到你需要的地方即可

模拟跳动的音乐音符效果


效果描述:
  • 我们在听音乐的时候,经常看到某个角落里有一个随着音乐高低而跳动的东东
  • 几根竖线这样高低跳动,看着蛮有意思的
使用方法:
  1. 将 style 中的样式拷贝到你的网页中
  2. 将 body 中的代码部分拷贝到你需要的地方即可
源码下载

简单易用的图片墙效果

图片墙

效果描述:
  • 一组纯 CSS3 实现的图片墙动画效果
  • 不规则排列,带有阴影倒影效果
使用方法:
  1. 将 ​style.css​ 样式引入到网页中
  2. 将 body 中的代码部分拷贝到你需要的地方即可

立体式3D旋转动画效果

3D旋转动画

效果描述:
  • 一个非常简洁好看的纯 CSS3 旋转效果
  • 当鼠标移动到图片上后,会立体式翻转显示隐藏的文字内容
  • 鼠标移走后消失
使用方法:
  1. 将 ​style.css​ 样式引入到网页中
  2. 将 body 中的代码部分拷贝到你需要的地方即可

飞舞的火箭动画

火箭动画

效果描述:
  • 很偶然的一个机会,看到百度 fls 构建工具官网 banner 上有一个不断飞舞的火箭效果
  • 感觉非常不错,我第一反应它肯定是纯CSS3制作的,这是直觉,别问我为啥,因为换做是我
  • 我也会用 CSS3 做啊,虽然麻烦了一些,但是用户体验非常棒
使用方法:
  1. 将 ​style.css​ 中的样式复制到你的样式表中
  2. 将 body 中的代码部分拷贝到你需要的地方即可


自己跳舞的树

自己跳舞的树

效果描述:
  • 左右摆动的一棵树,第一反应应该是图片动画做的
  • 但是你错了,这是用纯代码实现的效果,而且不需要js,是不是很赞呢
使用方法:
  1. 将 body 中的代码部分拷贝过去
  2. 将 ​lanren.css​ 样式引入到你的页面即可
    (注意:不兼容低版本浏览器哦)

狐狸尾巴燃烧效果

尾巴燃烧效果

效果描述:
这个绚丽的狐狸尾巴动画效果看起来就像尾巴在燃烧一样,看起来是不是很神奇,很羡慕这是如何制作出来的。
当然,是有两种方法可以制作出来的,首先要跟大家介绍的是方法:
  • 利用 CSS3 的动画属性 animation 设置关键词,并分步移动图片,视觉感官上尾巴就在燃烧了。
背景图片很大,有 7020 X 156 像素单位大,使用 CSS step 来移动背景图片位置,这个动画可以无限循环下去,只要把背景图位置重置为0,重头运行一遍就行了。
  • 但是有人要问了,这个是 CSS3 哦,低版本浏览器不支持怎么办,那么简单,这一点可以利用 jQuery 和背景动画工具,叫做 Spritely,写法是:​$(“#lanren”).sprite({fps:12,no_of_frames:44,rewind:true});
这样写对于客户端来说,最大的问题在于内存占用率很高,不能跟我们这高大上的 CSS3 相比,这里就不再赘述

使用方法:
  1. 将 head 中的 CSS 样式引入到你的网页中
  2. 在你需要显示的地方建一个 id 为 lanren 的 div 即可

鼠标移入div图片后按钮飞入动画效果

飞入效果

效果描述:
  • 几十个小动画效果
  • 当鼠标移入到图片上的时候,其中的按钮保持水平居中显示
  • 各种常见的动画效果都在里面
使用方法:
  1. 将 head 中的样式复制到你的样式表中
  2. 将 body 中的代码部分拷贝过去即可
    (css3 特效,不支持低版本浏览器)

放大镜动画效果

放大镜动画

效果描述:
  • jquery.smoothproducts.js​ 插件,直接支持在原始图片位置上放大图片
  • 而不是像其他的普通的放大镜效果那样另外在旁边开辟一个新的位置
  • 适合特殊需要的同学使用
使用方法:
  1. 将 head 中的样式复制到你的样式表中
  2. 将 body 中的代码部分拷贝过去即可
    (注意保持图片路径正确)

点击动画效果

点击动画

效果描述:
  • 简单有效的 css3 动画效果,当然,其中还引入了多个 js 插件
使用方法:
  1. 将 lanren.css 样式引入到你的网页中
  2. 将 body 中的代码部分拷贝到你需要的地方即可
    (注意保持文件路径正确)

颗粒全屏动画效果

颗粒全屏动画

效果描述:
  • 之前推荐过好多此种 canvas 颗粒动画效果
  • 今天再次推荐一个,其中包含红、黑、黄三种颜色
  • 当然,你也可以将颜色修改为你喜欢的,可以在 ​lanrenzhijia.js​ 中修改颜色代码即可
使用方法:
  1. 将 head 中的样式引入到你的样式表中
  2. 将 body 中的代码部分拷贝过去即可

多种滚动下拉动画加载效果

滚动下拉动画

效果描述:
  • 视觉效果非常不错的 css3 列表下拉动画效果,附件提供了多达 16 种不同的动画效果
  • 懒人们可根据需要复制对应的article列表过去使用即可
使用方法:
  1. 将 head 中的样式引入到你的样式表中
  2. 将 body 中你需要的代码部分拷贝过去即可

简洁动感旋转圣诞树效果

旋转圣诞树

效果描述:
  • 立体式旋转效果非常棒的一款圣诞树效果
  • 默认左右旋转
  • css3 效果,低版本浏览器不支持
使用方法:
  1. 1、将 head 中的样式引入到你的样式表中
  2. 2、将 body 中需要的代码部分拷贝过去即可

高度灵活的模拟扑克牌切换图片效果

模拟扑克牌

效果描述:
  • 插件提供了三种图片切换效果,非常流畅
  • 不过其中引入了大部分的 css3 代码,低版本浏览器并不支持
  • 建议在高版本浏览器下浏览
使用方法:
  1. 将 head 中的样式引入到你的样式表中
  2. 将 body 中的代码部分拷贝过去即可
    (注意保持图片路径正确)

28个 加载loading动画特效

loading动画

效果描述:
  • 并不是纯 css3 的,偶尔的一点点js也是可以忽略的啦
  • 提供了 28 个不同的加载效果,你可以任选一种作为你的手机网页端部分模块的 loading 效果,而不需要考虑兼容性的问题
使用方法:
  1. 将 head 中的 css 样式以及js引入到你的网页中
  2. 选择一个你喜欢的 loading 效果,复制其中的 html 到你的网页中即可
    (注意 ​index.html​ 底部的 js 别漏掉了)

网页左上角扇形状导航效果

扇形状导航

效果描述:
  • 位置固定在网页的左上角导航
  • 纯 css3 实现的效果,当然它并没有采用任何图片以及 js 效果
  • 一样非常美观,不过可惜的是不支持低版本浏览器
使用方法:
  1. 将 ​lanrenzhijia.css​ 样式引入到你的网页中
  2. 将 body 中的代码部分拷贝到你需要的地方即可

模拟雷达波向外散发动画效果



描述:
  • 就在不久之前万维网联盟已宣布完成 html5 标准的制定工作
  • 所以呢,html5+css3 效果离我们生活已经越来越近了
  • 今天给大家推荐一款非常舒适,且只使用 css3 实现的效果,无 js
使用方法:
  • 将附件 ​index.html​ 文件中的 CSS 代码以及 HTML 代码拷贝到你的网页中即可


CSS是用于网页设计可用的最强大的工具之一。使用它我们可以在几分钟内改变一个网站的界面,而不用改变页面的标签。在深入研究CSS选择器之前,我们应该先搞懂CSS优先级是如何工作的。比如给一个p标签增加一个类(class),可是执行后该class中的有些属性并没有起作用。通过Firebug查看,发现没有起作用的属性被覆盖了。这个时候CSS选择器优先级的问题了。


当我们写CSS的时候需要注意有些选择器在级联(cascade)上会高于其它选择器,我们写在最后面的选择器将不一定会覆盖前面我们写在同一个元素的样式。那么你如何计算指定选择器的优先级?如果你考虑到将优先级表示为用逗号隔开的四个数字就会相当简单,比如:1, 1, 1, 1 或0, 2, 0, 1


第一个数字(a)通常就是0,除非在标签上使用style属性;
第二个数字(b)是该选择器上的id的数量的总和;
第三个数字(c)是用在该选择器上的其它属性选择器和伪类的总和。这里包括class (.example) 和属性选择器(比如 li[id=red]);
第四个数字(d)计算元素(就像table、p、div等等)和伪元素(就像:first-line等);
通用选择器(*)是0优先级;
如果两个选择器有同样的优先级,在样式表中后面的那个起作用。
让我们看几个例子,这样或许比较容易理解些:

#sidebar h2 — 0, 1, 0, 1
h2.title — 0, 0, 1, 1
h2 + p — 0, 0, 0, 2
#sidebar p:first-line — 0, 1, 0, 2
在下面的例子中,第一个将会起作用,因为它比第二个优先级高:

#sidebar p#first { color: red; } — 0, 2, 0, 1
#sidebar p:first-line { color: blue; } — 0, 1, 0, 2
至少基本理解优先级是如何工作的是很重要的,但是一些工具比如Firebug,在我们审查指定元素的时候,按照选择器的优先级列出所有的css选择器对让我们知道在指定元素上哪个选择器是有效的是很有用的,让你非常容易的看到那个选择器作用于一个元素上了。


css选择器


CSS3 选择器分类

CSS3选择器分类如下图所示:

选择器分类


选择器的语法

1,基本选择器语法

选择器类型功能描述
* 通配选择器 选择文档中所有HTML元素
E 元素选择器选择指定类型的HTML元素
#id ID选择器选择指定ID属性值为“id”的任意类型元素
.class 类选择器选择指定class属性值为“class”的任意类型的任意多个元素
selector1,selectorN 群组选择器将每一个选择器匹配的元素集合并

 

2,层次选择器语法

选择器类型功能描述
E  F后代选择器(包含选择器)选择匹配的F元素,且匹配的F元素被包含在匹配的E元素内
E>F子选择器选择匹配的F元素,且匹配的F元素所匹配的E元素的子元素
E+F相邻兄弟选择器选择匹配的F元素,且匹配的F元素紧位于匹配的E元素的后面
E~F通用选择器选择匹配的F元素,且位于匹配的E元素后的所有匹配的F元素

 

3,动态伪类选择器语法

选择器类型功能描述
E:link链接伪类选择器  选择匹配的E元素,而且匹配元素被定义了超链接并未被访问过。常用于链接描点上
E:visited  链接伪类选择器选择匹配的E元素,而且匹配元素被定义了超链接并已被访问过。常用于链接描点上
E:active用户行为选择器选择匹配的E元素,且匹配元素被激活。常用于链接描点和按钮上
E:hover用户行为选择器选择匹配的E元素,且用户鼠标停留在元素E上。IE6及以下浏览器仅支持a:hover
E:focus用户行为选择器选择匹配的E元素,而且匹配元素获取焦点

 

4,目标伪类选择器

选择器功能描述
E:target选择匹配E的所有元素,且匹配元素被相关URL指向

 

5,UI元素状态伪类选择器语法

选择器类型功能描述
E:checked选中状态伪类选择器匹配选中的复选按钮或者单选按钮表单元素
E:enabled启用状态伪类选择器匹配所有启用的表单元素
E:disabled不可用状态伪类选择器匹配所有禁用的表单元素


 6,结构伪类选择器使用语法

选择器功能描述
E:first-child作为父元素的第一个子元素的元素E。与E:nth-child(1)等同
E:last-child作为父元素的最后一个子元素的元素E。与E:nth-last-child(1)等同
E:root选择匹配元素E所在文档的根元素。在HTML文档中,根元素始终是html,此时该选择器与html类型选择器匹配的内容相同
E F:nth-child(n)选择父元素E的第n个子元素F。其中n可以是整数(1,2,3)、关键字(even,odd)、可以是公式(2n+1),而且n值起始值为1,而不是0.
E F:nth-last-child(n)选择父元素E的倒数第n个子元素F。此选择器与E:nth-child(n)选择器计算顺序刚好相反,但使用方法都是一样的,其中:nth-last-child(1)始终匹配最后一个元素,与last-child等同
E:nth-of-type(n)选择父元素内具有指定类型的第n个E元素
E:nth-last-of-type(n)选择父元素内具有指定类型的倒数第n个E元素
E:first-of-type选择父元素内具有指定类型的第一个E元素,与E:nth-of-type(1)等同
E:last-of-type选择父元素内具有指定类型的最后一个E元素,与E:nth-last-of-type(1)等同
E:only-child选择父元素只包含一个子元素,且该子元素匹配E元素
E:only-of-type选择父元素只包含一个同类型子元素,且该子元素匹配E元素
E:empty选择没有子元素的元素,而且该元素也不包含任何文本节点

注:(1),“ul>li:nth-child(3)”表达的并不是一定选择列表ul元素中的第3个子元素li,仅有列表ul中第3个li元素前不存在其他的元素,命题才有意义,否则不会改变列表第3个li元素的样式。

(2),:nth-child(n)  中参数只能是n,不可以用其他字母代替。

(3),:nth-child(odd) 选择的是奇数项,而使用:nth-last-child(odd) 选择的却是偶数项


7,否定伪类选择器

选择器功能描述
E:not(F)匹配所有除元素F外的E元素


8,属性选择器语法

选择器功能描述
[attribute]用于选取带有指定属性的元素。
[attribute=value]用于选取带有指定属性和值的元素。
[attribute~=value]用于选取属性值中包含指定词汇的元素。
[attribute|=value]用于选取带有以指定值开头的属性值的元素,该值必须是整个单词。
[attribute^=value]匹配属性值以指定值开头的每个元素。
[attribute$=value]匹配属性值以指定值结尾的每个元素。
[attribute*=value]匹配属性值中包含指定值的每个元素。

注:例<div class="links item"></div>其中a[class="links"]{……} 是找不到匹配元素,只有a[class="links item"]{……}才匹配


如下图所示,在网页设计中,有时候会需要用到渐变效果,渐变可以创建出类似于彩虹的视觉图案效果,在没有CSS3之前,为了显示一个渐变需要专门制作一个图片,这种不法不但不灵活还增加请求数,而CSS3可以轻松实现网页渐变效果,用于做渐变背景、渐变导航、配合CSS3动画做特效等。在CSS3中,Gradient(渐变)分为linear-gradient(线性渐变)和radial-gradient(径向渐变)。CSS颜色线性渐变的语法在各种浏览器里的实现稍微有些不同,但最后是统一标准的:


css3渐变

CSS颜色线性渐变的语法

background-image: linear-gradient(<point> || <angle>,]? <stop>, <stop> [, <stop>]*)

第一个参数是渐变起始点或角。第二个参数是一种颜色停止点(color stops)。至少需要两种颜色(起点和终点),你可以添加任意种颜色来增加颜色渐变的丰富程度。对颜色停止点的定义可以是一种颜色,或一种颜色加一个百分比:

/*  color-stop(percentage/amount, color) */color-stop(0.20, red)
因为CSS渐变色(Gradients)技术是CSS3里比较新的技术,属于高级的CSS功能,于是每种浏览器对这种技术的实现都添加了一些自己的特色。例如以WebKIt为渲染引擎的谷歌浏览器,就对它实现了多种语法。下面的这段代码基本包括了所有自顶向下颜色渐变的所有情况:

#example1	{	/* 底色 */	background-color: #063053;	/* chrome 2+, safari 4+; multiple color stops */	background-image:-webkit-gradient(linear, left bottom, left top, color-stop(0.32, #063053), color-stop(0.66, #395873), color-stop(0.83, #5c7c99));	/* chrome 10+, safari 5.1+ */	background-image: -webkit-linear-gradient(#063053, #395873, #5c7c99);	/* firefox; multiple color stops */	background-image: -moz-linear-gradient(top,#063053, #395873, #5c7c99);	/* ie 6+ */	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053', endColorstr='#395873');	/* ie8 + */	-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053', endColorstr='#395873')";	/* ie10 */	background-image: -ms-linear-gradient(#063053, #395873, #5c7c99);	/* opera 11.1 */	background-image: -o-linear-gradient(#063053, #395873, #5c7c99);	/* 标准写法 */	background-image: linear-gradient(#063053, #395873, #5c7c99);
注意,我们首先设定了一个背景色。这个颜色是在万一用户使用的浏览器不支持CSS渐变色(Gradients)技术时使用的颜色。CSS渐变色(Gradients)技术里还支持带有角度的渐变方向,而不仅仅只有直上直下或直左直右。我们可以用下面的语法实现它:

#example2	{	/* fallback */	background-color:#063053;	/* chrome 2+, safari 4+; multiple color stops */	background-image:-webkit-gradient(linear, left bottom, right top, color-stop(0.32, #063053), color-stop(0.66, #395873), color-stop(0.83, #5c7c99));	/* chrome 10+, safari 5.1+ */	background-image:-webkit-linear-gradient(45deg, #063053, #395873, #5c7c99);	/* firefox; multiple color stops */	background-image:-moz-linear-gradient(45deg, #063053, #395873, #5c7c99);	/* ie10 */	background-image: -ms-linear-gradient(45deg, #063053 0%, #395873 100%);	/* opera 11.1 */	background-image: -o-linear-gradient(45deg, #063053, #395873);	/* The "standard" */	background-image: linear-gradient(45deg, #063053, #395873);}
我们可以做的更复杂些….一个色彩缤纷的CSS颜色渐变?下面我们来做一个彩虹:
/* example 3 - linear rainbow */#example3	{	/* fallback */	background-color:#063053;	/* chrome 2+, safari 4+; multiple color stops */	background-image:-webkit-gradient(linear, left bottom, left top, color-stop(0.20, red), color-stop(0.40, green), color-stop(0.6, blue), color-stop(0.8, purple), color-stop(1, orange));	/* chrome 10+, safari 5.1+ */	background-image:-webkit-linear-gradient(red, green, blue, purple, orange);	/* firefox; multiple color stops */	background-image:-moz-linear-gradient(top, red, green, blue, purple, orange);	/* ie10 */	background-image: -ms-linear-gradient(red, green, blue, purple, orange);	/* opera 11.1 */	background-image: -o-linear-gradient(red, green, blue, purple, orange);	/* The "standard" */	background-image: linear-gradient(red, green, blue, purple, orange);}

关于IE对CSS颜色渐变技术的支持做一些说明:在早期IE是使用filter和-ms-filter语法实现渐变色,而最新版的IE里改为了-ms-linear-gradient语法。我们可以使用CSS里条件判断语句来解决这个问题:

<!--[if lt IE 10]><style>.gradientElement {	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053', endColorstr='#395873');	-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053', endColorstr='#395873')";}</style><![endif]-->


线性渐变的语法

对象选择器 {background:-浏览器前缀-linear-gradient( 起点方向,起点颜色,终点颜色);}


径向渐变的语法

对象选择器 {background:-浏览器前缀-radial-gradient( 起点方向,形状,大小,起点颜色,终点颜色);}


渐变的兼容方法

1、线性渐变

各浏览器前缀
(1)Firefox
Firefox
(2)Safari , Chrome
Safari
Chrome
(3)Opera 11.10+

Opera
兼容IE
IE
2、径向渐变
径向渐变和线性渐变的语法差不多,详情请查看//www.51coolma.cn/css3/oj26bfli.html

渐变应用实例

1、径向渐变做大背景

径向渐变
background-color: #4B770A;background-image: -webkit-gradient(radial,                        50% 400, 1,                        50% 400, 400,                        from(rgba(255, 255, 255, 0.3)),                        to(rgba(255, 255, 255, 0)));//仅实现了webkit下的效果

2、蒙版效果

蒙版效果
position: fixed;    width: 100%;    height: 60px;    bottom: 0px;    content: '';    background: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.33) 33%, rgba(255, 255, 255, 0.73) 66%, rgba(255, 255, 255, 1) 91%);    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255, 255, 255, 0)), color-stop(33%,rgba(255, 255, 255, 0.33)), color-stop(66%,rgba(255, 255, 255, 0.73)), color-stop(91%,rgba(255, 255, 255, 1)));    background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%,rgba(255, 255, 255, 0.33) 33%,rgba(255, 255, 255, 0.73) 66%,rgba(255, 255, 255, 1) 91%);    background: -o-linear-gradient(top, rgba(255, 255, 255, 0) 0%,rgba(255, 255, 255, 0.33) 33%,rgba(255, 255, 255, 0.73) 66%,rgba(255, 255, 255, 1) 91%);    background: -ms-linear-gradient(top, rgba(255, 255, 255, 0) 0%,rgba(255, 255, 255, 0.33) 33%,rgba(255, 255, 255, 0.73) 66%,rgba(255, 255, 255, 1) 91%);    background: linear-gradient(top, rgba(255, 255, 255, 0) 0%,rgba(255, 255, 255, 0.73) 33%,rgba(255, 255, 255, 0.73) 66%,rgba(255, 255, 255, 1) 91%);    filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=0 );

3、渐变按钮

渐变按钮

.myButton {    -moz-box-shadow:inset 0px 1px 0px 0px #ffffff;    -webkit-box-shadow:inset 0px 1px 0px 0px #ffffff;    box-shadow:inset 0px 1px 0px 0px #ffffff;    background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #ededed), color-stop(1, #dfdfdf));    background:-moz-linear-gradient(top, #ededed 5%, #dfdfdf 100%);    background:-webkit-linear-gradient(top, #ededed 5%, #dfdfdf 100%);    background:-o-linear-gradient(top, #ededed 5%, #dfdfdf 100%);    background:-ms-linear-gradient(top, #ededed 5%, #dfdfdf 100%);    background:linear-gradient(to bottom, #ededed 5%, #dfdfdf 100%);    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#dfdfdf',GradientType=0);    background-color:#ededed;     -moz-border-radius:6px;    -webkit-border-radius:6px;    border-radius:6px;    border:1px solid #dcdcdc;    display:inline-block;    cursor:pointer;    color:#777777;    font-family:arial;    font-size:15px;    font-weight:bold;    padding:6px 24px;    text-decoration:none;    text-shadow:0px 1px 0px #ffffff;    margin-top: 100px;}.myButton:hover {    background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #dfdfdf), color-stop(1, #ededed));    background:-moz-linear-gradient(top, #dfdfdf 5%, #ededed 100%);    background:-webkit-linear-gradient(top, #dfdfdf 5%, #ededed 100%);    background:-o-linear-gradient(top, #dfdfdf 5%, #ededed 100%);    background:-ms-linear-gradient(top, #dfdfdf 5%, #ededed 100%);    background:linear-gradient(to bottom, #dfdfdf 5%, #ededed 100%);    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfdfdf', endColorstr='#ededed',GradientType=0);    background-color:#dfdfdf;}.myButton:active {    position:relative;    top:1px;}

4、用径向渐变做一张优惠券

优惠券

主要的代码如下:
background: radial-gradient(transparent 0, transparent 5px, #F39B00 5px);background-size: 15px 15px;background-position: 9px 3px;

完整代码:

CSS代码
这是公共样式.stamp {width: 387px;height: 140px;padding: 0 10px;position: relative;overflow: hidden;}.stamp:before {content: '';position: absolute;top:0;bottom:0;left:10px;right:10px;z-index: -1;}.stamp:after {content: '';position: absolute;left: 10px;top: 10px;right: 10px;bottom: 10px;box-shadow: 0 0 20px 1px rgba(0, 0, 0, 0.5);z-index: -2;}.stamp i{position: absolute;left: 20%;top: 45px;height: 190px;width: 390px;background-color: rgba(255,255,255,.15);transform: rotate(-30deg);}.stamp .par{float: left;padding: 16px 15px;width: 220px;border-right:2px dashed rgba(255,255,255,.3);text-align: left;}.stamp .par p{color:#fff;}.stamp .par span{font-size: 50px;color:#fff;margin-right: 5px;}.stamp .par .sign{font-size: 34px;}.stamp .par sub{position: relative;top:-5px;color:rgba(255,255,255,.8);}.stamp .copy{display: inline-block;padding:21px 14px;width:100px;vertical-align: text-bottom;font-size: 30px;color:rgb(255,255,255);}.stamp .copy p{font-size: 16px;margin-top: 15px;}
.stamp01{background: #F39B00;background: radial-gradient(rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 5px, #F39B00 5px);background-size: 15px 15px;background-position: 9px 3px;}.stamp01:before{background-color:#F39B00;}
.stamp02{background: #D24161;background: radial-gradient(transparent 0, transparent 5px, #D24161 5px);background-size: 15px 15px;background-position: 9px 3px;}.stamp02:before{background-color:#D24161;}
.stamp03{background: #7EAB1E;background: radial-gradient(transparent 0, transparent 5px, #7EAB1E 5px);background-size: 15px 15px;background-position: 9px 3px;}.stamp03:before{background-color:#7EAB1E;}.stamp03 .copy{padding: 10px 6px 10px 12px;font-size: 24px;}.stamp03 .copy p{font-size: 14px;margin-top: 5px;margin-bottom: 8px;}.stamp03 .copy a{background-color:#fff;color:#333;font-size: 14px;text-decoration:none;padding:5px 10px;border-radius:3px;display: block;}
.stamp04{width: 390px;background: #50ADD3;background: radial-gradient(rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 4px, #50ADD3 4px);background-size: 12px 8px;background-position: -5px 10px;}.stamp04:before{background-color:#50ADD3;left: 5px;right: 5px;}.stamp04 .copy{padding: 10px 6px 10px 12px;font-size: 24px;}.stamp04 .copy p{font-size: 14px;margin-top: 5px;margin-bottom: 8px;}.stamp04 .copy a{background-color:#fff;color:#333;font-size: 14px;text-decoration:none;padding:5px 10px;border-radius:3px;display: block;}
HTML代码
<div class="stamp stamp01"><div class="par"><p>XXXXXX折扣店</p><sub class="sign"></sub><span>50.00</span><sub>优惠券</sub><p>订单满100.00元</p></div><div class="copy">副券<p>2015-08-13<br>2016-08-13</p></div><i></i></div>
<div class="stamp stamp02"><div class="par"><p>XXXXXX折扣店</p><sub class="sign"></sub><span>50.00</span><sub>优惠券</sub><p>订单满100.00元</p></div><div class="copy">副券<p>2015-08-13<br>2016-08-13</p></div><i></i></div>
<div class="stamp stamp03"><div class="par"><p>XXXXXX折扣店</p><sub class="sign"></sub><span>50.00</span><sub>优惠券</sub><p>订单满100.00元</p></div><div class="copy">副券<p>2015-08-13<br>2016-08-13</p><a href="#">立即使用</a></div><i></i></div>
<div class="stamp stamp04"><div class="par"><p>XXXXXX折扣店</p><sub class="sign"></sub><span>50.00</span><sub>优惠券</sub><p>订单满100.00元</p></div><div class="copy">副券<p>2015-08-13<br>2016-08-13</p><a href="#">立即使用</a></div><i></i></div>
PS:用这个方式还可以做邮票,不信你试试

相信你看到这,一定觉得,这么长串的代码,我怎么写出来,看着都晕。如果是简单的渐变,可以用less的函数来生成,只需要提供开始颜色和停止颜色。如果是按钮,则有专门的网站,可视化生成。

Less函数
/* 线性渐变 */.gradient (@origin: top, @start: #ffffff, @stop: #000000) {    background-color: @start;    background-image: -webkit-linear-gradient(@origin, @start, @stop);    background-image: -moz-linear-gradient(@origin, @start, @stop);    background-image: -o-linear-gradient(@origin, @start, @stop);    background-image: -ms-linear-gradient(@origin, @start, @stop);    background-image: linear-gradient(@origin, @start, @stop);}

/* 快速渐变 */.quick-gradient (@origin: left, @alpha: 0.2) {    background-image: -webkit-linear-gradient(@origin, rgba(0,0,0,0.0), rgba(0,0,0,@alpha));    background-image: -moz-linear-gradient(@origin, rgba(0,0,0,0.0), rgba(0,0,0,@alpha));    background-image: -o-linear-gradient(@origin, rgba(0,0,0,0.0), rgba(0,0,0,@alpha));    background-image: -ms-linear-gradient(@origin, rgba(0,0,0,0.0), rgba(0,0,0,@alpha));    background-image: linear-gradient(@origin, rgba(0,0,0,0.0), rgba(0,0,0,@alpha));}

用法:
//html代码<div class="div1"></div><div class="div2"></div> //css代码div{    width: 200px;    height: 80px;    margin: 10px;}.div1{    .gradient(top, #00B7EA, #0391B3);}.div2{    .quick-gradient();}
渐变效果

我们都有在网页上见过一些交互性的效果,比如用鼠标滑向图标或是按钮的时候,图标会自动旋转一周,这就是CSS3旋转效果。在CSS3中有个常见的transform应用,transform主要包括以下几种:旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix。本文主要侧重讲解CSS3的平面旋转(2D)方法和立体旋转(3D)方法。不过既然提起transform,还是先普及一下transform属性的基本知识:


在CSS3中transform主要包括以下几种:旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix。


1、旋转rotate() :通过指定的角度参数对原元素指定一个2D rotation(2D 旋转),angle是指旋转角度,如果设置的值为正数表示顺时针旋转,负数则表示逆时针旋转。如:transform:rotate(30deg)。


2、扭曲skew( [, ]) :X轴Y轴上的skew transformation(斜切变换)。第一个参数对应X轴,第二个参数对应Y轴。如果第二个参数未提供,则值为0,也就是Y轴方向上无斜切。skew是用来对元素进行扭曲变行,第一个参数是水平方向扭曲角度,第二个参数是垂直方向扭曲角度。其中第二个参数是可选参数,默认为0deg。


3、缩放scale([, ]):提供执行[sx,sy]缩放矢量的两个参数指定一个2D scale(2D缩放)。如果第二个参数未提供,则取与第一个参数一样的值。scale(X,Y)是用于对元素进行缩放,可以通过transform-origin对元素的基点进行设置,同样基点在元素中心位置;基中X表示水平方向缩放的倍数,Y表示垂直方向的缩放倍数,而Y是一个可选参数,如果没有设置Y值,则表示X,Y两个方向的缩放倍数是一样的。并以X为准。如:transform:scale(2,1.5)。


4、移动translate([, ]) :通过矢量[tx, ty]指定一个2D translation,tx 是第一个过渡值参数,ty 是第二个过渡值参数选项。如果 未被提供,则ty以 0 作为其值。也就是translate(x,y),它表示对象进行平移,按照设定的x,y参数值,当值为负数时,反方向移动物体,其基点默认为元素 中心点,也可以根据transform-origin进行改变基点。如transform:translate(100px,20px)。


5、矩阵变形matrix(, , , , , ) : 以一个含六值的(a,b,c,d,e,f)变换矩阵的形式指定一个2D变换,相当于直接应用一个[a b c d e f]变换矩阵。就是基于水平方向(X轴)和垂直方向(Y轴)重新定位元素,此属性值使用涉及到数学中的矩阵。


查看详细完整的transform属性请点击//www.51coolma.cn/cssref/pr-transform.html


CSS3旋转rotate()方法

在CSS3中,我们可以使用rotate()方法来将元素相对中心原点进行旋转。这里的旋转是二维的,不涉及三维空间的操作。
语法:
transform:rotate(度数);

说明:
度数指的是元素相对中心原点进行旋转的度数,单位为deg。其中,deg是degree(度数)的缩写。如果度数为正,则表示元素相对原点中心顺时针旋转;如果度数为负,则表示元素相对原点中心进行逆时针旋转。

举例:

<style>.demo { margin:100px auto; width:300px; height:300px; background:#ededed; border:1px dotted #ff0000; position:relative;}.fl { width:300px; height:145px; background:#00cb99;}.fr { width:300px; height:145px; margin-top:10px; background:#0093b4;}.pa { position:absolute; top:75px; left:75px; width:150px; height:150px; background-color:#f2f2f2;}</style><div class="demo">     <div class="fl"></div>     <div class="fr"></div>     <div class="pa"></div></div>


效果如下:

图片旋转

分析:

这里虚线框为原始位置,蓝色背景盒子为顺时针旋转30度后的效果。


CSS3实现3D旋转

用CSS3制作3D旋转图像,效果很漂亮,3D旋转的特别之处就是支持阴影旋转和兼容响应式网页设计,使得整体场景非常有感觉。

先看一个简单的3D旋转效果例子:

正面:鼠标移上去就开始旋转

正面旋转

旋转中:这是旋转至背面的效果,以旋转并带半透明渐变的方式显示。


背面:旋转后,为图像添加一些文字介绍元素,充实这个元素。

HTML代码

<div class="photo-container"><div class="rotate-box"><img src="winwall.jpg"/><div class="text"><h2>这是一个标题</h2><p>这是一段图片相关的简介内容。。</p></div></div></div>

CSS代码

.photo-container {perspective: 1200px; /* 透视视图 */width:45%;float:left;}.rotate-box {position:relative;transform-style: preserve-3d; /* 3D 转换 */transition:1s ease; /* 转换效果持续 1秒 */margin:10%;}.rotate-box img {width:100%;height:auto;}


背面文本样式,透明背景,并设置默认为反转180度,其次要将图像置于图像的背面,所以这里我们利用z轴来控制,CSS代码如下:

.text {position:absolute;top:0;width:100%;height:100%;transform: rotateY(180deg) translateZ(1px); /* 反转180度 并设置z轴让其置于图片背面 */color:#666;text-align:center;opacity:.06;background:rgba(255,255,255,.9);transition: 1s opacity;}


使用Hover来触发动画

.photo-container:hover .rotate-box{transform: rotateY(180deg);}.photo-container:hover .text{opacity:1}


通过伪元素(:after)给图像添加一个透视阴影,使整体更有3D立体感觉。

.rotate-box:after {content:' ';display:block;width:100%;height:7vw; /* vw是移动设计备窗体单位*/transform:rotateX(90deg);background-image: radial-gradient(ellipse closest-side, rgba(0, 0, 0, 0.05) 0%, rgba(0, 0, 0, 0) 100%); /* radial-gradient 是径向渐变 */}


CSS3实现3D立方体旋转效果



使用方法:
1、调用CSS样式:
<link rel="stylesheet" type="text/css" href="css/style.css" />


2、添加HTML代码:
将<!--效果html开始-->......<!--效果html结束-->之间的html和js代码;放在<body></body>之间。


HTML代码:

 <div class="wrap">        <div class="box1 box">            1</div>        <div class="box2 box">            2</div>        <div class="box3 box">            3</div>        <div class="box4 box">            4</div>        <div class="box5 box">            5</div>        <div class="box6 box">            6</div>    </div>

CSS 3代码:

*{margin: 0;padding: 0;}html,body{height: 100%;background: black;}.wrap{	  height: 100%;position: relative;	  -webkit-transform-style:preserve-3d;	  -webkit-perspective:0px;	  -moz-transform-style:preserve-3d;	  -moz-perspective:0px;	  -webkit-animation:mydhua 5s ease infinite;	  -moz-animation:mydhua 5s ease infinite;	 }.box{width: 200px;height: 200px;position: absolute;top: 50%;left: 50%;	 margin:-100px 0 0 -100px; line-height: 200px;text-align: center;font-size: 48px;color: white;		}.box1{	-webkit-transform:rotatey(90deg) translatez(-100px);	-moz-transform:rotatey(90deg) translatez(-100px);	background: rgba(128,0,128,.5);}.box2{	-webkit-transform:rotatey(90deg) translatez(100px);	-moz-transform:rotatey(90deg) translatez(100px);	background: rgba(255,0,255,.5);}.box3{	-webkit-transform:rotatex(90deg) translatez(100px);	-moz-transform:rotatex(90deg) translatez(100px);	background: rgba(255,153,204,.5);}.box4{	-webkit-transform:rotatex(90deg) translatez(-100px);	-moz-transform:rotatex(90deg) translatez(-100px);	background: rgba(0,204,255,.5);}.box5{	-webkit-transform: translatez(-100px);	-moz-transform:translatez(-100px);	background: rgba(153,204,255,.5);}.box6{	-webkit-transform: translatez(100px);	-moz-transform:translatez(100px);	background: rgba(0,255,255,.5);}@-webkit-keyframes mydhua{	0%{-webkit-transform:rotateX(0deg) rotateY(0deg) rotateZ(0deg);-webkit-transform-origin: center center;}	100%{-webkit-transform:rotateX(180deg) rotateY(180deg) rotateZ(180deg);-webkit-transform-origin: center center; }}@-moz-keyframes mydhua{	0%{-moz-transform:rotateX(0deg) rotateY(0deg) rotateZ(0deg);-webkit-transform-origin: center center;}	100%{-moz-transform:rotateX(180deg) rotateY(180deg) rotateZ(180deg); -webkit-transform-origin: center center;}}







过去如果我们用传统的方法要实现圆角边框,需要使用多张图片作为背景图案才可以。CSS3出现后添加了一个新的属性border-radius,就可以轻松实现圆角边框的效果,一方面省去了制作图片的时间,另一方面省去了浏览器加载图片造成的延迟和带宽。不过要使用支持该属性的浏览器才能运行。主流浏览器如Safari,谷歌浏览器,IE,Opera和火狐浏览器可支持border-radius属性。


语法

.roundElement	{	border-radius: 10px;}
上面的这句代码的作用是设置一个元素的四个角的弧度半径值都为10px。你也可以对每个角单独指定:角的弧度半径值都为10px。你也可以对每个角单独指定:
.pearElement	{	border-top-left-radius: 7px;	border-top-right-radius: 5px;	border-bottom-right-radius: 6px;	border-bottom-left-radius: 8px;}
如果你觉得上面的写法太复杂,可以使用下面border-radius简写的方法:
.oddRoundElement {	border-radius: 12px 5px 12px 5px;	/* or */	border-radius: 12px 5px;}
四个值分别代表的是top-left, top-right, bottom-right, bottom-left四个角。

实例解析

首先来看看效果图:

实例

HTML代码:
<a href="#" class="button green">button</a><a href="#" class="button blue">button</a><a href="#" class="button gray">button</a>

如果没有 CSS ,那么上面的 HTML 执行起来是这样的:

没有CSS的效果

 CSS3的编写:
.button {    display: inline-block;    position: relative;    margin: 10px;    padding: 0 20px;    text-align: center;    text-decoration: none;    font: bold 12px/25px Arial, sans-serif;}

一些不同颜色的按钮样式:
.green {    color: #3e5706;    background: #a5cd4e;} /* Blue Color */ .blue {    color: #19667d;    background: #70c9e3;} /* Gray Color */ .gray {    color: #515151;    background: #d3d3d3;}

到这一步后按钮看起来是这样的:

css按钮

用 CSS 处理圆角:
.button {    display: inline-block;    position: relative;    margin: 10px;    padding: 0 20px;    text-align: center;    text-decoration: none;    font: bold 12px/25px Arial, sans-serif;     text-shadow: 1px 1px 1px rgba(255,255,255, .22);     -webkit-border-radius: 30px;    -moz-border-radius: 30px;    border-radius: 30px;     -webkit-box-shadow: 1px 1px 1px rgba(0,0,0, .29), inset 1px 1px 1px rgba(255,255,255, .44);    -moz-box-shadow: 1px 1px 1px rgba(0,0,0, .29), inset 1px 1px 1px rgba(255,255,255, .44);    box-shadow: 1px 1px 1px rgba(0,0,0, .29), inset 1px 1px 1px rgba(255,255,255, .44);     -webkit-transition: all 0.15s ease;    -moz-transition: all 0.15s ease;    -o-transition: all 0.15s ease;    -ms-transition: all 0.15s ease;    transition: all 0.15s ease;}

现在的按钮圆润多了,看看:

圆角按钮

还不够啊,没有立体效果,再完善完善:
/* Green Color */ .green {    color: #3e5706;     background: #a5cd4e; /* Old browsers */    background: -moz-linear-gradient(top,  #a5cd4e 0%, #6b8f1a 100%); /* FF3.6+ */    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a5cd4e), color-stop(100%,#6b8f1a)); /* Chrome,Safari4+ */    background: -webkit-linear-gradient(top,  #a5cd4e 0%,#6b8f1a 100%); /* Chrome10+,Safari5.1+ */    background: -o-linear-gradient(top,  #a5cd4e 0%,#6b8f1a 100%); /* Opera 11.10+ */    background: -ms-linear-gradient(top,  #a5cd4e 0%,#6b8f1a 100%); /* IE10+ */    background: linear-gradient(top,  #a5cd4e 0%,#6b8f1a 100%); /* W3C */} /* Blue Color */ .blue {    color: #19667d;     background: #70c9e3; /* Old browsers */    background: -moz-linear-gradient(top,  #70c9e3 0%, #39a0be 100%); /* FF3.6+ */    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#70c9e3), color-stop(100%,#39a0be)); /* Chrome,Safari4+ */    background: -webkit-linear-gradient(top,  #70c9e3 0%,#39a0be 100%); /* Chrome10+,Safari5.1+ */    background: -o-linear-gradient(top,  #70c9e3 0%,#39a0be 100%); /* Opera 11.10+ */    background: -ms-linear-gradient(top,  #70c9e3 0%,#39a0be 100%); /* IE10+ */    background: linear-gradient(top,  #70c9e3 0%,#39a0be 100%); /* W3C */} /* Gray Color */ .gray {    color: #515151;     background: #d3d3d3; /* Old browsers */    background: -moz-linear-gradient(top,  #d3d3d3 0%, #8a8a8a 100%); /* FF3.6+ */    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#d3d3d3), color-stop(100%,#8a8a8a)); /* Chrome,Safari4+ */    background: -webkit-linear-gradient(top,  #d3d3d3 0%,#8a8a8a 100%); /* Chrome10+,Safari5.1+ */    background: -o-linear-gradient(top,  #d3d3d3 0%,#8a8a8a 100%); /* Opera 11.10+ */    background: -ms-linear-gradient(top,  #d3d3d3 0%,#8a8a8a 100%); /* IE10+ */    background: linear-gradient(top,  #d3d3d3 0%,#8a8a8a 100%); /* W3C */}

现在爽了,漂亮了,你喜欢这样的按钮吗?

圆角按钮2

为了让按钮更大一点,我们增加了个 big 样式:
<a href="#" class="button big green">sign in <span>One minute</span></a><a href="#" class="button big blue">sign in <span>One minute</span></a><a href="#" class="button big gray">sign in <span>One minute</span></a>
/* Big Button Style */ .big {    padding: 0 40px;    padding-top: 10px;    height: 45px;    text-transform: uppercase;    font: bold 20px/22px Arial, sans-serif;} .big span {    display: block;    text-transform: none;    font: italic normal 12px/18px Georgia, sans-serif;    text-shadow: 1px 1px 1px rgba(255,255,255, .12);}

大按钮的效果:

大按钮效果

我们还需要处理下当鼠标移到按钮上方时显示不同的效果:

.button:hover {    -webkit-box-shadow: 1px 1px 1px rgba(0,0,0,.29), inset 0px 0px 2px rgba(0,0,0, .5);    -moz-box-shadow: 1px 1px 1px rgba(0,0,0,.29), inset 0px 0px 2px rgba(0,0,0, .5);    box-shadow: 1px 1px 1px rgba(0,0,0,.29), inset 0px 0px 2px rgba(0,0,0, .5);}.button:active {    -webkit-box-shadow: inset 0px 0px 3px rgba(0,0,0, .8);    -moz-box-shadow: inset 0px 0px 3px rgba(0,0,0, .8);    box-shadow: inset 0px 0px 3px rgba(0,0,0, .8);}

效果如下:

CSS3圆角

各浏览器对border-radius的支持

因为这种圆角技术是CSS3里出现的,老式浏览器或较早期的浏览器中用到这个属性时需要在CSS里添加浏览器引擎前缀(vendor prefixes)。会是{prefix}-border-radius这样一个样子,而具体各种浏览器引擎前缀是下面这样的写法:
-moz-border-radius: 20px;-webkit-border-radius: 20px;-o-border-radius: 20px;/* 火狐浏览器 */-moz-border-radius-topleft:15px; /* top left corner */-moz-border-radius-topright:50px; /* top right corner */-moz-border-radius-bottomleft:15px; /* bottom left corner */-moz-border-radius-bottomright:50px; /* bottom right corner */-moz-border-radius:10px 15px 15px 10px;  /* shorthand topleft topright bottomright bottomleft *//* webkit引擎的浏览器 */-webkit-border-top-left-radius:15px; /* top left corner */-webkit-border-top-right-radius:50px; /* top right corner */-webkit-border-bottom-left-radius:15px; /* bottom left corner */-webkit-border-bottom-right-radius:50px; /* bottom right corner */
基本上,你需要对每种浏览器引擎做各自的声明,加上这些讨厌的稍微不同的代码来保证完全支持border-radius。但是,如果你使用的是最新版的浏览器,包括火狐、谷歌、IE等,你不需要使用这些前缀,因为这个技术已经很成熟,在各种最新版的浏览器里已经受到了普遍支持。

让IE支持border-radius

直到IE9才有对border-radius属性的支持,相信很多Web开发人员和Web应用设计人员都很沮丧。在IE9里,最重要的一个点是使用edge META 标记:
<meta http-equiv="X-UA-Compatible" content="IE=edge" /><style>border-top-right-radius: 7px;border-top-left-radius: 7px;border-bottom-right-radius: 2px;border-bottom-left-radius: 2px;</style>

如果你的IE比较老,不支持border-radius,有很多其它的技术可以弥补这个缺陷,最好的一个解决方法是使用一个很小的JavaScript程序包,叫做CurvyCorners。这个CurvyCorners用javaScript动态的生成很多div标记,用这些div标记来绘出圆角效果,甚至支持消除锯齿功能。

CurvyCorners的用法很简单。第一步是在页面中引入CurvyCorners.js脚本:

<!-- SIMPLY INCLUDE THE JS FILE! --><script type="text/javascript" src="curvy.corners.trunk.js"></script>
CurvyCorners会在DOM元素里寻找具有border-radius属性的元素,然后依次给它们制作出圆角效果。不需要辅助图片。你甚至可以设置指定元素的弧度半径:

var settings = {	tl: { radius: 12 },	tr: { radius: 12 },	bl: { radius: 12 },	br: { radius: 12 },	antiAlias: true};/* moooo */$$('.round').each(function(rd) {  curvyCorners(settings,rd);});
建议你应该指定需要使用圆角的元素,因为让脚本搜索整个页面来寻找需要圆角处理的元素是一个很耗CPU的过程,而且这个过程是每个页面加载时都会执行。

网页设计中常常要用到阴影的效果,通过阴影可以比较容易突出一个元素,在没有CSS3的时候,一般都用图片做阴影效果,而现在通过使用CSS3的text-shadow和box-shadow这两个属性就可以分别设置文字和容器的阴影这是一种新特性。不过这种特性只在支持CSS3的浏览器上有效果,比如:Firefox3.5,Safari 3.1 +,和谷歌浏览器等。


容器设置阴影box-shadow

语法:
box-shadow: h-shadow v-shadow blur spread color inset;
以上各属性值的解析:
horizontal(水平):指定水平偏移阴影。正值(即:5px)阴影向右,而为负值(即:- 10px)将使它偏向左。

vertical(垂直):指定垂直偏移阴影。正值(即:5px)会使阴影在框的底部,而负值(即:- 10px)将使它偏向上。

blur(模糊):设置的柔化半径。默认值为0,这意味着没有模糊。正值增加了模糊,而负值,实际上缩小了阴影。此属性默认为0。

spread:阴影的尺寸,该参数为可选参数。0px代表阴影和当前的实体一样大,大于0则表示大于实体的尺寸。

color(颜色):颜色值,也就是设置阴影颜色。

inset:将外部阴影 (outset) 改为内部阴影。该参数为可选参数。

提醒:该属性可以加在任意元素上,如图片,Div,SPAN,P标签等等都可以。
<html><head><title>W3Cschool(51coolma.cn)</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style type="text/css">#shadow {    box-shadow: 10px 10px 5px #888888;    width:500px;    padding:5px;    text-align:center;    font-size:20px;    background:#21759b;    margin:0 auto;    color:#ffffff;}</style></head><body><div id="shadow">W3Cschool(51coolma.cn)</div></body></html>

显示效果:

容器阴影


浏览器兼容情况:

浏览器兼容

为了兼容各主流浏览器并支持这些主流浏览器的较低版本,在基于Webkit的Chrome和Safari等浏览器上使用box-shadow属性时,我们需要将属性的名称写成-webkit-box-shadow的形式。Firefox浏览器则需要写成-moz-box-shadow的形式。

.box-shadow{             //Firefox4.0-             -moz-box-shadow:h-shadow v-shadow blur spread color inset;           //Safariand Google chrome10.0-             -webkit-box-shadow:h-shadow v-shadow blur spread color inset;           //Firefox4.0+、 Google chrome 10.0+ 、 Oprea10.5+ and IE9             box-shadow:h-shadow v-shadow blur spread color inset; }  
注意:出于方便,后文的css属性有的地方只写了box-shadow属性,没有写-moz-和-webkit-前缀的形式,在使用中不要忘记加上。

为了更清楚的了解box-shadow的特征,做几个小测试,看效果:
<!DOCTYPE html>  <html>    <head>  <meta content="text/html; charset=utf-8" http-equiv="Content-Type">  <title>CSS3属性:box-shadow测试</title>  <script type="text/javascript" src="js/jquery.min.js"></script>  <script type="text/javascript" src="js/jquery.boxshadow.js"></script>  <style type="text/css">  .box-shadow-1{    -webkit-box-shadow: 3px 3px 3px;    -moz-box-shadow: 3px 3px 3px;    box-shadow: 3px 3px 3px;  }  .box-shadow-2{    -webkit-box-shadow:0 0 10px #0CC;    -moz-box-shadow:0 0 10px #0CC;    box-shadow:0 0 10px #0CC;  }  .box-shadow-3{    -webkit-box-shadow:0 0 10px rgba(0, 204, 204, .5);    -moz-box-shadow:0 0 10px rgba(0, 204, 204, .5);    box-shadow:0 0 10px rgba(0, 204, 204, .5);  }  .box-shadow-4{    -webkit-box-shadow:0 0 10px 15px #0CC;    -moz-box-shadow:0 0 10px 15px #0CC;    box-shadow:0 0 10px 15px #0CC;  }  .box-shadow-5{    -webkit-box-shadow:inset 0 0 10px #0CC;    -moz-box-shadow:inset 0 0 10px #0CC;    box-shadow:inset 0 0 10px #0CC;  }  .box-shadow-6{      box-shadow:-10px 0 10px red, /*左边阴影*/      10px 0 10px yellow, /*右边阴影*/      0 -10px 10px blue, /*顶部阴影*/      0 10px 10px green; /*底边阴影*/  }  .box-shadow-7{      box-shadow:0 0 10px 5px black,      0 0 10px 20px red;  }  .box-shadow-8{      box-shadow:0 0 10px 20px red,      0 0 10px 5px black;  }  .box-shadow-9{      box-shadow: 0 0 0 1px red;  }        .obj{      width:100px;      height:100px;      margin:50px auto;      background:#eee;      }  .outer{      width: 100px;      height: 100px;      border: 1px solid red;  }  .inner{      width: 60px;      height: 60px;      background-color: red;      -webkit-box-shadow: 50px 50px blue;      -moz-box-shadow: 50px 50px blue;      box-shadow: 50px 50px blue;    }  </style>  </head>    <body>      <div class="obj box-shadow-1"></div>      <div class="outer">          <div class="inner"></div>      </div>      <div class="obj  box-shadow-2" ></div>      <div class="obj  box-shadow-3" ></div>      <div class="obj  box-shadow-4" ></div>      <div class="obj  box-shadow-5" ></div>      <div class="obj  box-shadow-6" ></div>      <div class="obj  box-shadow-7" ></div>      <div class="obj  box-shadow-8" ></div>      <div class="obj  box-shadow-9" ></div>      <script type="text/javascript">          $(document).ready(function(){          if($.browser.msie) {            $('.obj').boxShadow(-10,-10,5,"#0cc"); //obj元素使用了box-shadow          }        });      </script>    </body>  </html>  

分析:
1、从.box-shadow-1的效果可以得出不指定属性阴影颜色的情况下,阴影在webkit内核下的safari和chrome浏览器下表现为透明色,在Firefox/Opera下表现为黑色。

透明色


2、 从内外两个div块inner、outer的对比来看,所有支持box-shadow的主流浏览器都表现为:内层阴影撑破外层容器将整个阴影效果呈现出来。W3C标准用图示的方式对box-shadow的原理和表现进行了解读:

box-shadow的原理

从图中我们可以了解到:圆角border-radius,阴影扩展半径、阴影模糊半径以及padding是如何影响对象阴影的:非零值的border-radius将会以相同的作用影响阴影的外形,但border-image不会影响对象阴影的任何外形;对象阴影同box模型的层次一样,外阴影会在对象背景之下,内阴影会在边框之下背景之上。我们知道,默认情形背景图片是在背景颜色之上的。所以整个层级是:边框>内阴影>背景图片>背景颜色>外阴影。

3、从. box-shadow-2到. box-shadow-5的效果,我们可以了解到box-shadow取值的作用。

. box-shadow-2是xy没有偏移,阴影大小10px,没有扩展半径,颜色#0CC即rgba(0, 204,204, 1),这里我们使用的是颜色HEX值;效果:

颜色HEX值

而. box-shadow-3是在. box-shadow-2效果的基础上,应用了rgba颜色值,好处是给box-shadow阴影添加了alpha透明效果。效果:

alpha透明效果

. box-shadow-4在. box-shadow-2效果的基础上添加了阴影扩展半径15px。

阴影扩展

. box-shadow-5在. box-shadow-2效果的基础上,将外阴影设为内阴影。

外阴影设为内阴影

4、. box-shadow-6一个元素使用了多个阴影,多个阴影之间用逗号分隔。给对象四边设置阴影效果,我们是通过改变x-offset和y-offset的正负值来实现,其中x-offset为负值时,生成左边阴影,为正值时生成右边阴影,y-offset为正值是生成底部阴影,为负值时生成顶部阴影。并且把模糊半径设置为0,如果不设置为0的话那么其他三边也将会有阴影。这点需要注意!

多个阴影

注意这样的写法是错误的:{box-shadow:-10px 0 10px red, box-shadow:10px 0 10px blue,box-shadow:0 -10px 10px yellow,box-shadow:0 10px 10px green}

并且此处还涉及到一个多阴影的顺序问题。当给同一个元素使用多个阴影属性时,需要注意它的顺序,最先写的阴影将显示在最顶层,如. box-shadow-7设为不同的模糊值:
.box-shadow-7{         box-shadow:0 0 10px 5px black,         0 0 10px 20px red;}
将能看出层叠的顺序效果:
层叠

如果将两个阴影效果调一下,改为如下:
.box-shadow-8{         box-shadow:0 0 10px 20px red,         0 0 10px 5px black;}
将只显示红色的阴影效果,因为红色阴影层在上面,模糊半径大,将后面的黑色阴影完全遮挡。

模糊半径
得出的结论是:如果前面的阴影模糊值小于后面的阴影模糊值,那么前面的显示在后面之上,如果前面阴影的模糊值大于后面的阴影模糊值,那么前面的阴影将遮住后面的阴影效果。

4、类border边框效果(只设置阴影扩展半径和阴影颜色)
.box-shadow-9呈现的效果,同boder:1px solid red相似,但box-shadow的效果与border效果在对象高度上有区别,正好要比border高度大一个扩展半径。而且阴影不影响页面的任何布局,这一点可以通过查看firebug下的layout图得以证实。

类border边框效果

在ie下模拟css3中的box-shadow阴影效果

方法一:可以使用IE的Shadow滤镜

基本语法:filter:progid:DXImageTransform.Microsoft.Shadow(color=’颜色值’, Direction=阴影角度(数值),Strength=阴影半径(数值));

注意:该滤镜必须配合background属性一起使用,否则该滤镜失效。

IE下模拟css3中的box-shadow(阴影)代码:

.box-shadow{      filter: progid:DXImageTransform.Microsoft.Shadow(color='#969696',Direction=135, Strength=5);/*for ie6,7,8*/      background-color: #ccc;      -moz-box-shadow:2px 2px 5px #969696;/*firefox*/      -webkit-box-shadow:2px 2px 5px #969696;/*webkit*/      box-shadow:2px 2px 5px #969696;/*opera或ie9*/  }  

六一儿童节的专题案例
li.blk-item{           width:423px;           height:229px;           float:left;           padding:8px;           margin:2px 18px 13px 21px;           display:inline;           border:1px solid #d3c998;           border-radius:2px;           filter:progid:DXImageTransform.Microsoft.Shadow(color='#d3c998', Direction=135,Strength=5);/*for ie6,7,8*/           background-color: #fff;           -moz-box-shadow:2px 2px 5px#d3c998;/*firefox*/           -webkit-box-shadow:2px 2px 5px#d3c998;/*webkit*/           box-shadow:2px 2px 5px #d3c998;/*opera或ie9*/    }  

方法二:有些js和.htc的hack文件可以实现IE中的阴影效果

ie-css3.htc是一个可以让IE浏览器支持部份CSS3属性的htc文件,不只是box-shadow,它还可以让你的IE浏览器支持圆角属性border-radius和文字阴影属性text-shadow。

它的使用方法是:下载它并放到你的服务器目录

在你的<head></head>里面写入下面的代码:

这个脚本的缺点是IE只支持一部分的box-shadow值。需要注意:

1、当你使用了这个htc文件后,你的CSS里面,只要写有box-shadow, -moz-box-shadow或-webkit-box-shadow的任何一种,IE就会渲染。

2、当使用了这个htc文件后,你不能这样写box-shadow: 0 0 10px red; 而应该是box-shadow: 0px 0px 10px red; 否则IE中会失效。

3、不支持RGBA值中的alpha透明度。

4、不支持inset内阴影。

5、不支持阴影扩展。

6、阴影在IE中只会显示为黑色,不管你设置成其它什么颜色。

方法三:使用jQuery的插件jquery.boxshadow.js
插件的下载地址是:https://www.jq22.com/jquery-info22890

使用方法很简单,将该文件和jquery版本库引入head标签,插入以下js效果代码:
<script type="text/javascript">            $(document).ready(function(){     if($.browser.msie) {       $('.obj').boxShadow(-10,-10,5,"#0cc"); //obj元素使用了box-shadow     }   });  </script> 
注意:js中可以使用:obj.style.webkitBoxShadow=值(字符串);obj.style.MozBoxShadow=值(字符串);obj.style.boxShadow=值(字符串);

补充知识:CSS3的属性
border-top-left-radius:[<length> | <percentage> ] [ <length> | <percentage> ]?

默认值:0


取值:

<length>:

用长度值设置对象的左上角(top-left)圆角半径长度。不允许负值

<percentage>:

用百分比设置对象的左上角(top-left)圆角半径长度。不允许负值


说明:

设置或检索对象的左上角圆角边框。提供2个参数,2个参数以空格分隔,每个参数允许设置1个参数值,第1个参数表示水平半径,第2个参数表示垂直半径,如第2个参数省略,则默认等于第1个参数。 如设置border-top-left-radius:5px10px;表示top-left这个角的水平圆角半径为5px,垂直圆角半径为10px。对应的脚本特性为borderTopLeftRadius。


设置文字阴影text-shadow

实际上,text-shadow 并不是在 CSS3 中才设计出的新属性,早在 CSS 2.0 时已经有了这个属性,之后在 CSS 2.1 中删去这个属性,最终在 CSS3 中重新纳入。

语法:
text-shadow : offset-x || offset-y || opacity || color
该属性支持4个参数,分别是阴影颜色、阴影的水平延伸距离(阴影的 x 轴偏移)、阴影的垂直延伸距离(阴影的 y 轴偏移)、模糊效果的作用半径(阴影的长度)。也许这样介绍概念会有点难以理解,下面直接写一个小例子进行说明:
/* For text-shadow */#example {text-shadow: 1px 1px 2px #d8d8d8; }
注:代码中省略与阴影设置无关的 CSS 代码(下同),完整 CSS 请参考文章末尾 Demo 的源码。

效果如下:
text-shadow

另外,text-shadow 也支持多重阴影,例如,要为一个文字同时设置三重阴影,可以这样编写代码:
/* For text-shadow 多重阴影 */#example-muti {text-shadow: 1px 1px 2px #c10ccc, 1px 1px 2px #648cb4, 1px 1px 6px #cc150c;}

效果如下:
多重阴影

值得注意的是,在多重阴影中,阴影的顺序在不同版本的浏览器中表现不一定相同,由于在 CSS2.0 中,代码中最先定义的阴影会显示在最下面,而在 CSS3 中,最先定义的阴影则显示在最上面。在较新版本的现代浏览器中(Kayo 测试的是 Chrome 22.0.1229.94 , Firefox 17.0.1 , Safari 5.1.7 , Opera 12.11 )多重阴影的渲染顺序都已经按照 CSS3 的顺序了,但在早期版本的一些现代浏览器中仍会有差异,在介绍浏览器支持情况时会再说明一下这部分内容。

相对于图片来说,现在用一个属性就能解决问题实在简便很多。不过,也许你也已经猜到了,杯具的 IE 是不支持 CSS 阴影(所以 IE 版本都不支持 text-shadow IE8 及以下版本不支持 box-shadow ),因此针对 IE ,如果需要达到以上的同样效果,就需要使用 IE 私有滤镜 shadow 或 dropshadow 。这两个滤镜的具体使用也会有些不一样,下面详细介绍:

如果使用 shadow 滤镜,针对以上例子,开发者可以这样编写代码:
progid:DXImageTransform.Microsoft.shadow(Color='#d8d8d8', Direction='135', Strength='2'); zoom: 1; }
shadow 滤镜有三个参数,分别是阴影颜色、阴影偏移角度和阴影长度,其中阴影偏移角度需要通过计算才能获得,在例子中是 “135” 度。如果你习惯了使用偏移值设置阴影,可以使用另一个滤镜 dropshadow ,具体写法如下:
#example-ie {filter: progid:DXImageTransform.Microsoft.DropShadow(OffX='1', OffY='1', Color='#d8d8d8', Positive='true'); zoom: 1; }
效果如下:

dropshadow 有四个参数,分别是阴影 x 轴偏移、阴影 y 轴偏移、阴影颜色、最后一个 positive 属性则决定是否只为非透明像素建立可见的投影,默认值为 true ,即只为非透明像素建立阴影,若为 false ,则也为透明像素建立投影。

以上两个滤镜也支持多重阴影,开发者可以按如下方式编写,但实际效果会远差于 text-shadow 。
/* IE 下多重阴影 */#example-ie-muti {filter: DropShadow(OffX='1', OffY='1', Color='#c10ccc', Positive='true') DropShadow(OffX='1', OffY='1', Color='#648cb4', Positive='true') DropShadow(OffX='1', OffY='1', Color='#cc150c', Positive='true'); zoom: 1; }

另外,在使用以上两个滤镜时,还有几点需要注意的:
1、如果元素同时设置了背景色,那么以上两个滤镜将会失效,这是因为 shadow 滤镜没有像 CSS 滤镜那样区分文字阴影和容器阴影,当开发者为元素设置背景色后,IE 会自动为该元素添加阴影而取消其中文字的阴影。具体会有一个复杂的机制处理这个过程,下面会另作说明。

2、阴影颜色需要使用形如“#aabbcc”这样的写法,不能使用“#abc”这样的简写,若使用简写,则会自动使用黑色作为阴影颜色而忽略指定的颜色,并且阴影距离也不可控(不采用指定值)。

3、要使到多重阴影有效,元素必须触发 hasLayout ,最常用的是设置 zoom: 1 或指定元素高度、宽度。另外在 IE7 及以下版本的 IE 中,使用单个滤镜也需要触发元素的 hasLayout 。关于 hasLayout ,我们将在今后的文章中另做介绍


51coolma今天要来和大家分享7款顶级的CSS3动画效果,包含了菜单特效、文字特效、图片特效等,另外还有几个表现非常特别的动画,个人觉得非常赞哦。


不懂如何制作CSS动画?请点击这里


  • 解压密码:​RJ4587


1、CSS3和SVG文字背景动画,超酷的文字特效

这是一款基于CSS3和SVG的文字特效,文字的背景可以定义一些动画特效,在背景动画播放的同时,我们还可以选中文字。本示例让文字背景展示水波和火焰的动画特效。

11

在线演示 | 源码下载


2、CSS3下划线跟随动画菜单,背景色渐变

这是一款CSS3菜单,特点就是有一条下划线会跟随鼠标移动,当鼠标滑过菜单项时,下划线跟随动画就会出现,并对当前激活的菜单项进行下划线加粗。此外,菜单背景色也会有渐变的效果,看上去非常酷炫。

2

在线演示 | 源码下载


3、CSS3手势变换动画特效

这款CSS3动画展现在我们眼前的是一只手掌,点击手掌下方的滑动按钮,就可以切换手势,目前可以切换两种不同的手势。

3

在线演示 | 源码下载


4、基于Bootstrap的CSS3面包屑菜单

面包屑菜单以嵌入到网站中,帮助用户在网站中实现各级目录的跳转。这款面包屑菜单沿用了bootstrap的风格,利用CSS3特性,让菜单项进行圆角处理,整体变得很圆润。

4

在线演示 | 源码下载


5、纯CSS3实现圆盘时钟动画

这是一款纯CSS3实现的圆盘时钟动画,这款动画在初始化时就有动画特效,包括圆盘的形成和时钟指针的形成,都赋予了非常酷的动画色彩。

5

在线演示 | 源码下载


6、HTML5/CSS3 3D下拉折叠菜单 3D子菜单

这是一款很有特色的CSS3菜单,该菜单不仅拥有下拉菜单的特点,而且下拉的子菜单还拥有3D的折纸效果,看起来蛮酷的。

6

在线演示 | 源码下载


7、动感的CSS3 Loading文字特效

这是一款CSS3 Loading的加载动画,该动画利用CSS3特性,将Loading这几个字母渲染得非常具有动感。

7

在线演示 | 源码下载

以上就是51coolma和大家分享的7款顶级的CSS3动画效果,希望大家喜欢。


  • 原文作者:html5tricks
  • 原文链接:https://www.html5tricks.com/7-top-css3-animation.html


这是 CSS 优点的快速参考速查表,列出了选择器语法、属性、单位和其他有用的信息位。

开始

介绍

CSS 具有丰富的功能,不仅仅是简单的页面布局。

外部 CSS

<link href="./path/to/stylesheet/style.css" rel="stylesheet" type="text/css">

内联 CSS

<h2 style="text-align: center;">Centered text</h2><p style="color: blue; font-size: 18px;">Blue, 18-point text</p>

内部 CSS

<style>body {    background-color: linen;}</style>

添加类

<div class="classname"></div><div class="class1 ... classn"></div>

在一个元素上支持多个类。

!important

.post-title {    color: blue !important;}

覆盖所有以前的样式规则。

选择器

h1 { } #job-title { }div.hero { }div > p { }

请参阅:选择器

文字颜色

color: #2a2aff;color: green;color: rgb(34, 12, 64, 0.6);color: hsla(30 100% 50% / 0.6);

请参阅:颜色

背景

#背景

background-color: blue;background-image: url("nyan-cat.gif");background-image: url("../image.png");

请参阅:背景

字体

.page-title {    font-weight: bold;    font-size: 30px;    font-family: "Courier New";}

请参阅:字体

位置

.box {    position: relative;    top: 20px;    left: 20px;}

另见:位置

动画

animation: 300ms linear 0s infinite;animation: bounce 300ms linear infinite;

参见:动画

注释

/* This is a single line comment *//* This is a    multi-line comment */

弹性布局

div {    display: flex;    justify-content: center;}div {    display: flex;    justify-content: flex-start;}

请参阅:弹性盒| 灵活技巧

网格布局

#container {  display: grid;  grid: repeat(2, 60px) / auto-flow 80px;}#container > div {  background-color: #8ca0ff;  width: 50px;  height: 50px;}

请参阅:网格布局

变量和计数器

counter-set: subsection;counter-increment: subsection;counter-reset: subsection 0;:root {  --bg-color: brown;}element {  background-color: var(--bg-color);}

请参阅:动态内容

CSS 选择器

例子

组选择器

h1, h2 {    color: red;}

链接选择器

h3.section-heading {    color: blue;}

属性选择器

div[attribute="SomeValue"] {    background-color: red;}

第一个子选择器

p:first-child {    font-weight: bold;}

没有孩子选择器

.box:empty {  background: lime;  height: 80px;  width: 80px;}

基本选择器

*所有元素
div所有 div 标签
.classname具有类的所有元素
#idname带 ID 的元素
div,p所有 div 和段落
#idname *#idname 中的所有元素

另请参阅:类型// ID /通用选择器

组合器

div.classname具有特定类名的 Div
div#idname具有特定 ID 的 Div
div pdiv里面的段落
div > p所有 p 标记
在 div 深一层
div + pP 标签紧跟在 div 之后
div ~ p以 div 开头的 P 标签

另请参阅:相邻/兄弟/选择器

属性选择器

a[target]用一个 target 属性
a[target="_blank"]在新标签页中打开
a[href^="/index"]以 /index 开始
[class|="chair"]以 char 开始
[class*="chair"]包含 char
[title~="chair"]包含 char 这个词 
a[href$=".doc"]以 .doc 结束
[type="button"]指定类型

另请参阅:属性选择器

用户操作伪类

a:link 正常状态下的链接
a:active 处于点击状态的链接
a:hover 用鼠标链接
a:visited 访问过的链接

伪类

p::after在 p 后添加内容
p::before在 p 前添加内容
p::first-letterp 中的第一个字母
p::first-linep 中的第一行
::selection由用户选择
::placeholder占位符属性
:root文档根元素
:target突出显示活动锚点
div:empty没有孩子的元素
p:lang(en)P 带有 en 语言属性
:not(span)不是跨度的元素

输入伪类

input:checked检查输入
input:disabled禁用输入
input:enabled启用输入
input:focus输入有焦点
input:in-range范围内的值
input:out-of-range输入值超出范围
input:valid输入有效值
input:invalid输入值无效
input:optional没有必需的属性
input:required具有必需属性的输入
input:read-only带有只读属性
input:read-write没有只读属性
input:indeterminate具有不确定状态

结构化伪类

p:first-child第一个孩子
p:last-child最后一个孩子
p:first-of-type首先是某种类型
p:last-of-type某种类型的最后
p:nth-child(2)其父母的第二个孩子
p:nth-child(3n42)Nth-child (an + b) 公式
p:nth-last-child(2)后面的第二个孩子
p:nth-of-type(2)其父级的第二个 p
p:nth-last-of-type(2)...从后面
p:only-of-type其父级的唯一性
p:only-child其父母的唯一孩子

CSS 字体

特性

font-family:<字体>
font-size:<尺寸>
letter-spacing:<尺寸>
line-height:<编号>
font-weight:<数字> / 粗体 / 正常
font-style:斜体/正常
text-decoration:下划线/无
text-align:左/右
居中/对齐
text-transform:大写/大写/小写

另见:字体

速记

风格权重尺寸(必填)行高类型(必填)
font:italic40014px/1.5sans-serif

例子

font-family: Arial, sans-serif;font-size: 12pt;letter-spacing: 0.02em;

例子

/* Hello */text-transform: capitalize;/* HELLO */text-transform: uppercase;/* hello */text-transform: lowercase;

@font-face

@font-face {    font-family: 'Glegoo';    src: url('../Glegoo.woff');}

CSS 颜色

命名颜色

color: red;color: orange;color: tan;color: rebeccapurple;

十六进制颜色

color: #090;color: #009900;color: #090a;color: #009900aa;

rgb() 颜色

color: rgb(34, 12, 64, 0.6);color: rgba(34, 12, 64, 0.6);color: rgb(34 12 64 / 0.6);color: rgba(34 12 64 / 0.3);color: rgb(34.0 12 64 / 60%);color: rgba(34.6 12 64 / 30%);

HSL 颜色

color: hsl(30, 100%, 50%, 0.6);color: hsla(30, 100%, 50%, 0.6);color: hsl(30 100% 50% / 0.6);color: hsla(30 100% 50% / 0.6);color: hsl(30.0 100% 50% / 60%);color: hsla(30.2 100% 50% / 60%);

其他

color: inherit;color: initial;color: unset;color: transparent;color: currentcolor; /* keyword */

CSS 背景

特性

财产描述
background:(速记)
background-color:请参阅:颜色
background-image:网址(...)
background-position:左/中/右上
/中/下
background-size:盖XY
background-clip:边框框
填充框
内容框
background-repeat:不重复
重复-x
重复-y
background-attachment:滚动/固定/本地

速记

颜色图片位置X位置Y尺寸重复附加
background:#ff0url(a.jpg)lefttop/100px autono-repeatfixed;
background:#abcurl(b.png)centercenter/coverrepeat-xlocal;

例子

background: url(img_man.jpg) no-repeat center;background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat;background: rgb(2,0,36);background: linear-gradient(90deg, rgba(2,0,36,1) 0%, rgba(13,232,230,1) 35%, rgba(0,212,255,1) 100%);

CSS 盒子模型

最大值/最小值

.column {    max-width: 200px;    width: 500px;}

另见:max-width  /min-width  / max-hight  /min-hight

外边距 margin / 内边距 padding

.block-one {    margin: 20px;    padding: 10px;}

另请参阅:margin  /padding

盒子尺寸

.container {    box-sizing: border-box;}

另请参阅:box-sizing

可见性

.invisible-elements {    visibility: hidden;}

另见:visibility

自适应外边距

div {    margin: auto;}

另见:margin

溢出

.small-block {    overflow: scroll;}

另见:overflow

CSS 动画

速记

名称执行时间定时功能延迟播放次数方向填充模式执行状态
animation:bounce300mslinear100msinfinitealternate-reversebothreverse

特性

animation:(速记)
animation-name:<名称>
animation-duration:<时间>毫秒
animation-timing-function:缓/线性/缓入/缓出/缓入
animation-delay:<时间>毫秒
animation-iteration-count:无限 / <数量>
animation-direction:正常/反向/交替/交替反向
animation-fill-mode:无/向前/向后/两者/初始/继承
animation-play-state:正常/反向/交替/交替反向

另见:Animation

例子

/* @keyframes duration | timing-function | delay |   iteration-count | direction | fill-mode | play-state | name */animation: 3s ease-in 1s 2 reverse both paused slidein;/* @keyframes duration | timing-function | delay | name */animation: 3s linear 1s slidein;/* @keyframes duration | name */animation: 3s slidein;animation: 4s linear 0s infinite alternate move_eye;animation: bounce 300ms linear 0s infinite normal;animation: bounce 300ms linear infinite;animation: bounce 300ms linear infinite alternate-reverse;animation: bounce 300ms linear 2s infinite alternate-reverse forwards normal;

Javascript 事件

.one('webkitAnimationEnd oanimationend msAnimationEnd animationend')

CSS 弹性盒

简单的例子

.container {  display: flex;}

容器 Container

.container > div {  flex: 1 1 auto;}
.container{  display: flex;  display: inline-flex;  flex-direction: row;            /* ltr - default */  flex-direction: row-reverse;    /* rtl */  flex-direction: column;         /* top-bottom */  flex-direction: column-reverse; /* bottom-top */  flex-wrap: nowrap; /* one-line */  flex-wrap: wrap;   /* multi-line */  align-items: flex-start; /* vertical-align to top */  align-items: flex-end;   /* vertical-align to bottom */  align-items: center;     /* vertical-align to center */  align-items: stretch;    /* same height on all (default) */  justify-content: flex-start;    /* [xxx        ] */  justify-content: center;        /* [    xxx    ] */  justify-content: flex-end;      /* [        xxx] */  justify-content: space-between; /* [x    x    x] */  justify-content: space-around;  /* [ x   x   x ] */  justify-content: space-evenly;  /* [  x  x  x  ] */}

子类选择器 Child

.container > div {  /* This: */  flex: 1 0 auto;  /* Is equivalent to this: */  flex-grow: 1;  flex-shrink: 0;  flex-basis: auto;  order: 1;  align-self: flex-start;  /* left */  margin-left: auto;       /* right */}

CSS Flexbox 技巧

垂直居中

.container {  display: flex;}.container > div {  width: 100px;  height: 100px;  margin: auto;}

垂直居中 (2)

.container {  display: flex;  /* vertical */  align-items: center;   /* horizontal */  justify-content: center;}

重新排序

.container > .top { order: 1;}.container > .bottom { order: 2;}

移动布局

.container {  display: flex;  flex-direction: column;}.container > .top {  flex: 0 0 100px;}.container > .content {  flex: 1 0 auto;}

一个固定高度的顶部栏和一个动态高度的内容区域。

像表格一样

.container {  display: flex;}/* the 'px' values here are just suggested percentages */.container > .checkbox { flex: 1 0 20px; }.container > .subject  { flex: 1 0 400px; }.container > .date     { flex: 1 0 120px; }

这会创建具有不同宽度的列,但会根据情况相应地调整大小。

垂直

.container {  align-items: center;}

垂直居中所有项目。

左和右

.menu > .left  { align-self: flex-start; }.menu > .right { align-self: flex-end; }

CSS 网格布局

网格模板列

#grid-container {    display: grid;    width: 100px;    grid-template-columns: 20px 20% 60%;}

fr 相对单位

.grid {    display: grid;    width: 100px;    grid-template-columns: 1fr 60px 1fr;}

网格间隙

/*The distance between rows is 20px*//*The distance between columns is 10px*/#grid-container {    display: grid;    grid-gap: 20px 10px;}

CSS 块级网格

#grid-container {    display: block;}

CSS 网格行

CSS 语法:

  • 网格行:网格行开始/网格行结束;

例子

.item {    grid-row: 1 / span 2;}

CSS 内联关卡网格

#grid-container {    display: inline-grid;}

minmax() 函数

.grid {    display: grid;    grid-template-columns: 100px minmax(100px, 500px) 100px; }

网格行开始和网格行结束

CSS 语法:

  • 网格行开始:自动|行行;
  • 网格行端:自动|行行|跨度n;

例子

grid-row-start: 2;grid-row-end: span 2;

CSS 网格行的长度值

grid-row-gap: length;

任何合法的长度值,如 px 或 %。0 是默认值

CSS 网格区域

.item1 {    grid-area: 2 / 1 / span 2 / span 3;}

对齐项目

#container {    display: grid;    justify-items: center;    grid-template-columns: 1fr;    grid-template-rows: 1fr 1fr 1fr;    grid-gap: 10px;}

CSS 网格模板区域

.item {    grid-area: nav;}.grid-container {    display: grid;    grid-template-areas:    'nav nav . .'    'nav nav . .';}

Justify Self

#grid-container {    display: grid;    justify-items: start;}.grid-items {    justify-self: end;}

网格项位于行的右侧(末尾)。

CSS 动态内容

变量

定义 CSS 变量

:root {  --first-color: #16f;  --second-color: #ff7;}

变量用法

#firstParagraph {  background-color: var(--first-color);  color: var(--second-color);}

另请参阅:CSS 变量

计数器

/* Set "my-counter" to 0 */counter-set: my-counter;
/* Increment "my-counter" by 1 */counter-increment: my-counter;
/* Decrement "my-counter" by 1 */counter-increment: my-counter -1;
/* Reset "my-counter" to 0 */counter-reset: my-counter;

另见:计数器集

使用计数器

body { counter-reset: section; }h3::before {  counter-increment: section;   content: "Section." counter(section);}
ol {  counter-reset: section;     list-style-type: none;}li::before {  counter-increment: section;  content: counters(section, ".") " "; }

CSS 3 技巧

滚动条平滑

html {    scroll-behavior: smooth;}

单击我,页面将平滑滚动到入门


CSS 主要用于控制网页的外观,CSS 代码可以随意变化网页的布局和网页的内容样式。当 CSS3 出现以后,更是可以让网页增添了不少动画元素,随着IE6,7的淘汰,手机端的崛起更是让它成熟了许多。CSS3 动画简洁方便,高端大气,让网页变得易于交互且生动有趣。CSS3 动画其实不算复杂,比 JS 简单得多,下面 51coolma 就为大家精挑细选了多个种类的 CSS 动画源代码下载地址,希望对你有所帮助。

纯 css3 云彩动画效果

云彩动画

效果描述:
  • 纯 CSS3 实现的云彩动画飘动效果
  • 非常逼真实用
使用方法:
  1. 将 body 中的代码部分拷贝到你的页面中
  2. 引入对应的 CSS 文件即可

多款炫酷鼠标悬停图文动画效果

鼠标悬停图文动画

效果描述:
  • 纯 CSS3 实现的鼠标悬停动画效果,各种炫酷动画,用户体验非常好
使用方法:
  1. 将 CSS 代码引入到你的网页中
  2. 将 body 中的代码部分拷贝到你的页面中

简单漂亮的CSS3图片悬停遮罩效果

图片悬停遮罩

效果描述:
  • 纯 CSS3 实现的动画遮罩效果
  • 当鼠标悬停在图片上,会从右上角一个沿着逆时针方向旋转过来的动画效果
  • 鼠标移走后遮罩复位
使用方法:
  1. 将 CSS 样式拷贝过去
  2. 将 ​index.html​ 中的代码部分拷贝过去即可
    (注意保持文件路径正确)

纯CSS3模拟风车转动效果

模拟风车

效果描述:
  • 圆形自动旋转,对于 CSS3 来说已经是非常常见的功能了
  • 一个简单的 keyframes 即可实现

使用方法:
  1. 将 CSS 样式拷贝过去
  2. 将 ​index.html​ 中的代码部分拷贝过去即可
    (注意保持文件路径正确)

纯CSS3模拟摩天轮旋转动画效果

模拟摩天轮

效果描述:
  • 这是用纯 CSS3 实现的一个旋转动画效果,模拟游乐场里的摩天轮旋转动画效果
  • 效果逼真好用

使用方法:
  1. 引入 css 样式
  2. 将​ index.html​ 中的代码部分拷贝过去即可

纯CSS3鼠标悬停抖动效果

鼠标悬停抖动
效果描述:
  • 网页上有时候需要显示出抖动提示用户的效果
  • 比如鼠标悬停在一个按钮上,按钮呈现抖动的效果
  • 今天给大家推荐的这个就是使用 CSS3 实现的效果
  • 当你的鼠标悬停在按钮上的时候,按钮会抖动
使用方法:
  1. 将 CSS 样式复制到你的页面中
  2. 给需要抖动的按钮加对应的class即可

用于图片列表排列(文字说明较多)的CSS3动画效果

图文列表

效果描述:
  • 我们在很多网站上看到一些比较漂亮的图片列表排列效果
  • 当鼠标悬停在任意一个图片上的时候,会有一些让人非常舒服的动画
  • 今天推荐一个列表,其中有好多个动画
  • 可以任意挑选一个放到你的网站上,非常不错
使用方法:
  1. 将 CSS 样式引入到网页中
  2. 将 ​index.html​ 中的代码部分拷贝到你的网页中

简单好看的纯CSS3翻书效果

翻书效果

效果描述:
  • 好久没有看到如此高逼格的纯 CSS3 特效了
  • 蛮精致的一款纯 CSS3 模拟书本翻页效果
  • 如果看不到效果,建议用最新版的谷歌浏览器查看
使用方法:
  1. 将 CSS 样式引入到网页中
  2. 将 ​index.html​ 中的代码部分拷贝到你的网页中

纯CSS3立体式3D鼠标悬停效果

3D鼠标悬停效果

效果描述:

  • 只用 CSS3 实现的图片翻转动画效果
  • 非常简单好用,且不需要任何 js 就可以实现
  • 对于 js 较若的同学来说,是非常欢喜的一件事
  • 注意:不支持低版本浏览器
使用方法:
  1. 将 CSS 样式拷贝到你的网页中
  2. 将 body 中需要的代码部分拷贝到你需要的地方即可

多个CSS3实现的星级评分效果

星级评分

效果描述:
  • 不需要 js 支持,只用 CSS3 就可以实现的评分效果
使用方法:
  1. 将 CSS 中的样式拷贝到你的网页中
  2. 将 body 中需要的代码部分拷贝到你需要的地方即可

纯CSS3鼠标滑过图片效果动画

鼠标滑过图片效果

效果描述:
  • imagehover.css​ CSS 库
  • 里面包含了好多纯 CSS3 鼠标悬停后的图片效果
  • 可以直接拿来使用
使用方法:
  1. 将 CSS 中的样式拷贝到你的网页中
  2. 将 body 中的代码部分拷贝到你需要的地方即可

模拟跳动的音乐音符效果


效果描述:
  • 我们在听音乐的时候,经常看到某个角落里有一个随着音乐高低而跳动的东东
  • 几根竖线这样高低跳动,看着蛮有意思的
使用方法:
  1. 将 style 中的样式拷贝到你的网页中
  2. 将 body 中的代码部分拷贝到你需要的地方即可
源码下载

简单易用的图片墙效果

图片墙

效果描述:
  • 一组纯 CSS3 实现的图片墙动画效果
  • 不规则排列,带有阴影倒影效果
使用方法:
  1. 将 ​style.css​ 样式引入到网页中
  2. 将 body 中的代码部分拷贝到你需要的地方即可

立体式3D旋转动画效果

3D旋转动画

效果描述:
  • 一个非常简洁好看的纯 CSS3 旋转效果
  • 当鼠标移动到图片上后,会立体式翻转显示隐藏的文字内容
  • 鼠标移走后消失
使用方法:
  1. 将 ​style.css​ 样式引入到网页中
  2. 将 body 中的代码部分拷贝到你需要的地方即可

飞舞的火箭动画

火箭动画

效果描述:
  • 很偶然的一个机会,看到百度 fls 构建工具官网 banner 上有一个不断飞舞的火箭效果
  • 感觉非常不错,我第一反应它肯定是纯CSS3制作的,这是直觉,别问我为啥,因为换做是我
  • 我也会用 CSS3 做啊,虽然麻烦了一些,但是用户体验非常棒
使用方法:
  1. 将 ​style.css​ 中的样式复制到你的样式表中
  2. 将 body 中的代码部分拷贝到你需要的地方即可


自己跳舞的树

自己跳舞的树

效果描述:
  • 左右摆动的一棵树,第一反应应该是图片动画做的
  • 但是你错了,这是用纯代码实现的效果,而且不需要js,是不是很赞呢
使用方法:
  1. 将 body 中的代码部分拷贝过去
  2. 将 ​lanren.css​ 样式引入到你的页面即可
    (注意:不兼容低版本浏览器哦)

狐狸尾巴燃烧效果

尾巴燃烧效果

效果描述:
这个绚丽的狐狸尾巴动画效果看起来就像尾巴在燃烧一样,看起来是不是很神奇,很羡慕这是如何制作出来的。
当然,是有两种方法可以制作出来的,首先要跟大家介绍的是方法:
  • 利用 CSS3 的动画属性 animation 设置关键词,并分步移动图片,视觉感官上尾巴就在燃烧了。
背景图片很大,有 7020 X 156 像素单位大,使用 CSS step 来移动背景图片位置,这个动画可以无限循环下去,只要把背景图位置重置为0,重头运行一遍就行了。
  • 但是有人要问了,这个是 CSS3 哦,低版本浏览器不支持怎么办,那么简单,这一点可以利用 jQuery 和背景动画工具,叫做 Spritely,写法是:​$(“#lanren”).sprite({fps:12,no_of_frames:44,rewind:true});
这样写对于客户端来说,最大的问题在于内存占用率很高,不能跟我们这高大上的 CSS3 相比,这里就不再赘述

使用方法:
  1. 将 head 中的 CSS 样式引入到你的网页中
  2. 在你需要显示的地方建一个 id 为 lanren 的 div 即可

鼠标移入div图片后按钮飞入动画效果

飞入效果

效果描述:
  • 几十个小动画效果
  • 当鼠标移入到图片上的时候,其中的按钮保持水平居中显示
  • 各种常见的动画效果都在里面
使用方法:
  1. 将 head 中的样式复制到你的样式表中
  2. 将 body 中的代码部分拷贝过去即可
    (css3 特效,不支持低版本浏览器)

放大镜动画效果

放大镜动画

效果描述:
  • jquery.smoothproducts.js​ 插件,直接支持在原始图片位置上放大图片
  • 而不是像其他的普通的放大镜效果那样另外在旁边开辟一个新的位置
  • 适合特殊需要的同学使用
使用方法:
  1. 将 head 中的样式复制到你的样式表中
  2. 将 body 中的代码部分拷贝过去即可
    (注意保持图片路径正确)

点击动画效果

点击动画

效果描述:
  • 简单有效的 css3 动画效果,当然,其中还引入了多个 js 插件
使用方法:
  1. 将 lanren.css 样式引入到你的网页中
  2. 将 body 中的代码部分拷贝到你需要的地方即可
    (注意保持文件路径正确)

颗粒全屏动画效果

颗粒全屏动画

效果描述:
  • 之前推荐过好多此种 canvas 颗粒动画效果
  • 今天再次推荐一个,其中包含红、黑、黄三种颜色
  • 当然,你也可以将颜色修改为你喜欢的,可以在 ​lanrenzhijia.js​ 中修改颜色代码即可
使用方法:
  1. 将 head 中的样式引入到你的样式表中
  2. 将 body 中的代码部分拷贝过去即可

多种滚动下拉动画加载效果

滚动下拉动画

效果描述:
  • 视觉效果非常不错的 css3 列表下拉动画效果,附件提供了多达 16 种不同的动画效果
  • 懒人们可根据需要复制对应的article列表过去使用即可
使用方法:
  1. 将 head 中的样式引入到你的样式表中
  2. 将 body 中你需要的代码部分拷贝过去即可

简洁动感旋转圣诞树效果

旋转圣诞树

效果描述:
  • 立体式旋转效果非常棒的一款圣诞树效果
  • 默认左右旋转
  • css3 效果,低版本浏览器不支持
使用方法:
  1. 1、将 head 中的样式引入到你的样式表中
  2. 2、将 body 中需要的代码部分拷贝过去即可

高度灵活的模拟扑克牌切换图片效果

模拟扑克牌

效果描述:
  • 插件提供了三种图片切换效果,非常流畅
  • 不过其中引入了大部分的 css3 代码,低版本浏览器并不支持
  • 建议在高版本浏览器下浏览
使用方法:
  1. 将 head 中的样式引入到你的样式表中
  2. 将 body 中的代码部分拷贝过去即可
    (注意保持图片路径正确)

28个 加载loading动画特效

loading动画

效果描述:
  • 并不是纯 css3 的,偶尔的一点点js也是可以忽略的啦
  • 提供了 28 个不同的加载效果,你可以任选一种作为你的手机网页端部分模块的 loading 效果,而不需要考虑兼容性的问题
使用方法:
  1. 将 head 中的 css 样式以及js引入到你的网页中
  2. 选择一个你喜欢的 loading 效果,复制其中的 html 到你的网页中即可
    (注意 ​index.html​ 底部的 js 别漏掉了)

网页左上角扇形状导航效果

扇形状导航

效果描述:
  • 位置固定在网页的左上角导航
  • 纯 css3 实现的效果,当然它并没有采用任何图片以及 js 效果
  • 一样非常美观,不过可惜的是不支持低版本浏览器
使用方法:
  1. 将 ​lanrenzhijia.css​ 样式引入到你的网页中
  2. 将 body 中的代码部分拷贝到你需要的地方即可

模拟雷达波向外散发动画效果



描述:
  • 就在不久之前万维网联盟已宣布完成 html5 标准的制定工作
  • 所以呢,html5+css3 效果离我们生活已经越来越近了
  • 今天给大家推荐一款非常舒适,且只使用 css3 实现的效果,无 js
使用方法:
  • 将附件 ​index.html​ 文件中的 CSS 代码以及 HTML 代码拷贝到你的网页中即可


CSS是用于网页设计可用的最强大的工具之一。使用它我们可以在几分钟内改变一个网站的界面,而不用改变页面的标签。在深入研究CSS选择器之前,我们应该先搞懂CSS优先级是如何工作的。比如给一个p标签增加一个类(class),可是执行后该class中的有些属性并没有起作用。通过Firebug查看,发现没有起作用的属性被覆盖了。这个时候CSS选择器优先级的问题了。


当我们写CSS的时候需要注意有些选择器在级联(cascade)上会高于其它选择器,我们写在最后面的选择器将不一定会覆盖前面我们写在同一个元素的样式。那么你如何计算指定选择器的优先级?如果你考虑到将优先级表示为用逗号隔开的四个数字就会相当简单,比如:1, 1, 1, 1 或0, 2, 0, 1


第一个数字(a)通常就是0,除非在标签上使用style属性;
第二个数字(b)是该选择器上的id的数量的总和;
第三个数字(c)是用在该选择器上的其它属性选择器和伪类的总和。这里包括class (.example) 和属性选择器(比如 li[id=red]);
第四个数字(d)计算元素(就像table、p、div等等)和伪元素(就像:first-line等);
通用选择器(*)是0优先级;
如果两个选择器有同样的优先级,在样式表中后面的那个起作用。
让我们看几个例子,这样或许比较容易理解些:

#sidebar h2 — 0, 1, 0, 1
h2.title — 0, 0, 1, 1
h2 + p — 0, 0, 0, 2
#sidebar p:first-line — 0, 1, 0, 2
在下面的例子中,第一个将会起作用,因为它比第二个优先级高:

#sidebar p#first { color: red; } — 0, 2, 0, 1
#sidebar p:first-line { color: blue; } — 0, 1, 0, 2
至少基本理解优先级是如何工作的是很重要的,但是一些工具比如Firebug,在我们审查指定元素的时候,按照选择器的优先级列出所有的css选择器对让我们知道在指定元素上哪个选择器是有效的是很有用的,让你非常容易的看到那个选择器作用于一个元素上了。


css选择器


CSS3 选择器分类

CSS3选择器分类如下图所示:

选择器分类


选择器的语法

1,基本选择器语法

选择器类型功能描述
* 通配选择器 选择文档中所有HTML元素
E 元素选择器选择指定类型的HTML元素
#id ID选择器选择指定ID属性值为“id”的任意类型元素
.class 类选择器选择指定class属性值为“class”的任意类型的任意多个元素
selector1,selectorN 群组选择器将每一个选择器匹配的元素集合并

 

2,层次选择器语法

选择器类型功能描述
E  F后代选择器(包含选择器)选择匹配的F元素,且匹配的F元素被包含在匹配的E元素内
E>F子选择器选择匹配的F元素,且匹配的F元素所匹配的E元素的子元素
E+F相邻兄弟选择器选择匹配的F元素,且匹配的F元素紧位于匹配的E元素的后面
E~F通用选择器选择匹配的F元素,且位于匹配的E元素后的所有匹配的F元素

 

3,动态伪类选择器语法

选择器类型功能描述
E:link链接伪类选择器  选择匹配的E元素,而且匹配元素被定义了超链接并未被访问过。常用于链接描点上
E:visited  链接伪类选择器选择匹配的E元素,而且匹配元素被定义了超链接并已被访问过。常用于链接描点上
E:active用户行为选择器选择匹配的E元素,且匹配元素被激活。常用于链接描点和按钮上
E:hover用户行为选择器选择匹配的E元素,且用户鼠标停留在元素E上。IE6及以下浏览器仅支持a:hover
E:focus用户行为选择器选择匹配的E元素,而且匹配元素获取焦点

 

4,目标伪类选择器

选择器功能描述
E:target选择匹配E的所有元素,且匹配元素被相关URL指向

 

5,UI元素状态伪类选择器语法

选择器类型功能描述
E:checked选中状态伪类选择器匹配选中的复选按钮或者单选按钮表单元素
E:enabled启用状态伪类选择器匹配所有启用的表单元素
E:disabled不可用状态伪类选择器匹配所有禁用的表单元素


 6,结构伪类选择器使用语法

选择器功能描述
E:first-child作为父元素的第一个子元素的元素E。与E:nth-child(1)等同
E:last-child作为父元素的最后一个子元素的元素E。与E:nth-last-child(1)等同
E:root选择匹配元素E所在文档的根元素。在HTML文档中,根元素始终是html,此时该选择器与html类型选择器匹配的内容相同
E F:nth-child(n)选择父元素E的第n个子元素F。其中n可以是整数(1,2,3)、关键字(even,odd)、可以是公式(2n+1),而且n值起始值为1,而不是0.
E F:nth-last-child(n)选择父元素E的倒数第n个子元素F。此选择器与E:nth-child(n)选择器计算顺序刚好相反,但使用方法都是一样的,其中:nth-last-child(1)始终匹配最后一个元素,与last-child等同
E:nth-of-type(n)选择父元素内具有指定类型的第n个E元素
E:nth-last-of-type(n)选择父元素内具有指定类型的倒数第n个E元素
E:first-of-type选择父元素内具有指定类型的第一个E元素,与E:nth-of-type(1)等同
E:last-of-type选择父元素内具有指定类型的最后一个E元素,与E:nth-last-of-type(1)等同
E:only-child选择父元素只包含一个子元素,且该子元素匹配E元素
E:only-of-type选择父元素只包含一个同类型子元素,且该子元素匹配E元素
E:empty选择没有子元素的元素,而且该元素也不包含任何文本节点

注:(1),“ul>li:nth-child(3)”表达的并不是一定选择列表ul元素中的第3个子元素li,仅有列表ul中第3个li元素前不存在其他的元素,命题才有意义,否则不会改变列表第3个li元素的样式。

(2),:nth-child(n)  中参数只能是n,不可以用其他字母代替。

(3),:nth-child(odd) 选择的是奇数项,而使用:nth-last-child(odd) 选择的却是偶数项


7,否定伪类选择器

选择器功能描述
E:not(F)匹配所有除元素F外的E元素


8,属性选择器语法

选择器功能描述
[attribute]用于选取带有指定属性的元素。
[attribute=value]用于选取带有指定属性和值的元素。
[attribute~=value]用于选取属性值中包含指定词汇的元素。
[attribute|=value]用于选取带有以指定值开头的属性值的元素,该值必须是整个单词。
[attribute^=value]匹配属性值以指定值开头的每个元素。
[attribute$=value]匹配属性值以指定值结尾的每个元素。
[attribute*=value]匹配属性值中包含指定值的每个元素。

注:例<div class="links item"></div>其中a[class="links"]{……} 是找不到匹配元素,只有a[class="links item"]{……}才匹配


如下图所示,在网页设计中,有时候会需要用到渐变效果,渐变可以创建出类似于彩虹的视觉图案效果,在没有CSS3之前,为了显示一个渐变需要专门制作一个图片,这种不法不但不灵活还增加请求数,而CSS3可以轻松实现网页渐变效果,用于做渐变背景、渐变导航、配合CSS3动画做特效等。在CSS3中,Gradient(渐变)分为linear-gradient(线性渐变)和radial-gradient(径向渐变)。CSS颜色线性渐变的语法在各种浏览器里的实现稍微有些不同,但最后是统一标准的:


css3渐变

CSS颜色线性渐变的语法

background-image: linear-gradient(<point> || <angle>,]? <stop>, <stop> [, <stop>]*)

第一个参数是渐变起始点或角。第二个参数是一种颜色停止点(color stops)。至少需要两种颜色(起点和终点),你可以添加任意种颜色来增加颜色渐变的丰富程度。对颜色停止点的定义可以是一种颜色,或一种颜色加一个百分比:

/*  color-stop(percentage/amount, color) */color-stop(0.20, red)
因为CSS渐变色(Gradients)技术是CSS3里比较新的技术,属于高级的CSS功能,于是每种浏览器对这种技术的实现都添加了一些自己的特色。例如以WebKIt为渲染引擎的谷歌浏览器,就对它实现了多种语法。下面的这段代码基本包括了所有自顶向下颜色渐变的所有情况:

#example1	{	/* 底色 */	background-color: #063053;	/* chrome 2+, safari 4+; multiple color stops */	background-image:-webkit-gradient(linear, left bottom, left top, color-stop(0.32, #063053), color-stop(0.66, #395873), color-stop(0.83, #5c7c99));	/* chrome 10+, safari 5.1+ */	background-image: -webkit-linear-gradient(#063053, #395873, #5c7c99);	/* firefox; multiple color stops */	background-image: -moz-linear-gradient(top,#063053, #395873, #5c7c99);	/* ie 6+ */	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053', endColorstr='#395873');	/* ie8 + */	-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053', endColorstr='#395873')";	/* ie10 */	background-image: -ms-linear-gradient(#063053, #395873, #5c7c99);	/* opera 11.1 */	background-image: -o-linear-gradient(#063053, #395873, #5c7c99);	/* 标准写法 */	background-image: linear-gradient(#063053, #395873, #5c7c99);
注意,我们首先设定了一个背景色。这个颜色是在万一用户使用的浏览器不支持CSS渐变色(Gradients)技术时使用的颜色。CSS渐变色(Gradients)技术里还支持带有角度的渐变方向,而不仅仅只有直上直下或直左直右。我们可以用下面的语法实现它:

#example2	{	/* fallback */	background-color:#063053;	/* chrome 2+, safari 4+; multiple color stops */	background-image:-webkit-gradient(linear, left bottom, right top, color-stop(0.32, #063053), color-stop(0.66, #395873), color-stop(0.83, #5c7c99));	/* chrome 10+, safari 5.1+ */	background-image:-webkit-linear-gradient(45deg, #063053, #395873, #5c7c99);	/* firefox; multiple color stops */	background-image:-moz-linear-gradient(45deg, #063053, #395873, #5c7c99);	/* ie10 */	background-image: -ms-linear-gradient(45deg, #063053 0%, #395873 100%);	/* opera 11.1 */	background-image: -o-linear-gradient(45deg, #063053, #395873);	/* The "standard" */	background-image: linear-gradient(45deg, #063053, #395873);}
我们可以做的更复杂些….一个色彩缤纷的CSS颜色渐变?下面我们来做一个彩虹:
/* example 3 - linear rainbow */#example3	{	/* fallback */	background-color:#063053;	/* chrome 2+, safari 4+; multiple color stops */	background-image:-webkit-gradient(linear, left bottom, left top, color-stop(0.20, red), color-stop(0.40, green), color-stop(0.6, blue), color-stop(0.8, purple), color-stop(1, orange));	/* chrome 10+, safari 5.1+ */	background-image:-webkit-linear-gradient(red, green, blue, purple, orange);	/* firefox; multiple color stops */	background-image:-moz-linear-gradient(top, red, green, blue, purple, orange);	/* ie10 */	background-image: -ms-linear-gradient(red, green, blue, purple, orange);	/* opera 11.1 */	background-image: -o-linear-gradient(red, green, blue, purple, orange);	/* The "standard" */	background-image: linear-gradient(red, green, blue, purple, orange);}

关于IE对CSS颜色渐变技术的支持做一些说明:在早期IE是使用filter和-ms-filter语法实现渐变色,而最新版的IE里改为了-ms-linear-gradient语法。我们可以使用CSS里条件判断语句来解决这个问题:

<!--[if lt IE 10]><style>.gradientElement {	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053', endColorstr='#395873');	-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053', endColorstr='#395873')";}</style><![endif]-->


线性渐变的语法

对象选择器 {background:-浏览器前缀-linear-gradient( 起点方向,起点颜色,终点颜色);}


径向渐变的语法

对象选择器 {background:-浏览器前缀-radial-gradient( 起点方向,形状,大小,起点颜色,终点颜色);}


渐变的兼容方法

1、线性渐变

各浏览器前缀
(1)Firefox
Firefox
(2)Safari , Chrome
Safari
Chrome
(3)Opera 11.10+

Opera
兼容IE
IE
2、径向渐变
径向渐变和线性渐变的语法差不多,详情请查看//www.51coolma.cn/css3/oj26bfli.html

渐变应用实例

1、径向渐变做大背景

径向渐变
background-color: #4B770A;background-image: -webkit-gradient(radial,                        50% 400, 1,                        50% 400, 400,                        from(rgba(255, 255, 255, 0.3)),                        to(rgba(255, 255, 255, 0)));//仅实现了webkit下的效果

2、蒙版效果

蒙版效果
position: fixed;    width: 100%;    height: 60px;    bottom: 0px;    content: '';    background: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.33) 33%, rgba(255, 255, 255, 0.73) 66%, rgba(255, 255, 255, 1) 91%);    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255, 255, 255, 0)), color-stop(33%,rgba(255, 255, 255, 0.33)), color-stop(66%,rgba(255, 255, 255, 0.73)), color-stop(91%,rgba(255, 255, 255, 1)));    background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%,rgba(255, 255, 255, 0.33) 33%,rgba(255, 255, 255, 0.73) 66%,rgba(255, 255, 255, 1) 91%);    background: -o-linear-gradient(top, rgba(255, 255, 255, 0) 0%,rgba(255, 255, 255, 0.33) 33%,rgba(255, 255, 255, 0.73) 66%,rgba(255, 255, 255, 1) 91%);    background: -ms-linear-gradient(top, rgba(255, 255, 255, 0) 0%,rgba(255, 255, 255, 0.33) 33%,rgba(255, 255, 255, 0.73) 66%,rgba(255, 255, 255, 1) 91%);    background: linear-gradient(top, rgba(255, 255, 255, 0) 0%,rgba(255, 255, 255, 0.73) 33%,rgba(255, 255, 255, 0.73) 66%,rgba(255, 255, 255, 1) 91%);    filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=0 );

3、渐变按钮

渐变按钮

.myButton {    -moz-box-shadow:inset 0px 1px 0px 0px #ffffff;    -webkit-box-shadow:inset 0px 1px 0px 0px #ffffff;    box-shadow:inset 0px 1px 0px 0px #ffffff;    background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #ededed), color-stop(1, #dfdfdf));    background:-moz-linear-gradient(top, #ededed 5%, #dfdfdf 100%);    background:-webkit-linear-gradient(top, #ededed 5%, #dfdfdf 100%);    background:-o-linear-gradient(top, #ededed 5%, #dfdfdf 100%);    background:-ms-linear-gradient(top, #ededed 5%, #dfdfdf 100%);    background:linear-gradient(to bottom, #ededed 5%, #dfdfdf 100%);    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#dfdfdf',GradientType=0);    background-color:#ededed;     -moz-border-radius:6px;    -webkit-border-radius:6px;    border-radius:6px;    border:1px solid #dcdcdc;    display:inline-block;    cursor:pointer;    color:#777777;    font-family:arial;    font-size:15px;    font-weight:bold;    padding:6px 24px;    text-decoration:none;    text-shadow:0px 1px 0px #ffffff;    margin-top: 100px;}.myButton:hover {    background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #dfdfdf), color-stop(1, #ededed));    background:-moz-linear-gradient(top, #dfdfdf 5%, #ededed 100%);    background:-webkit-linear-gradient(top, #dfdfdf 5%, #ededed 100%);    background:-o-linear-gradient(top, #dfdfdf 5%, #ededed 100%);    background:-ms-linear-gradient(top, #dfdfdf 5%, #ededed 100%);    background:linear-gradient(to bottom, #dfdfdf 5%, #ededed 100%);    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfdfdf', endColorstr='#ededed',GradientType=0);    background-color:#dfdfdf;}.myButton:active {    position:relative;    top:1px;}

4、用径向渐变做一张优惠券

优惠券

主要的代码如下:
background: radial-gradient(transparent 0, transparent 5px, #F39B00 5px);background-size: 15px 15px;background-position: 9px 3px;

完整代码:

CSS代码
这是公共样式.stamp {width: 387px;height: 140px;padding: 0 10px;position: relative;overflow: hidden;}.stamp:before {content: '';position: absolute;top:0;bottom:0;left:10px;right:10px;z-index: -1;}.stamp:after {content: '';position: absolute;left: 10px;top: 10px;right: 10px;bottom: 10px;box-shadow: 0 0 20px 1px rgba(0, 0, 0, 0.5);z-index: -2;}.stamp i{position: absolute;left: 20%;top: 45px;height: 190px;width: 390px;background-color: rgba(255,255,255,.15);transform: rotate(-30deg);}.stamp .par{float: left;padding: 16px 15px;width: 220px;border-right:2px dashed rgba(255,255,255,.3);text-align: left;}.stamp .par p{color:#fff;}.stamp .par span{font-size: 50px;color:#fff;margin-right: 5px;}.stamp .par .sign{font-size: 34px;}.stamp .par sub{position: relative;top:-5px;color:rgba(255,255,255,.8);}.stamp .copy{display: inline-block;padding:21px 14px;width:100px;vertical-align: text-bottom;font-size: 30px;color:rgb(255,255,255);}.stamp .copy p{font-size: 16px;margin-top: 15px;}
.stamp01{background: #F39B00;background: radial-gradient(rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 5px, #F39B00 5px);background-size: 15px 15px;background-position: 9px 3px;}.stamp01:before{background-color:#F39B00;}
.stamp02{background: #D24161;background: radial-gradient(transparent 0, transparent 5px, #D24161 5px);background-size: 15px 15px;background-position: 9px 3px;}.stamp02:before{background-color:#D24161;}
.stamp03{background: #7EAB1E;background: radial-gradient(transparent 0, transparent 5px, #7EAB1E 5px);background-size: 15px 15px;background-position: 9px 3px;}.stamp03:before{background-color:#7EAB1E;}.stamp03 .copy{padding: 10px 6px 10px 12px;font-size: 24px;}.stamp03 .copy p{font-size: 14px;margin-top: 5px;margin-bottom: 8px;}.stamp03 .copy a{background-color:#fff;color:#333;font-size: 14px;text-decoration:none;padding:5px 10px;border-radius:3px;display: block;}
.stamp04{width: 390px;background: #50ADD3;background: radial-gradient(rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 4px, #50ADD3 4px);background-size: 12px 8px;background-position: -5px 10px;}.stamp04:before{background-color:#50ADD3;left: 5px;right: 5px;}.stamp04 .copy{padding: 10px 6px 10px 12px;font-size: 24px;}.stamp04 .copy p{font-size: 14px;margin-top: 5px;margin-bottom: 8px;}.stamp04 .copy a{background-color:#fff;color:#333;font-size: 14px;text-decoration:none;padding:5px 10px;border-radius:3px;display: block;}
HTML代码
<div class="stamp stamp01"><div class="par"><p>XXXXXX折扣店</p><sub class="sign"></sub><span>50.00</span><sub>优惠券</sub><p>订单满100.00元</p></div><div class="copy">副券<p>2015-08-13<br>2016-08-13</p></div><i></i></div>
<div class="stamp stamp02"><div class="par"><p>XXXXXX折扣店</p><sub class="sign"></sub><span>50.00</span><sub>优惠券</sub><p>订单满100.00元</p></div><div class="copy">副券<p>2015-08-13<br>2016-08-13</p></div><i></i></div>
<div class="stamp stamp03"><div class="par"><p>XXXXXX折扣店</p><sub class="sign"></sub><span>50.00</span><sub>优惠券</sub><p>订单满100.00元</p></div><div class="copy">副券<p>2015-08-13<br>2016-08-13</p><a href="#">立即使用</a></div><i></i></div>
<div class="stamp stamp04"><div class="par"><p>XXXXXX折扣店</p><sub class="sign"></sub><span>50.00</span><sub>优惠券</sub><p>订单满100.00元</p></div><div class="copy">副券<p>2015-08-13<br>2016-08-13</p><a href="#">立即使用</a></div><i></i></div>
PS:用这个方式还可以做邮票,不信你试试

相信你看到这,一定觉得,这么长串的代码,我怎么写出来,看着都晕。如果是简单的渐变,可以用less的函数来生成,只需要提供开始颜色和停止颜色。如果是按钮,则有专门的网站,可视化生成。

Less函数
/* 线性渐变 */.gradient (@origin: top, @start: #ffffff, @stop: #000000) {    background-color: @start;    background-image: -webkit-linear-gradient(@origin, @start, @stop);    background-image: -moz-linear-gradient(@origin, @start, @stop);    background-image: -o-linear-gradient(@origin, @start, @stop);    background-image: -ms-linear-gradient(@origin, @start, @stop);    background-image: linear-gradient(@origin, @start, @stop);}

/* 快速渐变 */.quick-gradient (@origin: left, @alpha: 0.2) {    background-image: -webkit-linear-gradient(@origin, rgba(0,0,0,0.0), rgba(0,0,0,@alpha));    background-image: -moz-linear-gradient(@origin, rgba(0,0,0,0.0), rgba(0,0,0,@alpha));    background-image: -o-linear-gradient(@origin, rgba(0,0,0,0.0), rgba(0,0,0,@alpha));    background-image: -ms-linear-gradient(@origin, rgba(0,0,0,0.0), rgba(0,0,0,@alpha));    background-image: linear-gradient(@origin, rgba(0,0,0,0.0), rgba(0,0,0,@alpha));}

用法:
//html代码<div class="div1"></div><div class="div2"></div> //css代码div{    width: 200px;    height: 80px;    margin: 10px;}.div1{    .gradient(top, #00B7EA, #0391B3);}.div2{    .quick-gradient();}
渐变效果

我们都有在网页上见过一些交互性的效果,比如用鼠标滑向图标或是按钮的时候,图标会自动旋转一周,这就是CSS3旋转效果。在CSS3中有个常见的transform应用,transform主要包括以下几种:旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix。本文主要侧重讲解CSS3的平面旋转(2D)方法和立体旋转(3D)方法。不过既然提起transform,还是先普及一下transform属性的基本知识:


在CSS3中transform主要包括以下几种:旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix。


1、旋转rotate() :通过指定的角度参数对原元素指定一个2D rotation(2D 旋转),angle是指旋转角度,如果设置的值为正数表示顺时针旋转,负数则表示逆时针旋转。如:transform:rotate(30deg)。


2、扭曲skew( [, ]) :X轴Y轴上的skew transformation(斜切变换)。第一个参数对应X轴,第二个参数对应Y轴。如果第二个参数未提供,则值为0,也就是Y轴方向上无斜切。skew是用来对元素进行扭曲变行,第一个参数是水平方向扭曲角度,第二个参数是垂直方向扭曲角度。其中第二个参数是可选参数,默认为0deg。


3、缩放scale([, ]):提供执行[sx,sy]缩放矢量的两个参数指定一个2D scale(2D缩放)。如果第二个参数未提供,则取与第一个参数一样的值。scale(X,Y)是用于对元素进行缩放,可以通过transform-origin对元素的基点进行设置,同样基点在元素中心位置;基中X表示水平方向缩放的倍数,Y表示垂直方向的缩放倍数,而Y是一个可选参数,如果没有设置Y值,则表示X,Y两个方向的缩放倍数是一样的。并以X为准。如:transform:scale(2,1.5)。


4、移动translate([, ]) :通过矢量[tx, ty]指定一个2D translation,tx 是第一个过渡值参数,ty 是第二个过渡值参数选项。如果 未被提供,则ty以 0 作为其值。也就是translate(x,y),它表示对象进行平移,按照设定的x,y参数值,当值为负数时,反方向移动物体,其基点默认为元素 中心点,也可以根据transform-origin进行改变基点。如transform:translate(100px,20px)。


5、矩阵变形matrix(, , , , , ) : 以一个含六值的(a,b,c,d,e,f)变换矩阵的形式指定一个2D变换,相当于直接应用一个[a b c d e f]变换矩阵。就是基于水平方向(X轴)和垂直方向(Y轴)重新定位元素,此属性值使用涉及到数学中的矩阵。


查看详细完整的transform属性请点击//www.51coolma.cn/cssref/pr-transform.html


CSS3旋转rotate()方法

在CSS3中,我们可以使用rotate()方法来将元素相对中心原点进行旋转。这里的旋转是二维的,不涉及三维空间的操作。
语法:
transform:rotate(度数);

说明:
度数指的是元素相对中心原点进行旋转的度数,单位为deg。其中,deg是degree(度数)的缩写。如果度数为正,则表示元素相对原点中心顺时针旋转;如果度数为负,则表示元素相对原点中心进行逆时针旋转。

举例:

<style>.demo { margin:100px auto; width:300px; height:300px; background:#ededed; border:1px dotted #ff0000; position:relative;}.fl { width:300px; height:145px; background:#00cb99;}.fr { width:300px; height:145px; margin-top:10px; background:#0093b4;}.pa { position:absolute; top:75px; left:75px; width:150px; height:150px; background-color:#f2f2f2;}</style><div class="demo">     <div class="fl"></div>     <div class="fr"></div>     <div class="pa"></div></div>


效果如下:

图片旋转

分析:

这里虚线框为原始位置,蓝色背景盒子为顺时针旋转30度后的效果。


CSS3实现3D旋转

用CSS3制作3D旋转图像,效果很漂亮,3D旋转的特别之处就是支持阴影旋转和兼容响应式网页设计,使得整体场景非常有感觉。

先看一个简单的3D旋转效果例子:

正面:鼠标移上去就开始旋转

正面旋转

旋转中:这是旋转至背面的效果,以旋转并带半透明渐变的方式显示。


背面:旋转后,为图像添加一些文字介绍元素,充实这个元素。

HTML代码

<div class="photo-container"><div class="rotate-box"><img src="winwall.jpg"/><div class="text"><h2>这是一个标题</h2><p>这是一段图片相关的简介内容。。</p></div></div></div>

CSS代码

.photo-container {perspective: 1200px; /* 透视视图 */width:45%;float:left;}.rotate-box {position:relative;transform-style: preserve-3d; /* 3D 转换 */transition:1s ease; /* 转换效果持续 1秒 */margin:10%;}.rotate-box img {width:100%;height:auto;}


背面文本样式,透明背景,并设置默认为反转180度,其次要将图像置于图像的背面,所以这里我们利用z轴来控制,CSS代码如下:

.text {position:absolute;top:0;width:100%;height:100%;transform: rotateY(180deg) translateZ(1px); /* 反转180度 并设置z轴让其置于图片背面 */color:#666;text-align:center;opacity:.06;background:rgba(255,255,255,.9);transition: 1s opacity;}


使用Hover来触发动画

.photo-container:hover .rotate-box{transform: rotateY(180deg);}.photo-container:hover .text{opacity:1}


通过伪元素(:after)给图像添加一个透视阴影,使整体更有3D立体感觉。

.rotate-box:after {content:' ';display:block;width:100%;height:7vw; /* vw是移动设计备窗体单位*/transform:rotateX(90deg);background-image: radial-gradient(ellipse closest-side, rgba(0, 0, 0, 0.05) 0%, rgba(0, 0, 0, 0) 100%); /* radial-gradient 是径向渐变 */}


CSS3实现3D立方体旋转效果



使用方法:
1、调用CSS样式:
<link rel="stylesheet" type="text/css" href="css/style.css" />


2、添加HTML代码:
将<!--效果html开始-->......<!--效果html结束-->之间的html和js代码;放在<body></body>之间。


HTML代码:

 <div class="wrap">        <div class="box1 box">            1</div>        <div class="box2 box">            2</div>        <div class="box3 box">            3</div>        <div class="box4 box">            4</div>        <div class="box5 box">            5</div>        <div class="box6 box">            6</div>    </div>

CSS 3代码:

*{margin: 0;padding: 0;}html,body{height: 100%;background: black;}.wrap{	  height: 100%;position: relative;	  -webkit-transform-style:preserve-3d;	  -webkit-perspective:0px;	  -moz-transform-style:preserve-3d;	  -moz-perspective:0px;	  -webkit-animation:mydhua 5s ease infinite;	  -moz-animation:mydhua 5s ease infinite;	 }.box{width: 200px;height: 200px;position: absolute;top: 50%;left: 50%;	 margin:-100px 0 0 -100px; line-height: 200px;text-align: center;font-size: 48px;color: white;		}.box1{	-webkit-transform:rotatey(90deg) translatez(-100px);	-moz-transform:rotatey(90deg) translatez(-100px);	background: rgba(128,0,128,.5);}.box2{	-webkit-transform:rotatey(90deg) translatez(100px);	-moz-transform:rotatey(90deg) translatez(100px);	background: rgba(255,0,255,.5);}.box3{	-webkit-transform:rotatex(90deg) translatez(100px);	-moz-transform:rotatex(90deg) translatez(100px);	background: rgba(255,153,204,.5);}.box4{	-webkit-transform:rotatex(90deg) translatez(-100px);	-moz-transform:rotatex(90deg) translatez(-100px);	background: rgba(0,204,255,.5);}.box5{	-webkit-transform: translatez(-100px);	-moz-transform:translatez(-100px);	background: rgba(153,204,255,.5);}.box6{	-webkit-transform: translatez(100px);	-moz-transform:translatez(100px);	background: rgba(0,255,255,.5);}@-webkit-keyframes mydhua{	0%{-webkit-transform:rotateX(0deg) rotateY(0deg) rotateZ(0deg);-webkit-transform-origin: center center;}	100%{-webkit-transform:rotateX(180deg) rotateY(180deg) rotateZ(180deg);-webkit-transform-origin: center center; }}@-moz-keyframes mydhua{	0%{-moz-transform:rotateX(0deg) rotateY(0deg) rotateZ(0deg);-webkit-transform-origin: center center;}	100%{-moz-transform:rotateX(180deg) rotateY(180deg) rotateZ(180deg); -webkit-transform-origin: center center;}}







过去如果我们用传统的方法要实现圆角边框,需要使用多张图片作为背景图案才可以。CSS3出现后添加了一个新的属性border-radius,就可以轻松实现圆角边框的效果,一方面省去了制作图片的时间,另一方面省去了浏览器加载图片造成的延迟和带宽。不过要使用支持该属性的浏览器才能运行。主流浏览器如Safari,谷歌浏览器,IE,Opera和火狐浏览器可支持border-radius属性。


语法

.roundElement	{	border-radius: 10px;}
上面的这句代码的作用是设置一个元素的四个角的弧度半径值都为10px。你也可以对每个角单独指定:角的弧度半径值都为10px。你也可以对每个角单独指定:
.pearElement	{	border-top-left-radius: 7px;	border-top-right-radius: 5px;	border-bottom-right-radius: 6px;	border-bottom-left-radius: 8px;}
如果你觉得上面的写法太复杂,可以使用下面border-radius简写的方法:
.oddRoundElement {	border-radius: 12px 5px 12px 5px;	/* or */	border-radius: 12px 5px;}
四个值分别代表的是top-left, top-right, bottom-right, bottom-left四个角。

实例解析

首先来看看效果图:

实例

HTML代码:
<a href="#" class="button green">button</a><a href="#" class="button blue">button</a><a href="#" class="button gray">button</a>

如果没有 CSS ,那么上面的 HTML 执行起来是这样的:

没有CSS的效果

 CSS3的编写:
.button {    display: inline-block;    position: relative;    margin: 10px;    padding: 0 20px;    text-align: center;    text-decoration: none;    font: bold 12px/25px Arial, sans-serif;}

一些不同颜色的按钮样式:
.green {    color: #3e5706;    background: #a5cd4e;} /* Blue Color */ .blue {    color: #19667d;    background: #70c9e3;} /* Gray Color */ .gray {    color: #515151;    background: #d3d3d3;}

到这一步后按钮看起来是这样的:

css按钮

用 CSS 处理圆角:
.button {    display: inline-block;    position: relative;    margin: 10px;    padding: 0 20px;    text-align: center;    text-decoration: none;    font: bold 12px/25px Arial, sans-serif;     text-shadow: 1px 1px 1px rgba(255,255,255, .22);     -webkit-border-radius: 30px;    -moz-border-radius: 30px;    border-radius: 30px;     -webkit-box-shadow: 1px 1px 1px rgba(0,0,0, .29), inset 1px 1px 1px rgba(255,255,255, .44);    -moz-box-shadow: 1px 1px 1px rgba(0,0,0, .29), inset 1px 1px 1px rgba(255,255,255, .44);    box-shadow: 1px 1px 1px rgba(0,0,0, .29), inset 1px 1px 1px rgba(255,255,255, .44);     -webkit-transition: all 0.15s ease;    -moz-transition: all 0.15s ease;    -o-transition: all 0.15s ease;    -ms-transition: all 0.15s ease;    transition: all 0.15s ease;}

现在的按钮圆润多了,看看:

圆角按钮

还不够啊,没有立体效果,再完善完善:
/* Green Color */ .green {    color: #3e5706;     background: #a5cd4e; /* Old browsers */    background: -moz-linear-gradient(top,  #a5cd4e 0%, #6b8f1a 100%); /* FF3.6+ */    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a5cd4e), color-stop(100%,#6b8f1a)); /* Chrome,Safari4+ */    background: -webkit-linear-gradient(top,  #a5cd4e 0%,#6b8f1a 100%); /* Chrome10+,Safari5.1+ */    background: -o-linear-gradient(top,  #a5cd4e 0%,#6b8f1a 100%); /* Opera 11.10+ */    background: -ms-linear-gradient(top,  #a5cd4e 0%,#6b8f1a 100%); /* IE10+ */    background: linear-gradient(top,  #a5cd4e 0%,#6b8f1a 100%); /* W3C */} /* Blue Color */ .blue {    color: #19667d;     background: #70c9e3; /* Old browsers */    background: -moz-linear-gradient(top,  #70c9e3 0%, #39a0be 100%); /* FF3.6+ */    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#70c9e3), color-stop(100%,#39a0be)); /* Chrome,Safari4+ */    background: -webkit-linear-gradient(top,  #70c9e3 0%,#39a0be 100%); /* Chrome10+,Safari5.1+ */    background: -o-linear-gradient(top,  #70c9e3 0%,#39a0be 100%); /* Opera 11.10+ */    background: -ms-linear-gradient(top,  #70c9e3 0%,#39a0be 100%); /* IE10+ */    background: linear-gradient(top,  #70c9e3 0%,#39a0be 100%); /* W3C */} /* Gray Color */ .gray {    color: #515151;     background: #d3d3d3; /* Old browsers */    background: -moz-linear-gradient(top,  #d3d3d3 0%, #8a8a8a 100%); /* FF3.6+ */    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#d3d3d3), color-stop(100%,#8a8a8a)); /* Chrome,Safari4+ */    background: -webkit-linear-gradient(top,  #d3d3d3 0%,#8a8a8a 100%); /* Chrome10+,Safari5.1+ */    background: -o-linear-gradient(top,  #d3d3d3 0%,#8a8a8a 100%); /* Opera 11.10+ */    background: -ms-linear-gradient(top,  #d3d3d3 0%,#8a8a8a 100%); /* IE10+ */    background: linear-gradient(top,  #d3d3d3 0%,#8a8a8a 100%); /* W3C */}

现在爽了,漂亮了,你喜欢这样的按钮吗?

圆角按钮2

为了让按钮更大一点,我们增加了个 big 样式:
<a href="#" class="button big green">sign in <span>One minute</span></a><a href="#" class="button big blue">sign in <span>One minute</span></a><a href="#" class="button big gray">sign in <span>One minute</span></a>
/* Big Button Style */ .big {    padding: 0 40px;    padding-top: 10px;    height: 45px;    text-transform: uppercase;    font: bold 20px/22px Arial, sans-serif;} .big span {    display: block;    text-transform: none;    font: italic normal 12px/18px Georgia, sans-serif;    text-shadow: 1px 1px 1px rgba(255,255,255, .12);}

大按钮的效果:

大按钮效果

我们还需要处理下当鼠标移到按钮上方时显示不同的效果:

.button:hover {    -webkit-box-shadow: 1px 1px 1px rgba(0,0,0,.29), inset 0px 0px 2px rgba(0,0,0, .5);    -moz-box-shadow: 1px 1px 1px rgba(0,0,0,.29), inset 0px 0px 2px rgba(0,0,0, .5);    box-shadow: 1px 1px 1px rgba(0,0,0,.29), inset 0px 0px 2px rgba(0,0,0, .5);}.button:active {    -webkit-box-shadow: inset 0px 0px 3px rgba(0,0,0, .8);    -moz-box-shadow: inset 0px 0px 3px rgba(0,0,0, .8);    box-shadow: inset 0px 0px 3px rgba(0,0,0, .8);}

效果如下:

CSS3圆角

各浏览器对border-radius的支持

因为这种圆角技术是CSS3里出现的,老式浏览器或较早期的浏览器中用到这个属性时需要在CSS里添加浏览器引擎前缀(vendor prefixes)。会是{prefix}-border-radius这样一个样子,而具体各种浏览器引擎前缀是下面这样的写法:
-moz-border-radius: 20px;-webkit-border-radius: 20px;-o-border-radius: 20px;/* 火狐浏览器 */-moz-border-radius-topleft:15px; /* top left corner */-moz-border-radius-topright:50px; /* top right corner */-moz-border-radius-bottomleft:15px; /* bottom left corner */-moz-border-radius-bottomright:50px; /* bottom right corner */-moz-border-radius:10px 15px 15px 10px;  /* shorthand topleft topright bottomright bottomleft *//* webkit引擎的浏览器 */-webkit-border-top-left-radius:15px; /* top left corner */-webkit-border-top-right-radius:50px; /* top right corner */-webkit-border-bottom-left-radius:15px; /* bottom left corner */-webkit-border-bottom-right-radius:50px; /* bottom right corner */
基本上,你需要对每种浏览器引擎做各自的声明,加上这些讨厌的稍微不同的代码来保证完全支持border-radius。但是,如果你使用的是最新版的浏览器,包括火狐、谷歌、IE等,你不需要使用这些前缀,因为这个技术已经很成熟,在各种最新版的浏览器里已经受到了普遍支持。

让IE支持border-radius

直到IE9才有对border-radius属性的支持,相信很多Web开发人员和Web应用设计人员都很沮丧。在IE9里,最重要的一个点是使用edge META 标记:
<meta http-equiv="X-UA-Compatible" content="IE=edge" /><style>border-top-right-radius: 7px;border-top-left-radius: 7px;border-bottom-right-radius: 2px;border-bottom-left-radius: 2px;</style>

如果你的IE比较老,不支持border-radius,有很多其它的技术可以弥补这个缺陷,最好的一个解决方法是使用一个很小的JavaScript程序包,叫做CurvyCorners。这个CurvyCorners用javaScript动态的生成很多div标记,用这些div标记来绘出圆角效果,甚至支持消除锯齿功能。

CurvyCorners的用法很简单。第一步是在页面中引入CurvyCorners.js脚本:

<!-- SIMPLY INCLUDE THE JS FILE! --><script type="text/javascript" src="curvy.corners.trunk.js"></script>
CurvyCorners会在DOM元素里寻找具有border-radius属性的元素,然后依次给它们制作出圆角效果。不需要辅助图片。你甚至可以设置指定元素的弧度半径:

var settings = {	tl: { radius: 12 },	tr: { radius: 12 },	bl: { radius: 12 },	br: { radius: 12 },	antiAlias: true};/* moooo */$$('.round').each(function(rd) {  curvyCorners(settings,rd);});
建议你应该指定需要使用圆角的元素,因为让脚本搜索整个页面来寻找需要圆角处理的元素是一个很耗CPU的过程,而且这个过程是每个页面加载时都会执行。

网页设计中常常要用到阴影的效果,通过阴影可以比较容易突出一个元素,在没有CSS3的时候,一般都用图片做阴影效果,而现在通过使用CSS3的text-shadow和box-shadow这两个属性就可以分别设置文字和容器的阴影这是一种新特性。不过这种特性只在支持CSS3的浏览器上有效果,比如:Firefox3.5,Safari 3.1 +,和谷歌浏览器等。


容器设置阴影box-shadow

语法:
box-shadow: h-shadow v-shadow blur spread color inset;
以上各属性值的解析:
horizontal(水平):指定水平偏移阴影。正值(即:5px)阴影向右,而为负值(即:- 10px)将使它偏向左。

vertical(垂直):指定垂直偏移阴影。正值(即:5px)会使阴影在框的底部,而负值(即:- 10px)将使它偏向上。

blur(模糊):设置的柔化半径。默认值为0,这意味着没有模糊。正值增加了模糊,而负值,实际上缩小了阴影。此属性默认为0。

spread:阴影的尺寸,该参数为可选参数。0px代表阴影和当前的实体一样大,大于0则表示大于实体的尺寸。

color(颜色):颜色值,也就是设置阴影颜色。

inset:将外部阴影 (outset) 改为内部阴影。该参数为可选参数。

提醒:该属性可以加在任意元素上,如图片,Div,SPAN,P标签等等都可以。
<html><head><title>W3Cschool(51coolma.cn)</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style type="text/css">#shadow {    box-shadow: 10px 10px 5px #888888;    width:500px;    padding:5px;    text-align:center;    font-size:20px;    background:#21759b;    margin:0 auto;    color:#ffffff;}</style></head><body><div id="shadow">W3Cschool(51coolma.cn)</div></body></html>

显示效果:

容器阴影


浏览器兼容情况:

浏览器兼容

为了兼容各主流浏览器并支持这些主流浏览器的较低版本,在基于Webkit的Chrome和Safari等浏览器上使用box-shadow属性时,我们需要将属性的名称写成-webkit-box-shadow的形式。Firefox浏览器则需要写成-moz-box-shadow的形式。

.box-shadow{             //Firefox4.0-             -moz-box-shadow:h-shadow v-shadow blur spread color inset;           //Safariand Google chrome10.0-             -webkit-box-shadow:h-shadow v-shadow blur spread color inset;           //Firefox4.0+、 Google chrome 10.0+ 、 Oprea10.5+ and IE9             box-shadow:h-shadow v-shadow blur spread color inset; }  
注意:出于方便,后文的css属性有的地方只写了box-shadow属性,没有写-moz-和-webkit-前缀的形式,在使用中不要忘记加上。

为了更清楚的了解box-shadow的特征,做几个小测试,看效果:
<!DOCTYPE html>  <html>    <head>  <meta content="text/html; charset=utf-8" http-equiv="Content-Type">  <title>CSS3属性:box-shadow测试</title>  <script type="text/javascript" src="js/jquery.min.js"></script>  <script type="text/javascript" src="js/jquery.boxshadow.js"></script>  <style type="text/css">  .box-shadow-1{    -webkit-box-shadow: 3px 3px 3px;    -moz-box-shadow: 3px 3px 3px;    box-shadow: 3px 3px 3px;  }  .box-shadow-2{    -webkit-box-shadow:0 0 10px #0CC;    -moz-box-shadow:0 0 10px #0CC;    box-shadow:0 0 10px #0CC;  }  .box-shadow-3{    -webkit-box-shadow:0 0 10px rgba(0, 204, 204, .5);    -moz-box-shadow:0 0 10px rgba(0, 204, 204, .5);    box-shadow:0 0 10px rgba(0, 204, 204, .5);  }  .box-shadow-4{    -webkit-box-shadow:0 0 10px 15px #0CC;    -moz-box-shadow:0 0 10px 15px #0CC;    box-shadow:0 0 10px 15px #0CC;  }  .box-shadow-5{    -webkit-box-shadow:inset 0 0 10px #0CC;    -moz-box-shadow:inset 0 0 10px #0CC;    box-shadow:inset 0 0 10px #0CC;  }  .box-shadow-6{      box-shadow:-10px 0 10px red, /*左边阴影*/      10px 0 10px yellow, /*右边阴影*/      0 -10px 10px blue, /*顶部阴影*/      0 10px 10px green; /*底边阴影*/  }  .box-shadow-7{      box-shadow:0 0 10px 5px black,      0 0 10px 20px red;  }  .box-shadow-8{      box-shadow:0 0 10px 20px red,      0 0 10px 5px black;  }  .box-shadow-9{      box-shadow: 0 0 0 1px red;  }        .obj{      width:100px;      height:100px;      margin:50px auto;      background:#eee;      }  .outer{      width: 100px;      height: 100px;      border: 1px solid red;  }  .inner{      width: 60px;      height: 60px;      background-color: red;      -webkit-box-shadow: 50px 50px blue;      -moz-box-shadow: 50px 50px blue;      box-shadow: 50px 50px blue;    }  </style>  </head>    <body>      <div class="obj box-shadow-1"></div>      <div class="outer">          <div class="inner"></div>      </div>      <div class="obj  box-shadow-2" ></div>      <div class="obj  box-shadow-3" ></div>      <div class="obj  box-shadow-4" ></div>      <div class="obj  box-shadow-5" ></div>      <div class="obj  box-shadow-6" ></div>      <div class="obj  box-shadow-7" ></div>      <div class="obj  box-shadow-8" ></div>      <div class="obj  box-shadow-9" ></div>      <script type="text/javascript">          $(document).ready(function(){          if($.browser.msie) {            $('.obj').boxShadow(-10,-10,5,"#0cc"); //obj元素使用了box-shadow          }        });      </script>    </body>  </html>  

分析:
1、从.box-shadow-1的效果可以得出不指定属性阴影颜色的情况下,阴影在webkit内核下的safari和chrome浏览器下表现为透明色,在Firefox/Opera下表现为黑色。

透明色


2、 从内外两个div块inner、outer的对比来看,所有支持box-shadow的主流浏览器都表现为:内层阴影撑破外层容器将整个阴影效果呈现出来。W3C标准用图示的方式对box-shadow的原理和表现进行了解读:

box-shadow的原理

从图中我们可以了解到:圆角border-radius,阴影扩展半径、阴影模糊半径以及padding是如何影响对象阴影的:非零值的border-radius将会以相同的作用影响阴影的外形,但border-image不会影响对象阴影的任何外形;对象阴影同box模型的层次一样,外阴影会在对象背景之下,内阴影会在边框之下背景之上。我们知道,默认情形背景图片是在背景颜色之上的。所以整个层级是:边框>内阴影>背景图片>背景颜色>外阴影。

3、从. box-shadow-2到. box-shadow-5的效果,我们可以了解到box-shadow取值的作用。

. box-shadow-2是xy没有偏移,阴影大小10px,没有扩展半径,颜色#0CC即rgba(0, 204,204, 1),这里我们使用的是颜色HEX值;效果:

颜色HEX值

而. box-shadow-3是在. box-shadow-2效果的基础上,应用了rgba颜色值,好处是给box-shadow阴影添加了alpha透明效果。效果:

alpha透明效果

. box-shadow-4在. box-shadow-2效果的基础上添加了阴影扩展半径15px。

阴影扩展

. box-shadow-5在. box-shadow-2效果的基础上,将外阴影设为内阴影。

外阴影设为内阴影

4、. box-shadow-6一个元素使用了多个阴影,多个阴影之间用逗号分隔。给对象四边设置阴影效果,我们是通过改变x-offset和y-offset的正负值来实现,其中x-offset为负值时,生成左边阴影,为正值时生成右边阴影,y-offset为正值是生成底部阴影,为负值时生成顶部阴影。并且把模糊半径设置为0,如果不设置为0的话那么其他三边也将会有阴影。这点需要注意!

多个阴影

注意这样的写法是错误的:{box-shadow:-10px 0 10px red, box-shadow:10px 0 10px blue,box-shadow:0 -10px 10px yellow,box-shadow:0 10px 10px green}

并且此处还涉及到一个多阴影的顺序问题。当给同一个元素使用多个阴影属性时,需要注意它的顺序,最先写的阴影将显示在最顶层,如. box-shadow-7设为不同的模糊值:
.box-shadow-7{         box-shadow:0 0 10px 5px black,         0 0 10px 20px red;}
将能看出层叠的顺序效果:
层叠

如果将两个阴影效果调一下,改为如下:
.box-shadow-8{         box-shadow:0 0 10px 20px red,         0 0 10px 5px black;}
将只显示红色的阴影效果,因为红色阴影层在上面,模糊半径大,将后面的黑色阴影完全遮挡。

模糊半径
得出的结论是:如果前面的阴影模糊值小于后面的阴影模糊值,那么前面的显示在后面之上,如果前面阴影的模糊值大于后面的阴影模糊值,那么前面的阴影将遮住后面的阴影效果。

4、类border边框效果(只设置阴影扩展半径和阴影颜色)
.box-shadow-9呈现的效果,同boder:1px solid red相似,但box-shadow的效果与border效果在对象高度上有区别,正好要比border高度大一个扩展半径。而且阴影不影响页面的任何布局,这一点可以通过查看firebug下的layout图得以证实。

类border边框效果

在ie下模拟css3中的box-shadow阴影效果

方法一:可以使用IE的Shadow滤镜

基本语法:filter:progid:DXImageTransform.Microsoft.Shadow(color=’颜色值’, Direction=阴影角度(数值),Strength=阴影半径(数值));

注意:该滤镜必须配合background属性一起使用,否则该滤镜失效。

IE下模拟css3中的box-shadow(阴影)代码:

.box-shadow{      filter: progid:DXImageTransform.Microsoft.Shadow(color='#969696',Direction=135, Strength=5);/*for ie6,7,8*/      background-color: #ccc;      -moz-box-shadow:2px 2px 5px #969696;/*firefox*/      -webkit-box-shadow:2px 2px 5px #969696;/*webkit*/      box-shadow:2px 2px 5px #969696;/*opera或ie9*/  }  

六一儿童节的专题案例
li.blk-item{           width:423px;           height:229px;           float:left;           padding:8px;           margin:2px 18px 13px 21px;           display:inline;           border:1px solid #d3c998;           border-radius:2px;           filter:progid:DXImageTransform.Microsoft.Shadow(color='#d3c998', Direction=135,Strength=5);/*for ie6,7,8*/           background-color: #fff;           -moz-box-shadow:2px 2px 5px#d3c998;/*firefox*/           -webkit-box-shadow:2px 2px 5px#d3c998;/*webkit*/           box-shadow:2px 2px 5px #d3c998;/*opera或ie9*/    }  

方法二:有些js和.htc的hack文件可以实现IE中的阴影效果

ie-css3.htc是一个可以让IE浏览器支持部份CSS3属性的htc文件,不只是box-shadow,它还可以让你的IE浏览器支持圆角属性border-radius和文字阴影属性text-shadow。

它的使用方法是:下载它并放到你的服务器目录

在你的<head></head>里面写入下面的代码:

这个脚本的缺点是IE只支持一部分的box-shadow值。需要注意:

1、当你使用了这个htc文件后,你的CSS里面,只要写有box-shadow, -moz-box-shadow或-webkit-box-shadow的任何一种,IE就会渲染。

2、当使用了这个htc文件后,你不能这样写box-shadow: 0 0 10px red; 而应该是box-shadow: 0px 0px 10px red; 否则IE中会失效。

3、不支持RGBA值中的alpha透明度。

4、不支持inset内阴影。

5、不支持阴影扩展。

6、阴影在IE中只会显示为黑色,不管你设置成其它什么颜色。

方法三:使用jQuery的插件jquery.boxshadow.js
插件的下载地址是:https://www.jq22.com/jquery-info22890

使用方法很简单,将该文件和jquery版本库引入head标签,插入以下js效果代码:
<script type="text/javascript">            $(document).ready(function(){     if($.browser.msie) {       $('.obj').boxShadow(-10,-10,5,"#0cc"); //obj元素使用了box-shadow     }   });  </script> 
注意:js中可以使用:obj.style.webkitBoxShadow=值(字符串);obj.style.MozBoxShadow=值(字符串);obj.style.boxShadow=值(字符串);

补充知识:CSS3的属性
border-top-left-radius:[<length> | <percentage> ] [ <length> | <percentage> ]?

默认值:0


取值:

<length>:

用长度值设置对象的左上角(top-left)圆角半径长度。不允许负值

<percentage>:

用百分比设置对象的左上角(top-left)圆角半径长度。不允许负值


说明:

设置或检索对象的左上角圆角边框。提供2个参数,2个参数以空格分隔,每个参数允许设置1个参数值,第1个参数表示水平半径,第2个参数表示垂直半径,如第2个参数省略,则默认等于第1个参数。 如设置border-top-left-radius:5px10px;表示top-left这个角的水平圆角半径为5px,垂直圆角半径为10px。对应的脚本特性为borderTopLeftRadius。


设置文字阴影text-shadow

实际上,text-shadow 并不是在 CSS3 中才设计出的新属性,早在 CSS 2.0 时已经有了这个属性,之后在 CSS 2.1 中删去这个属性,最终在 CSS3 中重新纳入。

语法:
text-shadow : offset-x || offset-y || opacity || color
该属性支持4个参数,分别是阴影颜色、阴影的水平延伸距离(阴影的 x 轴偏移)、阴影的垂直延伸距离(阴影的 y 轴偏移)、模糊效果的作用半径(阴影的长度)。也许这样介绍概念会有点难以理解,下面直接写一个小例子进行说明:
/* For text-shadow */#example {text-shadow: 1px 1px 2px #d8d8d8; }
注:代码中省略与阴影设置无关的 CSS 代码(下同),完整 CSS 请参考文章末尾 Demo 的源码。

效果如下:
text-shadow

另外,text-shadow 也支持多重阴影,例如,要为一个文字同时设置三重阴影,可以这样编写代码:
/* For text-shadow 多重阴影 */#example-muti {text-shadow: 1px 1px 2px #c10ccc, 1px 1px 2px #648cb4, 1px 1px 6px #cc150c;}

效果如下:
多重阴影

值得注意的是,在多重阴影中,阴影的顺序在不同版本的浏览器中表现不一定相同,由于在 CSS2.0 中,代码中最先定义的阴影会显示在最下面,而在 CSS3 中,最先定义的阴影则显示在最上面。在较新版本的现代浏览器中(Kayo 测试的是 Chrome 22.0.1229.94 , Firefox 17.0.1 , Safari 5.1.7 , Opera 12.11 )多重阴影的渲染顺序都已经按照 CSS3 的顺序了,但在早期版本的一些现代浏览器中仍会有差异,在介绍浏览器支持情况时会再说明一下这部分内容。

相对于图片来说,现在用一个属性就能解决问题实在简便很多。不过,也许你也已经猜到了,杯具的 IE 是不支持 CSS 阴影(所以 IE 版本都不支持 text-shadow IE8 及以下版本不支持 box-shadow ),因此针对 IE ,如果需要达到以上的同样效果,就需要使用 IE 私有滤镜 shadow 或 dropshadow 。这两个滤镜的具体使用也会有些不一样,下面详细介绍:

如果使用 shadow 滤镜,针对以上例子,开发者可以这样编写代码:
progid:DXImageTransform.Microsoft.shadow(Color='#d8d8d8', Direction='135', Strength='2'); zoom: 1; }
shadow 滤镜有三个参数,分别是阴影颜色、阴影偏移角度和阴影长度,其中阴影偏移角度需要通过计算才能获得,在例子中是 “135” 度。如果你习惯了使用偏移值设置阴影,可以使用另一个滤镜 dropshadow ,具体写法如下:
#example-ie {filter: progid:DXImageTransform.Microsoft.DropShadow(OffX='1', OffY='1', Color='#d8d8d8', Positive='true'); zoom: 1; }
效果如下:

dropshadow 有四个参数,分别是阴影 x 轴偏移、阴影 y 轴偏移、阴影颜色、最后一个 positive 属性则决定是否只为非透明像素建立可见的投影,默认值为 true ,即只为非透明像素建立阴影,若为 false ,则也为透明像素建立投影。

以上两个滤镜也支持多重阴影,开发者可以按如下方式编写,但实际效果会远差于 text-shadow 。
/* IE 下多重阴影 */#example-ie-muti {filter: DropShadow(OffX='1', OffY='1', Color='#c10ccc', Positive='true') DropShadow(OffX='1', OffY='1', Color='#648cb4', Positive='true') DropShadow(OffX='1', OffY='1', Color='#cc150c', Positive='true'); zoom: 1; }

另外,在使用以上两个滤镜时,还有几点需要注意的:
1、如果元素同时设置了背景色,那么以上两个滤镜将会失效,这是因为 shadow 滤镜没有像 CSS 滤镜那样区分文字阴影和容器阴影,当开发者为元素设置背景色后,IE 会自动为该元素添加阴影而取消其中文字的阴影。具体会有一个复杂的机制处理这个过程,下面会另作说明。

2、阴影颜色需要使用形如“#aabbcc”这样的写法,不能使用“#abc”这样的简写,若使用简写,则会自动使用黑色作为阴影颜色而忽略指定的颜色,并且阴影距离也不可控(不采用指定值)。

3、要使到多重阴影有效,元素必须触发 hasLayout ,最常用的是设置 zoom: 1 或指定元素高度、宽度。另外在 IE7 及以下版本的 IE 中,使用单个滤镜也需要触发元素的 hasLayout 。关于 hasLayout ,我们将在今后的文章中另做介绍


51coolma今天要来和大家分享7款顶级的CSS3动画效果,包含了菜单特效、文字特效、图片特效等,另外还有几个表现非常特别的动画,个人觉得非常赞哦。


不懂如何制作CSS动画?请点击这里


  • 解压密码:​RJ4587


1、CSS3和SVG文字背景动画,超酷的文字特效

这是一款基于CSS3和SVG的文字特效,文字的背景可以定义一些动画特效,在背景动画播放的同时,我们还可以选中文字。本示例让文字背景展示水波和火焰的动画特效。

11

在线演示 | 源码下载


2、CSS3下划线跟随动画菜单,背景色渐变

这是一款CSS3菜单,特点就是有一条下划线会跟随鼠标移动,当鼠标滑过菜单项时,下划线跟随动画就会出现,并对当前激活的菜单项进行下划线加粗。此外,菜单背景色也会有渐变的效果,看上去非常酷炫。

2

在线演示 | 源码下载


3、CSS3手势变换动画特效

这款CSS3动画展现在我们眼前的是一只手掌,点击手掌下方的滑动按钮,就可以切换手势,目前可以切换两种不同的手势。

3

在线演示 | 源码下载


4、基于Bootstrap的CSS3面包屑菜单

面包屑菜单以嵌入到网站中,帮助用户在网站中实现各级目录的跳转。这款面包屑菜单沿用了bootstrap的风格,利用CSS3特性,让菜单项进行圆角处理,整体变得很圆润。

4

在线演示 | 源码下载


5、纯CSS3实现圆盘时钟动画

这是一款纯CSS3实现的圆盘时钟动画,这款动画在初始化时就有动画特效,包括圆盘的形成和时钟指针的形成,都赋予了非常酷的动画色彩。

5

在线演示 | 源码下载


6、HTML5/CSS3 3D下拉折叠菜单 3D子菜单

这是一款很有特色的CSS3菜单,该菜单不仅拥有下拉菜单的特点,而且下拉的子菜单还拥有3D的折纸效果,看起来蛮酷的。

6

在线演示 | 源码下载


7、动感的CSS3 Loading文字特效

这是一款CSS3 Loading的加载动画,该动画利用CSS3特性,将Loading这几个字母渲染得非常具有动感。

7

在线演示 | 源码下载

以上就是51coolma和大家分享的7款顶级的CSS3动画效果,希望大家喜欢。


  • 原文作者:html5tricks
  • 原文链接:https://www.html5tricks.com/7-top-css3-animation.html


这是 CSS 优点的快速参考速查表,列出了选择器语法、属性、单位和其他有用的信息位。

开始

介绍

CSS 具有丰富的功能,不仅仅是简单的页面布局。

外部 CSS

<link href="./path/to/stylesheet/style.css" rel="stylesheet" type="text/css">

内联 CSS

<h2 style="text-align: center;">Centered text</h2><p style="color: blue; font-size: 18px;">Blue, 18-point text</p>

内部 CSS

<style>body {    background-color: linen;}</style>

添加类

<div class="classname"></div><div class="class1 ... classn"></div>

在一个元素上支持多个类。

!important

.post-title {    color: blue !important;}

覆盖所有以前的样式规则。

选择器

h1 { } #job-title { }div.hero { }div > p { }

请参阅:选择器

文字颜色

color: #2a2aff;color: green;color: rgb(34, 12, 64, 0.6);color: hsla(30 100% 50% / 0.6);

请参阅:颜色

背景

#背景

background-color: blue;background-image: url("nyan-cat.gif");background-image: url("../image.png");

请参阅:背景

字体

.page-title {    font-weight: bold;    font-size: 30px;    font-family: "Courier New";}

请参阅:字体

位置

.box {    position: relative;    top: 20px;    left: 20px;}

另见:位置

动画

animation: 300ms linear 0s infinite;animation: bounce 300ms linear infinite;

参见:动画

注释

/* This is a single line comment *//* This is a    multi-line comment */

弹性布局

div {    display: flex;    justify-content: center;}div {    display: flex;    justify-content: flex-start;}

请参阅:弹性盒| 灵活技巧

网格布局

#container {  display: grid;  grid: repeat(2, 60px) / auto-flow 80px;}#container > div {  background-color: #8ca0ff;  width: 50px;  height: 50px;}

请参阅:网格布局

变量和计数器

counter-set: subsection;counter-increment: subsection;counter-reset: subsection 0;:root {  --bg-color: brown;}element {  background-color: var(--bg-color);}

请参阅:动态内容

CSS 选择器

例子

组选择器

h1, h2 {    color: red;}

链接选择器

h3.section-heading {    color: blue;}

属性选择器

div[attribute="SomeValue"] {    background-color: red;}

第一个子选择器

p:first-child {    font-weight: bold;}

没有孩子选择器

.box:empty {  background: lime;  height: 80px;  width: 80px;}

基本选择器

*所有元素
div所有 div 标签
.classname具有类的所有元素
#idname带 ID 的元素
div,p所有 div 和段落
#idname *#idname 中的所有元素

另请参阅:类型// ID /通用选择器

组合器

div.classname具有特定类名的 Div
div#idname具有特定 ID 的 Div
div pdiv里面的段落
div > p所有 p 标记
在 div 深一层
div + pP 标签紧跟在 div 之后
div ~ p以 div 开头的 P 标签

另请参阅:相邻/兄弟/选择器

属性选择器

a[target]用一个 target 属性
a[target="_blank"]在新标签页中打开
a[href^="/index"]以 /index 开始
[class|="chair"]以 char 开始
[class*="chair"]包含 char
[title~="chair"]包含 char 这个词 
a[href$=".doc"]以 .doc 结束
[type="button"]指定类型

另请参阅:属性选择器

用户操作伪类

a:link 正常状态下的链接
a:active 处于点击状态的链接
a:hover 用鼠标链接
a:visited 访问过的链接

伪类

p::after在 p 后添加内容
p::before在 p 前添加内容
p::first-letterp 中的第一个字母
p::first-linep 中的第一行
::selection由用户选择
::placeholder占位符属性
:root文档根元素
:target突出显示活动锚点
div:empty没有孩子的元素
p:lang(en)P 带有 en 语言属性
:not(span)不是跨度的元素

输入伪类

input:checked检查输入
input:disabled禁用输入
input:enabled启用输入
input:focus输入有焦点
input:in-range范围内的值
input:out-of-range输入值超出范围
input:valid输入有效值
input:invalid输入值无效
input:optional没有必需的属性
input:required具有必需属性的输入
input:read-only带有只读属性
input:read-write没有只读属性
input:indeterminate具有不确定状态

结构化伪类

p:first-child第一个孩子
p:last-child最后一个孩子
p:first-of-type首先是某种类型
p:last-of-type某种类型的最后
p:nth-child(2)其父母的第二个孩子
p:nth-child(3n42)Nth-child (an + b) 公式
p:nth-last-child(2)后面的第二个孩子
p:nth-of-type(2)其父级的第二个 p
p:nth-last-of-type(2)...从后面
p:only-of-type其父级的唯一性
p:only-child其父母的唯一孩子

CSS 字体

特性

font-family:<字体>
font-size:<尺寸>
letter-spacing:<尺寸>
line-height:<编号>
font-weight:<数字> / 粗体 / 正常
font-style:斜体/正常
text-decoration:下划线/无
text-align:左/右
居中/对齐
text-transform:大写/大写/小写

另见:字体

速记

风格权重尺寸(必填)行高类型(必填)
font:italic40014px/1.5sans-serif

例子

font-family: Arial, sans-serif;font-size: 12pt;letter-spacing: 0.02em;

例子

/* Hello */text-transform: capitalize;/* HELLO */text-transform: uppercase;/* hello */text-transform: lowercase;

@font-face

@font-face {    font-family: 'Glegoo';    src: url('../Glegoo.woff');}

CSS 颜色

命名颜色

color: red;color: orange;color: tan;color: rebeccapurple;

十六进制颜色

color: #090;color: #009900;color: #090a;color: #009900aa;

rgb() 颜色

color: rgb(34, 12, 64, 0.6);color: rgba(34, 12, 64, 0.6);color: rgb(34 12 64 / 0.6);color: rgba(34 12 64 / 0.3);color: rgb(34.0 12 64 / 60%);color: rgba(34.6 12 64 / 30%);

HSL 颜色

color: hsl(30, 100%, 50%, 0.6);color: hsla(30, 100%, 50%, 0.6);color: hsl(30 100% 50% / 0.6);color: hsla(30 100% 50% / 0.6);color: hsl(30.0 100% 50% / 60%);color: hsla(30.2 100% 50% / 60%);

其他

color: inherit;color: initial;color: unset;color: transparent;color: currentcolor; /* keyword */

CSS 背景

特性

财产描述
background:(速记)
background-color:请参阅:颜色
background-image:网址(...)
background-position:左/中/右上
/中/下
background-size:盖XY
background-clip:边框框
填充框
内容框
background-repeat:不重复
重复-x
重复-y
background-attachment:滚动/固定/本地

速记

颜色图片位置X位置Y尺寸重复附加
background:#ff0url(a.jpg)lefttop/100px autono-repeatfixed;
background:#abcurl(b.png)centercenter/coverrepeat-xlocal;

例子

background: url(img_man.jpg) no-repeat center;background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat;background: rgb(2,0,36);background: linear-gradient(90deg, rgba(2,0,36,1) 0%, rgba(13,232,230,1) 35%, rgba(0,212,255,1) 100%);

CSS 盒子模型

最大值/最小值

.column {    max-width: 200px;    width: 500px;}

另见:max-width  /min-width  / max-hight  /min-hight

外边距 margin / 内边距 padding

.block-one {    margin: 20px;    padding: 10px;}

另请参阅:margin  /padding

盒子尺寸

.container {    box-sizing: border-box;}

另请参阅:box-sizing

可见性

.invisible-elements {    visibility: hidden;}

另见:visibility

自适应外边距

div {    margin: auto;}

另见:margin

溢出

.small-block {    overflow: scroll;}

另见:overflow

CSS 动画

速记

名称执行时间定时功能延迟播放次数方向填充模式执行状态
animation:bounce300mslinear100msinfinitealternate-reversebothreverse

特性

animation:(速记)
animation-name:<名称>
animation-duration:<时间>毫秒
animation-timing-function:缓/线性/缓入/缓出/缓入
animation-delay:<时间>毫秒
animation-iteration-count:无限 / <数量>
animation-direction:正常/反向/交替/交替反向
animation-fill-mode:无/向前/向后/两者/初始/继承
animation-play-state:正常/反向/交替/交替反向

另见:Animation

例子

/* @keyframes duration | timing-function | delay |   iteration-count | direction | fill-mode | play-state | name */animation: 3s ease-in 1s 2 reverse both paused slidein;/* @keyframes duration | timing-function | delay | name */animation: 3s linear 1s slidein;/* @keyframes duration | name */animation: 3s slidein;animation: 4s linear 0s infinite alternate move_eye;animation: bounce 300ms linear 0s infinite normal;animation: bounce 300ms linear infinite;animation: bounce 300ms linear infinite alternate-reverse;animation: bounce 300ms linear 2s infinite alternate-reverse forwards normal;

Javascript 事件

.one('webkitAnimationEnd oanimationend msAnimationEnd animationend')

CSS 弹性盒

简单的例子

.container {  display: flex;}

容器 Container

.container > div {  flex: 1 1 auto;}
.container{  display: flex;  display: inline-flex;  flex-direction: row;            /* ltr - default */  flex-direction: row-reverse;    /* rtl */  flex-direction: column;         /* top-bottom */  flex-direction: column-reverse; /* bottom-top */  flex-wrap: nowrap; /* one-line */  flex-wrap: wrap;   /* multi-line */  align-items: flex-start; /* vertical-align to top */  align-items: flex-end;   /* vertical-align to bottom */  align-items: center;     /* vertical-align to center */  align-items: stretch;    /* same height on all (default) */  justify-content: flex-start;    /* [xxx        ] */  justify-content: center;        /* [    xxx    ] */  justify-content: flex-end;      /* [        xxx] */  justify-content: space-between; /* [x    x    x] */  justify-content: space-around;  /* [ x   x   x ] */  justify-content: space-evenly;  /* [  x  x  x  ] */}

子类选择器 Child

.container > div {  /* This: */  flex: 1 0 auto;  /* Is equivalent to this: */  flex-grow: 1;  flex-shrink: 0;  flex-basis: auto;  order: 1;  align-self: flex-start;  /* left */  margin-left: auto;       /* right */}

CSS Flexbox 技巧

垂直居中

.container {  display: flex;}.container > div {  width: 100px;  height: 100px;  margin: auto;}

垂直居中 (2)

.container {  display: flex;  /* vertical */  align-items: center;   /* horizontal */  justify-content: center;}

重新排序

.container > .top { order: 1;}.container > .bottom { order: 2;}

移动布局

.container {  display: flex;  flex-direction: column;}.container > .top {  flex: 0 0 100px;}.container > .content {  flex: 1 0 auto;}

一个固定高度的顶部栏和一个动态高度的内容区域。

像表格一样

.container {  display: flex;}/* the 'px' values here are just suggested percentages */.container > .checkbox { flex: 1 0 20px; }.container > .subject  { flex: 1 0 400px; }.container > .date     { flex: 1 0 120px; }

这会创建具有不同宽度的列,但会根据情况相应地调整大小。

垂直

.container {  align-items: center;}

垂直居中所有项目。

左和右

.menu > .left  { align-self: flex-start; }.menu > .right { align-self: flex-end; }

CSS 网格布局

网格模板列

#grid-container {    display: grid;    width: 100px;    grid-template-columns: 20px 20% 60%;}

fr 相对单位

.grid {    display: grid;    width: 100px;    grid-template-columns: 1fr 60px 1fr;}

网格间隙

/*The distance between rows is 20px*//*The distance between columns is 10px*/#grid-container {    display: grid;    grid-gap: 20px 10px;}

CSS 块级网格

#grid-container {    display: block;}

CSS 网格行

CSS 语法:

  • 网格行:网格行开始/网格行结束;

例子

.item {    grid-row: 1 / span 2;}

CSS 内联关卡网格

#grid-container {    display: inline-grid;}

minmax() 函数

.grid {    display: grid;    grid-template-columns: 100px minmax(100px, 500px) 100px; }

网格行开始和网格行结束

CSS 语法:

  • 网格行开始:自动|行行;
  • 网格行端:自动|行行|跨度n;

例子

grid-row-start: 2;grid-row-end: span 2;

CSS 网格行的长度值

grid-row-gap: length;

任何合法的长度值,如 px 或 %。0 是默认值

CSS 网格区域

.item1 {    grid-area: 2 / 1 / span 2 / span 3;}

对齐项目

#container {    display: grid;    justify-items: center;    grid-template-columns: 1fr;    grid-template-rows: 1fr 1fr 1fr;    grid-gap: 10px;}

CSS 网格模板区域

.item {    grid-area: nav;}.grid-container {    display: grid;    grid-template-areas:    'nav nav . .'    'nav nav . .';}

Justify Self

#grid-container {    display: grid;    justify-items: start;}.grid-items {    justify-self: end;}

网格项位于行的右侧(末尾)。

CSS 动态内容

变量

定义 CSS 变量

:root {  --first-color: #16f;  --second-color: #ff7;}

变量用法

#firstParagraph {  background-color: var(--first-color);  color: var(--second-color);}

另请参阅:CSS 变量

计数器

/* Set "my-counter" to 0 */counter-set: my-counter;
/* Increment "my-counter" by 1 */counter-increment: my-counter;
/* Decrement "my-counter" by 1 */counter-increment: my-counter -1;
/* Reset "my-counter" to 0 */counter-reset: my-counter;

另见:计数器集

使用计数器

body { counter-reset: section; }h3::before {  counter-increment: section;   content: "Section." counter(section);}
ol {  counter-reset: section;     list-style-type: none;}li::before {  counter-increment: section;  content: counters(section, ".") " "; }

CSS 3 技巧

滚动条平滑

html {    scroll-behavior: smooth;}

单击我,页面将平滑滚动到入门


一、引言

CSS3 作为最新的 CSS 标准,引入了众多新特性,如弹性布局、网格布局等,极大地丰富了网页样式的设计能力。然而,CSS3 的样式规则繁多,记忆所有规则对于开发者来说几乎是不可能的任务。在实际开发中,我们只需熟记常用的 20% 规则,而剩下的 80% 则可以在需要时借助 AI 工具进行辅助开发。本文将介绍如何使用通义灵码这一 AI 工具来辅助 CSS3 的开发,提高开发效率和代码质量。


二、通义灵码简介

通义灵码是由阿里云技术团队开发的智能编码助手,基于先进的通义大模型,具备以下功能:
  • 代码续写和优化:能够根据现有代码上下文,智能生成行级或函数级的代码建议,帮助开发者快速完成代码编写,并对代码进行优化,提高代码质量和执行效率。
  • 自然语言描述生成代码:开发者可以通过自然语言描述需求,通义灵码能够将其转化为相应的代码,大大简化了代码编写过程,尤其适用于复杂功能的实现。
  • 注释生成和代码解释:自动为代码添加详细注释,方便开发者及团队成员更好地理解代码逻辑和功能;同时,能够对代码进行详细解释,包括数据库表结构分析、SQL 查询过程解析等,有助于代码的维护和优化。
  • 单元测试生成:根据代码自动生成单元测试用例,确保代码的可靠性和稳定性,提高测试效率。
  • 研发智能问答:作为基础和核心功能,开发者可以通过与通义灵码的问答对话,获取所需的技术支持和解决方案,就像拥有一位智能的编程助手。
  • 代码问题修复:能够识别代码中的潜在问题,并提供修复建议,帮助开发者及时解决代码错误和漏洞。


通义灵码官网:https://tongyi.aliyun.com/lingma/

通义灵码支持:JetBrains IDEs、Visual StudioCode、Visual Studio,及远程开发场景(Remote SSH、Docker、WSL、Web IDE),安装后登录账号即可开始使用。


三、环境准备

CSS3 的开发通常与 HTML 和 JavaScript 配合进行,因此需要一个支持这些语言的代码编辑器。本文推荐使用 Visual Studio Code(简称 VSCode),因为它轻量级、功能丰富且通义灵码插件在其中支持完整。请确保已安装 VSCode 1.68.0 及以上版本(详见:Visual Studio Code 入门)。


四、安装指南

VSCode 三端的插件安装方式基本一致,本文以 Windows 为例,介绍如何在 VSCode 中安装通义灵码插件。

(一)从插件市场安装

  1. 打开 VSCode,点击左侧活动栏中的“扩展”图标,进入扩展市场。
  2. 在搜索框中输入“TONGYI Lingma”,找到通义灵码插件。
  3. 点击“安装”按钮,等待插件下载并安装完成。
  4. 安装完成后,VSCode 左侧会新增一个通义灵码的图标,点击即可进入插件界面。

(二)下载安装包安装

  1. 访问通义灵码的官方下载页面,下载适用于 VSCode 的 VSIX 安装包。
  2. 下载完成后,打开 VSCode,点击左侧活动栏中的“扩展”图标,然后点击“更多”按钮,在下拉菜单中选择“从 VSIX 安装”,并选择下载的 VSIX 文件进行安装。
  3. 安装完成后,重启 VSCode。


五、登录操作

  1. 重启 VSCode 后,点击左侧活动栏中的通义灵码图标,进入插件界面。
  2. 首次使用时,点击“立即登录”,同意用户协议,会跳转到登录页面。
  3. 通义灵码支持多种登录方式,包括账号密码登录、手机号登录、支付宝、阿里云、淘宝、钉钉登录。选择一种登录方式完成登录。


六、功能演示

(一)智能问答

通义灵码的智能问答功能是其核心之一。在 CSS3 开发中,当你遇到不熟悉的选择器或样式属性时,可以向通义灵码提问,它会给出详细的解答。

例如,你可以问“如何在 CSS3 中实现弹性布局?”或者“CSS3 中的媒体查询如何使用?”,通义灵码会提供相应的代码示例和解释。


会话创建和清理

智能问答是一个持续对话的过程,你可以持续进行提问,但大模型也会因此记录你之前的提问信息,可能会影响后续的回答,为了提高AI生成答案的质量,应该适时清理会话。

清理会话可以通过创建一个新会话或者清理来实现:

  • 清理会话:在对话框中输入​/clearContext​,然后点击确定即可。

  • 创建新会话:在智能问答的右上角有一个圆形 ​​+​​ 号按钮,点击即可创建新对话。

代码小技巧

通义灵码生成的代码一般都会在右上角有这四个小按钮,分别对应着插入、复制、新建和合并的功能,后续的功能会用到这些小技巧。

  • 插入 :会把 AI 生成的代码替换到我们选中的代码位置,一般在代码注释和代码优化中应用。

  • 复制 :则是复制 AI 生成的代码,我们可以自己选择插入的位置。

  • 新建 :则是新建一个文件,把 AI 生成的代码放进去,一般而言生成测试代码会选择新建一个文件夹存放。

  • 合并 :则是把代码黏贴到文件中,比如黏贴到选中的代码后,一般我们在智能问答中得到我们需要的代码可以用合并。


(二)代码解释

在开发过程中,你可能会遇到一些不理解的 CSS3 代码片段。

此时,可以使用通义灵码的代码解释功能。

选中需要解释的代码,右键选择通义灵码的代码解释选项,它会生成对该代码的详细解释,包括代码的作用、适用场景等。


(三)代码优化

即使是对 CSS3 比较熟悉的开发者,也可能会在代码优化上有所疏漏。

通义灵码的代码优化功能可以对你的 CSS 代码进行审查,找出潜在的问题,并提供优化建议。

例如,它可能会建议你合并重复的样式规则、减少不必要的嵌套等,从而提高代码的可维护性和性能。


(四)AI 程序员

对于复杂的项目,可能需要多个 CSS 文件协同工作。

通义灵码的 AI 程序员功能可以基于整个项目进行代码修改和优化。

例如,当你需要对多个文件中的样式进行统一调整时,AI 程序员可以帮助你快速定位并修改相关代码。


七、总结与展望

通义灵码作为一款智能编码助手,为 CSS3 开发提供了全方位的支持。

从智能问答到代码解释,从代码优化到 AI 程序员功能,它几乎涵盖了开发过程中的各个方面。

通过本文的介绍,希望你能更好地理解和使用通义灵码,提升开发效率和代码质量。


随着 AI 技术的不断发展,相信通义灵码将在未来的 CSS3 开发中发挥更加重要的作用,成为开发者不可或缺的得力助手。