Демо страница со скриптами
КНОПКА НАВЕРХ СКРИПТ
Простая кнопка Наверх, появляется при прокрутке немного вниз. Сделано на простом Js.
<a href="#" id="scrollToTop" class="scrollToTop">Scroll</a>
<script>
document.addEventListener("scroll", function() {
var button = document.getElementById("scrollToTop");
if (document.documentElement.scrollTop > 100) {
button.style.display = "block"; // Показываем кнопку
} else {
button.style.display = "none"; // Скрываем кнопку
}
});
function scrollToTop() {
const duration = 500; // Длительность анимации в миллисекундах
const start = window.scrollY;
const startTime = performance.now();
function animateScroll(currentTime) {
const elapsedTime = currentTime - startTime;
const progress = Math.min(elapsedTime / duration, 1); // Нормируем прогресс
// Прокручиваем на основе прогресса
window.scrollTo(0, start * (1 - progress));
if (progress < 1) {
requestAnimationFrame(animateScroll); // Запрашиваем следующий кадр
}
}
requestAnimationFrame(animateScroll); // Начинаем анимацию
}
document.getElementById("scrollToTop").addEventListener("click", function(event) {
event.preventDefault();
scrollToTop();
});
</script>
/* scroll up CSS begin */
.scrollup{
width:100px;
height:100px;
opacity:1;
position:fixed;
bottom:22px;
left:20px;
display:none;
text-indent:-9999px;
background: url(/uploads/scrollup.webp) no-repeat left top;
z-index: 9001;
border-radius: 50%;
}
@media only screen and (max-width: 840px) {
.scrollup {
width: 100px;
height: 100px;
border-radius: 50%;
bottom: 16px;
left: 2%;
}
}
/* scroll up CSS end */
БЛОК С УВЕДОМЛЕНИЕМ О COOKIES СКРИПТ
Простой блок с куки уведомлением, кнопкой ОК.
<!-- START Cookie-Alert -->
<div id="cookie_note">
<p>Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями
использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности, сборе персональных данных и об использовании
файлов cookie, <a href="/policy.html" target="_blank">нажмите здесь</a>.</p>
<button class="button cookie_accept btn btn-primary btn-sm">Я согласен</button>
</div>
<script>
function setCookie(name, value, days) {
let expires = "";
if (days) {
let date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
function getCookie(name) {
let matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"));
return matches ? decodeURIComponent(matches[1]) : undefined;
}
function checkCookies() {
let cookieNote = document.getElementById('cookie_note');
let cookieBtnAccept = cookieNote.querySelector('.cookie_accept');
// Если куки cookies_policy нет или она просрочена, то показываем уведомление
if (!getCookie('cookies_policy')) {
cookieNote.classList.add('show');
}
// При клике на кнопку устанавливаем куку cookies_policy на один год
cookieBtnAccept.addEventListener('click', function () {
setCookie('cookies_policy', 'true', 365);
cookieNote.classList.remove('show');
});
}
checkCookies();
</script>
<!-- END Cookie-Alert -->
CSS
#cookie_note{
display: none;position: fixed;z-index:100;
bottom: 15px;left: 50%; max-width: 90%;transform: translateX(-50%);
padding: 20px;background-color: white;
border-radius: 4px;box-shadow: 2px 3px 10px rgba(0, 0, 0, 0.4);
}
#cookie_note p{margin: 0;font-size: 0.7rem;text-align: left;color: black;}
#cookie_note .btn-sm {display: block;margin: 0 auto;}
.cookie_accept{width:20%;}
@media (min-width: 576px){#cookie_note.show{display: flex;}}
@media (max-width: 575px){#cookie_note.show{display: none;text-align: left;}}
Источник: https://tretyakov.net/post/preduprezhdenie-o-cookie-dlya-sajta-na-javascript/
МОРГАЮЩАЯ КНОПКА ПОЗВОНИТЬ СКРИПТ
На мобильном при клике на кнопку - переход на ваш телефон. На десктопе при клике - переход на любую страницу, либо форму обратного звонка, но можно сделать и появляющееся модальное окно с формой, если оно у вас есть.
<div class="callback-widget-desc" data-event="jqm" data-param-id="15" data-name="callback">
<a href="/index.php?do=feedback" title="Форма обратной связи"><img src="/uploads/telefon-2.webp" class="phonewebp" alt="Форма обратной связи"/></a>
</div>
<div class="callback-widget-mob">
<a href="tel:+79800005665" title="Телефон"><img src="/uploads/telefon-2.webp" class="phonewebp" alt="Позвонить"/></a>
</div>
****************
CSS
.callback-widget-desc {
display:block;
width:70px;
height:70px;
background-image: url(/webpimg/telefon.webp);
background-size:cover;
position:fixed;
bottom:60%;
right:30px;
border-radius: 50%;
cursor:pointer;
-webkit-animation-name: 'play_down';
-moz-animation-name: 'play_up';
animation-duration: 1.5s;
animation-iteration-count: infinite;
box-shadow: 0 0 0 3px rgba(22, 160, 133,.5);}
#content > div.callback-widget-desc > span > i, body > div.body > div.main.banner-AUTO > div.callback-widget-desc > span > i {height: 70px;width: 70px;line-height: 55px;padding-top:7px;font-size: 45px!important;}
#content > div.callback-widget-desc > span, div.main.banner-AUTO > div.callback-widget-desc > span {font-size: 45px!important;}
.callback-widget-mob {display:none;}
.phonewebp {width:70px;height:70px;margin:0!important;}
@keyframes play_up { 0%
{
-webkit-box-shadow: 0 0 rgba(22,160,133,.6);
-moz-box-shadow: 0 0 rgba(22,160,133,.6);
box-shadow: 0 0 rgba(22,160,133,.6);
} to {
-webkit-box-shadow: 0 0 0 20px rgba(22,160,133,0);
-moz-box-shadow: 0 0 0 20px rgba(22,160,133,0);
box-shadow: 0 0 0 20px rgba(22,160,133,0);
} }
@keyframes play_down { 0%
{
-webkit-box-shadow: 0 0 rgba(22,160,133,.6);
-moz-box-shadow: 0 0 rgba(22,160,133,.6);
box-shadow: 0 0 rgba(22,160,133,.6);
} to {
-webkit-box-shadow: 0 0 0 20px rgba(22,160,133,0);
-moz-box-shadow: 0 0 0 20px rgba(22,160,133,0);
box-shadow: 0 0 0 20px rgba(22,160,133,0);
} }
@media only screen and (min-width: 320px) and (max-width: 600px) {
.callback-widget-desc {display:none;}
.callback-widget-mob {
display: block;
width: 56px;
height: 56px;
position: fixed;
bottom: 50%;
right: 43px;
border-radius: 50%;
z-index: 10000;
border: 0px cursor: pointer;
-webkit-animation-name: 'play_down';
-moz-animation-name: 'play_up';
animation-duration: 1.5s;
animation-iteration-count: infinite;
box-shadow: 0 0 0 3px rgba(22, 160, 133, .5);}
.phonewebp {width:56px;height:56px;margin:0!important;}
#content > div.callback-widget-mob > span {font-size: 35px!important;overflow-x:hidden!important;}
#content > div.callback-widget-mob > a > i {height: 56px;width: 56px;line-height: 55px;padding-top:0px;font-size: 35px!important;overflow-x:hidden!important;}
}
ВИДЖЕТЫ МЕССЕНДЖЕРОВ СКРИПТ
При клике на кнопку разворачиваются картинки с мессенджерами, простой скрипт на JS, можете добавить любой мессенджер какой хотите.
<!-- ВИДЖЕТЫ МЕССЕНДЖЕРОВ СПРАВА ВНИЗУ НАЧАЛО -->
<div class="callback-widget">
<div class="item item1"><a class="phone" href="tel:+79800005665" title="Телефон +7 (980) 000-56-65" rel="nofollow" target="_blank"></a></div>
<div class="item item2"><a href="https://t.me/NewSeoDay" title="Telegram" target="_blank" rel="nofollow" target="_blank"></a></div>
<div class="item item3"><a href="https://api.whatsapp.com/send?phone=79800005665" title="WhatsApp" target="_blank" rel="nofollow" target="_blank"></a></div>
<div class="callback-widget-btn"></div>
</div>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
const callbackBtn = document.querySelector('.callback-widget-btn');
const items = {
item1: document.querySelector('.item1'),
item2: document.querySelector('.item2'),
item3: document.querySelector('.item3')
};
callbackBtn.addEventListener('click', function(e) {
e.preventDefault();
this.classList.toggle('active');
if (this.classList.contains('active')) {
fadeIn(items.item3, 500);
setTimeout(() => fadeIn(items.item2, 350), 250);
setTimeout(() => fadeIn(items.item1, 450), 550);
} else {
fadeOut(items.item1, 500);
setTimeout(() => fadeOut(items.item2, 350), 250);
setTimeout(() => fadeOut(items.item3, 450), 550);
}
});
function fadeIn(element, duration) {
element.style.opacity = 0;
element.style.display = 'block';
let start = performance.now();
function animate(time) {
let elapsed = time - start;
element.style.opacity = Math.min(elapsed / duration, 1);
if (elapsed < duration) {
requestAnimationFrame(animate);
}
}
requestAnimationFrame(animate);
}
function fadeOut(element, duration) {
element.style.opacity = 1;
let start = performance.now();
function animate(time) {
let elapsed = time - start;
element.style.opacity = Math.max(1 - elapsed / duration, 0);
if (elapsed < duration) {
requestAnimationFrame(animate);
} else {
element.style.display = 'none';
}
}
requestAnimationFrame(animate);
}
});
</script>
<!-- ВИДЖЕТЫ МЕССЕНДЖЕРОВ СПРАВА ВНИЗУ КОНЕЦ -->
CSS
.item{position: fixed;display:none;width:70px;height:70px;border-radius:50%;}
.item1{bottom:270px;right:20px;background-image: url(/webpmess/telefon-1.webp);background-size:cover;}
.item2{bottom:190px;right:20px;background-image: url(/webpmess/telegram-1.webp);background-size:cover;}
.item3{bottom:110px;right:20px;background-image: url(/webpmess/whatsup-1.webp);background-size:cover;}
.item1 a{display:block;width:70px;height:70px;}
.item2 a{display:block;width:70px;height:70px;}
.item3 a{display:block;width:70px;height:70px;}
.callback-widget-btn{
width: 70px;height: 70px;background-image: url(/webpmess/messagevid-1.webp);
background-size:cover;border-radius: 50%;position: fixed;bottom:10px;
right:20px;cursor:pointer;animation-duration: 1.5s;animation-iteration-count: infinite;}
----------------------