当前位置: 首页 > news >正文

【前端】JS/JQ实现页面滚动控制

页面滚动条控制实现

我将创建一个包含多种滚动控制方式的页面,包括滚动到顶部、底部和指定位置的功能。

设计思路

  • 创建带有足够内容的页面,确保出现滚动条
  • 添加固定定位的滚动控制按钮
  • 实现平滑滚动效果
  • 添加滚动进度指示器
  • 使用现代CSS和少量JavaScript/jQuery

代码实现

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>页面滚动控制演示</title><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script><style>* {margin: 0;padding: 0;box-sizing: border-box;font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;}body {background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);color: #333;line-height: 1.6;}.container {max-width: 1200px;margin: 0 auto;padding: 20px;}header {text-align: center;padding: 60px 20px;background: linear-gradient(to right, #4b6cb7, #182848);color: white;border-radius: 10px;margin-bottom: 30px;box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);}h1 {font-size: 2.8rem;margin-bottom: 15px;text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);}.subtitle {font-size: 1.2rem;opacity: 0.9;max-width: 700px;margin: 0 auto;}.content {display: grid;grid-template-columns: 2fr 1fr;gap: 30px;}.main-content {background: white;padding: 30px;border-radius: 10px;box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);}.sidebar {background: white;padding: 30px;border-radius: 10px;box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);}h2 {color: #2c3e50;margin-bottom: 20px;padding-bottom: 10px;border-bottom: 2px solid #eee;}p {margin-bottom: 20px;font-size: 1.1rem;}.card {background: #f8f9fa;padding: 20px;border-radius: 8px;margin-bottom: 25px;border-left: 4px solid #4b6cb7;}.card h3 {color: #2c3e50;margin-bottom: 10px;}.scroll-controls {position: fixed;right: 30px;bottom: 30px;display: flex;flex-direction: column;gap: 10px;z-index: 1000;}.scroll-btn {width: 50px;height: 50px;border-radius: 50%;background: #4b6cb7;color: white;border: none;font-size: 20px;cursor: pointer;box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);transition: all 0.3s ease;display: flex;align-items: center;justify-content: center;}.scroll-btn:hover {background: #3a5795;transform: translateY(-3px);box-shadow: 0 6px 15px rgba(0, 0, 0, 0.3);}.scroll-btn:active {transform: translateY(1px);}.progress-container {position: fixed;top: 0;left: 0;width: 100%;height: 5px;background: rgba(255, 255, 255, 0.1);z-index: 1001;}.progress-bar {height: 5px;background: linear-gradient(to right, #4b6cb7, #182848);width: 0%;transition: width 0.1s ease;}.section {margin-bottom: 40px;padding: 25px;background: white;border-radius: 8px;box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);}.code-block {background: #2d3748;color: #e2e8f0;padding: 20px;border-radius: 8px;font-family: 'Courier New', monospace;overflow-x: auto;margin: 20px 0;}footer {text-align: center;padding: 30px;margin-top: 50px;background: #2c3e50;color: white;border-radius: 10px;}@media (max-width: 768px) {.content {grid-template-columns: 1fr;}.scroll-controls {right: 15px;bottom: 15px;}h1 {font-size: 2.2rem;}}</style>
</head>
<body><!-- 滚动进度条 --><div class="progress-container"><div class="progress-bar" id="progressBar"></div></div><div class="container"><header><h1>页面滚动控制演示</h1><p class="subtitle">使用JavaScript和jQuery实现平滑滚动到页面顶部、底部和指定位置</p></header><div class="content"><div class="main-content"><section class="section"><h2>滚动控制方法</h2><div class="card"><h3>滚动到顶部</h3><p>使用JavaScript或jQuery将页面滚动到最顶部。</p><div class="code-block">// JavaScript方法<br>window.scrollTo({ top: 0, behavior: 'smooth' });<br><br>// jQuery方法<br>$('html, body').animate({ scrollTop: 0 }, 'slow');</div></div><div class="card"><h3>滚动到底部</h3><p>滚动到页面最底部。</p><div class="code-block">// JavaScript方法<br>window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' });<br><br>// jQuery方法<br>$('html, body').animate({ scrollTop: $(document).height() }, 'slow');</div></div><div class="card"><h3>滚动到指定元素</h3><p>滚动到页面中的特定元素位置。</p><div class="code-block">// JavaScript方法<br>document.getElementById('elementId').scrollIntoView({ behavior: 'smooth' });<br><br>// jQuery方法<br>$('html, body').animate({ scrollTop: $('#elementId').offset().top }, 'slow');</div></div></section><section class="section"><h2>滚动事件监听</h2><p>通过监听滚动事件,我们可以实现各种效果,比如显示/隐藏返回顶部按钮、更新进度条等。</p><div class="code-block">// 监听滚动事件<br>window.addEventListener('scroll', function() {<br>&nbsp;&nbsp;// 更新进度条<br>&nbsp;&nbsp;const winScroll = document.body.scrollTop || document.documentElement.scrollTop;<br>&nbsp;&nbsp;const height = document.documentElement.scrollHeight - document.documentElement.clientHeight;<br>&nbsp;&nbsp;const scrolled = (winScroll / height) * 100;<br>&nbsp;&nbsp;document.getElementById("progressBar").style.width = scrolled + "%";<br>});</div></section><section class="section" id="targetSection"><h2>目标区域</h2><p>这是一个目标区域,你可以使用"滚动到此处"按钮直接滚动到这里。</p><p>页面滚动是网页设计中常见的交互方式,良好的滚动体验可以提升用户满意度。</p><p>平滑滚动效果通过CSS的scroll-behavior属性或JavaScript的scrollTo方法实现。</p></section><section class="section"><h2>更多内容区域</h2><p>这部分内容是为了增加页面高度,确保出现滚动条。</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p><p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p></section><section class="section"><h2>JavaScript与jQuery对比</h2><p>在现代Web开发中,原生JavaScript已经能够实现大部分jQuery的功能。然而,jQuery仍然因其简洁的语法和良好的兼容性而被广泛使用。</p><p>对于简单的滚动操作,两者都能很好地完成任务。选择使用哪种取决于项目需求和个人偏好。</p></section></div><div class="sidebar"><h2>滚动控制选项</h2><div class="card"><h3>立即体验</h3><p>尝试使用右侧的滚动控制按钮,体验不同的滚动效果。</p><p>按钮包括:</p><ul style="padding-left: 20px; margin-top: 10px;"><li>滚动到顶部</li><li>滚动到底部</li><li>滚动到目标区域</li></ul></div><div class="card"><h3>滚动行为</h3><p>现代浏览器支持平滑滚动行为,可以通过CSS属性控制:</p><div class="code-block" style="font-size: 0.9rem;">html {<br>&nbsp;&nbsp;scroll-behavior: smooth;<br>}</div><p>或者通过JavaScript的scrollTo方法实现:</p><div class="code-block" style="font-size: 0.9rem;">window.scrollTo({<br>&nbsp;&nbsp;top: 0,<br>&nbsp;&nbsp;behavior: 'smooth'<br>});</div></div></div></div><footer><p>页面滚动控制演示 &copy; 2023 - 使用JavaScript和jQuery实现</p></footer></div><!-- 滚动控制按钮 --><div class="scroll-controls"><button class="scroll-btn" id="scrollTop" title="滚动到顶部"></button><button class="scroll-btn" id="scrollToTarget" title="滚动到目标区域">⦿</button><button class="scroll-btn" id="scrollBottom" title="滚动到底部"></button></div><script>$(document).ready(function() {// 滚动到顶部$('#scrollTop').click(function() {$('html, body').animate({ scrollTop: 0 }, 800);});// 滚动到底部$('#scrollBottom').click(function() {$('html, body').animate({ scrollTop: $(document).height() }, 800);});// 滚动到目标区域$('#scrollToTarget').click(function() {$('html, body').animate({ scrollTop: $('#targetSection').offset().top - 20 }, 800);});// 更新进度条$(window).scroll(function() {const winScroll = $(window).scrollTop();const height = $(document).height() - $(window).height();const scrolled = (winScroll / height) * 100;$('#progressBar').css('width', scrolled + '%');});});</script>
</body>
</html>

功能说明

  1. 滚动控制按钮

    • 向上箭头:滚动到页面顶部
    • 圆点:滚动到目标区域
    • 向下箭头:滚动到页面底部
  2. 滚动进度条

    • 页面顶部有一个进度条,显示当前滚动位置
  3. 代码示例

    • 展示了使用JavaScript和jQuery实现滚动控制的不同方法
  4. 响应式设计

    • 页面布局适应不同屏幕尺寸

这个实现使用了少量jQuery代码来控制滚动,同时保持了页面的美观和功能性。您可以直接复制这段代码到HTML文件中运行,无需任何外部依赖(除了jQuery库)。

http://www.dtcms.com/a/578428.html

相关文章:

  • Javascript数组案例-生成柱形图
  • 盛雪竹的命运轨迹与菅纫姿的表演解析
  • javaFX AutoCompleteComboBox / AutoCompletionBinding 控件jar包下载
  • 天元建设集团有限公司分公司百度seo排名公司
  • 校园网站建设年度工作计划垂直门户网站怎么做
  • 贵阳网站开发哪家便宜中国家装公司十大排名
  • rk3568-android11-fan-pwm-temp
  • 比较好的设计网站推荐成都网站建设 工资
  • 建行网站济南电子简历手机版免费
  • 建设银行大冶支行网站wordpress如何改字体
  • 大连网站制作优选ls15227主题教育网站建立
  • 盐城优化办seo外链怎么做能看到效果
  • 金华品牌网站建设给孩子做衣服的网站
  • 江西师范大学两学一做专题网站运营和广告投放的区别
  • 深圳网站建设技术php怎么做视频网站
  • 21款m1 max升级到macOS 14——Sonoma
  • 基于Python的性能测试工具Locust
  • 华为云速建站可以做英文网站wordpress企业授权
  • 青海城乡建设网站设计公司画册模板
  • LeetCode 1128.等价多米诺骨牌对的数量
  • 服务器数据恢复—Raid5阵列热备盘同步失败,数据恢复揭秘
  • 网页站点不安全怎么办智能自助建站网站
  • 车载以太网 Switch自愈
  • 网站项目需求文档编程代码入门教学
  • 做新年公告图片的网站重庆重庆网站建设公司
  • 美团初期是怎么建网站厦门谷歌seo公司
  • 【Java】EasyExcel实现导入导出数据库中的数据为Excel
  • 网站建站行业新闻打开网站8秒原则
  • 【BFS 解决最短路问题】3. 单词接⻰(hard)
  • 霸州住房和城乡建设厅网站wordpress调用header