1// ÐодÑÐ»Ñ Ð¿Ð°ÑаллакÑа мÑÑÑÑ 2/* 3ÐÑедмеÑÑ, коÑоÑÑй бÑÐ´ÐµÑ Ð´Ð²Ð¸Ð³Ð°ÑÑÑÑ Ð·Ð° мÑÑÑÑ ÑказаÑÑ Ð°ÑÑибÑÑ data-prlx-mouse. 4 5// ========= 6ÐÑли нÑÐ¶Ð½Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе наÑÑÑойки - ÑказаÑÑ 7 8ÐÑÑибÑÑ ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ 9------------------------------------------------------------------------------------------------------------------- 10data-prlx-cx="коÑÑÑиÑиенÑ_Ñ " 100 знаÑение болÑÑе - менÑÑе пÑоÑÐµÐ½Ñ Ñдвига 11data-prlx-cy="коÑÑÑиÑиенÑ_y" 100 знаÑение болÑÑе - менÑÑе пÑоÑÐµÐ½Ñ Ñдвига 12data-prlx-dxr пÑоÑив оÑи X 13data-prlx-dyr пÑоÑив оÑи Y 14data-prlx-a="ÑкоÑоÑÑÑ_анимаÑии" 50 болÑÑе знаÑение - болÑÑе ÑкоÑоÑÑÑ 15 16// ========= 17ÐÑли нÑжно ÑÑиÑÑваÑÑ Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ðµ мÑÑи в блоке-ÑодиÑеле - ÑÐ¾Ð¼Ñ ÑодиÑÐµÐ»Ñ ÑказаÑÑ Ð°ÑÑибÑÑ data-prlx-mouse-wrapper 18 19ÐÑли в паÑаллакÑе каÑÑинка - ÑаÑÑÑÑнÑÑÑ ÐµÐµ на >100%. 20ÐапÑимеÑ: 21 width: 130%; 22 height: 130%; 23 top: -15%; 24 left: -15%; 25*/ 26class MousePRLX { 27 constructor(props, data = null) { 28 let defaultConfig = { 29 init: true, 30 logging: true, 31 } 32 this.config = Object.assign(defaultConfig, props); 33 if (this.config.init) { 34 const paralaxMouse = document.querySelectorAll('[data-prlx-mouse]'); 35 if (paralaxMouse.length) { 36 this.paralaxMouseInit(paralaxMouse); 37 // this.setLogging(`ÐÑоÑнÑлÑÑ, ÑÐ»ÐµÐ¶Ñ Ð·Ð° обÑекÑами: (${paralaxMouse.length})`); 38 } else { 39 // this.setLogging('ÐÐµÑ Ð½Ð¸ одного обÑекÑа. СплÑ...zzZZZzZZz...'); 40 } 41 } 42 } 43 paralaxMouseInit(paralaxMouse) { 44 paralaxMouse.forEach(el => { 45 const paralaxMouseWrapper = el.closest('[data-prlx-mouse-wrapper]'); 46 47 // ÐоÑÑ. X 48 const paramСoefficientX = el.dataset.prlxCx ? +el.dataset.prlxCx : 100; 49 // ÐоÑÑ. У 50 const paramСoefficientY = el.dataset.prlxCy ? +el.dataset.prlxCy : 100; 51 // ÐапÑ. Ð¥ 52 const directionX = el.hasAttribute('data-prlx-dxr') ? -1 : 1; 53 // ÐапÑ. У 54 const directionY = el.hasAttribute('data-prlx-dyr') ? -1 : 1; 55 // СкоÑоÑÑÑ Ð°Ð½Ð¸Ð¼Ð°Ñии 56 const paramAnimation = el.dataset.prlxA ? +el.dataset.prlxA : 50; 57 58 59 // ÐбÑÑвление пеÑеменнÑÑ 60 let positionX = 0, positionY = 0; 61 let coordXprocent = 0, coordYprocent = 0; 62 63 setMouseParallaxStyle(); 64 65 // ÐÑовеÑÑÑ Ð½Ð° налиÑие ÑодиÑелÑ, в коÑоÑом бÑÐ´ÐµÑ ÑÑиÑÑваÑÑÑÑ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ мÑÑи 66 if (paralaxMouseWrapper) { 67 mouseMoveParalax(paralaxMouseWrapper); 68 } else { 69 mouseMoveParalax(); 70 } 71 72 function setMouseParallaxStyle() { 73 const distX = coordXprocent - positionX; 74 const distY = coordYprocent - positionY; 75 positionX = positionX + (distX * paramAnimation / 1000); 76 positionY = positionY + (distY * paramAnimation / 1000); 77 el.style.cssText = `transform: translate3D(${directionX * positionX / (paramСoefficientX / 10)}%,${directionY * positionY / (paramСoefficientY / 10)}%,0);`; 78 requestAnimationFrame(setMouseParallaxStyle); 79 } 80 function mouseMoveParalax(wrapper = window) { 81 wrapper.addEventListener("mousemove", function (e) { 82 const offsetTop = el.getBoundingClientRect().top + window.scrollY; 83 if (offsetTop >= window.scrollY || (offsetTop + el.offsetHeight) >= window.scrollY) { 84 // ÐолÑÑение ÑиÑÐ¸Ð½Ñ Ð¸ вÑÑоÑÑ Ð±Ð»Ð¾ÐºÐ° 85 const parallaxWidth = window.innerWidth; 86 const parallaxHeight = window.innerHeight; 87 // ÐÐ¾Ð»Ñ Ð¿Ð¾ ÑеÑедине 88 const coordX = e.clientX - parallaxWidth / 2; 89 const coordY = e.clientY - parallaxHeight / 2; 90 // ÐолÑÑаем пÑоÑенÑÑ 91 coordXprocent = coordX / parallaxWidth * 100; 92 coordYprocent = coordY / parallaxHeight * 100; 93 } 94 }); 95 } 96 }); 97 } 98 // Ðоггинг в конÑÐ¾Ð»Ñ 99 setLogging(message) { 100 // this.config.logging ? FLS(`[PRLX Mouse]: ${message}`) : null; 101 } 102} 103 104document.addEventListener("DOMContentLoaded", (event) => { 105 // ÐапÑÑкаем и добавлÑем в обÑÐµÐºÑ Ð¼Ð¾Ð´Ñлей 106 new MousePRLX({}); 107}); 108
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.