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

width设置100vh但出现横向滚动条的问题

在去做flex左右固定,中间自适应宽度的布局时, 发现这样一个问题:

就是我明明是宽度占据整个视口, 但是却多出了横向的滚动条

效果是这样的

在这里插入图片描述

把width改成100%,就没有滚动条了

原因:

body是有默认样式的, 会有一定的默认边距, 把默认边距清除就是正常的了

同时, 如果把高度设置超过100vh, width: 100vw 时,元素的宽度会占据整个视口的宽度,包括滚动条的宽度

这时,滚动条会占据一定的宽度,这会导致元素的实际宽度超过视口的可见宽度,从而出现横向滚动条。

为什么设置为width: 100%时就不会有滚动条:

width: 100% 表示元素的宽度是其父元素宽度的 100%。具体来说:

父元素宽度:父元素的宽度是视口的宽度减去滚动条的宽度(如果有滚动条)。

子元素宽度:子元素的宽度会根据父元素的宽度进行计算,不会超过父元素的宽度。

因此,即使视口有滚动条,width: 100% 的元素宽度也不会超过视口的可见宽度,所以不会出现横向滚动条。

解决方法:

在width中减去滚动条的宽度就可以了, 一般是17px, calc(100vw - 17px)

或者使用width: 100%

代码

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
		<style>
            /*去除页面默认边距
            html body{
                padding: 0;
                margin: 0;
            }*/
			.wrap {
				display: flex;
                //如果高度大于100vh需要将width:100vw的部分减去滚动条宽度
                height: 100vh;
                width: 100vw;
                overflow: hidden;
			}
			.left {
				width: 200px;
				background-color: yellow;
			}
			.middle {
				flex: 1;
				background-color: green;
			}
			.right {
				width: 200px;
				background-color: red;
			}
		</style>
	</head>
	<body>
		<div class="wrap">
			<div class="left"></div>
			<div class="middle"></div>
			<div class="right"></div>
		</div>
	</body>
</html>

http://www.kler.cn/a/412371.html

相关文章:

  • 【软件国产化】| Windows和Linux下文件名后缀是否区分大小写
  • 【21-30期】Java技术深度剖析:从分库分表到微服务的核心问题解析
  • 并发情况下 Set 的使用——深入理解 Collections.synchronizedSet 的用法
  • QT 关于QTableView的应用和管理
  • python3 自动更新的缓存类
  • 预告|ROS中超好用固定翼仿真开源平台即将上线!
  • 速度革命:esbuild如何改变前端构建游戏 (1)
  • 多模态大模型打造沉浸式社交体验,Soul App创始人张璐团队海外首秀GITEX GLOBAL
  • 使用OpenCV实现图像拼接
  • 【C++第三方库】Muduo库结合ProtoBuf库搭建服务端和客户端的过程和源码
  • 【JavaEE初阶 — 网络编程】Socket 套接字 & UDP数据报套接字编程
  • Linux 虚拟机下安装RedisJSON
  • 【Pytorch框架】无中生有,从0到1使用Dataset类处理MNIST数据集
  • 多线程1:基础概念、接口介绍、锁
  • 通俗理解人工智能、机器学习和深度学习的关系
  • 【carla生成车辆时遇到的问题】carla显示的坐标和carlaworld中提取的坐标y值相反
  • 前后端中Json数据的简单处理
  • Javaweb 前端 HTML css 案例 总结
  • 开发一个基于MACOS M1/2芯片的Android 12的模拟器
  • 基于STM32的智能风扇控制系统
  • digit_eye开发记录(2): Python读取MNIST数据集
  • 渗透测试笔记—window基础
  • 蓝桥杯每日真题 - 第24天
  • 27加餐篇:gRPC框架的优势与不足之处
  • Apache Zeppelin:一个基于Web的大数据可视化分析平台
  • 前端 设置 div 标签内子多个子 div 内容,在一行展示,并且可以字段自动换行