antd的select的滚动条怎么才会出现_纵向滚动条对横向滚动条的影响

在GUI编程中,不同平台对滚动条处理存在差异。当antd Select组件高度小于子元素总高度时,会出现纵向滚动条。在某些浏览器中,如Firefox和IE,这会导致因纵得横,出现横向滚动条。Chrome则表现不同,滚动条似乎悬浮于文字之上。JavaFx在初始化时类似Chrome,但滚动后表现出Firefox的行为。开发者应确保父组件宽度能容纳子组件及滚动条,避免意外的横向滚动条。
摘要由CSDN通过智能技术生成

GUI编程中,往往有这样一个场景,在一个长、宽固定的组件中,显示一系列的子组件。

我最近发现了各平台在这种场景下,对纵向、横向滚动条处理的一些差异,分享出来给大家。

比如在网页上构建这样一个组件:

6271fac0eef4272c95395458a602f8b0.png

对应的代码如下:

<div style="width:200px;height:220px;background-color:gray;overflow:auto">
    <div style="width:200px;height:30px;background-color:red;text-align:right">苏荃</div>
    <div style="width:200px;height:30px;background-color:orange;text-align:right">双儿</div>
    <div style="width:200px;height:30px;background-color:yellow;text-align:right">阿珂</div>
    <div style="width:200px;height:30px;background-color:green;text-align:right">建宁公主</div>
    <div style="width:200px;height:30px;background-color:red;text-align:right">方怡</div>
    <div style="width:200px;height:30px;background-color:orange;text-align:right">曾柔</div>
    <div style="width:200px;height:30px;background-color:yellow;text-align:right">沐剑屏</div>
</div>

先看横向:父元素的宽度是200,每一个子元素的宽度也都是200,所以即使父元素指定了overflow:auto,也不会出现横向滚动条。

再看纵向:父元素的高度是220,每个子元素的高度是30,那么所有子元素的高度之和30*7=210是小于父元素的,所以也没有出现纵向滚动条,甚至我们还能看到最下面灰色的部分,那是父组件的220减去子组件高度之和210富余出来的部分。

下面考虑一个变化,如果父元素的高度变成200了,小于子组件高度之和的210了,会怎么样?

因为父组件overflow:auto的存在,一定会出现纵向滚动条的。那么会不会出现横向滚动条呢?

b34878e71b6fc795839a71591ae50089.png

我们看到Firefox和IE(9),都出现了横向滚动条,为什么呢?

对父组件来说,现在每一行除了子组件还要显示一个纵向滚动条。也就是说,父组件要显示的内容是:宽度为200的子组件+宽度为13的纵向滚动条。

而父组件的预设宽度是200,显示不下宽度为213的内容,根据overflow:auto的设定,它显示了横向滚动条。

相比于其它浏览器的因纵得横,我们看到Chrome没有显示横向滚动条,看起来横向滚动条似乎是悬浮在文字之上的,并且盖住了子组件的文字。

最后我们看一下JavaFx是怎么处理这种情况的:它在初始化的时候,和Chrome一样,但是在拉动滚动条进行重新计算的时候,又出现了像Firefox的行为。

1867eddaae312cc080f7356c1b8e70a9.gif

不管如何,对于因纵得横的问题,建议在开发的时候,给父子之间多留一些余地,父组件的宽度至少要大于子组件一个滚动条的宽度,毕竟,做父亲的要大度一些。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值