1、使用mouseenter滑过时出现的闪烁问题
问题:滑过某一元素时,元素下方出现一个遮罩层,滑出隐藏,但是遮罩层有时候会闪烁
分析:遮罩层出来后,如果鼠标放在遮罩层上,就离开了原来的元素,触发了mouseleave事件,但是此时遮罩层也随之消失,同时鼠标又放在了元素上,又立刻触发 mouseenter事件,遮罩层又出现,如此往复,就出现了闪烁的效果……
解决:在遮罩层的样式上加上一个样式{pointer-events: none;}
属性介绍:允许元素不接收悬停/单击事件,而事件将发生在其后面的任何内容上。
阻止用户的点击动作产生任何效果
阻止缺省鼠标指针的显示
阻止CSS里的hover和active状态的变化触发事件
阻止JavaScript点击动作触发的事件
注意事项:
子元素可以声明pointer-events来解禁父元素的阻止鼠标事件限制。
如果你对一个元素设置了click事件监听器,然后你移除了pointer-events样式声明,或把它的值改变为auto,监听器会重新生效。基本上,监听器会遵守pointer-events的设定。
2、判断页面是否有滚动条
function hasScrollbar() {
return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);
}
返回true就是有,返回false就是没有
获取某元素内滚动条的高度:$(dom).scrollTop()
设置某元素内滚动条的高度:$(dom).scrollTop(90)
获取页面滚动条的高度:$(document).scrollTop()
实时获取页面滚动条操作:
$(document).scroll(function(){ //页面加载时,获取滚动条初始高度
var distance = $(document).scrollTop(); //获取滚动条初始高度的值 :0
console.log(distance); //打印滚动条不同高度的位置的值
if(distance == 0) { //当滚动条高度为0时
removeActive('.Creative') //移除某某css
} else {
shakeActive('.Creative') //添加某某css
}
})
3、滑动到顶部操作
- 设置滚动条高度为0即可
$('html').scrollTop(0);
$('html').animate({scrollTop:'0px'}, 500);
- 延伸出来的可以是:点击某个按钮,界面滑动到具体的位置:还是设置滚动条的位置即可
1)顶部没有其他的元素
可以用a标签的锚点操作
可以用设置滚动条的位置
2)顶部除了滑动的文档,还有其他的元素
如果用锚点操作需要刨除顶部元素的位置,比较麻烦
==>所以这种还是设置滚动条的位置更好
获取距离父级的高度,把这个高度设置给滚动条即可
var oneTop = $("dom").offset().top;
$('html').animate({scrollTop: oneTop+'px'}, 500);
补充:
div没定位时距离父级的距离:$(dom).offset().top / left
div有定位时距离父级的距离:$(dom).position().top / left【div有定位,绝对定位】
//滚动到底部
var h = $(document).height()-$(window).height();
$(document).scrollTop(h);
4、判断是第一次打开界面还是刷新
if(!window.name){
alert("第一次开这个窗口!name值"+ window.name);
window.name = 'test';
}else{
alert('刷新操作 name值:'+ window.name);
}