/ Scripts & jquery / Изменение конфигурации объекта

Изменение конфигурации объекта

02.06.2020

679

Создадим функционал по изменению различных конфигураций объекта. Например сделаем конфигуратор коттеджа, у которого будут изменять цвет и материал кровли, а также цветовая схема стен.

Должно получится примерно следующее:

Материалы

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

Изображения должны быть в формате png. Фон желательно должен быть из рендера объекта, либо можно сделать фон изменяемым. Если основные изменяющиеся изображения с одинаковым фоном, то их можно сделать в формате .jpg.

В моем примере мы будем изменять варианты окраски стен (я сделал отдельные png, но можно было использовать и jpg с одинаковым фоном, 10 вариантов) и материал и цвет кровли (6 png файлов: 2 материала и 3 расцветки).

Файлы должны хранится в определенных папках (указывается в скрипте) и названы определенным образом.

/config/

  • House-109-01.png
  • House-109-02.png
  • House-109-03.png
  • House-109-10.png

/roof/

  • House-109-r01m01.png
  • House-109-r01m02.png
  • House-109-r01m03.png
  • House-109-r02m01.png
  • House-109-r02m02.png
  • House-109-r02m03.png

Основные компоненты

Верстка

<div id="config-block" class="section"><div class="wrapper"><div class="container"><div>
  
	<h2>ВЫБЕРИ СВОЙ ЦВЕТ</h2> 

	<div id="config">
	
		<img id="color-relation" src="/wp-content/themes/meisterwerk-2/images/config/House-109-01.png">
		
		<div id="roof"><img src="/wp-content/themes/meisterwerk-2/images/roof/House-109-r01m01.png"></div>	

	</div>		
		
	<div class="color-select">
		Выбор цвета: 
		<div class="color selected" color="01">01</div>
		<div class="color" color="02">02</div>
		<div class="color" color="03">03</div>
		<div class="color" color="04">04</div>
		<div class="color" color="05">05</div>
		<div class="color" color="06">06</div>
		<div class="color" color="07">07</div>
		<div class="color" color="08">08</div>
		<div class="color" color="09">09</div>
		<div class="color" color="10">10</div>	
	</div>
	
	<div class="material-select">
		Выбор материала кровли: 
		<div class="mat selected" mat="01">falc</div>
		<div class="mat" mat="02">metall</div>
		<div class="mat" mat="03">soft</div>
	</div>		
	
	<div class="roof-color-select">
		Выбор цвета кровли: 
		<div class="roof selected" roof="01">коричневый</div>
		<div class="roof" roof="02">тёмный</div>
	</div>  

</div></div></div></div>

Стили

#config {
    position: relative;
    max-width: 1190px;
    margin: 0 auto;
    background: url(/wp-content/uploads/2020/05/uchastok-2-2.jpg);
    background-size: cover;
    background-position: center; /* center -100px */
    margin-bottom: 30px;
    padding: 30px;
}

#config img {display: block;}

.color-select, .roof-color-select, .material-select {
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 15px;
}

.color-select div, .roof-color-select div, .material-select div {
    background: #475384;
    color: #fff;
    padding: 5px;
    margin: 0 5px;
    cursor: pointer;
}

.color-select div.selected, .roof-color-select div.selected, .material-select div.selected {
    background: #2d3967;
}

#roof {
    position: absolute;
    top: 0;
    left: 0;
    padding: 30px;
}

Скрипты

jQuery(document).ready(function ($) {
	
	// Изменение расцветки стен
	$("body").on("click", ".color-select div", function () {
		var color = $(this).attr('color');
		$('.color-select div').removeClass('selected');
		$(this).addClass('selected');
		$('#color-relation').attr('src', '/wp-content/themes/meisterwerk-2/images/config/House-109-' + color + '.png');
	});
	
	// Изменение цвета и материала кровли
	$("body").on("click", ".roof-color-select div", function () {
		var roof = $(this).attr('roof');
		var material = $('.mat.selected').attr('mat');
		$('.roof-color-select div').removeClass('selected');
		$(this).addClass('selected');
		$('#roof img').attr('src', '/wp-content/themes/meisterwerk-2/images/roof/House-109-r' + roof + 'm' + material + '.png');
	});
	
	$("body").on("click", ".material-select div", function () {
		var material = $(this).attr('mat');
		var roof = $('.roof.selected').attr('roof');
		$('.material-select div').removeClass('selected');
		$(this).addClass('selected');
		$('#roof img').attr('src', '/wp-content/themes/meisterwerk-2/images/roof/House-109-r' + roof + 'm' + material + '.png');
		//alert (roof);
	});		
	
});

Скрипт используется атрибут кнопки конфигуратора для подбора изображения по названию файла. За счет того что изображения подгружаются на лету, а не все сразу, данное решение не является долгим для первоначальной загрузки.

Поделиться в соц. сетях:

  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

Изменение конфигурации объекта Изменение конфигурации объекта Изменение конфигурации объекта
Метаполе для термина таксономии
Рекомендации для васМетаполе для термина таксономииOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.