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

CSS设置滚动条显示时机及样式

目录

一、背景

二、滚动条动态出现

2.1、默认滚动条

2.2、动态滚动条

2.3、滚动条样式

三、实际效果


一、背景

        首先,我们知道若子元素的内容高度超过父元素的高度时,超出的内容可以设置隐藏、显示或者是显示滚动条。有几种情况设置出现滚动条。

        第一种:直接在父元素的css样式中设置overflow-y: auto; 使内容出现滚动条,但是这样滚动条会一直显示,不太美观。

        第二章:在元素聚焦或鼠标移动到元素时显示滚动条,这种情况也有一个问题,就是动态出现的滚动条会挤兑子元素的内容,实际情况会造成子元素的内容跟着滚动条的出现而动态调整宽度的情况。

二、滚动条动态出现

2.1、默认滚动条

        基础的样式也很简单,其实就是在父元素的css样式中设置overflow-y: hidden; 默认滚动条隐藏,在父元素的伪类:hover 时修改overflow-y: auto; 如此滚动条就会在鼠标移动到父元素区域时,出现滚动条。

.messageView {flex: 1;width: 100%;height: 100%:scroll-behavior: smooth; /* 平滑滚动效果 */// 父元素默认隐藏滚动条overflow-y: hidden;
}
.messageView:hover {// hover到父元素时,显示滚动条overflow-y: auto;
}

2.2、动态滚动条

        前面也提到了,这种情况会动态出现的滚动条会挤压子元素。那么我们就需要在父元素里预留好滚动条的位置,这样子元素内容的宽度不会发生变化,滚动条也会出现的很自然。

        对父元素加上scrollbar-gutter: stable; 样式即可在父元素中预留滚动条的位置。大家可以自行试下两种情况的效果。

.messageView {flex: 1;width: 100%;height: 100%:scrollbar-gutter: stable; /* 预留滚动条位置 */scroll-behavior: smooth; /* 平滑滚动效果 */// 父元素默认隐藏滚动条overflow-y: hidden;
}
.messageView:hover {// hover到父元素时,显示滚动条overflow-y: auto;
}

2.3、滚动条样式

        在动态滚动条的基础上,我们可以使用滚动条伪元素去设置滚动条样式,比如,设置只显示滚动条轨道(通过设置滚动条背景颜色,使视觉上隐藏)。

.messageView {flex: 1;width: 100%;height: 100%:scrollbar-gutter: stable; /* 预留滚动条位置 */scroll-behavior: smooth; /* 平滑滚动效果 */// 父元素默认隐藏滚动条overflow-y: hidden;
}
.messageView:hover {// hover到父元素时,显示滚动条overflow-y: auto;
}
// 滚动条
.messageView::-webkit-scrollbar {// 贴合主题背景,视觉上隐藏background-color: white;// 宽高width: 5px;height: 5px;
}
// 滚动条轨道
.messageView::-webkit-scrollbar-thumb {background-color: gray;border-radius: 10px;
}

三、实际效果

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

相关文章:

  • R 语言 + 卒中 Meta 分析(续):机器学习 Meta 与结构方程 Meta 完整实现
  • STM32之IIC详解
  • GY-BMP280压强传感器完整工程stm32控制
  • 嵌入式滤波算法模块
  • 换公司如何快速切入软件项目工程
  • vant Overlay 遮罩层内元素无法滚动解决方案
  • 命令扩展与重定向
  • 【完整源码+数据集+部署教程】硬币分类与识别系统源码和数据集:改进yolo11-SWC
  • 【序列晋升】20 Spring Cloud Function 函数即服务(FaaS)
  • 明远智睿 RK3568 核心板:以硬核性能解锁多领域应用新可能
  • java_web 日志配置
  • KNN算法(K近邻算法)
  • leetcode 191 位1的个数
  • Maven 从 0 到 1:安装、配置与依赖管理一站式指南
  • Ubuntu下的压缩及解压缩
  • 基于SpringBoot的高校科研项目管理系统【2026最新】
  • 《生成式AI消费级应用Top 100——第五版》| a16z
  • Redis-分布式缓存
  • LBM——大型行为模型助力波士顿人形Atlas完成多任务灵巧操作:CLIP编码图像与语义,之后DiT去噪扩散生成动作
  • 中级统计师-统计实务-第二章 统计调查设计
  • 鸿蒙FA/PA架构:打破设备孤岛的技术密钥
  • PHP的md5()函数分析
  • Java 8核心特性详解:从Lambda到Stream的革命性升级
  • B树的概述以及插入逻辑
  • 淘宝四个月造了一个超越美团的“美团”
  • LeetCode - 283. 移动零
  • 应用转生APP:无需Root权限的应用双开和Xposed模块加载工具
  • 使用ansible临时命令完成以下操作
  • 如何去除edge浏览器的灰色边框
  • 临床研究三千问——如何将临床问题转换成科学问题(7)