时间:2021-05-25
先来看看第一种实现方式
效果图如下:
不再采用ul li的布局方式
-webkit-transform-style:preserve-3d只对子元素有作用,所以每个div都加。
实例源码
<!doctype html><html><head><meta charset="utf-8"><title>无标题文档</title><style>.wrap{margin:30px auto;width:302px;-webkit-perspective:800px; -webkit-transform-style:preserve-3d; position:relative;}.wrap div{ position:absolute; top:52px;left:0;-webkit-transform-style:preserve-3d; -webkit-transform-origin:top;}.wrap span{ display:block;width:300px;border:1px solid #000;height:50px; font:16px/50px "宋体"; background:#ccc;}</style></head><body><input type="button" value="展开" /><input type="button" value="收缩" /><div class="wrap" id="list"> <span>第一项</span> <div> <span>第二项</span> <div> <span>第三项</span> <div> <span>第四项</span> <div> <span>第五项</span> <div> <span>第六项</span> <div> <span>第七项</span> </div> </div> </div> </div> </div> </div></div><script>window.onload=function(){ var oList=document.getElementById("list"); var aDiv=oList.getElementsByTagName("div"); var aBtn=document.getElementsByTagName("input"); aBtn[1].onclick=function() { for(var i=0;i<aDiv.length;i++) { aDiv[i].style.transition="0.5s "+(aDiv.length-i)*100+"ms"; aDiv[i].style.WebkitTransform="rotateX(60deg)"; } }; aBtn[0].onclick=function() { for(var i=0;i<aDiv.length;i++) { aDiv[i].style.transition="0.5s "+i*100+"ms"; aDiv[i].style.WebkitTransform="rotateX(0deg)"; } };};</script></body></html>第二种实现方式
效果图如下:
这个原先是隐藏的,点击后才展开。
通过关键帧控制每个div的展开状态,当要展开的时候给每个div添加className,但是这个className不是一下子全部添加上去的,而是有延时的,所以用到了定时器。
实例源码
<!doctype html><html><head><meta charset="utf-8"><title>无标题文档</title><style>@-webkit-keyframes open{ 0% { -webkit-transform:rotateX(-120deg); } 40% { -webkit-transform:rotateX(30deg); } 60% { -webkit-transform:rotateX(-20deg); } 80% { -webkit-transform:rotateX(10deg); } 100% { -webkit-transform:rotateX(0deg); }}.wrap{margin:30px auto;width:300px;-webkit-perspective:800px;position:relative;}.wrap h2{ height:50px;background:#F03; text-align:center; font:16px/50px "微软雅黑"; color:#fff; position:relative;z-index:2;}.wrap div{ position:absolute; top:32px;left:0;-webkit-transform-style:preserve-3d; -webkit-transform-origin:top; -webkit-transform:rotateX(-120deg); transition:.5s;}.wrap>div{ top:50px;}.wrap .open{-webkit-animation:open 2s;-webkit-transform:rotateX(0deg);}.wrap span{ display:block;width:300px;height:30px; font:14px/30px "宋体"; background:#6F3; text-indent:15px; color:#fff; transition:.5s; box-shadow:inset 0 0 30px 20px rgba(0,0,0,1);}.wrap .open>span{box-shadow:inset 0 0 30px 10px rgba(0,0,0,0);}.wrap span:hover{ background:#FF0;text-indent:30px;}</style></head><body><input type="button" value="展开" /><input type="button" value="收缩" /><div class="wrap" id="list"> <h2>标题</h2> <div> <span>第一项</span> <div> <span>第二项</span> <div> <span>第三项</span> <div> <span>第四项</span> <div> <span>第五项</span> <div> <span>第六项</span> <div> <span>第七项</span> </div> </div> </div> </div> </div> </div> </div> </div><script>window.onload=function(){ var oList=document.getElementById("list"); var aDiv=oList.getElementsByTagName("div"); var aBtn=document.getElementsByTagName("input"); var oTimer=null; aBtn[1].onclick=function() { var i=aDiv.length-1; clearInterval(oTimer); oTimer=setInterval(function(){ aDiv[i].className=""; i--; if(i<0) { clearInterval(oTimer); } },50); }; aBtn[0].onclick=function() { var i=0; clearInterval(oTimer); oTimer=setInterval(function(){ aDiv[i].className="open"; i++; if(i==aDiv.length) { clearInterval(oTimer); } },200); };};</script></body></html>总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了JS+CSS实现精美的二级导航效果代码。分享给大家供大家参考。具体如下:这是一款基于JS+CSS实现的精美二级导航,适合想学一些基础点的、基础js
本文实例讲述了JS+CSS实现六级网站导航主菜单效果。分享给大家供大家参考。具体如下:这是一款JS+CSS实现支持6级的网站导航主菜单,级级相信够大家用了,外观
本文实例讲述了JS+CSS实现简单的二级下拉导航菜单效果。分享给大家供大家参考。具体如下:这是一款CSS配合JavaScript实现二级下拉导航菜单,好像CSS
微信小程序利用css实现遮罩效果实例详解实现效果图:如图所示,使用css实现小程序的遮罩效果,代码如下js文件代码://index.js//获取应用实例vara
本文实例为大家分享了js+css实现扇形导航效果的具体代码,供大家参考,具体内容如下\扇形导航*{margin:0;padding:0;}html,body{h