CSS эффекты наведения работают только с абсолютным позиционированием?

0

Я пытаюсь сделать текст поверх изображения, когда изображение зависнет.

Это, как правило, простой процесс, однако, по-видимому: 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...

  • 3
    Не могли бы вы показать какой-нибудь код?
  • 0
    Z-индекс работает только в одном и том же стиле позиционирования - поэтому абсолютно позиционированные элементы учитывают только z-индекс друг друга и игнорируют элементы положения релятивли, и наоборот.
Показать ещё 8 комментариев
Теги:

3 ответа

0
Лучший ответ

Ничего себе, буквально через 30 секунд после того, как я потратил время, чтобы опубликовать весь мой код, я нашел решение. Я использовал div.cell:hover #text { opacity:1; } div.cell:hover #text { opacity:1; } и все сработало. Не уверен, что я делал неправильно, это была поздняя ночь и, вероятно, пыталась сделать что-то немое, как img.box:hover #text commands. В любом случае игнорируйте этот вопрос ребята, и спасибо

1

Я не понимаю, какова твоя проблема. И если вам ясно, что у вас проблема только в непрозрачности, вы можете использовать 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; }

Если это не сработает для вас, то, пожалуйста, поделитесь своим кодом или живой ссылкой, а затем объясните вам.

0

вы можете просто использовать opacity для достижения этого. Убедитесь, что вы нацеливаете pic на зависание. Посмотрите эту скрипку.

http://jsfiddle.net/Davidicus/69ZTN/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню