带圆角的内容边界

发布于 2024-08-28 17:02:36 字数 1204 浏览 4 评论 0原文

我在 Firefox 中使用 CSS 圆角,但内容边界存在以下问题:

代码

<html>
<head>
   <style>
      #outter {
            width: 200px;
            margin: auto;
            text-align: center;
            border: 1px solid #333;
            -moz-border-radius: 15px;
        }
        #inner {
            background: red;
            opacity: 0.5;
        }
    </style>
</head>
<body>
<div id="outter">
    <div id="inner">text</div>
</div>
</body>
</html>

效果

alt text http://img256.imageshack.us/img256/2108/testew.png

我可以通过定义 -moz- 来避免这个问题每个外部子元素的 border-radius 。我还有其他失踪的方式吗?

编辑

一项更难的测试,使用多个内部 div,每个 div 具有不同的背景颜色

<div id="outter">
    <div id="inner1" style="background: blue">text</div>
    <div id="inner2" style="background: gray">text</div>
    ...
    <div id="innerN" style="background: yellow">text</div>
</div>

I am using CSS rounded corners for firefox and I have the following problem with content boundaries:

Code

<html>
<head>
   <style>
      #outter {
            width: 200px;
            margin: auto;
            text-align: center;
            border: 1px solid #333;
            -moz-border-radius: 15px;
        }
        #inner {
            background: red;
            opacity: 0.5;
        }
    </style>
</head>
<body>
<div id="outter">
    <div id="inner">text</div>
</div>
</body>
</html>

Effect

alt text http://img256.imageshack.us/img256/2108/testew.png

I can avoid this problem by defining -moz-border-radius for each outter's child. There is any other way I am missing?

Edit

A harder test with multiple inner divs with different background-color for each one:

<div id="outter">
    <div id="inner1" style="background: blue">text</div>
    <div id="inner2" style="background: gray">text</div>
    ...
    <div id="innerN" style="background: yellow">text</div>
</div>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

妞丶爷亲个 2024-09-04 17:02:36

您也可以这样做:

  #outter {
        width: 200px;
        margin: auto;
        text-align: center;
        border: 1px solid #333;
        -moz-border-radius: 15px;
        background: red;
    }
    #inner {
        opacity: 0.5;
    }

将背景移动到圆形父级将正确呈现,请参阅此处的示例: http:// jsfiddle.net/mE8En/(仅适用于 Firefox!)如果您想支持其他 基于 webkit 的浏览器 也是如此,如下所示:

-moz-border-radius: 15px; 
-webkit-border-radius: 15px;

编辑更新: 要处理 firefox 中的内部 div,请在内部 div 上减去一个像素以补偿注意

#outter {
    width: 200px;
    margin: auto;
    text-align: center;
    border: 1px solid #333;
    -moz-border-radius: 15px;
    -webkit-border-radius: 15px;
    background: red;
}
#outter > div:first-child {
    -moz-border-radius-topleft: 14px;
    -moz-border-radius-topright: 14px;
     -webkit-border-top-left-radius: 14px;
     -webkit-border-top-right-radius: 14px;
}
#outter > div:last-child {
    -moz-border-radius-bottomleft: 14px;
    -moz-border-radius-bottomright: 14px;
     -webkit-border-bottom-left-radius: 14px;
     -webkit-border-bottom-right-radius: 14px;
}
#inner {
    opacity: 0.5;
}
​

:webkit 中内部 div 的半径并不完美,请根据需要进行调整...这是因为浏览器之间的渲染不是完美的像素。

You can also do this:

  #outter {
        width: 200px;
        margin: auto;
        text-align: center;
        border: 1px solid #333;
        -moz-border-radius: 15px;
        background: red;
    }
    #inner {
        opacity: 0.5;
    }

Moving the background to the rounded parent will render correctly, see here for an example: http://jsfiddle.net/mE8En/ (only works in firefox!) add the webkit border radius if you want to support other webkit based browsers as well, like this:

-moz-border-radius: 15px; 
-webkit-border-radius: 15px;

Update for edit: To handle the inner divs in firefox subtract a pixel on the inner div to compensate for the border, resulting in this:

#outter {
    width: 200px;
    margin: auto;
    text-align: center;
    border: 1px solid #333;
    -moz-border-radius: 15px;
    -webkit-border-radius: 15px;
    background: red;
}
#outter > div:first-child {
    -moz-border-radius-topleft: 14px;
    -moz-border-radius-topright: 14px;
     -webkit-border-top-left-radius: 14px;
     -webkit-border-top-right-radius: 14px;
}
#outter > div:last-child {
    -moz-border-radius-bottomleft: 14px;
    -moz-border-radius-bottomright: 14px;
     -webkit-border-bottom-left-radius: 14px;
     -webkit-border-bottom-right-radius: 14px;
}
#inner {
    opacity: 0.5;
}
​

Note: the radii aren't perfect on the inner divs in webkit, adjust as desired...this is because the rendering isn't pixel perfect between browsers.

╄→承喏 2024-09-04 17:02:36

另外,如果您希望 IE 中的圆角不带图像,请查看 DDRoundies

Also, if you want these rounded corners in IE without images, check out DDRoundies.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文