Я пытаюсь сделать текст поверх изображения, когда изображение зависнет.
Это, как правило, простой процесс, однако, по-видимому: hover не работает, если первый div (например)
first.div:hover second.div {
(в моем случае изображение) использует относительное позиционирование вместо абсолютного.
На этой странице много изображений, и они настраиваются как таблицы через CSS с такими атрибутами, как display: table; поэтому я не думаю, что у меня есть возможность переключиться на абсолютное позиционирование. Я знаю, что CSS-таблицы обычно не оправдываются, но я абсолютно должен это делать.
Прямо сейчас я использую изменения непрозрачности, чтобы попытаться сделать текст. Я тоже пробовал использовать z-index, но я думаю, проблема заключается в том, что эффект hover не работает с абсолютным позиционированием. Какие обходные пути, если таковые имеются, доступны?
Я не против использования языков, отличных от HTML/CSS, но я довольно неопытен, и я их не понимаю, поэтому я бы предпочел, чтобы CSS работал для этого, но нищие не выбирают.
В соответствии с запросом здесь приведен код:
HTML
<div class="cell"><img class="box" src="image1.jpg"><div id="text">Text text text</div></div>
CSS
.cell { position:relative; display:table-cell; background-color:black; width:700px; height:auto; }
.cell { position:relative; display:table-cell; background-color:black; width:700px; height:auto; }
#text { display:table; position:absolute; z-index:999; color:#fff; text-align:center; width:100%; top:48%; left:0; }
#text { display:table; position:absolute; z-index:999; color:#fff; text-align:center; width:100%; top:48%; left:0; }
направо #text { display:table; position:absolute; z-index:999; color:#fff; text-align:center; width:100%; top:48%; left:0; }
img { max-height:600px; max-width:600px; height:auto; width:100%; filter: url(filters.svg#grayscale);/* Firefox 3.5+ */filter: gray;/* IE6-9 * / -webkit-filter: grayscale(1);/* Google Chrome, Safari 6+ & Opera 15+ */opacity:0.4; z-index:2; }
img:hover { filter: none; -webkit-filter: grayscale(0); opacity:1.0; }
Я не уверен в том, что вызывает это, поэтому я включил намного больше, чем необходимо... Я немного новичок в кодировании, так что cell.div:hover #text { opacity:1;}
, но я не могу получить cell.div:hover #text { opacity:1;}
работать. Я где-то читал, что это потому, что эффекты зависания не работают с относительно позиционируемыми div...
Ничего себе, буквально через 30 секунд после того, как я потратил время, чтобы опубликовать весь мой код, я нашел решение. Я использовал div.cell:hover #text { opacity:1; }
div.cell:hover #text { opacity:1; }
и все сработало. Не уверен, что я делал неправильно, это была поздняя ночь и, вероятно, пыталась сделать что-то немое, как img.box:hover #text
commands. В любом случае игнорируйте этот вопрос ребята, и спасибо
Я не понимаю, какова твоя проблема. И если вам ясно, что у вас проблема только в непрозрачности, вы можете использовать css, как показано ниже.
first.div:hover second.div {
cursor: pointer;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";
filter: alpha(opacity=75);
-khtml-opacity: 0.75;
-moz-opacity: 0.75;
opacity: 0.75; }
Если это не сработает для вас, то, пожалуйста, поделитесь своим кодом или живой ссылкой, а затем объясните вам.
вы можете просто использовать opacity
для достижения этого. Убедитесь, что вы нацеливаете pic на зависание. Посмотрите эту скрипку.