Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Изменение родительского стиля и фокусе дочернего (https://javascript.ru/forum/xhtml-html-css/60232-izmenenie-roditelskogo-stilya-i-fokuse-dochernego.html)

Siend 18.12.2015 11:59

Изменение родительского стиля и фокусе дочернего
 
Ребят, запутался в селекторах. Подскажите как реализовать следующую вещь (и можно ли это сделать):

<div class="a">
  <div class="b">
    <div class="c"></div>
    <div class="c"></div>
    <div class="c"></div>
  </div>
</div>


задача: при фокусе "с" менять стиль у "а".
.a .c:focus{
/*задаем стиль фокусного "с"*/
}


А есть ли конструкция позволяющая менять стиль у "а" при ".c:focus"? или только javascript?

Deff 18.12.2015 12:14

Siend,
С дочернего на родительский с помощью css стиль не изменить, только скрипт. (если только margin:-XXpx, не вывести все элементы c за пределы b и а (т.е они их будут перекрывать) тогда фокус на a никак не сделать, кроме как ткнуть с
Тады просто прописываем а:focus{ поскольку он будет лишь через фокус на с
Можно сделать при этом псевдовидимость а и b, перекрыв их широкими бордерами с прозрачным цветом от блоков с

Siend 18.12.2015 12:49

Спасибо, идею понял)

просто такая вот проблема возникла:
Есть выпадающий список, взят из примера (ссылка на пример). В примере при выборе пункта меню ничего не происходит, пока не кликнешь в сторону от меня, а я хочу добиться чтобы при нажатии на выпадающий пункт меню, все подменю скрывалось.
<ul class="menu">
	<li tabindex="0">
			<span class="helix_subfont">Выбранный пункт меню</span>
		<ul class="submenu helix helix_subfont">
			<li>Пункт меню</li>
			<li>Пункт меню</li>
			<li>Пункт меню</li>
		</ul>
	</li>
</ul>

.submenu {
  ...
  max-height: 0;
  pointer-events: none;
}

.menu > li:hover .submenu, .menu > li:focus .submenu {
  pointer-events: auto;
  max-height: 2000;
  ...
}


Я решил проблему на jquery:
$(".menu .submenu li").click(function(e) {
	$(".menu .submenu:hover").css({ "pointer-events": "none" });
});
$(".menu li").hover(function () {
	$(".menu .submenu").css({ "pointer-events": "auto" });
}, function () {});


Но решение на css было бы красивее и правильнее(


Часовой пояс GMT +3, время: 07:40.