十天驾驭CSS3,塑造动态渐变开关

Twitter的”fave”动画

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

本文由 皇家赌场手机版,伯乐在线 –
刘健超-J.c
翻译,胡屹
校稿。未经许可,制止转发!
拉脱维亚语出处:cssanimation.rocks。应接参预翻译组。

变形–旋转 rotate()

旋转rotate()函数通过点名的角度参数使成分相对原点举办旋转。它根本在二维空间内进行操作,设置三个角度值,用来钦命旋转的肥瘦。假如这么些值为正值,成分相对原点中央顺时针旋转;倘使那么些值为负值,成分相对原点大旨逆时针旋转。如下图所示:

皇家赌场手机版 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);
}

示范结果

皇家赌场手机版 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)使成分在档案的次序和垂直方向相同的时候扭曲(X轴和Y轴同不时间按自然的角度值举行翻调换形);

皇家赌场手机版 3

第三个参数对应X轴,第一个参数对应Y轴。假若第三个参数未提供,则值为0,也等于Y轴方向上无斜切。

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

皇家赌场手机版 4

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

皇家赌场手机版 5

以身作则演示:

透过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);
}

示范结果

皇家赌场手机版 6

Step1 – Photoshop

举手投足爆发的错觉

这段动画的意义类似于观察古老的西洋镜,该装置呈现的是一多级一连的环抱着圆筒的插图。在底下的演示中,大家不利用圆筒,而是在有些成分内部突显一多元图片。

变形–缩放 scale()

缩放 scale()函数 让要素依据主旨原点对目的进行缩放。

缩放 scale 具有三种情况:

1、 scale(X,Y)使成分水平方向和垂直方向同不日常候缩放(也正是X轴和Y轴相同的时间缩放)

皇家赌场手机版 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轴缩放)

皇家赌场手机版 8

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

皇家赌场手机版 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);
}

演示结果

皇家赌场手机版 10

注意: scale()的取值暗中认可的值为1,当班值日设置为0.010.99时期的别的值,成效使二个成分裁减;而别的大于或等于1.01的值,效率是让要素放大。

Step2 – HTML/CSS

示例

把鼠标悬停在点滴上就足以见到动画效果(请到原文查看动画效果——译者注)。

在本示例中,我们将从创设一文山会海能整合动画的图片早先。在此,大家应用来源
推特(TWTR.US) 的“fave”Logo动画的片段图片集:

皇家赌场手机版 11

为了能让这一个帧动起来,大家须要把它们放置在一排上。在这里个文件十天驾驭CSS3,塑造动态渐变开关。中,那一个帧已经排列在一排上了,那意味着我们得以经过设置背景地点(background-position)属性使背景从第一帧过渡到最终一帧。

皇家赌场手机版 12

变形–位移 translate()

translate()函数能够将成分向钦命的可行性移动,类似于position中的relative。或以轻巧的了然为,使用translate()函数,能够把成分从原先的地方移动,而不影响在X、Y轴上的其余Web组件。

translate我们分为三种景况:

1、translate(x,y)水平方向和垂直方向同一时间活动(也正是X轴和Y轴同有的时候间活动)

皇家赌场手机版 13

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

皇家赌场手机版 14

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

皇家赌场手机版 15

十天驾驭CSS3,塑造动态渐变开关。实例演示:经过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);
}

亲自去做结果

皇家赌场手机版 16

Step3 – JavaScript(jQuery)

Steps() 时序函数

大部的时序函数,举个例子 ease(缓冲)和
cubic-bezier(贰遍贝塞尔),都能让要素从起头状态平滑地对接到终极状态。steps
时序函数与此分歧,它并非一马平川地连通,而是将联网进程分割为自然数量的步调,并且在此些手续之间异常快地移动。

皇家赌场手机版 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);
}

亲自过问结果:

皇家赌场手机版 18

Step4 – CSS修改

 

  最后结果如下:

皇家赌场手机版 19

背景图片

接下去, 大家能够加上一些样式并设置背景图片地点:

皇家赌场手机版 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帧组成的。

当大家将鼠标悬停在此个因素上时,所阅览的功用是其背景图片通过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轴的八分之四处。如下图所示:

皇家赌场手机版 21

在尚未重新初始化transform-origin改换成分原点地方的意况下,CSS变形举办的团团转、位移、缩放,扭曲等操作都以以成分和睦核心地点举行变形。但不菲时候,大家能够通过transform-origin来对成分实行原点地点变动,使成分原点不在成分的基本地方,以达到需求的原点地方。

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

皇家赌场手机版 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;
}

示范结果:

皇家赌场手机版 23

Step1 – Photoshop

1. 新建文件

  开关的尺码是100px X 80px,但由于大家需求创设贰个有三种状态的CSS
sprite背景图,所以大家在Photoshop中开创(Ctrl+N)二个长度宽度为200px X
160px的图纸文件,如下图:

皇家赌场手机版 24

2. 创办参谋线

  为了使绘制按键更易于,咱们创建参谋线,从标尺中拉出仿照效法线,借使您找不到标尺,能够按Ctrl+LX570展现,如下图:

皇家赌场手机版 25

3. 制图形状

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

皇家赌场手机版 26

4. 安装形状样式

  接上海教室最终一步,双击层,打开图层样式窗口,设置形状的样式,首先采取渐变叠合,设置渐变颜色从#3d3d3d到#8b8b8b,如下图:

皇家赌场手机版 27

  然后,采取“内发光”,设置混合方式为“正常”,不发光度为百分百,颜色设置为#ffffff,图素大小设置为3像素,如下图:

皇家赌场手机版 28

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

皇家赌场手机版 29

5. 增多字体

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

皇家赌场手机版 30

6. 安装字体样式

  一样的双击文字图层,张开文字图层样式,设置字体样式,点击“投影”,设置混合形式为“正常”,颜色为#3e3e3e,不折射率为百分之百,角度为90度,间距为1像素,大小为2像素;点击“内阴影”,设置混合形式为“正常”,颜色为#454545,不光滑度为十分之二,角度为90度,间隔为1像素,大小为2像素,如下图所示:

皇家赌场手机版 31

  至此,我们就做到链接状态下的开关背景图,效果如下:

皇家赌场手机版 32

7. 悬停背景图

  制作鼠标悬停状态下的开关背景图,把图层归入组内,复制组,移动,仁同一视命名,如下图:

皇家赌场手机版 33

8.背景图属性

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

 

皇家赌场手机版 34

9. 设置字体样式

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

皇家赌场手机版 35

10. 图层半透明

  增添图层半透明效果,按上述步骤修改,鼠标悬停背景图如下,最终是再加上一层半透明层,先增多贰个200px
X 40px的森林绿层,置顶并安装紫铜色层的反射率为百分之十,如下图:

皇家赌场手机版 36

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

皇家赌场手机版 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>元素在鼠标悬停前是全透明的,鼠标经过时,逐步不透明,以到达渐变的功力,动画进度如下图:

皇家赌场手机版 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属性主要有:

皇家赌场手机版 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;
}

演示结果:

鼠标移入

皇家赌场手机版 40

鼠标移出

皇家赌场手机版 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;
}

演示结果:

鼠标移入

皇家赌场手机版 42

鼠标移出

皇家赌场手机版 43

备忘小条

设若您欣赏那篇小说,你可以将它分享在Facebook,或然封存上边的备忘小条,以便参考。

皇家赌场手机版 44

打赏援救小编翻译越来越多好小说,谢谢!

打赏译者

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

transition-timing-function属性指的是连着的“缓动函数”。首要用来钦赐浏览器的对接速度,以致连接时期的操作实行意况,当中要满含以下两种函数:

皇家赌场手机版 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%;
}

示范结果

鼠标移入:

皇家赌场手机版 46

鼠标移出:

皇家赌场手机版 47

打赏帮忙作者翻译越来越多好小说,多谢!

任选一种支付办法

皇家赌场手机版 48
皇家赌场手机版 49

赞 收藏
评论

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

transition-delay属性transition-duration属性然则类似,区别的是transition-duration是用来安装过渡动画的持续时间,而transition-delay主要用以钦点贰个动画开头实践的岁月,也正是说当退换成分属性值后多久初步试行。

不常候大家想改造八个可能多少个css属性的transition效果时,只要把几个transition的表明串在一起,用逗号(“,”)隔开分离,然后分别能够有分别区别的后续时间和其光阴的速率转变形式。但要求值得注意的有个别:第一个小时的值为
transition-duration,第4个为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;
}

以身作则结果

鼠标移入:

皇家赌场手机版 50

鼠标移出:

皇家赌场手机版 51

至于小编:刘健超-J.c

皇家赌场手机版 52

前端,在路上…
个人主页 ·
我的小说 ·
19 ·
    

皇家赌场手机版 53

Leave a Comment.