rybitten实现三维球形分割彩色切片效果代码
代码语言:html
所属分类:三维
代码描述:rybitten实现三维球形分割彩色切片效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> :root { font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; line-height: 1.5; font-weight: 400; color-scheme: light dark; color: var(--color-white, #fff); background-color: var(--color-black, #000); font-synthesis: none; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { display: flex; align-items: center; justify-content: center; min-height: 100dvh; flex-wrap: wrap; } .controls { padding: 1rem; margin-bottom: 1rem; display: flex; flex-direction: column; gap: 1rem; max-width: 300px; width: 100%; font-size: 0.85em; } .control-group { display: flex; flex-direction: column; } .control-group:has(a) { display: block; } label { color: color-mix(in srgb, var(--color-black), var(--color-white) 70%); } label:has(.value-display) { display: flex; justify-content: space-between; align-items: center; } input { accent-color: var(--color-white); } input[type=range] { width: 100%; margin-top: 0.25em; } .value-display { font-family: monospace; color: var(--color-white, #000); } #sphereContainer { padding: 20px; touch-action: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; cursor: -webkit-grab; cursor: grab; } #sphereContainer svg { display: block; width: 400px; height: 400px; } .checkbox-group { gap: 10px; flex-direction: row; align-items: center; } #sphereContainer.dragging { cursor: -webkit-grabbing; cursor: grabbing; } .hide { display: none; } button { background: var(--color-white); color: var(--color-black); padding: 0.75rem; font: inherit; font-weight: bold; font-size: 1rem; border-radius: 0.25em; } select, option { background: var(--color-black); color: var(--color-white); border: none; text-decoration: underline; font: inherit; } select { width: 100%; margin-top: 0.25em; -webkit-appearance: none; -moz-appearance: none; appearance: none; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } a { color: color-mix(in oklab, skyblue, var(--color-white) 30%); } </style> </head> <body translate="no"> <div id="sphereContainer"></div> <div class="controls"> <div class="control-group"> <label>Hue Segments <span class="value-display" id="hueSegVal">12</span></label> <input type="range" id="hueSeg" min="3" max="36" value="12" step="1"> </div> <div class="control-group"> <label>Lightness Rings <span class="value-display" id="lightRingsVal">8</span></label> <input type="range" id="lightRings" min="1" max="24" value="8" step="1"> </div> <div class="control-group hide"> <label>Yaw <span class="value-display" id="yawVal">20°</span></label> <input type="range" id="yaw" min="0" max="360" value="20" step="1"> </div> <div class="control-group hide"> <label>Pitch <span class="value-display" id="pitchVal">30°</span></label> <input type="range" id="pitch" min="0" max="360" value="30" step="1"> </div> <div class="control-group hide"> <label>Roll: <span class="value-display" id="rollVal">0°</span></label> <input type="range" id="roll" min="0" max="360" value="0" step="1"> </div> <div class="control-group checkbox-group"> <input type="checkbox" id="showColors" checked> <label for="showColors">Show Color Patches</label> </div> <div class="control-group checkbox-group"> <input type="checkbox" id="showBackside"> <label for="showBackside">Show Backside</label> </div> <div class="control-group checkbox-group"> <input type="checkbox" id="invert"> <label for="invert">Invert B/W</label> </div> <div class="control-group"> <label for="colorCube">Color Profile</label> <select id="colorCube"> </select> </div> <div class="control-group"> <button id="randomRollBtn">Roll Randomly</button> </div> <div class="control-group"> Colors generated using <a href="https://rybitten.space/" target="_blank">RYBitten</a> </div> </div> <script type="module"> import { ryb2rgb, rybHsl2rgb } from "https://esm.sh/rybitten/"; import { cubes } from "https://esm.sh/rybitten/cubes"; const NS = 'http://www.w3.org/2000/svg'; const rybCubeSelect = document.querySelector("#colorCube"); const invertCheckbox = document.querySelector("#invert"); const sphereContainer = document.querySelector("#sphereContainer"); const yawInput = document.querySelector("#yaw"); const pitchInput = document.querySelector("#pitch"); const rollInput = document.querySelector(&qu.........完整代码请登录后点击上方下载按钮下载查看
网友评论0