整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

使用CSS3的新特性完成一个翻书的动画效果,来学习一下吧


在CSS3中新增了很多的新特性,其中使用频率比较高的应该是动画效果了,它可以帮助我们实现以前使用Javascript才能实现的效果,极大的提高网页的性能。今天这篇文章我们就来一起看一个使用CSS3新特性完成的翻书效果吧。

本文的源码已经放在了Github上,感兴趣的可以clone到本地试试,地址如下。

https://github.com/zhouxiongking/article-pages/blob/master/articles/rollPage/rollPage.html

CSS3

实现效果

首先我们来看看实际的运行效果,动态图如下所示。

效果图

页面分析

在看到上述的效果图后,我们来进行分析,这个过程是如何实现的。

这个页面我们通过一个ul包含三个li来实现,每个li都给一个固定的宽度和高度。

  • 第一个li在页面上静止不动。

  • 第二个li添加动画效果,使其直接绕Y轴翻转360度。

  • 第三个li添加动画效果,但是翻转周期是在25%的时候开始,因此会有一种翻书的速度差异感。

上面的步骤分析完后就剩下最重要的一个过程,那就是给外层的ul元素添加perspective属性,这个属性是决定这个动画能不能实现的主要的因素。

perspective

perspective是CSS3中新增的属性,表示的是设置某个元素被查看的视角,用于实现3D效果。

需要注意的是当某个元素设置了perspective属性时,其子元素会获得透视效果,而不是这个元素本身。

我们来看一个简单的例子,有一个section父元素和一个div子元素,让div元素旋转45度,html元素如下。

html元素

其对应的CSS属性如下。

CSS属性

在section元素上,如果不使用perspective的情况下,得到效果如下图所示。

效果图1

如果给section元素加上perspective属性,并设定600px时,得到的效果图如下。

效果图

通过以上两幅图的对比我们发现,两幅图在Y轴的视角上发生了变化。

接下来,我们来具体看看这个翻书效果的代码实现。

翻书效果HTML代码

通过之前的分析,我们知道这个效果是通过ul与li来实现的,html部分代码如下。

HTML代码

翻书效果CSS代码

首先看看ul与li的基本css属性,记住这里需要给ul元素添加perspective属性。

基本CSS属性

然后是给第二个li添加动画。

第二个li的css属性

最后是给第三个li添加动画。

第三个li的css属性

注意到上面的代码中有个25%和100%的设置,这个和第二个li不同,所以会有一种翻转书页快慢的差异感。

如果按照上述代码来做,即可实现文章开始的翻书动画效果。

结束语

今天这篇文章主要是通过CSS3新增的属性实现了一个翻书动画效果,大家学会了吗?


在CSS3中新增了很多的新特性,其中使用频率比较高的应该是动画效果了,它可以帮助我们实现以前使用Javascript才能实现的效果,极大的提高网页的性能。今天这篇文章我们就来一起看一个使用CSS3新特性完成的翻书效果吧。

本文的源码已经放在了Github上,感兴趣的可以clone到本地试试,地址如下。

https://github.com/zhouxiongking/article-pages/blob/master/articles/rollPage/rollPage.html

CSS3

实现效果

首先我们来看看实际的运行效果,动态图如下所示。

效果图

页面分析

在看到上述的效果图后,我们来进行分析,这个过程是如何实现的。

这个页面我们通过一个ul包含三个li来实现,每个li都给一个固定的宽度和高度。

  • 第一个li在页面上静止不动。

  • 第二个li添加动画效果,使其直接绕Y轴翻转360度。

  • 第三个li添加动画效果,但是翻转周期是在25%的时候开始,因此会有一种翻书的速度差异感。

上面的步骤分析完后就剩下最重要的一个过程,那就是给外层的ul元素添加perspective属性,这个属性是决定这个动画能不能实现的主要的因素。

perspective

perspective是CSS3中新增的属性,表示的是设置某个元素被查看的视角,用于实现3D效果。

需要注意的是当某个元素设置了perspective属性时,其子元素会获得透视效果,而不是这个元素本身。

我们来看一个简单的例子,有一个section父元素和一个div子元素,让div元素旋转45度,html元素如下。

html元素

其对应的CSS属性如下。

CSS属性

在section元素上,如果不使用perspective的情况下,得到效果如下图所示。

效果图1

如果给section元素加上perspective属性,并设定600px时,得到的效果图如下。

效果图

通过以上两幅图的对比我们发现,两幅图在Y轴的视角上发生了变化。

接下来,我们来具体看看这个翻书效果的代码实现。

翻书效果HTML代码

通过之前的分析,我们知道这个效果是通过ul与li来实现的,html部分代码如下。

HTML代码

翻书效果CSS代码

首先看看ul与li的基本css属性,记住这里需要给ul元素添加perspective属性。

基本CSS属性

然后是给第二个li添加动画。

第二个li的css属性

最后是给第三个li添加动画。

第三个li的css属性

注意到上面的代码中有个25%和100%的设置,这个和第二个li不同,所以会有一种翻转书页快慢的差异感。

如果按照上述代码来做,即可实现文章开始的翻书动画效果。

结束语

今天这篇文章主要是通过CSS3新增的属性实现了一个翻书动画效果,大家学会了吗?

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

在我这里您将了解以下文本属性:

  • text-shadow

  • box-shadow

  • text-overflow

  • word-wrap

  • word-break


浏览器支持

属性




text-shadow4.010.03.54.09.5
box-shadow10.04.0 -webkit-9.04.03.5 -moz-5.13.1 -webkit-10.5
text-overflow4.06.07.03.111.09.0 -o-
word-wrap23.05.53.56.112.1
word-break4.05.515.03.115.0

CSS3 的文本阴影

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

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

实例

给标题添加阴影:

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


CSS3 box-shadow属性

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

实例

div{box-shadow:10px10px;}


接下来给阴影添加颜色

实例

div{box-shadow:10px10pxgrey;}


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

实例

div{box-shadow:10px10px5pxgrey;}

尝试一下 »


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

实例

#boxshadow{position:relative; box-shadow:1px2px4pxrgba(0, 0, 0, .5); padding:10px; background:white;}#boxshadowimg{width:100%; border:1pxsolid#8a4419; border-style:inset;}#boxshadow::after{content: ''; position:absolute; z-index: -1; /* hide shadow behind image */box-shadow:015px20pxrgba(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:04px8px0rgba(0, 0, 0, 0.2), 06px20px0rgba(0, 0, 0, 0.19); text-align:center;}

文字卡片 » 图片卡片 »


CSS3 Text Overflow属性

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

实例

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

尝试一下 »


CSS3的换行

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

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

CSS代码如下:

实例

允许长文本换行:

p{word-wrap:break-word;}

尝试一下 »


CSS3 单词拆分换行

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

CSS代码如下:

实例

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

尝试一下 »


新文本属性

属性描述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允许对长的不可分割的单词进行分割并换行到下一行。

如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!