Многосекционный слайдер

1k
Алексей,
Многосекционный слайдер
Многосекционный слайдер

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

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

Главное понимать, что дополнительные ссылки должны быть уточняющими, они не должны уводить посетителя в разные разделы.

Сделать такой функционал достаточно просто. Слайдер должен поддерживать html содержимое (например bxSlider)

В админке необходимо завести 2 свойства:

  1. Основная ссылка, которая будет действовать на весь слайд
  2. И дополнительные ссылки (множественное свойство типа "Строка" с описанием), эти ссылки будут поверх основной. В описании будем указывать ширину ссылки (такой вот костыль)

Если упрощенно, то структура и стили слайдера будут такими:

<div class="bxslider">
	<div class="bxslider__item">
		<a href="#link1" class="bxslider__main-link">
			<img src="/path/to/img" alt="">
		</a>
		<a href="#link2" class="bxslider__sub-link" style="width: 50%;"></a>
		<a href="#link3" class="bxslider__sub-link" style="width: 50%; left: 50%"></a>
	</div>
</div>

<style type="text/css">
	.bxslider__item{
		position: relative;
	}
	.bxslider__main-link{
		display: block;
	}
	.bxslider__item-add-link{
		display: block;
		height: 100%;
		position: absolute;
		top: 0;
	}
</style>

В элемент bxslider__main-link вставляем основную ссылку. В bxslider__sub-link вставляем дополнительные ссылки и в атрибут style выводим ширину указанную в описании. В каждом следующем bxslider__sub-link указывается сумма ширины предыдущих ссылок в свойство left.

Примерно так

<?
if (is_array($arItem["PROPERTIES"]['ADD_URLS']['VALUE'])) {
	$summLeft = 0;
	foreach ($arItem["PROPERTIES"]['ADD_URLS']['VALUE'] as $k => $link) {
		$pos = $arItem["PROPERTIES"]['ADD_URLS']['DESCRIPTION'][$k];
		if (IntVal($pos) < 1) {
			$pos = 0;
		}
		$summLeft += $pos;
		?>
			<a 
				href="<?=$link?>" 
				class="bxslider__sub-link" 
				style="width: <?=$pos?>%; left: <?=($summLeft-$pos)?>%;"
			></a>
		<?
	}
}
?>

Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.

Опубликовано 13 марта 2017 | Обновлено 14 марта 2017
разработчику, пользователю, идея
Поделиться
Похожие статьи
Автоматическое выполнение js в браузере при посещении сайта
Есть сайты, которыми мы часто пользуемся, например по работе, но на них не хватает какого-либо интер...
Читать дальше » 0
Алексей,
Как сделать ИМ дружелюбнее. E-mail уведомления
Наверно это касается всех интернет-магазинов на 1С-Битрикс. Делаешь заказ и понеслось: заказ оформле...
Читать дальше » 0
Алексей,
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
Название так себе конечно. Смысл в том, что слайд делиться на несколько областей и у каждой области своя ссылка. Интересная идея для магазина одежды.