侧边栏淡入淡出效果
想要同时操作透明度变化的动画以及display值的变化,淡出效果没问题,淡入的透明度变化显示不了,总是一下子就跳出来。而且跳出来有时候会再消失,推测是定时器造成的,不知如何解决。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | <!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < title >test</ title > < style > .aside-nav { width: 50px; position: fixed; right: 0px; bottom: 50px; padding: 10px 8px; box-shadow: 0 0 3px 2px rgba(0,0,0,0.5); background: #FFF; display: none; } .aside-nav__items { display: block; width: 50px; height: 25px; line-height: 25px; margin: 5px 0; text-align: center; color:#000; } .aside-nav__items:hover { color:#FF0000; } .aside-nav { opacity:0; transition: all 1s linear; } .aside-nav-appear { opacity: 1; transition:all 1s linear; } </ style > </ head > < body > < div style = "height: 2000px;background: grey;" ></ div > < nav class = "aside-nav" > <!-- 侧边导航 --> < a href = "javascript:;" class = "aside-nav__items" >实</ a > < a href = "javascript:;" class = "aside-nav__items" >商</ a > < a href = "javascript:;" class = "aside-nav__items" >课</ a > < a href = "javascript:;" class = "aside-nav__items" >环</ a > < a href = "javascript:;" class = "aside-nav__items" >云</ a > </ nav > </ body > < script type = "text/javascript" > var asideNavItems=getEleAll(".aside-nav__items"), asideNav=getEle(".aside-nav"); window.onscroll=function(){ var top=getTop(); if (top>200){ addCls(asideNav,"aside-nav-appear"); asideNav.style.display="block"; } else { delCls(asideNav,"aside-nav-appear"); setTimeout(function(){ asideNav.style.display="none"; },1000); } } //获取元素函数 function getEle(sel){ return document.querySelector(sel); } function getEleAll(sel){ return document.querySelectorAll(sel); } //获取屏幕高度函数 function getTop(){ return document.documentElement.scrollTop || document.body.scrollTop; } //添加类名函数 function addCls(ele,cls){ var baseCls=ele.className; if (baseCls.indexOf(cls)==-1){ ele.className=baseCls+" "+cls; } } //删除类名函数 function delCls(ele,cls){ var baseCls=ele.className; if (baseCls.indexOf!=-1){ ele.className=baseCls.replace(cls,""); } } </ script > </ html > |
0
收起
正在回答
2回答
transiton与display不能同时使用,可以给过渡变化添加一个定时器:
关于说的改变定位的right值,是可以同时和透明度实现的,可以再测试下。
HTML5与CSS3实现动态网页 2018
- 参与学习 1887 人
- 提交作业 4643 份
- 解答问题 5760 个
有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧