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

CSS scroll-behavior

scroll-behavior

当滚动通过导航或者 CSSOM 滚动 API 触发时的滚动行为

只有两个关键字属性值.

  • auto: 立刻滚动到目标位置
  • smooth: 平滑的滚动.

📕注意除了上面两种滚动触发外的任何滚动, 比如用户使用鼠标滚动, 都不会被这个属性影响.

当这个属性在定义在 <html> 标签, 其作用域整个视窗. 如果这个属性定义在 <body> 将不会作用于视窗.

📕浏览器可以忽略这个属性的值😅

先看代码

<body>
  <nav>
    <a href="#section1">1</a>
    <a href="#section2">2</a>
    <a href="#section3">3</a>
  </nav>
  <section class="container">
    <section class="section" id="section1">1</section>
    <section class="section" id="section2">2</section>
    <section class="section" id="section3">3</section>
  </section>
</body>
.container {
  height: 200px;
  border: 1px solid #111;
  overflow-y: scroll;
  scroll-behavior: smooth;
}
.section {
  font-size: 48px;
  text-align: center;
  height: 100%;
  line-height: 200px;
}

上面我们是通过 <a> 标签的 href 属性链接到页面的不同位置从而实现的滚动.
在这里插入图片描述

接下来通过 JavaScript 修改网页 URL 中的 hash 部分实现滚动, 再来看效果
在这里插入图片描述

📕不仅仅纵向可以滚动, 横向也可以哦
在这里插入图片描述

回到顶部

因此, 可以实现简单的回到顶部的效果. 只需要将 <a> 标签的 href 属性设置为 # 或者 #top 即可

<div class="back-to-top">
  <a href="#">⬆️</a>
</div>
.back-to-top {
  width: 50px;
  height: 50px;
  text-align: center;
  position: fixed;
  bottom: 2rem;
  right: 2rem;
  border-radius: 50%;
  background-color: #e74c3c;
  box-shadow: 1px 1px 10px 10px rgba(0, 0, 0, .1);
}
.back-to-top a {
  line-height: 50px;
}
html {
  scroll-behavior: smooth;
}

👷注意, 如果要实现平滑的滚动, 一定要给 html 添加 scroll-behavior 而不是给 body 添加!!!不然没有效果的
在这里插入图片描述

相关文章:

  • javaEE幼儿园学生管理系统
  • Android studio升级到最新版获取SHA1时遇到的问题
  • POSTGRESQL中的groupping函数详解
  • 定期清理执行垃圾回收代码
  • 我画了25张图展示线程池工作原理和实现原理
  • 第13章Linux实操篇-进程管理(重点)
  • SSM基于微信小程序的实验室安全管理系统毕业设计-附源码031527
  • mac安装nacos2.0.3单机启动
  • kali渗透测试_HTTPS攻击
  • 【设计模式】25.行为型模式-解释器(Interpreter)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • 计算分子进化-搞懂PAML的正选择分析
  • VMware vSphere 8 发布(含下载)
  • A. Binary Literature ( 思维构造 + 抽屉原理 )
  • 【大话设计模式】工厂方法模式
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Android系统模拟器绘制实现概述
  • angular2开源库收集
  • Angular6错误 Service: No provider for Renderer2
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Babel配置的不完全指南
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Java 多线程编程之:notify 和 wait 用法
  • Linux后台研发超实用命令总结
  • mysql_config not found
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • node入门
  • oldjun 检测网站的经验
  • PHP 7 修改了什么呢 -- 2
  • Swoft 源码剖析 - 代码自动更新机制
  • unity如何实现一个固定宽度的orthagraphic相机
  • 构造函数(constructor)与原型链(prototype)关系
  • 前端学习笔记之观察者模式
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 学习ES6 变量的解构赋值
  • gunicorn工作原理
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #NOIP 2014#Day.2 T3 解方程
  • #stm32驱动外设模块总结w5500模块
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (pojstep1.1.2)2654(直叙式模拟)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二)丶RabbitMQ的六大核心
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一)基于IDEA的JAVA基础10
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转) ns2/nam与nam实现相关的文件
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析