<!-- ********************************************************************** -->
<!-- «Белый шум» на всём сайте (Тильда) -->
<!-- ********************************************************************** -->
<div class="uc-noise-overlay"></div>
<style>
.uc-noise-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 99999;
background: transparent;
}
</style>
<script>
(function() {
// === Настраиваемые переменные ===
var noiseOpacity = 0.03; // Прозрачность шума (от 0 до 1)
var noiseSize = 1; // Размер зерна шума (1 - оригинальный размер)
var noiseSpeed = 100; // Скорость обновления шума в миллисекундах
// ===============================
var noiseOverlay = document.querySelector('.uc-noise-overlay');
// Установка прозрачности напрямую
noiseOverlay.style.opacity = noiseOpacity;
var canvas = document.createElement('canvas');
canvas.className = 'noise-canvas';
noiseOverlay.appendChild(canvas);
var ctx = canvas.getContext('2d');
/
* Функция изменения размера canvas с учетом размера шума.
*/
function resizeCanvas() {
canvas.width = window.innerWidth / noiseSize;
canvas.height = window.innerHeight / noiseSize;
canvas.style.width = window.innerWidth + 'px';
canvas.style.height = window.innerHeight + 'px';
ctx.scale(1 / noiseSize, 1 / noiseSize);
}
resizeCanvas();
window.addEventListener('resize', resizeCanvas);
/
* Генерация белого шума на canvas.
*/
function generateNoise() {
var w = canvas.width,
h = canvas.height,
idata = ctx.createImageData(w, h),
buffer32 = new Uint32Array(idata.data.buffer),
len = buffer32.length;
for (var i = 0; i < len; i++) {
buffer32[i] = ((Math.random() * 255) | 0) << 24;
}
ctx.putImageData(idata, 0, 0);
}
/**
* Цикл обновления шума с заданной скоростью.
*/
function loop() {
generateNoise();
setTimeout(loop, noiseSpeed);
}
loop();
})();
</script>