javascript - 如何创建具有这种效果的菜单?
问题描述
试图创建一个具有这种效果的菜单。
我的代码
var lastScroll = 0;
window.onscroll = function() {
var navbar = document.querySelector('.navbar');
var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
var body = document.querySelector('body');
if (lastScroll - scrollTop > 0) {
body.classList.add('body-fixed');
navbar.classList.add('fixed');
} else {
body.classList.remove('body-fixed');
navbar.classList.remove('fixed');
}
lastScroll = scrollTop;
}
var lastScroll = 0;
window.onscroll = function() {
var navbar = document.querySelector('.navbar');
var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
var body = document.querySelector('body');
if (lastScroll - scrollTop > 0) {
body.classList.add('body-fixed');
navbar.classList.add('fixed');
} else {
body.classList.remove('body-fixed');
navbar.classList.remove('fixed');
}
lastScroll = scrollTop;
}
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
body {
height: 2000px;
}
body.body-fixed{
padding-top: 60px;
}
.navbar {
padding-top: 40px;
padding-bottom: 40px;
background: #00f;
position: relative;
top: 0;
left: 0;
width: 100%;
z-index: 999;
transition: padding 0.3s ease;
}
.navbar.fixed {
position: fixed;
padding-top: 30px;
padding-bottom: 30px;
}
<nav class="navbar"></nav>
当我向下滚动页面时,我无法创建使菜单平滑消失的效果。我无法理解这是如何在网站示例中实现的。
告诉我如何正确地为菜单实现这个效果。
先感谢您。我很乐意提供任何帮助。
解决方案
平滑翻译是使用transform: translate(0px, 0px)
在滚动时使用适当值修改的 css 属性完成的。
您可以使用 js 直接更改元素的样式,而不是附加类。
https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translate
您可能还想研究 CSS 过渡。
推荐阅读
- regex - Kotlin 正则表达式空间有效,但字边界无效
- amazon-web-services - RDS 触发器的 Lambda 函数访问导致连接丢失
- python-3.x - 如何在文件中列出已通过所有考试的学生名单
- r - 有条件地将嵌套(字符)列表中的项目排序/变异到 R 中的新列中
- python - 在 beautifulsoup 的列表中使用 len 时,Python 'int' 对象不可迭代
- r - R中的“索引”(在数学意义上)变量,以便在循环的每次迭代中选择正确的变量
- go - 在 Golang 中强制错误处理 - 或不允许忽略返回值
- html - CSS - 是否可以在盒子阴影上添加边框?
- batch-file - 如何使用批处理命令将新行添加到 .ini 文件中已存在的部分?
- c++ - OpenEXR RgbaOutputFile 在 Nuke 中被翻转