simplex-noise实现可调节参数图片水面波动镜像效果代码
代码语言:html
所属分类:其他
代码描述:simplex-noise实现可调节参数图片水面波动镜像效果代码
代码标签: simplex-noise 调节 参数 图片 水面 波动 镜像
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="format-detection" content="telephone=no"> <style> :root { --dark-color-h: 334.29; --dark-color-s: 32.03%; --dark-color-l: 30%; --light-color-h: 19.2; --light-color-s: 30.86%; --light-color-l: 84.12%; --dark-color: hsl( var(--dark-color-h), var(--dark-color-s), var(--dark-color-l) ); --dark-color-lighter: hsl( var(--dark-color-h), var(--dark-color-s), calc(var(--dark-color-l) + 10%) ); --dark-color-darker: hsl( var(--dark-color-h), var(--dark-color-s), calc(var(--dark-color-l) - 10%) ); --dark-color-translucent: hsla( var(--dark-color-h), var(--dark-color-s), var(--dark-color-l), 0.75 ); --dark-color-darker-translucent: hsla( var(--dark-color-h), var(--dark-color-s), calc(var(--dark-color-l) - 10%), 0.75 ); --light-color: hsl( var(--light-color-h), var(--light-color-s), var(--light-color-l) ); --light-color-lighter: hsl( var(--light-color-h), var(--light-color-s), calc(var(--light-color-l) + 10%) ); --light-color-darker: hsl( var(--light-color-h), var(--light-color-s), calc(var(--light-color-l) - 10%) ); --light-color-translucent: hsla( var(--light-color-h), var(--light-color-s), var(--light-color-l), 0.75 ); --color-bg: var(--dark-color); --color-text: var(--light-color); --resources-bg-color: var(--dark-color-darker-translucent); --resources-active-color: color-mix( in srgb, var(--light-color) 75%, transparent ); --resources-color: var(--color-text); --canvas-offset: 4rem; --max-canvas-width: 52.5rem; --max-canvas-height: 52.5rem; --tp-base-background-color: #432331; --tp-base-shadow-color: #432331; --tp-button-background-color: #e3d2ca; --tp-button-background-color-active: #f5eeeb; --tp-button-background-color-focus: #ece0db; --tp-button-background-color-hover: #e3d2ca; --tp-button-foreground-color: #432331; --tp-container-background-color: #533540; --tp-container-background-color-active: #6b4f57; --tp-container-background-color-focus: #634650; --tp-container-background-color-hover: #5b3d48; --tp-container-foreground-color: #e3d2ca; --tp-groove-foreground-color: #533540; --tp-input-background-color: #533540; --tp-input-background-color-active: #6b4f57; --tp-input-background-color-focus: #634650; --tp-input-background-color-hover: #5b3d48; --tp-input-foreground-color: #e3d2ca; --tp-label-foreground-color: #b39e9c; --tp-monitor-background-color: #381d29; --tp-monitor-foreground-color: #b39e9c; } *, ::after, ::before { border-style: solid; border-width: 0; box-sizing: border-box; } * { -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } body { align-items: center; background: var(--color-bg); color: var(--color-text); display: grid; font-family: Inter, Roboto, "Helvetica Neue", "Arial Nova", "Nimbus Sans", Arial, sans-serif; justify-items: center; line-height: 1.5; margin: 0; min-height: 100vh; place-items: center; width: 100%; } canvas { --border-radius: clamp(0.5rem, 1.5vh, 1.5rem); background: var(--dark-color-darker-translucent); border-radius: var(--border-radius); box-shadow: 0 0.125rem 0.25rem var(--dark-color-darker-translucent); display: block; height: calc(min(100dvw, 100dvh) - var(--canvas-offset)); max-block-size: var(--max-canvas-height); max-inline-size: var(--max-canvas-width); pointer-events: none; position: relative; width: calc(min(100dvw, 100dvh) - var(--canvas-offset)); width: calc( min(100dvw, 100dvh) - var(--canvas-offset) - env(safe-area-inset-bottom) ); } .tp-dfwv { padding: 0 0 3rem; } .tp-fldv:not(.tp-fldv-expanded) > .tp-fldv_c { opacity: 0 !important; } .tp-lblv_l { pointer-events: none; -webkit-user-select: none; -moz-user-select: none; user-select: none; } .tp-fldv.tp-fldv-expanded > .tp-fldv_c { opacity: 1 !important; transition-delay: 0s, 0.2s !important; transition-duration: 0.2s, 0.2s !important; transition-property: height, opacity !important; } .tp-fldv_c:has(.tp-demo-thumbnails) { margin-left: 0.25rem; padding-left: 0; } .tp-demo-thumbnails { display: grid; gap: 0.1875rem; grid-gap: 0.1875rem; grid-template-columns: repeat(4, 1fr); padding: 0 0.25rem 0.0625rem; width: 100%; } .tp-demo-thumbnail { align-items: center; aspect-ratio: 1; background-color: var(--cnt-bg); border-radius: 0.25rem; cursor: pointer; display: grid; height: auto; justify-items: center; overflow: hidden; place-items: center; -webkit-user-select: none; -moz-user-select: none; user-select: none; width: 100%; } .tp-demo-thumbnail:after { aspect-ratio: 1; border: 0.125rem solid transparent; border-radius: 0.25rem; content: ""; display: block; grid-area: 1/-1; pointer-events: none; position: relative; transition: border 0.3s; width: 100%; } .tp-demo-thumbnail:active:after { border: 0.125rem solid var(--cnt-fg); } .tp-demo-thumbnail img { border-radius: 0.25rem; display: block; grid-area: 1/-1; height: auto; -o-object-fit: cover; object-fit: cover; width: 100%; } .resources-layer { bottom: 0; display: block; position: fixed; right: 0; z-index: 1000; } .resources { background: var(--resources-bg-color); display: grid; font-size: 0.6875rem; font-weight: 300; grid-auto-flow: column; line-height: 1.3; padding: 0.5rem; pointer-events: auto; } .resources a { align-content: center; display: grid; justify-content: center; padding: 0 0.5rem; place-content: center; transition: color 0.2s ease-in-out; } .resources a, .resources a:visited { color: var(--resources-color); } .resources a:active, .resources a:focus-visible { color: var(--resources-active-color); } .resources a:focus-visible { outline: none; } .resources a:not(:first-child) { border-inline-start: thin solid currentColor; } @media (max-width: 51.29875em) { canvas { --border-radius: clamp(0.5rem, 2vh, 1rem); } } @media (hover: hover) and (pointer: fine) { .tp-demo-thumbnail:hover:not(:disabled):after { border: 0.125rem solid var(--cnt-fg); } .resources a:active:not(:hover), .resources a:hover { color: var(--resources-active-color); } } </style> </head> <body translate="no"> <canvas id="output"></canvas> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/utils-v3.min.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/simplex-noise.js"></script> <script type="module"> import { Pane, FolderApi } from "//repo.bfw.wiki/bfwrepo/js/tweakpane.4.0.3.js"; const TweakpaneUtils = { appendToFolderContent(folder, elements) { const checkAndAppend = () => { const folderContent = folder.element.querySelector(".tp-fldv_c"); if (!folderContent) return false; (Array.isArray(elements) ? elements : [elements]).forEach(el => { if (!folderContent.contains(el)) { folderContent.appendChild(el); } }); return true; }; if (checkAndAppend()) return; const observer = new MutationObserver(() => { if (checkAndAppend()) { observer.disconnect(); } }); observer.observe(folder.element, { childList: true, subtree: true }); }, appendToRootPaneContent(pane, elements) { const checkAndAppend = () => { const rootContent = pane.element.querySelector(".tp-rotv_c"); if (!rootContent) return false; .........完整代码请登录后点击上方下载按钮下载查看
网友评论0