Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 08.10.2019, 01:05
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Байт
То есть - понять механизмы.
Такие кнопки, которые хранят в себе нажатое состояние, делаются при помощи элементов <input type="checkbox"> и <label>.

Вот ваш пример в чистом виде...
<html>
<head>
	<meta charset="utf-8">
	<style></style>
</head>
<body>
	<input type="checkbox" id="sun">
	<label for="sun">Солнце</label>

	<input type="checkbox" id="moon">
	<label for="moon">Луна</label>

	<input type="checkbox" id="mercury">
	<label for="mercury">Меркурий</label>
</body>
</html>


Или даже так...
<html>
<head>
	<meta charset="utf-8">
	<style></style>
</head>
<body>
	<label class="toggler">
		<input type="checkbox" checked>
		<span>Солнце</span>
	</label>

	<label class="toggler">
		<input type="checkbox">
		<span>Луна</span>
	</label>

	<label class="toggler">
		<input type="checkbox">
		<span>Меркурий</span>
	</label>
</body>
</html>


И уже отталкиваясь от правильной разметки, выясняется, что для достижения вашего эффекта нужно всего лишь применить стили.
<html>
<head>
	<meta charset="utf-8">
	<style>
	
.toggler {
	width: max-content;
	display: block;
} 

.toggler input {
	position: absolute;
	opacity: 0;
}

.toggler input + span {
	background-color: #ffffff;
	cursor: pointer;
	padding: 0.5em;
	margin: 0.5em;
	display: block;
}

.toggler input:focus + span {
	outline: 1px dotted;
	outline: -webkit-focus-ring-color auto 1px;
}

.toggler input:checked + span {
	background-color: #9999ff;
}
	
	</style>
</head>
<body>
	<label class="toggler">
		<input type="checkbox" checked>
		<span>Солнце</span>
	</label>

	<label class="toggler">
		<input type="checkbox">
		<span>Луна</span>
	</label>

	<label class="toggler">
		<input type="checkbox">
		<span>Меркурий</span>
	</label>
</body>
</html>
Этот пример работает даже в самых старых браузерах, а самое главное то, что он является кроссплатформенным и доступным. Также имеется уже готовое API для работы с состоянием, а также эти кнопки могут быть частью чего-то большего.

Последний раз редактировалось Malleys, 08.10.2019 в 01:15.
Ответить с цитированием
  #12 (permalink)  
Старый 08.10.2019, 11:17
Интересующийся
Отправить личное сообщение для Байт Посмотреть профиль Найти все сообщения от Байт
 
Регистрация: 06.10.2019
Сообщений: 14

Сообщение от рони
jquery не телепат, она не следит в этом случае, какие элементы ещё возникнут с этим классом sel в дальнейшем.
Вот оно что! Привязка-то - статическая. Теперь все понятно. Просто - луч света в темном царстве.
Огромное вам спасибо!
Ответить с цитированием
  #13 (permalink)  
Старый 08.10.2019, 11:22
Интересующийся
Отправить личное сообщение для Байт Посмотреть профиль Найти все сообщения от Байт
 
Регистрация: 06.10.2019
Сообщений: 14

Malleys, с чекбоксами-то все понятно. Более того, у меня так и было по началу. Но не понравилось по эстетике и объему. Там же список довольно большой.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическая смена активного класса по таймеру MiHALbI4 Общие вопросы Javascript 4 08.04.2019 18:21
Смена класса при скроллинге Dayros Общие вопросы Javascript 17 24.01.2017 20:32
Смена класса с запоминание joker95 Элементы интерфейса 1 11.04.2016 12:00
смена класса div Gwin Библиотеки/Тулкиты/Фреймворки 5 11.04.2013 16:13
Использование классов в JavaScript devote Ваши сайты и скрипты 70 01.02.2013 17:17