Добавление нарастающей скидки на сайте HTML+CSS+JS

Цель: улучшить поведенческие факторы (среднее время на сайте, показатель отказов, глубина просмотра).

Как подключить библиотеку jQuery

Есть несколько способов подключить библиотеку jQuery: скачать файл в папку или подключить напрямую.
Рассмотрим второй вариант.

Для подключения рекомендую использоваться подключение от Google Developers. Наша задача скопировать строку:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>

и вставить эту строчку перед закрывающимся тегом </head>


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<!--Подключаем библиотеку-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
</head>
</body>
</body>
</html>

Добавляем скрипт, который проверяет пользователя на первое посещение

Теперь мы должны добавить проверку на первое посещение и добавить cookie, чтобы наш счётчик сохранял значение скидки при переходе по страницам сайта.
Добавляем скрипт перед тегом </body>


if(getCookie('disc')){ //Проверяем есть ли cookie (Первое ли посещение сайта?)
	var disc = parseFloat(getCookie('disc'));
	var timer = setInterval(function () { // Функция, которая увеличивает значение скидки через определённое количество времени
		if(disc < 4.9999){ //Устанавливаем максимальную скидку, тут 5%
			disc +=0.01; //Увеличиваем значение на 0.01
			setCookie('disc', disc.toFixed(2), {secure: true, 'max-age': 86400}); //Устанавливаем cookie, secure - соединение https, max-age - как долго будут жить cookie, тут 24 часа
			jQuery('#disc-wid').text(disc.toFixed(2)); // Выводим значение скидки
			console.log(disc); //Выводим значение скидки в консоли для проверки
		}else{
			
			jQuery('#disc-wid').text(5); //Устанавливаем значение максимальной скидки
			console.log('Максимальная скидка'); //Выводим в консоли соответствующее сообщение
			clearInterval(timer); //Останаливаем функцию, которая увеличивает значение скидки
			return false;
		}
	}, 2000);
}else{
	setCookie('disc', 0, {secure: true, 'max-age': 86400}); //Если первое посещение - устанавливаем cookie
	disc = 0;
	var timer = setInterval(function () {
		disc +=0.01;
		if(disc < 4.9999){
			setCookie('disc', disc.toFixed(2), {secure: true, 'max-age': 86400});
			jQuery('#disc-wid').text(disc.toFixed(2));
			console.log(disc);
		}else{
			console.log('Максимальная скидка');
			clearInterval(timer);
			jQuery('#disc-wid').text(5);
			return false;
		}
	}, 2000);
}
function setCookie(name, value, options = {}) { //Функция, которая устанавливает cookie
options = {
	path: '/',
};
//if (options.expires.toUTCString) {
// options.expires = options.expires.toUTCString();
//}
let updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value);
for (let optionKey in options) {
	updatedCookie += "; " + optionKey;
	let optionValue = options[optionKey];
	if (optionValue !== true) {
	  updatedCookie += "=" + optionValue;
	}
}
document.cookie = updatedCookie;
}
function getCookie(name) { // Функция, которая забирает значение cookie
let matches = document.cookie.match(new RegExp(
	"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}

Добавляем HTML код нашего виджета

Добавляем код после тега <body>


<div class="discount-widjet" title="Нажмите для получения скидки">
	<p>Ваша скидка</p>
	<p class="input-disc">
		<span id="disc-wid"></span>%
	</p>
</div>

Стилизуем наш виджет с помощью CSS

Добавляем css код или в подключаемом файле, или в теге <style> перед тегом </head>


.discount-widjet {
	cursor: pointer;
	position: fixed;
	left: 0px;
	bottom: 15%;
	background: #fff;
	padding: 20px;
	border-bottom-right-radius: 10px;
	border-top-right-radius: 10px;
	box-shadow: 3px 3px 10px #bebebe;
	display: flex;
	flex-direction: column;
	align-items: center;
	transition: .4s;
}
.discount-widjet p {
	margin: 0;
	font-size: 20px;
}

Ваша скидка

%

Для лучшей отработки виджета можно добавить действие на клик по виджету, при котором открывалась бы форма заказа, чтобы пользователь сразу смог воспользоваться полученной скидкой:)

Итог нашей работы Вы можете увидеть в нижней левой части данной страницы.
Виджет работает только на данной странице и носит исключительно показательный характер.

С результатом работы виджета Вы сможете ознакомится в кейсе по установке виджета с нарастающей скидкой