【发布时间】:2016-04-12 07:14:19
【问题描述】:
固定在滚动上
我创建了一个绝对定位在文档中的徽标元素,当我滚动它时,它会以固定位置固定在窗口顶部(此处的示例:https://jsfiddle.net/swzbe9cv/2)
JavaScript
window.addEventListener('scroll', fixLogo);
function fixLogo(){
if(window.scrollY >= trigger){
if(!logo.classList.contains('fixed')){
logo.classList.add('fixed');
}
} else{
if(logo.classList.contains('fixed') && !nav.classList.contains('show')){
logo.classList.remove('fixed');
}
}
}
CSS
.logo {
position: absolute;
top: calc(100% + 15px);
height: 40px;
width: 100px;
}
.fixed {
position: fixed;
top: 15px;
}
出现菜单
然后我决定在左侧添加一个菜单,通过单击徽标元素来显示/隐藏。这个菜单有一个固定的位置,当它显示时,标志就在它的顶部。 (此处示例:https://jsfiddle.net/6cskthuz/2/) JavaScript
logo.addEventListener('click',showMenu);
function showMenu(){
if(nav.classList.contains('show')){
if(window.scrollY < pageheight && logo.classList.contains('fixed')){
logo.classList.remove('fixed');
}
nav.classList.remove('show');
} else {
if(!logo.classList.contains('fixed')){
logo.classList.add('fixed');
}
nav.classList.add('show');
}
}
CSS
nav {
z-index:1;
position: fixed;
top: 0px;
left: -8vw;
width: 8vw;
height: 100%;
background-color: rgba(0,0,0,0.7);
transition: 1s;
padding-top: 8vw;
text-align: center;
font-size: 2rem;
}
.show {
left: 0px;
}
当菜单出现且徽标位于绝对位置时,如何平滑翻译菜单顶部的徽标元素?
我想这样做 CSS only 充其量,没有 jQuery 至少。
【问题讨论】:
-
这在 CSS 中是不可能的。
position属性不可设置动画。
标签: javascript html css