【必发88】十天精晓CSS3,详细图像和文字化教育程

by admin on 2019年10月22日

Twitter的”fave”动画

2015/05/12 · HTML5 ·
Twitter,
动画

本文由 伯乐在线 –
刘健超-J.c
翻译,胡屹
校稿。未经许可,禁止转发!
韩文出处:cssanimation.rocks。款待参与翻译组。

变形–旋转 rotate()

旋转rotate()函数通过点名的角度参数使成分相对原点举办旋转。它根本在二维空间内开展操作,设置一个角度值,用来钦定旋转的升幅。若是那么些值为正值,元素相对原点中央顺时针旋转;就算那么些值为负值,成分相对原点核心逆时针旋转。如下图所示:

必发88 1

HTML代码:

<div class="wrapper">
  <div></div>
</div>

CSS代码:

.wrapper {
  width: 200px;
  height: 200px;
  border: 1px dotted red;
  margin: 100px auto;
}
.wrapper div {
  width: 200px;
  height: 200px;
  background: orange;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

事必躬亲结果

必发88 2

 

本学科分为以下三步:

Twitter的“fave” 动画

前不久 Facebook通过引入后生可畏段新的卡通片重新设计了“fave”按键(也叫“fav”)。这段动画并不正视CSS transition,而是由风流洒脱多元图片组成的。上面显示如何用 CSS 的
animation-timing-function 属性中的 steps 时序函数(timing
function)重新制作这段动画。

变形–扭曲 skew()

扭曲skew()函数能够让要素偏斜展现。它能够将贰个目的以其大旨岗位围绕着X轴Y轴规行矩步一定的角度偏斜。那与rotate()函数的旋转分化,rotate()函数只是旋转,而不会变动成分的模样。skew()函数不会旋转,而只会转移成分的样子。

Skew()具备两种情况:

1、skew(x,y)使成分在等级次序和垂直方向同期扭曲必发88,(X轴和Y轴同一时间按自然的角度值实行翻调换形);

必发88 3

第三个参数对应X轴,第二个参数对应Y轴。借使第二个参数未提供,则值为0,也正是Y轴方向上无斜切。

2、skewX(x)仅使成分在档案的次序方向扭曲变形(X轴扭曲变形);

必发88 4

3、skewY(y)仅使成分在笔直方向扭曲变形(Y轴扭曲变形)

必发88 5

示范演示:

【必发88】十天精晓CSS3,详细图像和文字化教育程。透过skew()函数将圆柱形产生平行四边形。

HTML代码:

<div class="wrapper">
  <div>我变成平形四边形</div>
</div>

CSS代码:

.wrapper {
  width: 300px;
  height: 100px;
  border: 2px dotted red;
  margin: 30px auto;
}
.wrapper div {
  width: 300px;
  height: 100px;
  line-height: 100px;
  text-align: center;
  color: #fff;
  background: orange;
  -webkit-transform: skew(45deg);
  -moz-transform:skew(45deg) 
  transform:skew(45deg);
}

演示结果

必发88 6

Step1 – Photoshop

移动发生的错觉

这段动画的意义类似于观察古老的西洋镜,该装置展现的是风姿洒脱体系延续的环抱着圆筒的插画。在底下的演示中,我们不选择圆筒,而是在有个别成分内部展现龙精虎猛多级图片。

变形–缩放 scale()

缩放 scale()函数 让要素依据大旨原点对指标举办缩放。

缩放 scale 具有两种情况:

1、 scale(X,Y)使成分水平方向和垂直方向同不寻常候缩放(也等于X轴和Y轴同一时候缩放)

必发88 7

例如:

div:hover {
  -webkit-transform: scale(1.5,0.5);
  -moz-transform:scale(1.5,0.5)
  transform: scale(1.5,0.5);
}

留神:Y是三个可选参数,若无设置Y值,则意味着X,Y三个方向的缩放倍数是均等的。

2、scaleX(x)成分仅水平方向缩放(X轴缩放)

必发88 8

3、scaleY(y)元素仅垂直方向缩放(Y轴缩放)

必发88 9

HTML代码:

<div class="wrapper">
  <div>我将放大1.5倍</div>
</div>

CSS代码:

.wrapper {
  width: 200px;
  height: 200px;
  border:2px dashed red;
  margin: 100px auto;
}
.wrapper div {
  width: 200px;
  height: 200px;
  line-height: 200px;
  background: orange;
  text-align: center;
  color: #fff;
}
.wrapper div:hover {
  opacity: .5;
  -webkit-transform: scale(1.5);
  -moz-transform:scale(1.5)
  transform: scale(1.5);
}

亲自去做结果

必发88 10

注意: scale()的取值暗许的值为1,当班值日设置为0.010.99里面包车型地铁其余值,功效使三个要素缩短;而别的大于或等于1.01的值,成效是让要素放大。

Step2 – HTML/CSS

示例

把鼠标悬停在少数上就足以见见动画效果(请到原文【必发88】十天精晓CSS3,详细图像和文字化教育程。翻开动画效果——译者注)。

在本示例中,我们将从制作一精彩纷呈能构成动画的图纸此前。在这里间,大家接纳来源
推特 的“fave”Logo动画的片段图片集:

必发88 11

为了能让那么些帧动起来,我们必要把它们放置在一排上。在此个文件中,这一个帧已经排列在一排上了,那代表大家得以经过安装背景地方(background-position)属性使背景从第风姿罗曼蒂克帧过渡到最终风度翩翩帧。

必发88 12

变形–位移 translate()

translate()函数能够将成分向钦赐的大势移动,类似于position中的relative。或以轻松的精晓为,使用translate()函数,能够把成分从原先的岗位移动,而不影响在X、Y轴上的别样Web组件。

translate大家分为两种情形:

1、translate(x,y)水平方向和垂直方向相同的时候活动(也等于X轴和Y轴同期活动)

必发88 13

2、translateX(x)仅水平方向移动(X轴移动)

必发88 14

3、translateY(Y)仅垂直方向移动(Y轴移动)

必发88 15

实例演示:透过translate()函数将成分向Y轴下方移动50px,X轴右方移动100px。

HTML代码:

<div class="wrapper">
  <div>我向右向下移动</div>
</div>

CSS代码:

.wrapper {
  width: 200px;
  height: 200px;
  border: 2px dotted red;
  margin: 20px auto;
}
.wrapper div {
  width: 200px;
  height: 200px;
  line-height: 200px;
  text-align: center;
  background: orange;
  color: #fff;
  -webkit-transform: translate(50px,100px);
  -moz-transform:translate(50px,100px);
  transform: translate(50px,100px);
}

亲自过问结果

必发88 16

Step3 – JavaScript(jQuery)

Steps() 时序函数

绝大多数的时序函数,举例 ease(缓冲)和
cubic-bezier(贰遍贝塞尔),都能让要素从起先状态平滑地接通到结尾状态。steps
时序函数与此分化,它并非平缓地连通,而是将衔接进度分割为自然数量的步子,並且在这个步骤之间非常的慢地移动。

必发88 17

作者们先创立如下的 HTML 代码:

XHTML

<section class=”fave”></section>

1
<section class="fave"></section>

变形–矩阵 matrix()

matrix() 是三个含五个值的(a,b,c,d,e,f)转换矩阵,用来钦命一个2D转移,也正是直接使用多个[a
b c d e
f]改换矩阵。便是基于水平方向(X轴)和垂直方向(Y轴)重新定位成分,此属性值使用涉及到数学中的矩阵,作者在那只是简单来讲一下CSS3中的transform有这么一个属性值,即使急需深刻摸底,必要对数学矩阵有确定的学识。

演示演示:通过matrix()函数来效仿transform中translate()位移的效果。
HTML代码:

<div class="wrapper">
  <div></div>
</div>

CSS代码:

.wrapper {
  width: 300px;
  height: 200px;
  border: 2px dotted red;
  margin: 40px auto;
}
.wrapper div {
  width:300px;
  height: 200px;
  background: orange;
  -webkit-transform: matrix(1,0,0,1,50,50);
  -moz-transform:matrix(1,0,0,1,50,50);
  transform: matrix(1,0,0,1,50,50);
}

亲自过问结果:

必发88 18

Step4 – CSS修改

 

  最终结出如下:

必发88 19

背景图片

接下去, 我们得以加上一些体制并安装背景图片地方:

必发88 20

CSS

.fave { width: 70px; height: 50px; background:
url(images/twitter_fave.png) no-repeat; background-position: 0 0; }

1
2
3
4
5
6
.fave {
  width: 70px;
  height: 50px;
  background: url(images/twitter_fave.png) no-repeat;
  background-position: 0 0;
}

加了甘休状态后,豆蔻梢头旦鼠标悬停在该因素上,背景就能够从大家钦赐的职位移动到这一文山会海图片中最终一张的地方上(为了同盟浏览器,注意要丰硕相应的浏览器内核前缀——译者注)。

CSS

.fave:hover{ animation: fave 1s steps(55); } @keyframes fave{ 0%{
background-position:0 0; } 100%{ background-position:-3519px 0; } }

1
2
3
4
5
6
7
8
9
10
11
.fave:hover{
  animation: fave 1s steps(55);
}
@keyframes fave{
  0%{
    background-position:0 0;
  }
  100%{
    background-position:-3519px 0;
  }
}

请留意第二个准绳 animation。在本例中,我们选取 steps
时序函数,让background-position 属性经历了贰个持续时间为1秒的连结。在
steps 部分的“55”那些值,代表了这段动画是由55帧组成的。

当大家将鼠标悬停在此个成分上时,所见到的效果与利益是其背景图片通过伍十五个一样的步调经历了一次对接。

除此以外那些案例,也足以用 transition 实现:

CSS

.fave:hover { background-position: -3519px 0; transition: background 1s
steps(55); }

1
2
3
4
.fave:hover {
  background-position: -3519px 0;
  transition: background 1s steps(55);
}

变形–原点 transform-origin

另外贰个成分都有七个基本点,私下认可情状之下,其核心点是地处成分X轴和Y轴的二分一处。如下图所示:

必发88 21

在尚未复位transform-origin改形成分原点地点的情况下,CSS变形实行的转动、位移、缩放,扭曲等操作都以以成分和煦核心地点进行变形。但众多时候,大家能够因而transform-origin来对成分举办原点地点变动,使元素原点不在成分的中坚地方,以高达必要的原点地方。

transform-origin取值和因素设置背景中的background-position取值类似,如下表所示:

必发88 22

演示突显:

透过transform-origin退换成分原点到左上角,然后进行顺时旋转45度。

HTML代码:

<div class="wrapper">
  <div>原点在默认位置处</div>
</div>
<div class="wrapper transform-origin">
  <div>原点重置到左上角</div>
</div>

CSS代码:

.wrapper {
  width: 300px;
  height: 300px;
  float: left;
  margin: 100px;
  border: 2px dotted red;
  line-height: 300px;
  text-align: center;
}
.wrapper div {
  background: orange;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}
.transform-origin div {
  -webkit-transform-origin: left top;
  transform-origin: left top;
}

演示结果:

必发88 23

Step1 – Photoshop

1. 新建文件

  按键的尺码是100px X 80px,但出于大家供给创制四个有二种状态的CSS
sprite背景图,所以大家在Photoshop中创制(Ctrl+N)二个长度宽度为200px X
160px的图片文件,如下图:

必发88 24

2. 创建参谋线

  为了使绘制开关更易于,我们创制参照他事他说加以考察线,从标尺中拉出参考线,假使您找不到标尺,能够按Ctrl+奥迪Q7彰显,如下图:

必发88 25

3. 绘制形状

  选取工具面板中的矩形工具,设置圆角半径为10px,在画布上绘制形状,如下图:

必发88 26

4. 设置形状样式

  接上海体育场所最后一步,双击层,展开图层样式窗口,设置形状的体裁,首先选用渐变叠加,设置渐变颜色从#3d3d3d到#8b8b8b,如下图:

必发88 27

  然后,选择“内发光”,设置混合情势为“符合规律”,不发光度为百分百,颜色设置为#ffffff,图素大小设置为3像素,如下图:

必发88 28

  之后,再选拔“描边”,设置大小为1像素,地点为“内部”,颜色为威尼斯红#000000,如下图:

必发88 29

5. 增加字体

  输入文本,设置文字相对程度和垂直居中,字体为正直准圆简体,字号36点,加粗平滑,颜色为暗红(#FFFFFF),如下图:

必发88 30

6. 设置字体样式

  同样的双击文字图层,展开文字图层样式,设置字体样式,点击“投影”,设置混合形式为“寻常”,颜色为#3e3e3e,不折射率为百分百,角度为90度,间距为1像素,大小为2像素;点击“内阴影”,设置混合形式为“符合规律”,颜色为#454545,不折射率为陆分黄金年代,角度为90度,间隔为1像素,大小为2像素,如下图所示:

必发88 31

  至此,大家就成功链接状态下的按键背景图,效果如下:

必发88 32

7. 悬停背景图

  制作鼠标悬停状态下的开关背景图,把图层放入组内,复制组,移动,天公地道命名,如下图:

必发88 33

8.背景图属性

  修改hover背景图的样式属性,打开背景图的图层样式窗口,选择“描边”,修改边框颜色为#004d77;选择“渐变叠合”,修改渐变从#1671a3到#5baedc,如下图:

 

必发88 34

9. 安装字体样式

  张开字体图层样式,选用“投影”,修改投影颜色为#207aad;采纳“内阴影”,修改字体颜色为#0d4f74,如下图:

必发88 35

10. 图层半晶莹剔透

  增添图层半晶莹剔透效果,按以上步骤修改,鼠标悬停背景图如下,最终是再增加蒸蒸日上层半透明层,先增添七个200px
X 40px的木色层,置顶并安装天灰层的光滑度为百分之十,如下图:

必发88 36

  最终,大家成功的CSS sprite背景图如下,您也足以点击下载PSD文件。

必发88 37

Step2 – HTML/CSS
  按键的HTML代码一点也不细略:
<a class=”button”>前端档案</a>
  再通过CSS设置一下背景图片就能够了,CSS代码如下:

复制代码 代码如下:

/*链接开关样式*/
.button {
width:200px;
height:80px;
display:block;
background:url(bg_button.gif) top no-repeat;
text-indent:-9999px;
}
/*开关悬停样式*/
.button:hover{
background:url(bg_button.gif) bottom no-repeat;
}

  依据大家前边设计的图片,按键的长度宽度为200px X
80px,背景图为暗绛红开关。这段CSS就可以看见达成大家演示中的第大器晚成种成效(纯CSS效果)。

Step3 – JavaScript/jQuery

  通过JavaScript,大家得以让开关越发光彩夺目一些,我们需求在事先基础上加二个<span>成分,作为鼠标悬停时候显得的背景层,那么HTML会在DOM加载成功后修改成为:

view sourceprint?<a class=”button”><span
class=”hover”>前端档案</span></a>

  <span>成分在鼠标悬停前是全透明的,鼠标经过时,渐渐不透明,以达到渐变的效应,动画进程如下图:

必发88 38

经过上述解析,大家能够写出jQuery代码如下,在DOM加载成功后,为开关链接增加<span>层用作鼠标经过时的背景图,在为<span>成分加多鼠标悬停事件,鼠标经过时,渐变至不透明,鼠标离开时,渐变至全透明。

复制代码 代码如下:

//把手包蕴到<span>成分中,再附加到.button中
$(‘.jsbutton,.viewbutton,.downloadbutton’).wrapInner(‘<span
class=”hover”></span>’).css(‘textIndent’,’0′).each(function ()
{
//先安装<span>元素中全透明,再加多鼠标悬停事件
$(‘span.hover’).css(‘opacity’, 0).hover(function () {
$(this).stop().fadeTo(650, 1); //渐变至不透明
}, function () {
$(this).stop().fadeTo(650, 0); //渐变至全透明
});
});

从那之后,大家实现了JS代码,还要小心二个步骤,CSS修改,见Step4。
Step4 – CSS修改
  在纯CSS效果的亲自去做中,我们是行使:hover伪类来兑现sprite图片的切换,当大家运用jQuery后,是引进二个<span>层用作鼠标经过时背景图,所以CSS须要做如下修改:

复制代码 代码如下:

/*事先的按键悬停样式*/
.button:hover{
background:url(bg_button.gif) bottom no-repeat;
}

修改为

复制代码 代码如下:

/*无需在安装:hover的体裁,而是设置span.hover的样式*/
.button span.hover {
/*专心要使用相对化定位*/
position: absolute;
display: block;
width:200px;
height:80px;
background:url(bg_button.gif) bottom no-repeat;
text-indent:-9999px;
}

总结
  以上我们按4个步骤完结了多少个动态渐变按钮,在示范中,笔者还提供了一个扩体现例,您可以跟着自身达成一个,也足以下载源代码修改定制,当然,您有怎么着好的建议或许有怎么着难点,接待给自家留言。
身体力行地址
http://demo.jb51.net/js/gcb\_download/gradual-change-button.html 下载地址

怎么不选拔gif?

固然如此也能够采取 gif 动画,但在此个案例中并非很方便。gif
文件的高低常常相当大並且帧速率也难以调节。而接纳那么些艺术,大家就能够用 CSS
对这几个动画实行悬停、倒回以致丰富多彩的调动。

动画–过渡性质 transition-property

最先在Web中要达成动画效果,都以借助于JavaScript或Flash来产生。但在CSS3中新追加了三个新的模块transition,它能够透过某个简短的CSS事件来触发成分的外观变化,让效果显得越来越细腻。轻巧点说,纵然经过鼠标的单击、获得核心,被点击或对成分任何变动中触发,并平滑地以动画效果改动CSS的属性值。

在CSS中创建简单的过渡效果可以从以下几个步骤来实现:
第一,在默认样式中声明元素的初始状态样式;
第二,声明过渡元素最终状态样式,比如悬浮状态;
第三,在默认样式中通过添加过渡函数,添加一些不同的样式。

CSS3的超负荷transition属性是多个复合属性,主要总结以下多少个子属性:

  • transition-property:钦定过渡或动态模拟的CSS属性

  • transition-duration:钦定完毕交接所需的小运

  • transition-timing-function:内定过渡函数

  • transition-delay:钦赐最初产出的延迟时间

先来看transition-property属性

transition-property用来钦赐紧接动画的CSS属性名称,而以此过渡性质独有具备叁个中式茶食值的属性(需求发出动画的习性)技巧抱有过渡效果,其对应持有过渡的CSS属性主要有:

必发88 39

HTML:

<div></div>

CSS:

div {
  width: 200px;
  height: 200px;
  background-color:red;
  margin: 20px auto;
  -webkit-transition: background-color .5s ease .1s;
  transition: background-color .5s ease .1s;
}
div:hover {
  background-color: orange;
}

演示结果:

鼠标移入

必发88 40

鼠标移出

必发88 41

极度注意:当“transition-property”属性设置为all时,表示的是具有中式茶食值的质量。

用多少个简约的例子来阐明这几个难题:

比如你的最初状态设置了体制“width”,“height”,“background”,当您在终始状态都转移了那八个天性,那么all意味着的便是“width”、“height”和“background”。倘诺您的终始状态只变动了“width”和“height”时,那么all代表的正是“width”和“height”。

你只怕感兴趣的篇章:

  • jQuery得到字体颜色二十一个人码的办法
  • jquery达成实时退换网页字体大小、字体背景观和颜料的秘技
  • JQuery完成动态及时退换字体颜色的艺术
  • jQuery实现的背景颜色渐变动画功能示例
  • jQuery与js完毕颜色渐变的点子
  • jQuery达成的文字hover颜色渐变效果实例
  • 听他们说jquery的direction图片渐变动画作用
  • jQuery完成的立体文字渐变效果
  • jQuery渐变发光导航菜单的实例代码
  • jquery实现模拟百分比进程条渐变效果代码
  • jQuery完成渐变弹出层和弹出菜单的措施
  • jquery完毕鼠标经过显示下划线的渐变下拉菜单效果代码
  • jQuery实现字体颜色渐变效果的法子

“steps()”的另外用法

背景动画精灵(background sprites)仅仅只是 steps
时序函数的用法之郁郁苍苍。除此而外该函数还适用于塑造别的要求一应有尽有离散步骤的卡通。举例,你能够用该函数制作一个摆钟。

卡通–过渡所需时日 transition-duration

transition-duration属性首要用来设置一个脾气过渡到另叁特本性所需的年月,也等于从旧属性过渡到新属性开支的岁月长度,俗称持续时间

案例演示:

在鼠标悬停(hover)状态下,让容器从直角稳步过渡到圆角,并让全体动画持续0.5s。

HTML:

<div></div>

CSS:

div {
  width: 300px;
  height: 200px;
  background-color: orange;
  margin: 20px auto;
  -webkit-transition-property: -webkit-border-radius;
  transition-property: border-radius;
  -webkit-transition-duration: .5s;
  transition-duration: .5s;
  -webkit-transition-timing-function: ease-out;
  transition-timing-function: ease-out;
  -webkit-transition-delay: .2s;
  transition-delay: .2s;
}
div:hover {
  border-radius: 20px;
}

亲自去做结果:

鼠标移入

必发88 42

鼠标移出

必发88 43

备忘小条

倘使您赏识这篇文章,你能够将它分享在推文(Tweet),大概封存上边包车型大巴备忘小条,以便仿效。

必发88 44

打赏帮忙本身翻译更加的多好小说,多谢!

打赏译者

动画–过渡函数 transition-timing-function

transition-timing-function属性指的是过渡的“缓动函数”。主要用来钦点浏览器的连通速度,以致连接期间的操作进行情况,个中要满含以下二种函数:

必发88 45

(单击图片可放大)

案例呈现:

在hover状态下,让容器从贰个长方形逐渐过渡到一个圆形,而全部过渡是先加快再减速,也正是运用ease-in-out函数。

HTML代码:

<div></div>

CSS代码:

div {
  width: 200px;
  height: 200px;
  background: red;
  margin: 20px auto;
  -webkit-transition-property: -webkit-border-radius;
  transition-property: border-radius;
  -webkit-transition-duration: .5s;
  transition-duration: .5s;
  -webkit-transition-timing-function: ease-in-out;
  transition-timing-function: ease-in-out;
  -webkit-transition-delay: .2s;
  transition-delay: .2s;
}
div:hover {
  border-radius: 100%;
}

示范结果

鼠标移入:

必发88 46

鼠标移出:

必发88 47

打赏扶植自个儿翻译越多好文章,多谢!

任选生气勃勃种支付方式

必发88 48
必发88 49

赞 收藏
评论

卡通–过渡延迟时间 transition-delay

transition-delay属性transition-duration属性最佳类似,不相同的是transition-duration是用来安装过渡动画的持续时间,而transition-delay首要用以钦定三个卡通先导进行的时光,也正是说当改动成分属性值后多久早先推行。

一时大家想改换多个恐怕多个css属性的transition效果时,只要把多少个transition的表明串在一齐,用逗号(“,”)隔开分离,然后分别能够有分别差别的后续时间和其时间的速率转变情势。但须要值得注意的某个:第2个时间的值为
transition-duration,第三个为transition-delay。

例如:a{ transition:
background 0.8s ease-in 0.3,color 0.6s ease-out 0.3;}

示范演示:

通过transition属性将一个200px
*200px的暗绿容器,在鼠标悬浮状态时,过渡到叁个300px *
300px的新民主主义革命容器。何况整个过渡0.1s后触发,而且整个过渡持续0.28s。

HTML代码:

<div class="wrapper">
  <div>鼠标放到我的身上来</div>
</div>

CSS代码:

.wrapper {
  width: 400px;
  height: 400px;
  margin: 20px auto;
  border: 2px dotted red;
}
.wrapper div {
  width: 200px;
  height: 200px;
  background-color: orange;
  -webkit-transition: all .28s ease-in .1s;
  transition: all .28s ease-in .1s;
}
.wrapper div:hover {
  width: 300px;
  height: 300px;
  background-color: red;
}

示范结果

鼠标移入:

必发88 50

鼠标移出:

必发88 51

至于笔者:刘健超-J.c

必发88 52

前端,在路上…
个人主页 ·
我的稿子 ·
19 ·
    

必发88 53

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图