html - 如何防止滚动减小块的宽度?
问题描述
我有一个小脚本,它使用块类和容器容器的文本添加块,但是当有很多块时,会出现一个滚动条并减小块的宽度 - 我怎样才能避免这种宽度变化
<!DOCTYPE html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.global.prod.min.js"></script>
</head>
<body>
<div id="app" class="container">
<div v-for="i in messages" :key="i" class="block">
{{ i }}
</div>
</div>
</body>
<script>
Vue.createApp({
data: () => ({
messages: [],
}),
mounted() {
setInterval(
function () {
this.messages.push(Math.random().toString(32).slice(2));
}.bind(this)
, 100)
},
}).mount('#app');
</script>
<style>
.container {
background: yellow;
height: 50vh;
width: 5vw;
overflow-x: hidden;
overflow-y: auto;
display: flex;
flex-direction: column;
align-items: center;
}
.container::-webkit-scrollbar {
width: 5vmin;
height: 100%;
background-color: black;
}
.container::-webkit-scrollbar-thumb {
background: red;
}
.block {
background: green;
width: 5vw;
}
</style>
</html>
可以减小块的宽度 - 例如,当滚动出现时,居中文本的位移会很明显。我可以做一个像 position: absolute ...
解决方案
简短的回答:你不能。没有本地方法可以禁用滚动消耗空间。
长答案和解决方法:只需再添加一个包装器overflow: hidden
,使内部容器比包装器大 17px(17px 是 Chrome、Windows 上的默认滚动条宽度。如果您愿意,可以使用例如 20px),将项目宽度设置为相等到包装器的宽度,所以当内部增长时 - 滚动会出现但会被隐藏。
请记住,这是一个糟糕的解决方案,因为您正在破坏默认的浏览器 UX,并且您的用户不会理解该块是可滚动的。因此,最好按照我之前描述的步骤添加一个虚拟滚动条,该滚动条至少会在悬停时出现。你可以检查它在流行的假滚动条插件中是如何工作的,例如这个。你也可以在你的应用程序中使用这些插件之一
推荐阅读
- r - 在 RMariaDB dbGetQuery 'where 子句'中粘贴变量 [1054]
- reactjs - 一旦用户登录和用户注销后如何在浏览器中禁用后退按钮?
- ios - 以编程方式将数据从 UITableView 推送到视图控制器
- python - 在 Wikipedia 上使用 BeautifulSoup 进行网页抓取
- mysql - MySQL 错误代码 3813:“列检查约束”,无法创建表
- java - 如何在spring boot ireport中从applicaiton.properties获取MySQL连接
- java - 错误 java.lang.IllegalStateException:位置无效
- python - social-app-django - 为 GoogleOAuth2 设置重定向 URL 不起作用?
- android-recyclerview - 片段中的回收器没有显示
- flutter - SolidBottomSheet 控制器示例 Flutter