裁剪的3种方式,CSS 如何隐藏移动端的滚动条?

news/2025/3/17 17:17:07/文章来源:https://www.cnblogs.com/moranjl/p/18096102

在移动端开发中,经常会碰到需要横向滚动的场景,例如这样的

但很多时候是不需要展示这个滚动条的,也就是这样的效果,如下

你可能想到直接设置滚动条样式就可以了,就像这样

::-webkit-scrollbar {display: none;
}

目前来看好像没什么问题,但在某些版本的 iOS 上却无效(具体待测试),滚动条仍然出现。

那有没有其他方式可以解决这个问题呢?下面介绍几个方法

一、通过 overflow 隐藏

既然有时候修改滚动条样式无法解决,我们可以想办法把它隐藏。

下面是一个横向滚动列表

<div class="list"><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div>
</div>

简单修饰一下,让这个列表可以横向滚动

.list{display: flex;overflow: auto;gap: 10px;padding: 10px;
}
.item{width: 100px;height: 100px;background: royalblue;border-radius: 8px;flex-shrink: 0;
}

效果如下

通过overflow隐藏的方式很简单,我们需要一个父级

<div class="wrap"><div class="list"></div>
</div>

然后,将列表底部padding设置的稍微大一些,比如

.list{/**/padding-bottom: 20px;
}

可以看到列表下方的距离变大了,滚动条也更靠下了,效果如下

如何让整体尺寸仍然保持原有呢?答案是借助负margin,比如之前底部padding10,现在改成了20,所以需要-10margin

.list{/**/margin-bottom: -10px;
}

这样整体尺寸就正常了,不过滚动条仍然是可见的,只是出去了

最后只需要设置父级的 overflow为隐藏就可以了

.wrap{/**/overflow: hidden;
}

原理示意如下

这样就完美隐藏了滚动条

当然,不仅仅是 overflow,下面这种方式也可以实现超出隐藏

.wrap{/**/contain: paint;
}

这个属性比较新,可以控制元素在容器内的绘制规则,了解一下即可

developer.mozilla.org/z

二、通过 clip 裁剪

第一种方式需要借助父级的超出隐藏,需要额外一层,好像有点麻烦,有没有办法自身也可以裁剪呢?

那就是 clip-path

developer.mozilla.org/z

相信大家对这个属性应该很熟练了,非常直观的裁剪属性。

比如这种情况,只需要把滚动条的那一部分裁剪掉就可以了,这里要用到clip-pathinset方法

clip-path: inset()

这里简单介绍一下。inset最多可以传4个参数,分别表示裁剪掉距离上、右、下、左的部分

所以,要把滚动条隐藏就很简单了,只需要把下方的裁剪距离设置大于滚动条尺寸的值就行了,这里就用10px

.list{clip-path: inset(0 0 10px)
}

效果如下

一行代码轻松解决\~

三、通过 mask 遮罩

其实和 clip思路是一致的,只不过实现方式不一样。

关于 mask 遮罩,之前在多篇文章中都有提到,非常使用的小技巧,主要原理是显示遮罩图片不透明的部分,透明的则会被裁剪,示意如下

回到这里,我们只需要绘制一个不包含滚动条部分的纯色渐变就行了,可以直接绘制一个纯色渐变,然后设置背景尺寸,如下

.list{-webkit-mask: linear-gradient(red, red) 0 0/100% calc(100% - 10px) no-repeat;
}

原理示意如下

也能很好的隐藏滚动条

除此以外,mask 还可以很好的实现滚动边界渐隐的效果,只需要叠加一层从透明→纯色→透明的渐变就行了

.list{-webkit-mask: linear-gradient(to right, transparent, red 15px calc(100% - 15px), transparent),  linear-gradient(red, red) 0 0/100% calc(100% - 10px) no-repeat;-webkit-mask-composite: source-in;
}

就可以得到这样的效果

由于是遮罩实现,并不是简单的颜色覆盖,所以换一种背景颜色也可以很好的融合

四、总结一下

以上共介绍了 3 种方式来隐藏滚动条,各有千秋

  1. overflow兼容性最好,也最直观,符合大多数人思路,缺点是需要单独嵌套一层父级
  2. clip实现最简洁,也比较好理解,在本案例中最为推荐
  3. mask思路和clip,实现起来稍微复杂一点,还可以实现更为复杂的渐隐效果,能够掌握更好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/720363.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

golang使用OpenCC繁简转换

https://github.com/longbridgeapp/opencc main.go package mainimport ("fmt""log""github.com/longbridgeapp/opencc" )func main() {s2t, err := opencc.New("s2t")if err != nil {log.Fatal(err)}in := `我来测试一下简转繁`out, …

visual studio 插件开发 - 项目介绍

1.项目结构 创建步骤: 1.创建名为 xxxx 的 VSIX 项目。 可以通过搜索“vsix”在“新建项目”对话框中找到 VSIX 项目模板。2.项目打开时,添加名为 FirstCommand 的自定义命令项模板。创建好一个 vsix 项目后最简单的结构:XXXXPackage.cs 称为 Package 类。 Visual Studio 调…

ASP.NET Core应用程序9:使用内置的标签助手

ASP.NET Core 提供了一组内置的标签助手,可以应用最常用的元素转换。使用了内置的标签助手,就不必像前一章一样自己创建自定义标签助手。本章描述了基本的内置标签助手,并解释了它们是如何用于转换锚、链接、脚本和图像元素的。还解释了如何缓存内容部分以及如何根据应用程序…

自媒体--视频技巧

多个图片+文字做视频

mybatis - [07] 模糊查询

题记部分 (1)mapper类 List<User> getUserLike(String value); (2)mapper.xml <!-- 写法1 --> <select id="getUserLike" resultType="com.harley.pojo.User">select * from user where name like #{value} </select><!-- …

sqlserver 通过压缩bak文件实现从服务器还原数据库《数据差异数个小时》

十年河东,十年河西,莫欺少年穷 学无止境,精益求精 1、备份主服务器数据库并压缩public void DbBack(){var bakname = @"ChargeDB_" + DateTime.Now.ToString("yyyyMMdd") + ".bak";string filepath = @"D:\dbback\" + bakname;if (…

nuxt简单入门安装

参考:https://www.jianshu.com/p/fd99718a63e9 @目录概要具体流程小结 概要 听说直接使用vue写前端对百度的seo不够友好,于是便考虑使用nuxt生成静态化来处理 具体流程 首先你的本机环境要有npm,如下图然后可以使用npx安装nuxt,npx是npm5点几就支持的了,但是我这一开始还不…

工作记录02

1.升降摄像头项目踩坑,红外串口接收时,linux系统下使用read函数是非阻塞接收,当需要接收多字节数据时,会出现只接收到第一个字节的情况 解决办法:改为一次接收一个字节并且加入判断,当需要的数据都接收完全再进行处理或返回

IIS 安装和部署

1. 第一步 2. 第二步: 第三步,把下面这些全安装上 4, 第四步: 在控制面板,将查看方式修改为小图标 5. 找到 "管理工具" 有的电脑叫 "windos工具" 点击进入 6. 找到刚刚安装的IIS 7. 添加网站 8, 根据自己情况配置即可

pdf文件可以转成html网页吗?

目前我们工作或学习中使用最多的可能就是PDF格式的文档了,它虽然有很多好处,但是有时如果文档比较大,传送就比较麻烦,这时我们将其转换成HTML再发送就很方便了。那么pdf格式怎么转html格式呢? 方法一、使用在线pdf转html 如果不想下载软件的话,一些在线工具例如smallpdf中…

鸿蒙HarmonyOS实战-ArkTS语言基础类库(容器类库)

🚀前言 容器类库是指一组用于存储和管理数据的数据结构和算法。它们提供了各种不同类型的容器,如数组、链表、树、图等,以及相关的操作和功能,如查找、插入、删除、排序等。 容器类库还可以包含其他数据结构和算法,如堆、树、图等,以及相关的操作和功能,如排序、查找、…