Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Появление блока (https://javascript.ru/forum/dom-window/72154-poyavlenie-bloka.html)

Янковиц 12.01.2018 11:29

Появление блока
 
Добрый день. Подскажите, как реализовать такое:
Есть форма с множеством чекбоксов по вертикали. Как организовать появление блока напротив того чекбокса, который активировали или деактивировали?

Nexus 12.01.2018 12:07

Отслуживать событие "change" и выводить нужный блок.

Царь Леонид 12.01.2018 13:03

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title></title>
</head>
<body>
<input type="checkbox">
  <div class="box">Чекбокс1</div>
<input type="checkbox">
  <div class="box">Чекбокс2</div>
<input type="checkbox">
  <div class="box">Чекбокс3</div>
<input type="checkbox">
  <div class="box">Чекбокс4</div>
</body>
<style>
  input:not(:checked) + div {
    display: none
   }
  input::checked + div {
    display: block
   }
</style>
</html>

Янковиц 20.01.2018 12:23

Большое спасибо. Но у меня 1 блок на все чекбоксы.

Янковиц 20.01.2018 12:25

Верстка типа такого:
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title></title>
</head>
    <form>
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
    <div class="box">Блок с содержимым, изначально он скрыт</div>
</form>
</html>

j0hnik 20.01.2018 15:26

если 2 будут отмечены, как тогда поступать?

рони 20.01.2018 15:37

Цитата:

Сообщение от j0hnik
если 2 будут отмечены,

event click

рони 20.01.2018 15:42

Янковиц,
может input:focus:after будет достаточно?

рони 20.01.2018 15:46

Янковиц,
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title></title>
  <style type="text/css">
   input:focus:after {
     content: "Блок с содержимым, изначально он скрыт"
   }
  </style>
</head>
    <form>
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
</form>
</html>

j0hnik 20.01.2018 16:26

рони,
Это очень сильное колдунство.

Янковиц 21.01.2018 10:26

Это часть формы на ajax. При активации/деактивации чекбоксов содержимое блока меняется. Форма у меня по высоте почти на весь экран, и хотелось бы, чтобы при активации чекбокса, блок появлялся возле последнего измененного элемента

Янковиц 21.01.2018 10:39

Я предполагаю, что необходимо просто вычислить высоту от верха родительского блока до последнего измененного элемента формы. А дальше уже css?
Прошу помощи у формучан

Янковиц 21.01.2018 10:54

Сделал так:
$('#filter').on('change', 'input:', function(){
		var pos = $(this).position();
		$('.filter-result').css({ 'margin-top' : pos.top });
	});

Обычные чекбоксы отрабатывает на ура. Однако, с input type="hidden" какая-то беда. Вместо положенных 100-200 пикселей, он оступает 3 тысячи. Попробовал убрать type=hidden. Заработало, как надо. Осталось решить, как скрыть этот инпут. Display: none не помогает

Янковиц 21.01.2018 10:56

Попробовал добавить стилей без display: none
opacity: 0;
    height: 0;
    padding: 0;
    margin: 0;
    border: 0;

Сработало. Но это костыль какой-то, а не решение :(


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