来自张鑫旭2019-01-26 DOM 小测第 27 期 - 图1前端小测

题目

2019-01-26 DOM 小测第 27 期 - 图2

答案

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <title>不同滚动容器与滚动高度获取测试</title>
  7. <style>
  8. .result {
  9. position: fixed;
  10. pointer-events: none;
  11. /* 不会触发鼠标事件 */
  12. top: 0;
  13. left: 0;
  14. right: 0;
  15. padding: 8px;
  16. font-size: 12px;
  17. max-height: 100vh;
  18. white-space: pre-wrap;
  19. /*
  20. 连续的空白符会被保留。
  21. 在遇到换行符或者<br>元素,或者需要为了填充「行框盒子」时才会换行。
  22. */
  23. overflow: hidden;
  24. }
  25. </style>
  26. </head>
  27. <body>
  28. <div style="height:4000px;"></div>
  29. <div id="result" class="result">默认</div>
  30. <script>
  31. var result = window.document.getElementById('result');
  32. var logs = '';
  33. // window
  34. window.addEventListener('scroll', function () {
  35. // 浏览器窗体滚动高度
  36. var winScrollTop = window.pageYOffset || document.documentElement.scrollTop;
  37. // 浏览器窗体高度
  38. var winHeight = window.innerHeight || document.documentElement.clientHeight;
  39. if (winScrollTop > winHeight) {
  40. result.innerHTML = '返回顶部↑';
  41. }
  42. if (winScrollTop <= winHeight) {
  43. result.innerHTML = '默认';
  44. }
  45. });
  46. // 普通元素
  47. dom.addEventListener('scroll', function () {
  48. // 普通元素滚动高度
  49. var winScrollTop = dom.scrollTop;
  50. // 普通元素高度
  51. var winHeight = dom.clientHeight;
  52. if (winScrollTop > winHeight) {
  53. result.innerHTML = '返回顶部↑';
  54. }
  55. if (winScrollTop <= winHeight) {
  56. result.innerHTML = '默认';
  57. }
  58. });
  59. </script>
  60. </body>
  61. </html>