Jump to content
  • 0

hover для другого элемента...


bioz00
 Share

Question

есть таблица с ячейками и есть дивы соответствующие каждой ячейки. нужно чтоб при наведении курсора на определенную ячейку изменялся стиль соответствующего дива. как лучше это реализовать?

<table>

<tr>

<td class="cell">ячейка1</td>

<td class="cell">ячейка2</td>

<td class="cell">ячейка3</td>

</tr>

</table>

<div class="cdiv">1</div>

<div class="cdiv">2</div>

<div class="cdiv">3</div>

у дивов абсолютная позиция.

пробывал вкладывать дивы в ячейки, дабы "cell" был для них родительским классом и писать нужный стиль на ховер, но в этом случае opacity дивов работает корректно только в Опере.

Понимаю, что можно сделать на яваскрипте, но не хотелось бы. Есть варианты?

Link to comment
Share on other sites

20 answers to this question

Recommended Posts

  • 0
пробывал вкладывать дивы в ячейки, дабы "cell" был для них родительским классом и писать нужный стиль на ховер, но в этом случае opacity дивов работает корректно только в Опере.

.cell:hover .cdiv {}

не работает? если нет, то, я полагаю, дело в самом .cdiv, а не в hover-е )

Link to comment
Share on other sites

  • 0

swetlana, При наведении курсора на ячейку, должна меняться прозрачность дива.

faiwer, я пробовал так:

.cell {

opacity:0.7;

}

.cell:hover {

opacity:1;

}

.cdiv {

position: absolute;

left....

top.....

opacity:inherit;

}

при этом содерржимое самих ячеек было в отдельном диве с ipacity 1.

проблема в том что позиционированные дивы с опасити оказываются "под" другими элементами. почему не ясно, пробовал z-index задавать, не помогло.

Edited by bioz00
Link to comment
Share on other sites

  • 0

ять — это такая буква в старорусском алфавите. Почему-то она сейчас вспомнилась.

Полностью задачу опишите.

Макет покажите. Словами опишите желаемое поведение.

Вот эти невнятные обрывки чего-то, условно похожего на код, никакой ясности не вносят.

Link to comment
Share on other sites

  • 0
проблема в том что позиционированные дивы с опасити оказываются "под" другими элементами. почему не ясно, пробовал z-index задавать, не помогло.

Не понял ) cdiv-ы оказывались "ниже" чем не-[position: absolute] элементы?

Link to comment
Share on other sites

  • 0
Не понял ) cdiv-ы оказывались "ниже" чем не-[position: absolute] элементы?

Да, причем, если не задавать им опасити, то все ровно, но с опасити, даже в единицу, они проваливаюся.

Похоже дело в кривож..пости фокса и хромого :D Нужен другой вариант.

Edited by bioz00
Link to comment
Share on other sites

  • 0
ТС

А ты релатив родителю задавал хулиган?

разумеется, блин, я даже с з-индексами заморачивался

swetlana, ну вроде бы суть описана: наводим курсор на ячейку, див, находящийся неподалеку, становится непрозрачным. Вариант с родительскими элементами не прокатывает, почему написал.

Edited by bioz00
Link to comment
Share on other sites

  • 0
разумеется, блин, я даже с з-индексами заморачивался

Ааа, ну так я сначала то не увидел. Ячейкам таблицы нельзя задавать релатив. Точнее они не работают с абсолютами.

Сделай внутри ячейки див, а в нём уже помести свой див с прозрачностью.

	<td>
<div style="position:relative">
<div style="position:absolute; top: -20px;"></div>
</div>
</td>

Link to comment
Share on other sites

  • 0

Есть такая нетривиальная задача:

Таблица с ячейками (красная) и другая таблица (зеленая)

у каждой таблицы свой стиль: обе таблицы немного прозрачные, но при наведении курсора становятся непрозрачными.

Как видим в первой таблице одна ячейка со стилем второй таблицы.

1e54aeb98c28.gif

При наведении курсора на первую таблицу она подсвечивается, но кроме я чейки от второй таблицы. При наведении нурсора на зеленую ячейку или вторую таблицу они обе подсвечиваются, но не подсвечивается первая таблица.

Вторая таблица должна быть расположена под первой и не должна быть плавающей. (absolute, fixed не катит)

Возможно ли все это сделать на html, без джава? И если есть идеи как, буду очень признателен.

Link to comment
Share on other sites

  • 0

В CSS обработка идет сверху вниз, поэтому нельзя задать стиль родителя или вышестоящего элемента по поведению ребенка. Зато наоборот можно. Так что в рамках одной таблицы можно сделать на CSS, с двумя уже нет (если только не менять вторую таблицу по поведению первой).

Link to comment
Share on other sites

  • 0

а можно ведь иногда элементы сделать дочерними, вынести на нужное место абсолютом — тогда будет работать.

Но это не в любом случае уместно, надо по задаче смотреть.

Link to comment
Share on other sites

  • 0
Яваскрипт не рассматривается?

рассматривается, но в последнюю очередь.

swetlana, я пробовал подобный вариант.

вторая таблица была полностью дочерней по отношению к ячейке первой. И по-сути работает, но есть две проблемы. Во первых если выравнивать таблицу абсолютом, то остальные элементы (которые идут ниже этой таблицы) оказываются не на своем месте. Во-вторых при наведении курсора на вторую таблицу или ячейку подсвечиваются не только они, но еще и первая таблица, поскольку они находятся в ней.

Если можно было бы пихнуть ячейку(div) z-indexom, поверх первой таблицы, как дочерний элемент второй таблицы. Все было бы просто. Но при этом есть проблемы с позицией дива, в этих таблицах очень сложная динамическая структура. Не представляю, как ровно его позиционировать без явы.

Link to comment
Share on other sites

  • 0

swetlana, он черезчур мудреный, сложно будет разобраться сходу. Но если нужно могу набросать макет касаемый данной проблемы. Хотя незнаю есть ли смысл, поскольку вышеописанные варианты неудовлетворительны.

Edited by bioz00
Link to comment
Share on other sites

  • 0

вот, вариант с дивом

<!DOCTYPE html><!--да да, он самый :)-->
<html>
<head>
<style type="text/css">
.tab1 {
background:orange;
opacity:0.75;
}

.tab1:hover {
opacity:1;
}

.tab2 {
position:relative;
background:red;
opacity:0.75;
}
.tab2:hover {
opacity:1;
}

.tab2 div {
position:absolute;
z-index:5;
top:-45px;
left:130px;
width:100px;
background:red;
}
</style>
</head>

<body>
<table width='60%' align='center' class='tab1'>
<tr>
<td></td>
<td width='100px'>cell1</td>
<td width='100px'><!--cell2--></td>
<td width='100px'>cell3</td>
<td></td>
</tr>
</table>
<br>
<table width='40%' align='center' class='tab2'>
<tr>
<td>somecontent<div>cell2</div></td>
</tr>
</table>
<br>
<table width='100%' bgcolor='teal'>
<tr>
<td>another content<br><br><br></td>
</tr>
</table>
</body>
</html>

не считая мелких недочетов проблема с позицией дива. вот еслиб можно было бы его закрепить относительно первой таблицы.. =)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy