CSS scroll-behavior

本文介绍了CSS中scroll-behavior属性的用法,包括如何实现平滑滚动效果,以及如何通过JavaScript修改URL中的hash来触发滚动。文章还提供了代码示例,展示了如何在实际项目中应用此属性。

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 添加!!!不然没有效果的
在这里插入图片描述

CSS 中的 `scroll-behavior` 属性用于控制页面或元素滚动行为的平滑程度。通过设置该属性,可以让页面在跳转锚点或通过 JavaScript 滚动时,呈现出平滑过渡的效果,而不是瞬间跳转[^1]。 ### `scroll-behavior` 的作用 - **平滑滚动**:当用户点击一个锚点链接或通过 JavaScript 滚动页面时,元素的滚动行为会以动画的形式完成,而不是立即跳转到目标位置。 - **增强用户体验**:平滑的滚动效果可以提升网站的交互体验,使页面过渡更加自然。 - **控制滚动行为**:开发者可以指定哪些容器或页面需要平滑滚动,哪些需要默认行为。 ### `scroll-behavior` 的使用方式 #### 语法 ```css scroll-behavior: auto | smooth; ``` - **auto**:默认值,滚动行为是瞬间完成的。 - **smooth**:滚动行为以平滑的方式完成。 #### 应用范围 该属性通常应用于 `html` 元素来控制整个页面的滚动行为,也可以应用于具有滚动功能的块级元素(如设置了 `overflow` 的容器)。 #### 示例 ##### 全局平滑滚动(适用于整个页面) ```css html { scroll-behavior: smooth; } ``` ##### 局部平滑滚动(适用于特定容器) ```css .container { height: 300px; overflow-y: scroll; scroll-behavior: smooth; } ``` ##### HTML 锚点链接示例 ```html <a href="#section1">跳转到 Section 1</a> <div id="section1" style="margin-top: 1000px;"> <h2>Section 1</h2> </div> ``` 当点击链接时,页面会平滑滚动到目标位置。 ### 注意事项 - `scroll-behavior` 仅对通过锚点链接或 `scrollTo()` 等方法触发的滚动行为生效,对用户手动滚动没有影响。 - 如果需要对某个特定容器应用平滑滚动,确保该容器有明确的滚动区域(例如设置了 `overflow` 属性)。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值