Jump to content
  • 0

При наведении на одну ссылку подсветить две


galaydas
 Share

Question

Всем привет, такая проблема


<div class="block">
<div class="block2">
<a href="#"><img src="img.jpg" /></a>
</div>
<a href="#"><h3>Заголовок</h3></a>
</div>

Как можно сделать, что бы при наведении на картинку подсвечивалась ссылка с текстом, засунуть весь блок в <a> не вариант, может быть есть на js решение?

Помогите, кто чем может

Link to comment
Share on other sites

20 answers to this question

Recommended Posts

  • 0

Всем привет, такая проблема


<div class="block">
<div class="block2">
<a href="#"><img src="img.jpg" /></a>
</div>
<a href="#"><h3>Заголовок</h3></a>
</div>

Как можно сделать, что бы при наведении на картинку подсвечивалась ссылка с текстом, засунуть весь блок в <a> не вариант, может быть есть на js решение?

Помогите, кто чем может

сделай на картинке событие onmouseover и сделай функцию которая по id или class находит ссылочку которую нужно подсветить и сделай для неё через js манипуляции

сейчас времени привести пример кода нету, могу помочь вечером если что стучись 6c5f81bbed217b9eb5b7@qip.ru

Link to comment
Share on other sites

  • 0

Есть на JS. Сразу присвоим ID тегу. Затем сделаем CSS.


#наш_ид:hover {............}
#наш_ид[highlight='ok'] {...........}

Далее пишем Javascript.


function highlightLinkById(id) {
document.getElementById(id).highlight = (document.getElementById(id).highlight == 'ok') ? 'ok' : 'none'
}

Затем картинке присваиваем onmouseover и onmouseout:


onmouseover="highlightLinkById('наш_ид')" onmouseout="highlightLinkById('наш_ид')"

http://jsfiddle.net/zCqPh/

Чё-то не работает

Edited by sitemaker999
Link to comment
Share on other sites

  • 0

Всем привет, такая проблема


<div class="block">
<div class="block2">
<a href="#"><img src="img.jpg" /></a>
</div>
<a href="#"><h3>Заголовок</h3></a>
</div>

Как можно сделать, что бы при наведении на картинку подсвечивалась ссылка с текстом, засунуть весь блок в <a> не вариант, может быть есть на js решение?

Помогите, кто чем может

index.html


<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/style.css"/>
</head>
<body>
<div class="block">
<div class="block2">
<a href="#"><img src="img.jpg" /></a>
<a href="#" id="link">Ссылка с текстом</a>
</div>
<a href="#"><h3>Заголовок</h3></a>
</div>
</body>
</html>

css/style.css


#link{
display:none;
position:absolute;
background:#aaa;
font:normal 10px verdana;
opacity:0.8;
top:80px;
width:100px;
height:30px;
}
.block2:hover #link{
display:block;
}

Так?

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

Edited by Libiros
Link to comment
Share on other sites

  • 0

Добавь класс ссылке и к ней будет добавляться новый класс со стилями наведенной ссылки при наведении курсора на изображение и убираться когда курсор будет уходить с изображения

Может быть можно как-то оптимальнее сделать, я сам только начинаю изучать jquery

http://jsfiddle.net/Xm2Be/357/

Link to comment
Share on other sites

  • 0

Да, так, если на блок наводим, то срабатывает, но нужно именно на картинку, у меня пока не выходит

Далее всё зависит от требований. Если в .block2 будет несколько div'ов, в которых есть картинка и ссылка с текстом, то можно сделать так:


<div class="block2">
<div id="test">
<a href="#"><img src="img.jpg"/></a>
<a href="#" id="link">Ссылка с текстом</a>
</div>
<div id="test">
<a href="#"><img src="img.jpg"/></a>
<a href="#" id="link">Ссылка с текстом</a>
</div>
<div id="test">
<a href="#"><img src="img.jpg"/></a>
<a href="#" id="link">Ссылка с текстом</a>
</div>
</div>


#link{
display:none;
position:absolute;
background:#aaa;
font:normal 10px verdana;
opacity:0.8;
margin:-30px auto;
width:100px;
height:30px;
border:1px solid green;
}

.block2{
width:400px;
height:200px;
border:1px solid black;
}
#test{
display:inline-block;
width:100px;
margin:10px;
border:1px solid black;
}
#test:hover #link{
display:block;
}

Если критично количество div'ов, то можно переделать.

Также можно избежать изобилие div'ов (заменив их на p или списки) и изобилие id, вписав простые :first-child и :last-child. Но это, опять же, зависит от конечных требований. Вдруг, там будет тысяча ссылок и тогда :last-child не подойдет и т. п.

Edited by Libiros
Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

  • 0

Libiros:

Все это хорошо но вы видите, что картинка и текст в ссылке у меня в разных блоках


<div class="block">
<div class="block2">
<a href="#"><img src="img.jpg" /></a>
</div>
<a href="#"><h3>Заголовок</h3></a>
</div>

При наведении на картинку меняет цвет ссылка, картинки могут быть разного размера, у одной высота например может быть 200рх а у другой 30рх. вот почему нужно наведение не на блок а на картинку, будет много div=block, но в каждом только одна картинка и одна ссылка, вся загвоздка и есть в том, что картинка и текст в разных блоках

Link to comment
Share on other sites

  • 0

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

Что мешает сделать так: http://jsfiddle.net/HwA8s/2/ ?

Link to comment
Share on other sites

  • 0

При наведении на картинку меняет цвет ссылка

Та, что

<a href="#"><h3>Заголовок</h3></a>

?

Да )

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

Что мешает сделать так: http://jsfiddle.net/HwA8s/2/ ?

Картинки и ссылка в разных блоках, так надо

Link to comment
Share on other sites

  • 0

Возможно, с помощью css этого не достичь, а может, просто не хватает моих знаний. Но тогда код будет такой:


<div class="block">
<div class="block2">
<a href="#"><img src="img.jpg" onmouseover="document.getElementById('test').style.color='#f00';" onmouseout="document.getElementById('test').style.color='';"/></a>
</div>
<a href="#" id="test"><h3>Заголовок</h3></a>
</div>

Если будет много картинок и ссылок, то каждый раз придётся менять id. Можно как-то это автоматизировать, но здесь мои знания js заканчиваются :)

Link to comment
Share on other sites

  • 0

Есть на JS. Сразу присвоим ID тегу. Затем сделаем CSS.


#наш_ид:hover {............}
#наш_ид[highlight='ok'] {...........}

Далее пишем Javascript.


function highlightLinkById(id) {
document.getElementById(id).highlight = (document.getElementById(id).highlight == 'ok') ? 'ok' : 'none'
}

Затем картинке присваиваем onmouseover и onmouseout:


onmouseover="highlightLinkById('наш_ид')" onmouseout="highlightLinkById('наш_ид')"

И что, в вашем случае, при наличии многих повторяющихся блоков, будет правильно работать?

Link to comment
Share on other sites

  • 0

если размер block2 соответствует размеру картинки, то можно так http://jsfiddle.net/eTQdd/

с помощью js универсальный вариант для большого количества таких конструкций http://jsfiddle.net/eTQdd/1/

Link to comment
Share on other sites

  • 0

если размер block2 соответствует размеру картинки, то можно так http://jsfiddle.net/eTQdd/

с помощью js универсальный вариант для большого количества таких конструкций http://jsfiddle.net/eTQdd/1/

ВОТ !!! :P Оно Switch7, то что нужно, взял второй вариант с JS. Стало как надо прямо )))

Спасибище вам Switch7 огромное !!!

Спасибо всем добрым людям кто советовал!

Решение найдено ))

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

  • Similar Content

    • By qqruz
      Мне нужен код для автоматической публикация последних видео с нескольких каналов ютюб, что бы они шли последовательно. Я перерыл весь интернет и нечего не нашел, сам тоже пытался написать, но из-за слабого знания языка и малого количества видео не могу. Надеюсь на чью-то поддержку.
    • By fooxy96
      Здравствуйте! Нужна помощь хорошо разбирающихся людей в верстке. Написал часть сайта (html, css) адаптив. На сайте только шапка, поисковая форма, вход и корзина.
      Подскажите, что я сделал не правильно в коде.
      Какими способами можно реализвать форму поиска с кнопкой, вход, и корзину. Я понимаю что много ошибок, хоть код и не большой.
      Буду благодарен за любой отзыв и разбор.
      Спасибо!!!
      ссылка на сайт — u1071267.isp.regruhosting.ru
    • By FotGOD
      Здравствуйте. Верстаю макет, но чтото не так. Подобные верстал раньше, все было хорошо, даже сверяю, все чуть ли не под копирку написал. Но в Этом коде почему-то строки в меню слиплись и не могу их раскинуть. на рисунке как должно быть, и как выходит. Что не так делаю?
       Html:
      <div class="container"> <header class="header"> <div class="header-item"> <a href="#"><h1 class="logo">Bouncy</h1></a> <nav class="navbar"> <ul class="menu"> <li><a href="#">Hello</a> </li> <li><a href="#">About</a> </li> <li><a href="#">Services</a> </li> <li><a href="#">Portfolio</a> </li> <li><a href="#">Team</a> </li> <li><a href="#">Blog</a> </li> <li><a href="#">Contact</a> </li> </ul> </nav> </div> </header> </div>  Css:
      .header { width: 1366px; height: 737px; background: url(../i/header.jpg) no-repeat; } .header a { text-decoration: none; } .container { width: 1366px; margin: auto; } .header-item { display: flex; flex-wrap: wrap; justify-content: space-around; } .logo { text-transform: uppercase; color: #ffffff; } .navbar { margin-top: 16px; } .menu { display: flex; justify-content: flex-end; list-style: none; } .menu a { color: #ffffff; }  


    • By plarfox
      Здравствуйте, помогите разобраться, делаем кастомные радиобаттоны, скрываем те что по умолчанию, с помощью span рисуем новые (псевдокласс :before для состояния отмеченности), стилизуем поведение в разных состояниях, :hover  :focus  :checked
         Проблема в том что после задания стилей  для :focus (которые передают обводку со скрытых радиобаттонов) эта обводка отображается не только после использования tab и нажатий с клавиатуры, но и при нажатии мышкой. В общем цель в том что-бы обводка от фокуса появлялась только при манипуляции с клавиатуры, а при нажатии с мыши и разных состояний (:hover :checked) ее не было , для них свои стили
      P. S. Изучаю пока-что HTML и CSS, надеюсь это можно сделать без Javascript
      <ul> <li class="filter-option"> <label><input class="visually-hidden filter-input-radio" type="radio" value="one" name="radio"> <span class="radio-indicator"></span> Радиокнопка 1 </label> </li> <li class="filter-option"> <label><input class="visually-hidden filter-input-radio" type="radio" value="two" name="radio"> <span class="radio-indicator"></span> Радиокнопка 2 </label> </li> <li class="filter-option"> <label><input class="visually-hidden filter-input-radio" type="radio" value="three" name="radio"> <span class="radio-indicator"></span> Радиокнопка 3 </label> </li> </ul>  
      .visually-hidden input[type="radio"] { position: absolute; width: 1px; height: 1px; margin: -1px; clip: rect(0 0 0 0); } .filter-option { position: relative; margin-bottom: 25px; padding-left: 38px; } .filter-option label { cursor: pointer; } .radio-indicator { content: ""; position: absolute; top: -3px; left: 0; width: 21px; height: 21px; border: 4px solid #4d4d4d; border-radius: 50%; opacity: 0.5; } .filter-input-radio:checked + .radio-indicator::before { content: ""; position: absolute; top: 7px; left: 7px; width: 8px; height: 8px; background-color: #4d4d4d; border-radius: 50%; opacity: 0.5; } .filter-option:hover, .filter-option:hover .radio-indicator, .filter-option:hover .radio-indicator::before { color: #000000; opacity: 1; } .filter-input-radio:focus + .radio-indicator { outline: thin dotted; outline: 5px auto -webkit-focus-ring-color; opacity: 1; } .filter-input-radio:focus + .radio-indicator::before { opacity: 1; }  
    • By turre
      Здравствуйте.
      Помогите с Html и css
      Сам я начинающий и пока только учусь.
      Есть index.html к нему style.css получается криво, а надо одинаковые строчки.
      Спасибо.
      P.S. буду признателен если подскажите как сделать что бы текст был строго по центу.
      index.html
      style.css

×
×
  • 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