你絕對是在正確的軌道上。由於您正在使用圖標的:after
元素,因此您應該單獨放置該元素,因爲它已經定位並定義了它自己的寬度+高度(基於圖標)。
:after
選擇器正確定位的原因是因爲它不依賴其父容器尺寸。你只能從頂部和左邊把它作爲絕對的,這很好。但它不知道應該有多高,因爲它的父母沒有確定的身高!如果使用絕對定位,則需要定義父容器的尺寸,以便孩子知道其界限。
所以第一關,.gallery-icon
已經是一個塊元素,所以你並不需要定義它的寬度(其已100%通過自然),只是高度:
.gallery-icon {
position: relative;
height: 100%;
}
其次,你應該使用一個:before
元素來定義背景,讓你不必亂用:after
圖標:
&:before {
content: '';
position: absolute;
height: 100%;
width: 100%;
top: 0;
left: 0;
background-color: #333;
opacity: 0;
transition: opacity 0.3s ease-in-out;
}
現在,你只需要添加懸停不透明度的變化!
&:hover {
.gallery-icon {
&:before {
opacity: .5;
}
&:after {
opacity: 0.6;
}
}
希望幫助,這裏是一個codepen叉掉原來的:http://codepen.io/anon/pen/JRWqxX
編輯:我也注意到,您的img
標籤使其進入下面的容器的視覺底部,速戰速決只是補充:
.gallery-icon {
img {
display: block;
}
插入你的代碼中的一個片段,看你用請 – JoelBonetR
也可以創建div.gallery項目和div.gallery圖標景觀之間的DIV的修改(可以稱之爲back2)與所需的背景和執行懸停或類似的翻譯。或者使用半透明圖像並設置back2不透明度0並在懸停時將其更改爲1(如果img爲60%不透明度,並且設置了完整的黑色背景,則會看到可見的疊加層) – JoelBonetR