<script type="text/javascript">
( function () {
'use strict';
// Флаг, что Метрика уже загрузилась.
var loadedMetrica = false,
// Ваш идентификатор сайта в Яндекс.Метрика.
metricaId = 123456789,
// Переменная для хранения таймера.
timerId;
// Для бота Яндекса грузим Метрику сразу без "отложки",
// чтобы в панели Метрики были зелёные кружочки
// при проверке корректности установки счётчика.
if ( navigator.userAgent.indexOf( 'YandexMetrika' ) > -1 ) {
loadMetrica();
} else {
// Подключаем Метрику, если юзер начал скроллить.
window.addEventListener( 'scroll', loadMetrica, {passive: true} );
// Подключаем Метрику, если юзер коснулся экрана.
window.addEventListener( 'touchstart', loadMetrica );
// Подключаем Метрику, если юзер дернул мышкой.
document.addEventListener( 'mouseenter', loadMetrica );
// Подключаем Метрику, если юзер кликнул мышкой.
document.addEventListener( 'click', loadMetrica );
// Подключаем Метрику при полной загрузке DOM дерева,
// с "отложкой" в 1 секунду через setTimeout,
// если пользователь ничего вообще не делал (фоллбэк).
document.addEventListener( 'DOMContentLoaded', loadFallback );
}
function loadFallback() {
timerId = setTimeout( loadMetrica, 1000 );
}
function loadMetrica( e ) {
// Пишем отладку в консоль браузера.
if ( e && e.type ) {
console.log( e.type );
} else {
console.log( 'DOMContentLoaded' );
}
// Если флаг загрузки Метрики отмечен,
// то ничего более не делаем.
if ( loadedMetrica ) {
return;
}
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js", "ym");
ym( metricaId, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true });
// Отмечаем флаг, что Метрика загрузилась,
// чтобы не загружать её повторно при других
// событиях пользователя и старте фоллбэка.
loadedMetrica = true;
// Очищаем таймер, чтобы избежать лишних утечек памяти.
clearTimeout( timerId );
// Отключаем всех наших слушателей от всех событий,
// чтобы избежать утечек памяти.
window.removeEventListener( 'scroll', loadMetrica );
window.removeEventListener( 'touchstart', loadMetrica );
document.removeEventListener( 'mouseenter', loadMetrica );
document.removeEventListener( 'click', loadMetrica );
document.removeEventListener( 'DOMContentLoaded', loadFallback );
}
} )()
</script>
{
path: '/history/:id',
component: HistoryId,
name: 'historyId',
props: true
}
<router-link
tag="a"
class="button"
:to="{name: 'historyId', params: {id: historyItem.id, date: historyItem.date}}"
>
<script>
export default {
props: ['date'],
This library allows crossbrowser customization of form elements using CSS.
new HtmlWebpackPlugin({
filename: "index.html",
chunks: ["index", "common"], // у вас нет этих модулей
template: PATHS.app + "/templates/index.pug"
}),
config.entry = {
index: './index.js',
common: './common.css'
}
top: -345px;
left: 0px;
right: 0px;
position: fixed;
// 1. Фиксация <body>
function bodyFixPosition() {
setTimeout( function() {
/* Ставим необходимую задержку, чтобы не было «конфликта» в случае, если функция фиксации вызывается сразу после расфиксации (расфиксация отменяет действия расфиксации из-за одновременного действия) */
if ( !document.body.hasAttribute('data-body-scroll-fix') ) {
// Получаем позицию прокрутки
let scrollPosition = window.pageYOffset || document.documentElement.scrollTop;
// Ставим нужные стили
document.body.setAttribute('data-body-scroll-fix', scrollPosition); // Cтавим атрибут со значением прокрутки
document.body.style.overflow = 'hidden';
document.body.style.position = 'fixed';
document.body.style.top = '-' + scrollPosition + 'px';
document.body.style.left = '0';
document.body.style.width = '100%';
}
}, 15 ); /* Можно задержку ещё меньше, но у меня работало хорошо именно с этим значением на всех устройствах и браузерах */
}
// 2. Расфиксация <body>
function bodyUnfixPosition() {
if ( document.body.hasAttribute('data-body-scroll-fix') ) {
// Получаем позицию прокрутки из атрибута
let scrollPosition = document.body.getAttribute('data-body-scroll-fix');
// Удаляем атрибут
document.body.removeAttribute('data-body-scroll-fix');
// Удаляем ненужные стили
document.body.style.overflow = '';
document.body.style.position = '';
document.body.style.top = '';
document.body.style.left = '';
document.body.style.width = '';
// Прокручиваем страницу на полученное из атрибута значение
window.scroll(0, scrollPosition);
}
}
$(document).on('shown.bs.modal', function () { // открытие любого модального окна Bootstrap
bodyFixPosition();
})
$(document).on('hidden.bs.modal', function () { // закрытие любого модального окна Bootstrap
bodyUnfixPosition();
})
<meta name="format-detection" content="telephone=no">
<meta name="format-detection" content="telephone=no">
<meta name="format-detection" content="date=no">
<meta name="format-detection" content="address=no">
<meta name="format-detection" content="email=no">
<!-- Swiper -->
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide infoPost">
<div class="infoText">
<h2>Коллекция авторских коробок</h2>
<p>Бесплатная доставка по городу Воронеж от 2000 рублей</p>
<a href="">Купить</a>
</div>
</div>
<div class="swiper-slide imgPost1"> </div>
<div class="swiper-slide infoPost">
<div class="infoText">
<h2>Коллекция авторских коробок</h2>
<p>Бесплатная доставка за город от 3999 рублей</p>
<a href="">Купить</a>
</div>
</div>
<div class="swiper-slide imgPost2"> </div>
<div class="swiper-slide infoPost">
<div class="infoText">
<h2>Коллекция авторских коробок</h2>
<p>Бесплатная доставка по городу от 1700 рублей</p>
<a href="">Купить</a>
</div>
</div>
<div class="swiper-slide imgPost3"> </div>
</div>
<!-- Add Arrows -->
<div class="btns">
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
<!-- Add Pagination -->
<div class="swiper-pagination"></div>
</div>
<script src="js/slider.js"></script>
var swiper = new Swiper('.swiper-container', {
slidesPerView: 2,
spaceBetween: 0,
// init: false,
loop: true,
slidesPerGroup: 2,
autoplay: {
delay: 7000,
disableOnInteraction: false
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
pagination: {
el: '.swiper-pagination',
clickable: true,
},
breakpoints: {
300: {
<b> slidesPerView: 'auto',</b>
spaceBetween: 0,
},
768: {
slidesPerView: 'auto',
spaceBetween: 0,
},
1024: {
slidesPerView: 'auto',
spaceBetween: 0,
},
}
});
.infoPost {
width: 1165px;
height: auto;
margin-left: -150px;
background: url("../img/bac-slider.png") no-repeat;
mix-blend-mode: multiply;
background-position: top center;
}
.imgPost1 {
width: 750px;
}
.imgPost2 {
width: 750px;
}
.imgPost3 {
width: 750px;
}
// Вариант 1. Привязываем контекст и первые по порядку параметры
function someFunk(a, b, event) {
console.log(a, b, event);
}
element.addEventListener('click', someFunk.bind(null, 1, 2));
// Вариант 2. Используем интерфейс EventListener
function someFunk(event) {
console.log(this.a, this.b, event);
}
element.addEventListener('click', {handleEvent: someFunk, a: 1, b: 2});