2013-03-29 117 views

回答

9

解决方案#1大纲财产。尝试使用outline代替边界负outline-offset值等于轮廓宽度:

img:hover { 
    box-sizing:border-box; 
    outline: solid 10px #f80; 
    outline-offset: -10px; 
} 

http://jsfiddle.net/dfsq/BPRyZ/2/

此外,由于IE不明白这个属性,你可以离开box-sizing通过IE8 +使用。

解决方案#2采用div作为包装+ :after

<div class="img-wrap"> 
    <img src="http://upload.wikimedia.org/wikipedia/commons/a/af/Bonsai_IMG_6426.jpg" class="img1" /> 
</div> 

CSS:

.img-wrap:after { 
    border: 0; 
} 
.img-wrap:hover:after { 
    content: ''; 
    position: absolute; 
    top: 0; 
    left: 0; 
    bottom: 0; 
    right: 0; 
    border: solid 10px #f80; 
} 

http://jsfiddle.net/dfsq/BPRyZ/7/

+0

令人难以置信,非常感谢你:) – Youss

+0

正在寻找这个小时。 – JeffThompson

3

你需要回答的问题是,你想图像本身是200px,或整个盒子是200px。有4点不同的方式取决于你的回答前面的问题编写这...

如果你想整个箱体是200像素宽,那么你可以使用边界框下面的代码...

http://jsfiddle.net/BPRyZ/8/

img { 
    width:200px; 
    border: transparent 10px solid; 
    box-sizing:border-box; 
} 

img:hover{ 
    box-sizing:border-box; 
    border:solid 10px #f80; 
} 

如果你想整个箱体是200像素宽,那么你也可以使用此代码...

img { 
    width:180px; 
    border: transparent 10px solid; 
} 

img:hover{ 
    border:solid 10px #f80; 
} 

如果你想图像本身是200像素,那么你需要这个代码...(这意味着你的总框的宽度实际上220px)

img { 
    width:220px; 
    border: transparent 10px solid; 
    box-sizing:border-box; 
} 

img:hover{ 
    box-sizing:border-box; 
    border:solid 10px #f80; 
} 

对于上面你也可以使用...

img { 
    width:200px; 
    border: transparent 10px solid; 
} 

img:hover{ 
    border:solid 10px #f80; 
} 
+0

嗨,我不想让图像“更小”或改变其在文档上的位置 – Youss

+0

请参阅我的编辑了解更多详细信息。 – Michael

+0

谢谢,但我屏幕刮图像,我没有太多的控制在那里的CSS,在大多数情况下,我不想改变那里的CSS或 – Youss

1

我更新了jsfiddle

CSS:

img { 
    width:200px; 
    border: transparent 10px solid; 
} 

img:hover{ 
    box-sizing:border-box; 
    border:solid 10px #f80; 
    width:220px; 
} 
+0

更好使用'border:transparent 10px solid;'。 – dfsq

+0

是的,谢谢。 – enb081