JS如何获得元素到可视网页区域的top值

JavaScript022

JS如何获得元素到可视网页区域的top值,第1张

就是获取当前元素的offsetTop值,减去可视区域的高度和窗口卷起的高度。

$("div").offset() - $(window).scrollTop() - $(window).height()

一、获取选中的文字

使用window.getSelection().toString()方法来获取选中的文字,在选中文字鼠标松开后会获取到选中的文字:

<p>可以选中一些文本</p>

<script type="text/javascript">

let selected = window.getSelection().toString()

console.log(selected)

if(selected != '' &&selected != null){

window.alert('要百度搜索吗?')

}

</script>

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

二、让内容可编辑

第一步:为元素设置contenteditable属性并赋值为true,让元素具有可编辑功能,当将其值赋值为false时不可编辑;

第二步:伪元素设置spellcheck属性,并赋值为true,即开启拼写检查,设置值为false时关闭拼写检查

**注意:**浏览器定义了多文本编辑命令,使用dicument,execCommand()可以调用(比如copy,selectAll等命令;在使用execCommand()方法时,界面元素的contenteditable属性值不能设置为true,否则会影响copy命令)

<div contenteditable="true" spellcheck="true"></div>

<button>提交</button>

<script type="text/javascript">

let div = document.querySelector('div')

let btn = document.querySelector('button')

btn.onclick = function(){

console.log(div.innerText)

}

</script>

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

三、JS动画

原理:通过定时器setInterval()不断移动盒子位置。

例:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<style type="text/css">

.box1{

width: 200px

height: 200px

position: absolute

top: 50px

background-color: #3B78DD

}

.box2{

width: 100px

height: 100px

position: absolute

top: 400px

background-color: lightblue

}

button{

position: absolute

top: 300px

}

</style>

</head>

<body>

<div class="box1"></div>

<div class="box2"></div>

<button>点击移动box2</button>

<script type="text/javascript">

let box1 = document.querySelector('.box1')

let box2 = document.querySelector('.box2')

let btn = document.querySelector('button')

function animate(obj, disdance, speed){

clearInterval(obj.timer)

obj.timer = setInterval(function(){

let moving = obj.offsetLeft

moving += 1

obj.style.left = moving + 'px'

if(moving >disdance){

clearInterval(obj.timer)

}

},speed)

}

animate(box1,300,5)

btn.onclick = function(){

animate(box2,400,3)

}

</script>

</body>

</html>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

getElementById()

// 通过ID来取得元素,所以只能访问设置了ID的元素,比如说有一个DIV的ID为docid:

// <div id="docid"></div>

// 那么就可以用getElementById("docid")来获得这个元素。 getElementsByName()

// 通过NAME来获得元素,DOCUMENT中元素的NAME可以重复,如果一个文档中有两个以上的标// 签NAME相同,那么getElementsByName()就可以取得这些元素组成一个数组。

// 比如有两个DIV:

// <div name="docname" id="docid1"></div>

// <div name="docname" id="docid2"></div>

// 那么可以用getElementsByName("docname")获得这两个DIV,用getElementsByName("docname")[0]访问第一个DIV。 getElementsByTagName()

// 通过TAGNAME(标签名称)来获得元素,一个DOCUMENT中会有相同的标签,所以这个方法也是取得一个数组。

// 可以用 getElementsByTagName("div")来访问它们,用getElementsByTagName("div")[0]访问第一个 DIV,用getElementsByTagName("div")[1]访问第二个DIV。