如何设置不影响背景图像的边框

时间:2015-03-05 19:15:00

标签: css css3

我知道我可以使用box-sizing:border-box;在元素实际宽度内创建边框,但我希望我的图像不受边框影响。 例如:

div { 
    width:100px;
    height:100px;
    box-sizing:border-box;
    background-image:url("someplace/demo.jpg");
    background-size:100%;
    border:1px solid black;
}

使用上面的代码,图像的宽度和高度将是98px,因为每个parallal边的边框占用1个像素。

但是我希望我的图像仍然保持100 px / 100%并且边框作为图像顶部的重叠边框。

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:2)

您需要将背景大小设置为容器的实际大小。

div {
  width:100px; 
  height:100px; 
  box-sizing:border-box; 
  background:url("http://lorempixel.com/100/100") center no-repeat ;
  background-size:100px 100px; 
  border:1px solid black;
}
img ~ div {
  border:15px solid rgba(100,200,0,0.5);
}
div + div {
  background-size:100%;
}
div, img {
  display:inline-block;
  }
<div></div>
<img src="http://lorempixel.com/100/100"/>
<div></div>
<div></div>

我在演示中插入了图像和更大的边框,以便轻松查看不同的效果

对于他的轮廓,你需要,轮廓偏移

div {
  width:100px; 
  height:100px; 
  box-sizing:border-box; 
  background:url("http://lorempixel.com/100/100") center no-repeat ;
  background-size:100px 100px; 
  outline:15px solid rgba(100,200,0,0.5);
  outline-offset:-15px;
  }
<div></div>

边界增加使效果明显

或box-shadow?

div {
  width:100px; 
  height:100px; 
  box-sizing:border-box; 
  background:url("http://lorempixel.com/100/100") center no-repeat ;
  background-size:100px 100px; 
  box-shadow:inset 0 0 0 15px rgba(100,200,0,0.5);
}
<div></div>

答案 1 :(得分:1)

使用轮廓而不是边框​​

div { 
  width: 100px;
  height: 100px;
  background-image: url("someplace/demo.jpg");
  background-size: 100%;
  outline: 1px solid black;
}

答案 2 :(得分:0)

.classname { outline: 2px solid red; }

参考:http://www.w3schools.com/cssref/css3_pr_outline-offset.asp