打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
有关CSS的overflow和border-radius的那些事,你的圆角被覆盖了吗?

最初是网友的一个提问,来自于我的知识星球社区:

?

说实话,不得不佩服这个网友的眼力,这么小的细节都能发现。不过这也正是 FineUI 一直前进的动力,来自社区的监督和促进。

?

从截图上看,貌似圆角部分被内部节点覆盖了。换句话说:外部的圆角没有截断内部的元素!

?

由于这位网友测试的是 Cupertino 主题,圆角只有 6px,不大明显:

?

?

换成 Le Frog 主题,这个问题就更加突出了:

?

分析问题

对于这个问题,有几种可选的解决办法:

1. 去除窗体控件的圆角边框,毕竟操作系统的窗体都是直角的,这个应该也无可厚非(只不过这个改动和之前不一致,肯定会勾起部分用户的不满情绪)

2. 给内部节点元素也加上圆角边框,防止内部节点的覆盖父节点的圆角边框

第二个方式倒是可行的方案,在浏览器调试工具中尝试如下:

?

由于外层节点 .f-panel 拥有 CSS 样式类 f-corner-all:

.f-corner-all {    border-radius: 6px;}

这里给内部的 .f-panel-header 增加一个样式类 f-corner-top:

.f-corner-top {    border-top-right-radius: 6px;    border-top-left-radius: 6px;}

似乎已经完美解决这个问题了。

?

其实不然,由于窗体内部的结构比较复杂,比如存在底部工具栏的情况(底部工具栏又可能有多个):

?

因此,判断哪个元素位于最下面,是正文元素,还是某个工具栏控件,就是一个麻烦事。

并且还存在用户动态显示隐藏工具栏的情况,这就更增加了复杂度。

?

所以这个问题我迟迟没有动手修改。

?

直到有一天,我突然发现,同是 Cupertino 主题,下拉菜单的圆角边框是正常的,不信你来看(单田芳说):

?

解决问题

我似乎看到了问题解决的希望,同一个主题,有个地方正常,有的地方不正常,是是否比较两者的差异了!

?

经过仔细对比,问题逐步浮出水面,却原来下拉菜单有这么个CSS属性:

.f-menu {    overflow: auto;}

?

而窗体控件没有定义 overflow 属性,我们看下浏览器缺省的 overflow 属性:

?

?

原来,如果未定义 overflow 属性,那么节点的这个属性默认值是 visible(有点出乎意料,我还以为是 auto 呢)。

?

现在好了,既然比较出差异,应用这个改变即可(为了便于观察,我们把 border-radius 改为 12px):

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
巧妙实现带圆角的渐变边框
CSS3系列教程:边框半径和圆角 | CSS | 前端观察
CSS3中支持IE9, Firefox, Safari, Chrome的圆角
CSS3圆角属性详解border-radius写法附图
盒子模型
移动端 css实现自适应正圆 ( 宽高随着手机屏幕宽度自适应 )
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服