侧边栏淡入淡出效果
想要同时操作透明度变化的动画以及display值的变化,淡出效果没问题,淡入的透明度变化显示不了,总是一下子就跳出来。而且跳出来有时候会再消失,推测是定时器造成的,不知如何解决。
<!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积分~
来为老师/同学的回答评分吧
0 星