prefixfree.js和依托应用之Animatable
http://www.zhangxinxu.com/wordpress/2011/11/css3-prefixfree-js-animatable/
http://leaverou.github.io/animatable/
<!DOCTYPE html>
<html lang="en">
<head> <meta charset="utf-8" />
<title>Animatable: One property, two values, endless possibilities</title>
<style type="text/css">
* {
margin: 0;
} body {
padding: 1em 5em;
font: 1em/1.5em Futura, 'Century Gothic', sans-serif;
text-align: center;
overflow-x: hidden;
} hgroup > h1 {
font-size: 500%;
line-height: 1;
text-transform: lowercase;
} hgroup > h2 {
font-size: 120%;
} a {
text-decoration: none;
color: slategray;
} div[role="main"] {
padding: 2em .5em;
counter-reset: demo;
} div[role="main"]:after {
content: '';
display: block;
clear: both;
} a[data-property] {
position: relative;
float: left;
width: 150px;
height: 150px;
box-sizing: border-box;
margin: 0 15px 30px;
background: slategray;
color: white;
font-size: 60px;
line-height: 150px;
text-align: center;
counter-increment: demo;
outline-color: transparent;
} body.in-page a[data-property]:not(:target) {
opacity: .2 !important;
} #on-hover:checked ~ div[role="main"] > a[data-property]:not(:hover):not(:target),
body.in-page a[data-property]:not(:target) {
animation: none !important;
} a[data-property]:after {
content: attr(data-property);
position: absolute;
right: 0;
left: 0;
bottom: -1.2em;
z-index: 2;
color: slategray;
font-size: 14px;
line-height: 1;
text-indent: 0;
text-shadow: none;
letter-spacing: 0;
} a[data-property]:before {
content: counter(demo);
} input[type="radio"] {
position: absolute;
clip: rect(0,0,0,0);
} input[type="radio"] + label {
display: inline-block;
padding: .3em .7em;
border: 1px solid rgba(0,0,0,.3);
margin-top: 1em;
background: #809070;
color: white;
text-shadow: .05em .05em .2em rgba(0,0,0,.8);
cursor: pointer;
border-radius: .3em;
box-shadow: 0 1px rgba(255,255,255,.6) inset;
} input[type="radio"]:not(:checked) + label {
background-image: linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0));
} input[type="radio"]:checked + label {
box-shadow: .05em .05em .4em .1em rgba(0,0,0,.8) inset;
} .in-page input[type="radio"] + label {
display: none;
} #info {
position: absolute;
z-index: 2;
width: 510px;
height: 150px;
padding: 10px 15px;
box-sizing: border-box;
overflow: hidden;
background: black;
color: white;
text-align: left;
transition:.5s;
} .home > #info {
display: none;
} #info h1 {
color: slategray;
margin-bottom: .3em;
} #info > a {
position: absolute;
top: 10px;
right: 10px;
width: 2em;
line-height: 2;
font-size: 80%;
background: rgba(255,255,255,.25);
color: black;
text-align: center;
border-radius: 0 50% 50% 0;
} #info > a:hover {
background: #809070;
} #info > a[title="Previous"] {
right: 36px;
border-radius: 50% 0 0 50%;
} dl {
font-size: 80%;
} dl:after {
content: '';
display: block;
clear: both;
} dt {
float: left;
clear: left;
width: 6em;
color: gray;
} dd {
float: left;
clear: right;
white-space: nowrap;
} dd > a {
color: inherit;
} dd > a > img {
margin-right: 5px;
vertical-align: -8px;
border-radius: 12px;
} .twitter-share-button {
position: fixed;
top: 10px;
left: 10px;
} .github-ribbon {
position: absolute;
top: 0;
right: 0;
}
</style>
<script src="http://leaverou.github.com/prefixfree/prefixfree.min.js"></script>
</head>
<body> <hgroup>
<h1><a href="#">Animatable</a></h1>
<h2>One property, two values, endless possibilities</h2>
</hgroup> <input type="radio" name="animate" id="on-hover" checked />
<label for="on-hover">Animate on hover</label>
<input type="radio" name="animate" id="all" />
<label for="all">Animate all</label> <div role="main">
<a data-property="background-color" data-from="slategray" data-to="black"></a>
<a data-property="background-position" data-from="0 0" data-to="100% 100%" style="background-image: linear-gradient(135deg, transparent 25%, black 25%, black 50%, transparent 50%, transparent 75%, black 75%, black); background-size:50px 50px"></a>
<a data-property="background-position" data-from="3px 0, 3px 0, 15px -150px, 15px -150px" data-to="3px -70px, 3px -70px, 15px -80px, 15px -80px" style="background-color: #E04332; background-repeat: repeat-x; background-size: 24px 300px; background-image: linear-gradient(135deg, slategray 25%, transparent 25%), linear-gradient(45deg, transparent 75%, slategray 75%), linear-gradient(45deg, slategray 25%, transparent 25%), linear-gradient(135deg, transparent 75%, slategray 75%);" data-author="kizmarh"></a>
<a data-property="background-size" data-from="5px 5px" data-to="150px 150px" style="background-image: repeating-radial-gradient(transparent, transparent 9px, black 11px, black 20px); background-position:center"></a>
<a data-property="border-radius" data-from="0" data-to="50%"></a>
<a data-property="border-radius" data-from="0 100%" data-to="100% 0"></a>
<a data-property="border-width" data-from="0" data-to="75px" style="border-style:solid; border-color: black;"></a>
<a data-property="border-width" data-from="0" data-to="35px" style="border-style:dashed; border-color: black;"></a>
<a data-property="border-width" data-from="0" data-to="75px" style="border-style:double; border-color: black;"></a>
<a data-property="box-shadow" data-from="0 0 black" data-to="0 150px 10px -50px rgba(0,0,0,.5)"></a>
<a data-property="box-shadow" data-from="none" data-to="inset -75px -75px 400px #000" data-author="yuritkachenko"></a>
<a data-property="box-shadow" data-from="inset 0 0 75px 75px slategray, 0 0 0 slategray" data-to="inset 0 0 35px 35px transparent, 0 0 75px 50px transparent" style="background: transparent; border-radius: 1px;" data-author="kizmarh"></a>
<a data-property="color" data-from="white" data-to="black"></a>
<a data-property="font-size" data-from="60px" data-to="300px"></a>
<a data-property="height" data-from="150px" data-to="0"></a>
<a data-property="letter-spacing" data-from="0" data-to="100px"></a>
<a data-property="line-height" data-from="10px" data-to="300px"></a>
<a data-property="opacity" data-from="1" data-to="0"></a>
<a data-property="outline-width" data-from="0" data-to="100px" style="outline-color:black; outline-style: solid;"></a>
<a data-property="outline-offset" data-from="-5px" data-to="30px" style="outline-style: dashed; outline-color:slategray;" data-author="mkuehnel"></a>
<a data-property="outline-color" data-from="transparent" data-to="red" style="outline-width: 30px; outline-style: solid;" data-author="mkuehnel"></a>
<a data-property="padding" data-from="0" data-to="50px 200px 50px 50px" data-author="steno"></a>
<a data-property="text-indent" data-from="0" data-to="100px"></a>
<a data-property="text-shadow" data-from="0 0 black" data-to="20px 20px 10px rgba(0,0,0,.5)"></a>
<a data-property="text-shadow" data-from="0 0 0 white" data-to="0 0 10px white" style="color: transparent;" data-author="bartaz"></a>
<a data-property="text-shadow" data-from="0 0 white" data-to="0 0 rgba(255,255,255,0), -45px -45px 0 red, -30px -30px 0 orange, -15px -15px 0 yellow, 0 0 0 green, 15px 15px 0 blue, 30px 30px 0 indigo, 45px 45px 0 violet" style="color: transparent" data-author="kizmarh"></a>
<a data-property="top" data-from="0" data-to="100px" style="position:relative"></a>
<a data-property="transform" data-from="rotate(0deg)" data-to="rotate(360deg)"></a>
<a data-property="transform" data-from="scale(1)" data-to="scale(2)"></a>
<a data-property="transform" data-from="skewX(0deg)" data-to="skewX(180deg)"></a>
<a data-property="transform" data-from="rotate(0deg) scale(1)" data-to="rotate(360deg) scale(0)"></a>
<a data-property="transform" data-from="perspective(400px) rotateY(0deg)" data-to="perspective(400px) rotateY(360deg)"></a>
<a data-property="transform" data-from="perspective(400px) rotateX(0deg)" data-to="perspective(400px) rotateX(360deg)" data-author="calvein"></a>
<a data-property="transform" data-from="perspective(400px) rotateY(0deg)" data-to="perspective(400px) translateZ(150px) rotateY(180deg)" data-author="bartaz"></a>
<a data-property="transform" data-from="perspective(400px) translate3d(0,0,0) rotateX(0) rotateY(0) rotateZ(0)" data-to="perspective(400px) translate3d(0,0,-5000px) rotateX(720deg) rotateY(360deg) rotateZ(-360deg)" data-author="bartaz"></a>
<a data-property="transform" data-from="perspective(400px) rotate3d(1,1,0,0deg)" data-to="perspective(400px) rotate3d(1,1,0,180deg)" data-author="bartaz"></a>
<a data-property="transform" data-from="perspective(400px) rotate3d(0,1,0,0deg)" data-to="perspective(400px) rotate3d(0,1,0,-180deg)" data-author="filipearaujo" style="transform-origin: 100% 50%;"></a>
<a data-property="transform-origin" data-from="50% 50%" data-to="0 100%" style="transform:rotate(45deg)"></a>
<a data-property="width" data-from="150px" data-to="330px" data-author="mkuehnel"></a>
</div> <section id="info">
<h1>box-shadow</h1>
<a href="#" title="Previous">◀</a>
<a href="#" title="Next">▶</a>
<dl>
<dt>From:</dt>
<dd>0 0 black</dd> <dt>To:</dt>
<dd>0 150px 10px -50px rgba(0,0,0,.5)</dd> <dt>Author:</dt>
<dd>@leaverou</dd>
</dl>
</section> <footer>Made by <a href="http://lea.verou.me">Lea Verou</a> with care</footer> <script>
function $(expr, con) { return (con || document).querySelector(expr); }
function $$(expr, con) { return [].slice.call((con || document).querySelectorAll(expr)); } var css = []; $$('a[data-property]').forEach(function(el, i){
var property = el.getAttribute('data-property'),
from = el.getAttribute('data-from'),
to = el.getAttribute('data-to'); var id = property, i = 1; while(document.getElementById(id)) {
id = property + '/' + ++i;
} el.id = id;
el.href = '#' + id; el.title = property + ' from ' + from + ' to ' + to; var selector = '#' + id.replace(/([^\w-])/g, '\\$1'),
ident = id.replace(/([^\w-])/g, '-'); css.push('@keyframes ' + ident + '{',
'from{' + property + ':' + from + '}',
'to{' + property + ':' + to + '}}',
selector + ' { animation: ' + ident + ' 1s infinite alternate;' + property + ':' + from + '}');
}); var style = document.createElement('style');
style.textContent = css.join('\r\n');
StyleFix.styleElement(style);
document.head.appendChild(style); setTimeout(onhashchange = function() {
var target = location.hash? $(location.hash.replace(/([^#\w-])/g, '\\$1')) : null; if(!target) {
document.body.className = 'home';
return;
} document.body.className = 'in-page'; var info = $('#info'),
previous = target.previousElementSibling,
next = target.nextElementSibling,
author = target.getAttribute('data-author') || 'leaverou'; $('h1', info).innerHTML = target.getAttribute('data-property');
$('dd:first-of-type', info).innerHTML = target.getAttribute('data-from');
$('dd:nth-of-type(2)', info).innerHTML = target.getAttribute('data-to');
$('dd:nth-of-type(3)', info).innerHTML = '<a href="http://twitter.com/' + author + '" target="_blank"><img src="http://twitter.com//api/users/profile_image?screen_name=' + author + '&size=mini"/>@' + author + '</a>'; $('a[title="Previous"]', info).setAttribute('href', '#' + (previous? previous.id : ''));
$('a[title="Next"]', info).setAttribute('href', '#' + (next? next.id : '')); setTimeout(function() {
if(2*target.offsetLeft + target.offsetWidth < innerWidth) {
info.style.left = target.offsetLeft + target.offsetWidth + 30 + 'px';
}
else {
info.style.left = target.offsetLeft - info.offsetWidth - 30 + 'px';
} info.style.top = target.offsetTop + 'px';
}, 10);
}, 50); onkeyup = function(evt) {
var key = evt.keyCode; switch (key) {
case 27:
location.hash = '';
break;
case 37:
case 38:
location.hash = location.hash? $('a[title="Previous"]').hash : $('a[data-property]:last-child').hash;
break;
case 39:
case 40:
location.hash = location.hash? $('a[title="Next"]').hash : $('a[data-property]:first-child').hash;
}
}; </script> <a href="https://github.com/leaverou/animatable" target="_blank" class="github-ribbon">
<img src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub">
</a> <a href="https://twitter.com/share" class="twitter-share-button" data-count="vertical" data-via="LeaVerou">Tweet</a>
<script src="https://platform.twitter.com/widgets.js"></script> <script src="http://www.google-analytics.com/ga.js"></script>
<script>
try {
var pageTracker = _gat._getTracker("UA-597483-5");
pageTracker._trackPageview();
} catch(err) {}
</script> </body>
</html>
prefixfree.js和依托应用之Animatable的更多相关文章
- CSS3无前缀脚本prefixfree.js与Animatable使用
现代浏览器基本支持CSS3,但是一些旧版本的浏览器还是需要添加前缀的.像box-shadow, border-radius这类属性,目前较新版本的浏览器都是不需要前缀的(包括IE9),但是,有些CSS ...
- CSS3无前缀脚本prefixfree.js与Animatable使用介绍
要求 必备知识 本文要求基本了解 JAVASCRIPT 和 和 CSS3 基本知识. 运行环境 桌面端:IE9 +,Opera 10+,火狐3.5 +,Safari 4+和Chrome浏览器;移动端: ...
- HTML5/CSS3(PrefixFree.js) 3D文字特效
之前在园子里看到一个HTML5/CSS3的文字特效(这里),觉得挺好玩的所以小小的研究了下,不过发现代码都是针对webkit以及FF的所以IE跪了. Runjs 我将示例中的代码进行了精简,后来发现C ...
- prefixfree.js介绍
假如你现在正学习着强大的Css3,你知道Css3的很多数属性为实验属性,使用他们的时候得加上各式各样的浏览器前缀.可能你默默忍受了,因为还没到统一的时间.有没想过给自己减下负,偶然间在网上看到一个js ...
- prefixfree.js_无前缀脚本
prefixfree.js是JavaScript工具库,怎么用呢... 回答就是:哼!省去CSS3中的前缀“-moz”.“-webkit”.“-o”.“-ms” 省的在写一大堆前缀来适应旧版本浏览器或 ...
- html5+css3学习笔记-prefixfree前缀补全插件
虽然现代浏览器支持CSS3,但是一些过往的版本或是目前有些CSS3属性的应用还是离不开前缀的.一些牛逼且执着于web技术且乐于分享的仁兄(Lea Verou)就搞了个名叫prefixfree.js的插 ...
- js插件---弹出层sweetalert2(总结)
js插件---弹出层sweetalert2(总结) 一.总结 一句话总结: sweetalert2的效果非常好,效果比较Q萌,移动端适配也比较好,感觉比layer.js效果好点 1.SweetAler ...
- 到网上收集了一个“高大上”的CSS3登入表单和大家分享一下
要求 必备知识 基本了解CSS语法,初步了解CSS3语法知识. 开发环境 Adobe Dreamweaver CS6 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到演示地址哦): 制作步骤: 一 ...
- 利用:before和:after伪类制作CSS3 圆形按钮 含demo
要求 必备知识 基本了解CSS语法,初步了解CSS3语法知识. 开发环境 Adobe Dreamweaver CS6 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到演示地址哦): 制作步骤: 一 ...
随机推荐
- Windows下安装gcc环境
安装GCC环境 https://gcc.gnu.org/ 点进去后 然后 然后 点击 再点击 点击 (啊,这是跳了多少个页面) 开始下载了.完成之后打开:(自动执行的) 弹出 点击OK,弹出个窗口,让 ...
- [转帖]NSA武器库知识整理
NSA武器库知识整理 https://www.cnblogs.com/FrostDeng/p/7120812.html 美国国家安全局(NSA)旗下的“方程式黑客组织”(shadow brokers) ...
- php开发工程师都需要掌握什么技能呢?
PHP原生标准库精通,三种大型框架中熟练掌握一门的开发(Symfony2.Yii.ZF2),小型框架中(Codeigniter 等)通读其一源码. MySQL语句精通,实践构造 1000 万级的数据库 ...
- 快速排序(Quick Sort)C语言
已知数组 src 如下: [5, 3, 7, 6, 4, 1, 0, 2, 9, 10, 8] 快速排序1 在数组 src[low, high] 中,取 src[low] 作为 关键字(key) . ...
- 《算法图解》全本PDF下载附百度云链接
作者使用Python和图画来解释算法,找了好久才找到PDF版本,末尾附百度云链接~ 作者[美]Aditya Bhargava 译者袁国忠 类别 出版 / 非虚构 出版社人民邮电出版社 / 2017-0 ...
- 介绍一款好用的命令行工具Cmder
一.Cmder的介绍: 在大多数情况下,我们都想复制命令行窗口中的命令行,但是cmd复制粘贴大家都懂得:有没有更好的工具替代呢? 答案是肯定的,今天我将为大家介绍一款工具--Cmder. Cmder可 ...
- 解决clover配置文件conf.plist中nv_disable=1或者nvda_drv=1不生效或者说不能删除的问题
情况一:U盘安装MacOS的时候conf.plist中设置了nv_disable=1,但是启动的时候任然显示nvda_drv=1. 这种情况一般出现在该机器曾经安装过MacOS,MacOS会将这个参数 ...
- hystrix中request cache请求缓存
有一个概念,叫做reqeust context,请求上下文,一般来说,在一个web应用中, 我们会在一个filter里面,对每一个请求都施加一个请求上下文,就是说,tomcat容器内,每一次请求,就是 ...
- c#mysql数据库备份还原
1:引用dll MySql.Data.dll, MySqlbackup.dll 2:建一个数据连接静态类 public static class mysql { public static str ...
- Nginx fastcgi_cache权威指南
一.简介 Nginx版本从0.7.48开始,支持了类似Squid的缓存功能.这个缓存是把URL及相关组合当做Key,用Md5算法对Key进行哈希,得到硬盘上对应的哈希目录路径,从而将缓存内容保存在该目 ...