Страницы

Поиск по вопросам

суббота, 7 декабря 2019 г.

Как изменить стили у первого элемента при наведении на второй элемент?

#html #css


Необходимо, чтобы при наведение на ссылку "Интернет магазин Арога" ссылка "Интернет
магазин Солана" меняла цвет.

Подскажите пожалуйста как это реализовать?



Пытался сделать так:



.sbm_top_link:nth-child(2):hover + .sbm_top_link a {
  color: #222222;
  background: #333333;
}




    


Ответы

Ответ 1



ul { margin: 15px 0; text-align: center; font-size: 0; } ul > li { display: inline-block; vertical-align: top; font-size: 14px; } ul > li > a { display: block; text-decoration: none; padding: 10px 15px; background: #ccc; color: #555; } ul:hover > li > a { background: #000; color: #fff; } ul > li > a:hover { background: #999; }

Ответ 2



Я всё-таки исхитрился и сделал вот такое чудо на CSS. В Хроме работает, в FF и в IE11 - тоже. div { display: flex; } a { background: antiquewhite; margin: .5em; padding: .5em; } .a1 { order: 1; } .a2 { order: 2; } .a1a, .a2a { position: absolute; } a:hover { background: aquamarine; } a:hover ~ a { background: silver; } .a2:hover ~ .a1 { z-index: 1; } .a1:hover ~ .a2 { z-index: 1; }

Ответ 3



Раз на то пошло, то вот ещё вариант: #test { border: 0; height: 0; width: 0; } #test:hover + a { color: red; } https://jsfiddle.net/482y1c53/ Но лучше с помощью JS (ну или JQuery, как вам удобней): (function () { var aroga = document.querySelector('.sbmts_bl :nth-child(2)'); var solanaClassList = aroga.previousElementSibling.classList; aroga.addEventListener('mouseover', function () { solanaClassList.add('hightlight'); }); aroga.addEventListener('mouseout', function () { solanaClassList.remove('hightlight'); }); })(); .sbm_top_link:nth-child(2):hover + .sbm_top_link a { color: #222222; background: #333333; } .hightlight { color: red; } https://jsfiddle.net/pco94ys2/

Ответ 4



Если не принципиально, то в html меняем ссылки местами. С помощью свойства direction: rtl; и табличного отображения, делаем вид, что никто ни с кем местами и не менялся. Применяем нужный селектор и получаем необходимый результат. .sbmts_bl { border: 2px solid black; } .sbmts-bl__wrapper { border: 3px solid green; width: 400px; height: 40px; font-size: 0.8em; display: table; direction: rtl; margin-left: 50px; } .sbm_top_link { display: table-cell; border: 1px solid blue; text-align: center; vertical-align: middle; } .sbm_top_link:nth-child(1):hover + .sbm_top_link { color: white; background: black; }

Ответ 5



Наконец-то дошло, что отступов между ссылками нет. В таком случае всё элементарно. nav { background: #777; padding: 0 3em; } div { display: inline-block; } a { display: inline-block; background: antiquewhite; padding: .5em; } div:hover a:hover { background: aquamarine; } div:hover a { background: silver; } И даже ещё проще (хотя подойдёт только для фона и цвета текста): nav { background: #777; padding: 0 3em; } div { display: inline-block; background: antiquewhite; } a { display: inline-block; padding: .5em; } div:hover { background: silver; } a:hover { background: aquamarine; }

Ответ 6



Мануал E + F { Описание правил стиля } Для управления стилем соседних элементов используется символ плюса (+), который устанавливается между двумя селекторами E и F. Пробелы вокруг плюса не обязательны. Стиль при такой записи применяется к элементу F, но только в том случае, если он является соседним для элемента E и следует сразу после него. Сделать через css без костылей не получится, Вам необходимо воспользоваться js/jquery. UPD - пример кода на jquery $(function() { $(".sbm_top_link:nth-child(2)").hover( function() { $(".sbm_top_link:nth-child(1)").addClass('test'); }, function() { $(".sbm_top_link:nth-child(1)").removeClass('test'); } ) }); .test { color: #222222; background: #333333; }

Ответ 7



Ещё один вариант, основанный на дублировании ссылок. Но на этот раз простой. Работает с любым числом ссылок, причём css от этого не зависит. IE11+ и все остальные браузеры. В более ранних остальные ссылки не будут менять фон. nav { position: relative; } a { display: inline-block; background: antiquewhite; margin: .5em; padding: .5em; position: relative; z-index: 0; } div { position: absolute; left: 0; top: 0; right: 0; bottom: 0; pointer-events: none; z-index: 0; } a:hover { background: aquamarine; z-index: 1; } a:hover ~ div a { background: silver; }

Комментариев нет:

Отправить комментарий