2012-04-16 111 views
1

請原諒,如果這是一個相當基本的問題。我瀏覽過谷歌和其他地方,還沒有找到適合我的解決方案。如何在畫廊的浮動圖像上創建懸停邊框/輪廓?

我正在使用以下標記生成圖片庫。

<div class="gallery"> 
    <a class="galleryimg"> 
    <img> 
    </a> 
    .... 
</div> 

根據圖庫中圖像的數量重複.galleryimg。它被左移。

我想創建一個:hover效果,概述所選圖像。我嘗試過使用邊框(弄亂佈局),輪廓(原則上聽起來很完美)和插入框陰影(在圖像下面呈現)。

輪廓非常接近我想要實現的。但是右側和底部的輪廓被浮在其上的相鄰圖像所遮擋。

所以我的問題:我如何創建懸停邊框/輪廓效果鏈接圖像的畫廊?

我真的很感激任何有關其他人如何解決這個問題的想法。謝謝!!

EDIT

的圖像被抵接,之間沒有空白空間。

回答

0

如果使用box-sizing屬性(因爲IE8支持),你可以在:hover添加邊框沒有這個屬性弄亂佈局

.galleryimg { 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
    width : 100px; 
    float : left; 
} 

.galleryimg:hover { 
    border : 3px gray solid; 
} 

看到http://paulirish.com/2012/box-sizing-border-box-ftw/更多信息

+0

謝謝f。 calderan。這是一個很好的解決方案。然而,這被用在動態rails應用程序中。由於圖像大小可能會通過用戶更改,所以我不願意將寬度硬編碼到CSS中。有沒有解決的辦法?謝謝 – 2012-04-16 09:16:35

2

HI,你可以簡單地使用使用css技巧像這樣

css

#example-one a img, #example-one a   { border: none; overflow: hidden; float: left; } 
#example-one a:hover       { border: 3px solid black; } 
#example-one a img{width:100px;height:50px;} 
#example-one a:hover img      { margin: -3px;}​ 

現場演示http://jsfiddle.net/rohitazad/QkT7d/3/

更多有關此,請點擊這裏http://css-tricks.com/examples/InnerBorderImages/#

+1

謝謝azad。對不起,我從我的問題中省略了一個關鍵點。圖像之間沒有空白處相鄰。 – 2012-04-16 09:06:25

+0

嗨,我已經更新了我的答案我的東西,你這樣搜索http://jsfiddle.net/rohitazad/QkT7d/3/ – 2012-04-16 10:09:20

0

http://jsfiddle.net/Vvr7C/ 訣竅是添加上了名爲.gallery填充,所以你會看到大綱還對那些在圖像邊緣OD畫廊:

.gallery {padding:2px} 
.galleryimg:hover img {outline: red solid 2px}​ 
1

檢查了這一點:

http://jsfiddle.net/hMNZE/

可能是預期的效果。你會經歷圖像的細微變化,因爲它使自己變小以允許邊界。但請讓我知道。這只是一個快速解決方案。

---編輯---

http://jsfiddle.net/hMNZE/2/

是使用負利潤率第二個版本,這看起來不錯,但在圖像重疊一點點。

退房鏈接:http://css-tricks.com/examples/InnerBorderImages/

--- EDIT2 ---

http://jsfiddle.net/hMNZE/3/是最好的

--- EDIT3 ---

.gallery { 
    width:100%; 
    height:100%; 
    padding:10px; 
} 

.galleryimg { 
    float:left 
} 

.galleryimg img { 
    z-index:-10; 
} 

.galleryimg img:hover { 
    margin:-2px; 
    border:2px solid blue; 
    z-index:9999; 
}​ 
+0

嗨菲利普,感謝這一點。這很好用!不過,我非常希望避免在CSS中定義元素寬度/高度,因爲這是在Rails應用中應用的,並且圖像尺寸可以由用戶進行調整。有沒有解決的辦法? – 2012-04-16 09:36:54

+0

在第三個小提琴你不必使用寬度/高度,但只有負邊緣...(見編輯2) – 2012-04-16 09:38:57

+0

但你仍然有2線 – Gavriel 2012-04-16 10:09:48

0

如果您正在使用box-shadow &它低於其他圖像然後像這樣寫:

.gallery img:hover{ 
padding:0; 
box-shaow:0 0 0 2px red; 
z-index:1; 
} 
.gallery img{position:relative;} 
0

如果你的問題在上面得到了回答,那很好。如果沒有,這聽起來像你可能需要一些邊緣之間的圖像和其他物體。你說這是模糊的。它可能只需要2px左右的餘量來掩蓋它。

+0

hi ilBeatz。是的,保證金會顯示邊界。然而,圖像直接相互顯示,兩者之間沒有空白。應用保證金會打破這種設計。我希望插入陰影會起作用,看起來很奇怪,它被渲染到圖像下面。 – 2012-04-16 09:34:26

+0

您在圖像上做了一個倒置的陰影框,但這隻適用於支持框陰影的瀏覽器。 box-shadow:0px 0px 3px#000000; – ilBeatz 2012-04-16 09:57:26

0

嗨,你可以輕鬆地做這件事通過CSS3 * 箱陰影 *屬性: -

box-shadow: inset 0px 0px 0px 3px rgba(000,000,000,0.9); 

看到更好的理解演示: - http://jsbin.com/upedel/5/edit

修訂ANWSER

請參閱更新的演示: - http://jsbin.com/upedel/10/edit

+0

謝謝shailender。不幸的是盒子陰影呈現在封閉的圖像之下因此我一直無法輕鬆使用它。我相信它可能會有一些操縱,周圍的元素等。我想知道是否有人有一個更優雅的解決方案。 – 2012-04-16 11:22:08

+0

嘿@AndyHarvey是的,你必須做一些操作,上面提到的演示,但我希望這將充分滿足你的要求,一旦你將深深地玩CSS,因爲它的演示類適合你.... – 2012-04-16 11:33:43