这是纯 css 中的另一种方法(根据要求)
javascript在这里只是为了更快地添加元素
无论如何,我修改了函数,以便您可以将HTMLElement
s 直接添加到添加需要翻转的各种 div 的函数中。
A&B,其中A是前面,B是后面。
在这个例子中,我向页面添加了 6 个元素。
这是测试元素的javascript
var D,
flip=function(A,B){// HTMLElement,HTMLElement - no text
var box=D.createElement('div');
box.appendChild(D.createElement('div')).appendChild(A);
box.appendChild(D.createElement('div')).appendChild(B);
return box;
},
init=function(){
D=window.document;
for(var i=0,f=D.createDocumentFragment();i<6;i++){
var a=D.createTextNode('Front '+i),
b=D.createTextNode('Back '+i);
f.appendChild(flip(a,b));
}
D.getElementsByClassName('flip')[0].appendChild(f);
}
window.onload=init;
正如您所见,没有事件监听器或复杂代码,就像您使用 css3 一样,您完全可以将其:hover
放在 div 上,而无需 javascript(mouseenter、mouseleave)。
为了向每个元素添加这个动画,我为元素的容器添加了一个类。
html,body{width:100%;height:100%;margin:0;padding:0;} /* important */
.flip{
width:100%;height:100%; /* in this case the perspective center */
-webkit-perspective:1200; /* is in the page center */
}
.flip>div{
width:200px;height:160px; /* width && height of the flip box */
float:left;
margin:16px;
-webkit-transform-style:preserve-3d;
-webkit-transition:all 600ms ease;/* animation speed is 600ms */
}
.flip>div>div{
width:100%;height:100%; /*to fit the flip container*/
-webkit-backface-visibility:hidden;/* hide the back side */
line-height:160px;text-align:center;/*center the text*/
background-color:grey;/* both sides color */
}
.flip>div>:nth-child(2){
-webkit-transform:rotateY(180deg);
margin-top:-160px;/* hack so no need for position absolute*/
}
.flip>div:hover{
/*-webkit-transition:all 1000ms ease 1000ms;
want to close it slowly with a delay? */
-webkit-transform:rotateY(180deg);
}
/* no position relative or absolute which slows down ios */
这是为 webkit 浏览器(chrom、safari、android、ios)编写的,我是为我的 ipad 制作的。
要将它与 firefox 和支持 css3 的最新 ie 一起使用,您需要使用 -moz、-ms、-o 前缀复制此 -webkit 样式并检查支持。
此示例基于 3d,因此容器也具有透视值。并且元素以真实的 3d 翻转,因此您可以在各种浏览器上触发硬件 GPU 加速。
html 只需要带有类的容器flip
使用类允许您添加具有多个翻转元素的多个容器。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>flip</title>
//add here the links to css3 or the <style>
//add here the the script or link to the script
</head>
<body><div class="flip"></div></body>
</html>
所以这很简单,你可以看到,但是从这个基础你可以创建非常令人印象深刻的动画,只是改变翻转 css。
如果您需要一些更高级的功能,您可以使用 javascript 事件进行处理
transitionend
如果您想手动添加框,这就是您需要编写的全部内容。
<div class="flip">
<div>
<div>Element1 Front</div>
<div>Element1 Back</div>
</div>
<div>
<div>Element2 Front</div>
<div>Element2 Back</div>
</div>
</div>
想在点击/鼠标事件/拖动事件/滚动事件上触发动画吗?
替换.flip>div:hover
为.flip>div.flipped
并在 javascript on event
this.parentNode.classList.toggle('flipped')
或者
this.parentNode.classList.add('flipped') & this.classList.remove('flipped')
现在这都是关于现代浏览器并使用现代 javascript&&css3,但是当你想要翻转某些东西时,你无论如何都需要一个现代浏览器。jQuery也不能在 ie6 中翻转某些东西
像往常一样
javascript 处理事件或添加多个元素
css 创建页面的样式
html 只是一个基本结构。
如有任何其他问题,请询问
小提琴(用铬测试)
http://jsfiddle.net/gNB3z/2/