一个样式问题引发的对 overflow 属性的再度学习
最近开发碰到一个 bug,其实把它写成最小 demo 很简单,大概这样:
点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
margin: 200px;
width: 100px;
height: 100px;
border: 1px solid black;
overflow: scroll;
}
</style>
</head>
<body>
<div class="box">
hello world
</div>
</body>
</html>
在我这边展示良好
但是在 UE 那边却显示了莫名的滚条
后来发现他是外接了鼠标,外接鼠标去掉就又正常了。通过 google 我们发现这在 mac 里是可设置的(系统偏好设置 -> 通用 -> 显示滚动条)
如果选择﹝滚动时﹞,那么一直都是符合预期的结果,只有滚动时才会显示滚条;如果选择﹝始终﹞,那么不滚动时也会显示滚条,如果选择﹝根据鼠标或触摸板自动显示﹞,我猜测是没外接鼠标时和选择﹝滚动时﹞一致,外接时和选择﹝始终﹞一致了
以上解决了我们表现为啥不一致的问题,但是没有解决为啥明明没溢出,却还是显示了滚条的问题
这个就和 CSS overflow 属性有关了,我们将 overflow: scroll 改成 overflow: auto 就符合预期了
其实两者很好区别,都是溢出时候会滚动,只是设置 overflow: scroll 后会强行加上滚条(不管你真实有没有溢出),但是设置 overflow: auto 时只会在需要的时候加上滚条,很显然 auto 更加合适
开发中真实的场景是希望给 Table 组件定高展示,溢出时滚动,但是滚动条放在整个 table 的右侧其实有点奇怪(对整个 table 设置 overflow 属性),我们更希望是只对 tbody 进行滚动,其实是有 scroll 属性能够解决这个问题的,还是应该多读文档啊
浙公网安备 33010602011771号