【问题标题】:Border-radius rendering bug when in overflow: hidden溢出时的边框半径渲染错误:隐藏
【发布时间】:2012-09-24 17:07:51
【问题描述】:

我在所有主流浏览器(已测试:IE 9、Chrome、Firefox)下渲染边框半径都有一个错误。

发生的情况是我有一个带有边框半径的菜单栏,其中一些链接宽度为背景颜色。为了使按钮保持在菜单的形状内,我在菜单容器上设置了一个溢出隐藏。直到一切顺利,然后,角落边缘出现了一条小白线。

我在这里做了一个简化的测试用例:http://dabblet.com/gist/3828561

有人有解决这个问题的方法吗?谢谢!

【问题讨论】:

  • 我会说这不是错误,只是圆角所需的渲染复杂性,即抗锯齿。我应该想象渲染那个圆角的代码非常复杂。弄乱了您的代码并添加了边框,对我来说似乎很清楚白色背景比css半径的半径略大-与每个浏览器供应商一起使用...
  • 解决方法是添加具有正确蓝色的背景图像以掩盖 css 半径的“下重叠”
  • background: rgba(255,255,255,0.9); 类的background: rgba(255,255,255,0.9); 属性确定的角上的白线。

标签: css


【解决方案1】:

依赖于尺寸的解决方案...但也许没关系,因为它是一个菜单栏而不是一个内容持有者?不管怎样,你可以在你的内部元素上设置border-radius,给父元素一个高度,也可以为内部元素的line-height 使用这个高度值。

应用高度/行高后,您不必使用overflow: hidden

由于您的菜单栏的边框半径为3px,因此对第一个菜单项的相应角应用相同的舍入,如下所示:

.outer .inner:first-of-type { border-radius: 3px 0 0 3px; }

并使栏的相应角更加圆润,将它们隐藏在第一个菜单项下方:

.outer { border-radius: 10px 3px 3px 10px; }

http://dabblet.com/gist/3828755

【讨论】:

  • 嘿,谢谢,我想这是正确的方法。虽然,您添加了很多代码并且您的最终解决方案不是很灵活。我在这里做了一个更简单的版本:dabblet.com/gist/3828881
猜你喜欢
  • 2016-04-20
  • 2012-03-24
  • 2011-10-06
  • 1970-01-01
  • 2015-06-12
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
相关资源
最近更新 更多