Home >Web Front-end >HTML Tutorial >花式使用CSS3 transition_html/css_WEB-ITnose

花式使用CSS3 transition_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-21 09:01:141166browse

欢迎交换友链 Laker's Blog--进击的程序媛

Github: https://github.com/younglaker

微博:江小湖Laker

本文讲介绍 :hover、 :active、 :focus、 :checked、 Media Queries、 JavaScript控制六种方法触发CSS3 transition,以及 transitionend事件的使用。

:hover

最常见的是用hover:

<div class="hover">:hover</div>.hover {  width: 100px;  height: 100px;  background: #222;  color: white;  text-align: center;  transition: all 2s ease;}.hover:hover {  width: 200px;  height: 200px;}

Demo

:active

mousedown s时触发:

<div class="active">:active</div>.active {  width: 100px;  height: 100px;  background: #222;  color: white;  text-align: center;  transition: all 2s ease;}.active:active {  width: 200px;  height: 200px;}

Demo

:focus

文本框聚焦时(这个在很多网站的搜索框的动画效果里用到):

<div class="focus">  <input type="text" /></div><div class="focus">  <textarea name="" id="" cols="30" rows="10"></textarea></div>.focus input, .focus textarea {  width: 200px;  transition: width 1s ease;}.focus input:focus, .focus textarea:focus {  width: 300px;}

Demo

:checked

用于checkboxes 和 radio buttons 被选中时:

<div>    <input type="checkbox" name="things" value="thing1"> Input 1<br>    <input type="checkbox" name="things" value="thing2"> Input 2<br>    <input type="checkbox" name="things" value="thing3"> Input 3<br>  <input type="checkbox" name="things" value="thing4"> Input 4<br></div>    input[type="checkbox"]:checked {  height: 20px;  transition: all 1s ease;}input[type="checkbox"]:checked {  width: 30px;}

Demo

Media Queries

改变浏览器窗口大小时触发:

<div class="media">media</div>.media {  width: 200px;  height: 200px;  background: #222;  color: white;  text-align: center;  transition: width 1s ease;}@media only screen and (max-width : 960px) {  .media {    width: 100px;    height: 100px;  }}

Demo

JavaScript事件触发CSS3 transition

通过 JavaScript 或者 jQuery 添加、删除class来完成动画,CSS格式类似 :hover。

例如:

以 click 事件为例,当点击方块时,变化长宽、背景色:

HTML:

<div class="box"></div>

CSS:

.box {  width: 200px;  height: 200px;    background: black;  -webkit-transition: all 2s ease;  -moz-transition: all 2s ease;  -o-transition: all 2s ease;  transition: all 2s ease;}.box.clicked {  width: 300px;  height: 300px;    background: blue;}

JavaScript:

$(".box").click(function() {    $(this).toggleClass("clicked");});

Demo

如果用原生JavaScript,可以自己写个添加和删除类的函数。

transitionend 事件

transitionend 事件会在 CSS transition 结束后触发。兼容Chrome、Firefox、Safari、IE10+:

element.addEventListener('transitionend', callback, false);

为保证低版本兼容性可以写webkitTransitionEnd(WebKit )、otransitionend(Opera)、MSTransitionEnd(IE 10+)、transitionend(Mozilla)。 详见此讨论。

有没有渐变开始的事件?目前只有IE 10+ 有 transionstart 事件,W3C目前未有此标准。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn