来自张鑫旭前端小测
- 本次直播答疑录播地址:https://www.bilibili.com/video/av41743974/
- 本次直播答疑文字版:https://www.zhangxinxu.com/wordpress/2019/01/dom-quiz-27-window-scroll/
题目
答案
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>不同滚动容器与滚动高度获取测试</title>
<style>
.result {
position: fixed;
pointer-events: none;
/* 不会触发鼠标事件 */
top: 0;
left: 0;
right: 0;
padding: 8px;
font-size: 12px;
max-height: 100vh;
white-space: pre-wrap;
/*
连续的空白符会被保留。
在遇到换行符或者<br>元素,或者需要为了填充「行框盒子」时才会换行。
*/
overflow: hidden;
}
</style>
</head>
<body>
<div style="height:4000px;"></div>
<div id="result" class="result">默认</div>
<script>
var result = window.document.getElementById('result');
var logs = '';
// window
window.addEventListener('scroll', function () {
// 浏览器窗体滚动高度
var winScrollTop = window.pageYOffset || document.documentElement.scrollTop;
// 浏览器窗体高度
var winHeight = window.innerHeight || document.documentElement.clientHeight;
if (winScrollTop > winHeight) {
result.innerHTML = '返回顶部↑';
}
if (winScrollTop <= winHeight) {
result.innerHTML = '默认';
}
});
// 普通元素
dom.addEventListener('scroll', function () {
// 普通元素滚动高度
var winScrollTop = dom.scrollTop;
// 普通元素高度
var winHeight = dom.clientHeight;
if (winScrollTop > winHeight) {
result.innerHTML = '返回顶部↑';
}
if (winScrollTop <= winHeight) {
result.innerHTML = '默认';
}
});
</script>
</body>
</html>