为什么加了border-radius会导致背景图有问题?

各位大佬,遇到了一个让我困惑的问题。同一张背景图,加了border-radius的,会导致出现一条线,而这个线是背景图片的中间蓝色部分的顶部
为什么会出现这种问题?

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            body{
                background: #000;
            }
            .box{
                width: 124px;
                height: 48px;
                background-size: cover;
                background: url('./bg.png') no-repeat;
            }
            .radius{
                border-radius: 1px;
            }
            .box.top{
                background-position:center top;
            }
            .box.center{
                background-position:center center;
            }
            .box.bottom{
                background-position:center bottom;
            }
        </style>
    </head>
    <body>
        <div class="box top"></div>
        <div class="box top radius"></div>
    </body>
</html>

出现的问题:第二个div带了radius的样式,底部会有一条线 ,浏览器放大200倍要看的更清楚一点。这个线是背景图中间部分的内容,因为有颜色,所以看起来是一条边线。
问题图

下面是背景图:bg.png (因为面板是白色,所以看起来上下都是白色的,只有中间是蓝色,但是实际上上下都是带透明度的)
背景图

阅读 2.5k
1 个回答
新手上路,请多包涵

在CSS中,用于设置背景图像的background中属性主要包括以下几个:

background-color:设置元素的背景颜色。

background-image:设置元素的背景图像,可以是一个图像的URL或者渐变(gradient)。

background-repeat:指定背景图像的重复方式,如 repeat, repeat-x, repeat-y, no-repeat 等。

background-attachment:指定背景图像是否随着页面的其余部分滚动,或者固定在视口中。

background-position:设置背景图像的起始位置,可以使用关键字(如 top, center, bottom)或者具体的像素或百分比值。

background-size:指定背景图像的尺寸,可以设置为 cover(覆盖整个容器)、contain(保持宽高比并适应容器)、具体的像素值或百分比。

background-clip:定义背景图像的绘制区域,可以是 border-box(默认,整个边框区域)、padding-box(内边距区域)或 content-box(内容区域)。

background-origin:指定背景图像的起始位置,类似于 background-clip,但可以设置背景图像的起始位置。

重点
background-clip属性默认的值是 border-box(整个边框区域),设置了border-radius: 1px;后,元素边框区域变为圆角,无任何遮挡,这时就会显示出背景图的底色来,将background-clip的值,改为非默认值,就会略过边框,正常显示。我的理解是这样子的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题