Причина текущее решение не работает потому, что ваш :after
псевдо-элемент не имеет какой-либо набор контента (поэтому оно не отображается), и он не расположен правильно. Попробуйте это вместо этого.
.22:hover:after
{
background-color: #000;
opacity: 0.1;
content: ' ';
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
}
Это работает, потому что элемент :after
псевдо делает внутри элемента, который он предназначается, чтобы прийти после того, к тому времени позиционирования и установки этого псевдо-элемент, чтобы всегда быть такой же размер, как его родительский элемент, вы получаете родительский элемент с прозрачным фоном.
Вы также должны убедиться, что вы дочерний элемент имеет свой набор свойств position
(потому что установка z-index
не работает без набора в position
собственности) и z-index
выше, чем z-index
псевдо элемента :after
(1
хорошо в этот случай):
.22 > yourchildelement
{
position: relative;
z-index: 1;
}
Это должно сделать трюк для вас. Вот jsFiddle, фон установлен на черный.
Возможный дубликат [CSS, чтобы предотвратить дочерний элемент от наследования родительских стилей] (http://stackoverflow.com/questions/5080365/css-to-prevent-child-element-from-inheriting-parent-styles) –
Возможно дубликат [CSS: полупрозрачный фон, но не текст] (http://stackoverflow.com/q/806000/2109908) –
Возможный дубликат [Как предотвратить наследование CSS?] (http://stackoverflow.com/questions/958170/how-do-i-prevent-css-inheritance) – hjpotter92