Ответ 1
Это не проблема наследования свойств, как вы думаете.
Работа с фильтрами делает невозможным исправление изменений атрибутов в CSS: элемент, подверженный фильтру, визуализируется, все дочерние элементы отображаются, а затем результат (в виде изображения) применяется.
Итак, единственные альтернативы:
1) Измените HTML, как предложил Lowkase
2) В вашем случае кажется, что все, что вы хотите сделать серым, - это фоновое изображение. В этом случае вы можете оставить HTML как есть, отобразить изображение в псевдоэлементе и применить фильтр к этому псевдо-элементу.
CSS
.cell{
opacity:0.7;
width:420px;
height:420px;
transition: opacity .3s ease-in-out;
-moz-transition: opacity .3s ease-in-out;
-webkit-transition: opacity .3s ease-in-out;
}
.A1 {
position: relative;
}
.A1:before {
content: "";
position: absolute;
width: 100%;
height: 100%;
top: 0px;
left: 0px;
background-image:url('http://i.imgur.com/NNKxZ5R.jpg');
filter: url(filters.svg#grayscale); /* Firefox 3.5+ */
filter: gray; /* IE6-9 */
-webkit-filter: blur(15px); /* Google Chrome, Safari 6+ & Opera 15+ */
z-index: -1;
}
#text {
color:#ffffff;
text-align:center;
font:18px sans serif;
text-decoration:none;
}
.cell:hover {
opacity:1.0;
}
.A1:hover:before {
filter: none;
-webkit-filter: grayscale(0);
transition: opacity .3s ease-in-out;
-moz-transition: opacity .3s ease-in-out;
-webkit-transition: opacity .3s ease-in-out;
}
Я также изменил фильтр на размытие, чтобы сделать его более понятным, чтобы фильтр не подвергался воздействию текста. Так как у вас был также набор непрозрачности, текст по-прежнему выглядел сероватым только потому, что вы видели серый под ним.
Добавлен пример использования фильтра яркости (для webkit)