问题1:使用scrollIntoView和scrollTo去设置定位
问题:使用scrollIntoView方法将数据滚动到页面底部,可能存在兼容性问题
1.在安卓手机上,scrollIntoView方法时,可能会存在点击穿透的问题,当元素滚动到指定的位置后,原本的点击事件仍然会触发,会导致意外结果 2.在ios上,功能基本上可以实现,但是平滑的滚动效果可能无法正常工作,可以到指定位置,但无法提供预期的滚动效果
解决方案:1.使用scrollTo来实现,通过计算位置,来滚动定位,当高度不足时,scrollInto会滚动到,滚动内容的底部
问题2:获取点击元素的方式
解决方案:1.通过点击获取当前点击的索引,通过索引获取元素
点击操作时,记录当前点击的索引index,返回列表通过索引寻找点击元素
let getClickItem = document.querySelectorAll('.itemClass')[index]
2.通过元素属性获取当前元素
在html循环生成dom时,给每一个item添加一个唯一的标识idflag=‘’
在点击跳转时记录点前点击元素的id,
let getClickItem = document.querySelectorAll([idflag='${id}'])
注意: 1.可以将document换成
this.$el,好处将查找属性[idflag='${id}']的范围锁定到当前vue,减少html中存在属性重复,导致的获取元素不准确的情况 2.使用属性选择器,并且属性值为变量时,就得加‘’
问题3:关于获取高度offsetTop的知识点
offsetTop是计算当前盒子距离offsetParent顶部的距离
学到知识点:关于定位父级offsetParent的定义
定位父级offsetParent的定义:与当前元素最近的经过定位(position值不为static)的父级元素
情况1:元素自身有fixed定位,offsetParent值为null,注意:火狐浏览器有兼容性问题
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>offsetParent</title>
<style>
.off {
position: fixed;
top: 70px;
left: 70px;
border: 1px solid rgb(255, 204, 0);
}
</style>
</head>
<body>
<div class="par">
<button class="off">我想找一下他的父级盒子</button>
</div>
</body>
<script>
let a = document.querySelector('.off')
function clickTrad() {
console.log(a.offsetParent)
}
a.addEventListener('click', function () {
clickTrad()
})
</script>
</html>
情况2:元素自身无fixed定位,并且父级都没有经过定位,offsetParent为body
<style>
.off {
border: 1px solid rgb(255, 204, 0);
}
</style>
<body>
<div class="par">
<button class="off">我想找一下他的父级盒子</button>
</div>
</body>
<script>
let a = document.querySelector('.off')
function clickTrad() {
console.log(a.offsetParent)
}
a.addEventListener('click', function () {
clickTrad()
})
</script>
</html>
情况3:元素自身无fixed定位,且父级元素存在经过定位的元素,offsetParent的结果为离自身元素最近的经过定位的父级元素
.par {
position: fixed;
top: 70px;
left: 70px;
height: 100px;
border: 1px solid rgb(255, 204, 0);
}
</style>
</head>
<body>
<div class="par">
<button class="off">我想找一下他的父级盒子</button>
</div>
</body>
<script>
let a = document.querySelector('.off')
function clickTrad() {
console.log(a.offsetParent)
}
a.addEventListener('click', function () {
clickTrad()
})
</script>
</html>
情况4:body元素的parentNode是null
console.log(document.body.offsetParent);