2013-03-29 169 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