Element.scrollIntoView() 和 document.elementFromPoint ()
Element.scrollIntoView()
element.scrollIntoView(); // 等同于element.scrollIntoView(true)
element.scrollIntoView(alignToTop); // Boolean型参数
/* alignToTop: 一个Boolean值:
如果为true,元素的顶端将和其所在滚动区的可视区域的顶端对齐。
相应的 scrollIntoViewOptions: {block: "start", inline: "nearest"}。
这是这个参数的默认值。
如果为false,元素的底端将和其所在滚动区的可视区域的底端对齐。
相应的scrollIntoViewOptions: {block: "end", inline: "nearest"}。
*/
Document.elementFromPoint(x, y)
demo

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
html,
body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
ul,
li {
margin: 0;
padding: 0;
list-style-type: none;
}
.list-content {
width: 100%;
position: relative;
font-size: 14px;
}
.sublist-alphabet {
position: fixed;
width: 14px;
right: 14px;
top: 28px;
}
.sublist-alphabet li {
width: 14px;
height: 14px;
line-height: 14px;
text-align: center;
border-radius: 50%;
margin: 5px 0;
}
.main-content li {
width: 100%;
margin: 10px;
font-size: 16px;
}
.main-content li div {
width: 100%;
height: 20px;
line-height: 20px;
}
.main-content li div ~ div {
border-top: 1px solid red;
}
.sublist-alphabet .active {
color: rgb(235, 17, 119);
background-color: #ccc;
}
.main-content .active {
background-color: aqua;
}
</style>
</head>
<body>
<div class="list-content">
<!-- 字母表 -->
<ul class="sublist-alphabet">
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
<li>f</li>
<li>g</li>
</ul>
<!-- 内容列表 -->
<ul class="main-content">
<li>
<div>aaaaaaaaaaaaaaaaa1</div>
<div>aaaaaaaaaaaaaaaaa2</div>
<div>aaaaaaaaaaaaaaaaa3</div>
<div>aaaaaaaaaaaaaaaaa1</div>
<div>aaaaaaaaaaaaaaaaa2</div>
<div>aaaaaaaaaaaaaaaaa3</div>
<div>aaaaaaaaaaaaaaaaa1</div>
<div>aaaaaaaaaaaaaaaaa2</div>
<div>aaaaaaaaaaaaaaaaa3</div>
<div>aaaaaaaaaaaaaaaaa1</div>
<div>aaaaaaaaaaaaaaaaa2</div>
<div>aaaaaaaaaaaaaaaaa3</div>
<div>aaaaaaaaaaaaaaaaa1</div>
<div>aaaaaaaaaaaaaaaaa2</div>
<div>aaaaaaaaaaaaaaaaa3</div>
<div>aaaaaaaaaaaaaaaaa1</div>
<div>aaaaaaaaaaaaaaaaa2</div>
<div>aaaaaaaaaaaaaaaaa3</div>
<div>aaaaaaaaaaaaaaaaa1</div>
<div>aaaaaaaaaaaaaaaaa2</div>
<div>aaaaaaaaaaaaaaaaa3</div>
<div>aaaaaaaaaaaaaaaaa1</div>
<div>aaaaaaaaaaaaaaaaa2</div>
<div>aaaaaaaaaaaaaaaaa3</div>
<div>aaaaaaaaaaaaaaaaa1</div>
<div>aaaaaaaaaaaaaaaaa2</div>
<div>aaaaaaaaaaaaaaaaa3</div>
</li>
<li data-type="b">
<div>bbbbbbbbbbbbbbbbb1</div>
<div>bbbbbbbbbbbbbbbbb2</div>
<div>bbbbbbbbbbbbbbbbb3</div>
<div>bbbbbbbbbbbbbbbbb1</div>
<div>bbbbbbbbbbbbbbbbb2</div>
<div>bbbbbbbbbbbbbbbbb3</div>
<div>bbbbbbbbbbbbbbbbb1</div>
<div>bbbbbbbbbbbbbbbbb2</div>
<div>bbbbbbbbbbbbbbbbb3</div>
<div>bbbbbbbbbbbbbbbbb1</div>
<div>bbbbbbbbbbbbbbbbb2</div>
<div>bbbbbbbbbbbbbbbbb3</div>
<div>bbbbbbbbbbbbbbbbb1</div>
<div>bbbbbbbbbbbbbbbbb2</div>
<div>bbbbbbbbbbbbbbbbb3</div>
<div>bbbbbbbbbbbbbbbbb1</div>
<div>bbbbbbbbbbbbbbbbb2</div>
<div>bbbbbbbbbbbbbbbbb3</div>
</li>
<li data-type="c">
<div>ccccccccccccccccc1</div>
<div>ccccccccccccccccc2</div>
<div>ccccccccccccccccc3</div>
<div>ccccccccccccccccc1</div>
<div>ccccccccccccccccc2</div>
<div>ccccccccccccccccc3</div>
<div>ccccccccccccccccc1</div>
<div>ccccccccccccccccc2</div>
<div>ccccccccccccccccc3</div>
<div>ccccccccccccccccc1</div>
<div>ccccccccccccccccc2</div>
<div>ccccccccccccccccc3</div>
<div>ccccccccccccccccc1</div>
<div>ccccccccccccccccc2</div>
<div>ccccccccccccccccc3</div>
<div>ccccccccccccccccc1</div>
<div>ccccccccccccccccc2</div>
<div>ccccccccccccccccc3</div>
</li>
<li data-type="d">
<div>ddddddddddddddddd1</div>
<div>ddddddddddddddddd2</div>
<div>ddddddddddddddddd3</div>
<div>ddddddddddddddddd1</div>
<div>ddddddddddddddddd2</div>
<div>ddddddddddddddddd3</div>
<div>ddddddddddddddddd1</div>
<div>ddddddddddddddddd2</div>
<div>ddddddddddddddddd3</div>
<div>ddddddddddddddddd1</div>
<div>ddddddddddddddddd2</div>
<div>ddddddddddddddddd3</div>
<div>ddddddddddddddddd1</div>
<div>ddddddddddddddddd2</div>
<div>ddddddddddddddddd3</div>
<div>ddddddddddddddddd1</div>
<div>ddddddddddddddddd2</div>
<div>ddddddddddddddddd3</div>
</li>
<li data-type="e">
<div>eeeeeeeeeeeeeeeee1</div>
<div>eeeeeeeeeeeeeeeee2</div>
<div>eeeeeeeeeeeeeeeee3</div>
<div>eeeeeeeeeeeeeeeee1</div>
<div>eeeeeeeeeeeeeeeee2</div>
<div>eeeeeeeeeeeeeeeee3</div>
<div>eeeeeeeeeeeeeeeee3</div>
<div>eeeeeeeeeeeeeeeee3</div>
<div>eeeeeeeeeeeeeeeee3</div>
<div>eeeeeeeeeeeeeeeee3</div>
<div>eeeeeeeeeeeeeeeee3</div>
<div>eeeeeeeeeeeeeeeee3</div>
<div>eeeeeeeeeeeeeeeee3</div>
<div>eeeeeeeeeeeeeeeee3</div>
</li>
<li data-type="f">
<div>fffffffffffffffff1</div>
<div>fffffffffffffffff2</div>
<div>fffffffffffffffff3</div>
<div>fffffffffffffffff3</div>
<div>fffffffffffffffff3</div>
<div>fffffffffffffffff3</div>
<div>fffffffffffffffff3</div>
<div>fffffffffffffffff3</div>
<div>fffffffffffffffff3</div>
<div>fffffffffffffffff3</div>
</li>
<li data-type="g">
<div>ggggggggggggggggg1</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg2</div>
<div>ggggggggggggggggg3</div>
</li>
</ul>
</div>
<script>
let list = document.querySelectorAll('.sublist-alphabet li')
let contentList = document.querySelectorAll('.main-content li')
list.forEach((item, index) => {
list[index].onclick = () => {
const lastIndex = sessionStorage.getItem('lastIndex') || ''
if(lastIndex) {
contentList[lastIndex].classList.remove('active')
list[lastIndex].classList.remove('active')
}
contentList[index].scrollIntoView(true)
contentList[index].classList.add('active')
list[index].classList.add('active')
sessionStorage.setItem('lastIndex', index)
}
})
</script>
</body>
</html>
Element.scrollIntoView() 和 document.elementFromPoint ()的更多相关文章
- Element.scrollIntoView()
Element.scrollIntoView() 方法让当前的元素滚动到浏览器窗口的可视区域内 语法 element.scrollIntoView(); element.scrollIntoView( ...
- js的Element.scrollIntoView的学习
1.Element.scrollIntoView() 该方法让当前元素滚动到浏览器窗口的可是区域内: 2.语法: element.scrollIntoView();//等同于element.sc ...
- document.elementFromPoint在IE8下无法稳定获取当前坐标元素的解决方法
document.elementFromPoint(e.clientX, e.clientY) document.elementFromPoint(e.clientX, e.clientY) 执行2次 ...
- 元素在当前窗口可视的区域---Element.scrollIntoView()
element.scrollIntoView(); // 等同于element.scrollIntoView(true) element.scrollIntoView(alignToTop); // ...
- cvc-elt.1: Cannot find the declaration of element 'beans'Failed to read schema document 'http://www.springframework.org/schema/beans/spring- beans-3.0.xsd'
Multiple annotations found at this line: - cvc-elt.1: Cannot find the declaration of element 'beans' ...
- javascript高级程序设计---document节点
document节点是文档的根节点,每张网页都有自己的document节点,window.document就是指向这个节点.只要浏览器开始载入文档,这个节点就开始了 对于HTML文档来说,docume ...
- (88)Wangdao.com第二十一天_JavaScript 元素节点Element 节点
Element 节点 (元素节点) 是一组对象 对应网页的 HTML 元素 每一个 HTML 元素,在 DOM 树上都会转化成一个 Element 节点对象(以下简称元素节点) 所有元素节点的 nod ...
- (87)Wangdao.com第二十天_JavaScript document 节点对象
document 节点对象, 代表整个文档,每张网页都有自己的 document 对象. window.document 当浏览器开始加载文档时就存在了 正常的网页使用 document 或者 win ...
- scrollIntoView()的用法
scrollIntoView是一个与页面(容器)滚动相关的API(官方解释),该API只有boolean类型的参数能得到良好的支持(firefox 36+都支持),所以在这里只讨论参数Boolean类 ...
随机推荐
- ss性能
ss是Socket Statistics的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信 ...
- lambda表达式-很好---《转载》
Lambda表达式详解 前言 1.天真热,程序员活着不易,星期天,也要顶着火辣辣的太阳,总结这些东西. 2.夸夸lambda吧:简化了匿名委托的使用,让你让代码更加简洁,优雅.据说它是微软自c#1.0 ...
- python2学习------基础语法3(类、类的继承、类成员函数、防御式编程)
1.类的定义以及实例化 # 类定义 class p: """ this is a basic class """ basicInfo={&q ...
- 19 包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 思路:一个栈存普通元素,一个最小栈存放目前位置最小的元素,只在压入的时候判断是否为空以及最小元素,其他情况正常处理 ...
- mysql 添加索引语句
1.PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2. ...
- FPGA调试技巧(Quartus 15.1 Standard平台)
1.在SignalTap II Logic Analyzer(stp)观测信号,需要将待观察寄存器.网络节点的综合器属性设为synthesis noprune和synthesis keep,防止综合器 ...
- 针对Quartus IP Core的MIF文件格式小记
Quartus里面的ROM IP核进行内容分配,需要在Wizard里面指定.mif文件. 本文有关细节和详细说明,请参照Quartus Prime 帮助文档v15.1 一个常见的mif文件如下所示: ...
- Vuex源码分析(转)
当我们用vue在开发的过程中,经常会遇到以下问题 多个vue组件共享状态 Vue组件间的通讯 在项目不复杂的时候,我们会利用全局事件bus的方式解决,但随着复杂度的提升,用这种方式将会使得代码难以维护 ...
- Spring入门之三-------SpringIoC之Scopes
一.singleton和prototype public class Bean1 { public Bean1() { System.out.println(this.getClass().getSi ...
- 解决Elasticsearch索引只读
今天添加索引时发现kibana添加索引不生效,页面也没有报错,没有创建成功只是一闪而过. 另外发现各项目日志与当前时间差异很大,filebeat一直报错io timeout 具体报错如下: fileb ...