Как я смогу сделать этот проект Codepen фоном моего сайта? - PullRequest
0 голосов
/ 20 марта 2020

Извините за глупый вопрос, но мне было интересно, как я смогу сделать этот javascript фоном моего сайта. Относительно новый для JavaScript и не совсем уверен, как я смогу реализовать его в качестве фона.

ССЫЛКА НА CODEPEN:

'''https://codepen.io/strangerintheq/pen/JjdZKEa'''

1 Ответ

1 голос
/ 20 марта 2020

Отказ от ответственности

Прежде всего - даже не думайте о попытке понять все, что происходит там. Будучи новичком, вы действительно должны продвигаться вверх и в какой-то момент изобретать свои собственные модные проекты.

Реализация

HTML

<head>
    <!-- Other stuff -->
    <script defer src="https://raw.githack.com/strangerintheq/ShaderToy/master/ShaderToy.js"></script>
    <script defer src="shader.js"></script>
    <!-- Other scripts of yours -->
</head>

Вы в основном добавляете два скрипты. Первый с веб-сайта, второй один к одному, который вы должны скопировать самостоятельно (именно этот вы можете увидеть в разделе Codepen JS).

JS

// filename: "shader.js"

// https://thelig.ht/chladni/

let uf = {xy: '2f'};

addEventListener('mousemove', e => uf.xy([e.x/innerWidth,e.y/innerHeight]))

new ShaderToy(`void main(void) {

const float PI = 3.14159265;
vec2 p = (2.0 * gl_FragCoord.xy - resolution.xy) / resolution.y;

vec4 s1 = vec4(1.0, 1.0, 1.0, 2.0);
vec4 s2 = vec4(-4.0, 4.0, 4.0, 4.6);

float tx = sin(time)*0.1; 
float ty = cos(time)*0.1; 

float a = mix(s1.x, s2.x, xy.x+tx);
float b = mix(s1.y, s2.y, xy.x+tx);
float n = mix(s1.z, s2.z, xy.y+ty);
float m = mix(s1.w, s2.w, xy.y+ty);

float max_amp = abs(a) + abs(b);
float amp = a * sin(PI*n*p.x) * sin(PI*m*p.y) + b * sin(PI*m*p.x) * sin(PI*n*p.y);
float col = 1.0 - smoothstep(abs(amp), 0.0, 0.1);
gl_FragColor = vec4(vec3(col), 1.0);

}`, {uniforms:uf}).fullscreen().loop();


Я не удосужился проверить, что там происходит. Если вам интересно, может быть, вы хотели бы посмотреть некоторые учебники о шейдерах.

CSS

canvas {
    z-index: -1;
    position: fixed;
    top: 0;
}

Добавьте это либо во внешнюю таблицу стилей, либо в свой головной раздел.
Сценарий работает путем создания холста на вашей странице. Это CSS перемещает его за каждым элементом на вашей странице (z-index: -1), делает его неподвижным (position: fixed) и начинается с самого верхнего края вашего окна (top: 0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...