javascript - 过渡标志只在它向左滑动时而不是在它回到原来的位置时
问题描述
我正在用 wordpress 中的自定义主题构建我的主页。
我把我的标志放在页面中间,当我滚动到它时我需要它固定。我用这段代码实现了它:
var stickyLogo = jQuery('.logo_centered').offset().top;
jQuery(window).scroll(function() {
if (jQuery(window).scrollTop() > stickyLogo) {
jQuery('.logo_centered').addClass('fixato');
}
else {
jQuery('.logo_centered').removeClass('fixato');
}
});
它有效。
单击它以隐藏它并打开幻灯片菜单时,我还添加了一个过渡。
jQuery('.logo_centered').on('click', function(){
jQuery('.logo_centered').toggleClass('hideme')
})
虽然这是菜单打开
jQuery('.centrato').on('click', function(){
jQuery('.overlay').toggleClass('overlay--active')
})
jQuery('.overlay').on('click', function(){
if(jQuery('.overlay').hasClass('overlay--active')){
jQuery('.overlay').removeClass('overlay--active')
}
})
jQuery('.overlay').on('click', function(){
jQuery('.logo_centered').toggleClass('pushme');
})
jQuery('.overlay').on('click', function(){
if(jQuery('.logo_centered').hasClass('hideme')){
jQuery('.logo_centered').removeClass('hideme')
jQuery('.logo_centered').removeClass('pushme')
}
})
但是,正如您在我的演示网站上看到的那样:http: //arioldigioieleria.it/test/
动画在固定和返回时也会触发。我怎样才能避免这种情况?
解决方案
您可以通过使过渡特定于水平移动来禁用滚动时的过渡:
.logo_centered {
transition:left 0.5s;
}
顺便说一句,现在仅使用带有position:sticky
. 你可能会发现它比 JavaScript 更易于维护:
粘性定位的元素被视为相对定位,直到它超过指定的阈值,此时它被视为固定,直到它到达其父元素的边界。
-MDN _
推荐阅读
- cloudflare - 为什么 Cloudflare 会导致间歇性加载问题?尤其是当我浏览得太快时
- java - 如何在 AWS Lambda 转换后将事件放回 Kinesis Firehose?
- python - 如何在熊猫中创建嵌套数据框
- c - 使用 mkdir 过程 AS400/IBMi 在 IFS 中创建目录
- javascript - 添加离子日期时间前缀和后缀
- ios - 首选项:iPhone/iPad 上快捷方式应用中 Instagram 设置的根 URL
- c - 内核 C++ 中的鼠标驱动程序,如何创建和使用它?
- java - 是否有在 2 个线程(1 个读取器 - 1 个写入器)之间同步访问 Map 的最佳方法
- signalr - 带有 asp.net 核心集线器的 SignalR 服务
- mockito - 在单元测试期间制作 mockito 以使用真正的 Log4j