css+js美化range实现数值范围滑块滑竿拖动取值器代码
代码语言:html
所属分类:表单美化
代码描述:css+js美化range实现数值范围滑块滑竿拖动取值器代码
代码标签: css js 美化 range 数值 范围 滑块 滑竿 拖动 取值器 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> * { margin: 0; padding: 0; background: none; font: inherit; } html, body, div, datalist, option { display: grid; } html { --extra: 0; --not-extra: calc(1 - var(--extra)); --large: 0; --not-large: calc(1 - var(--large)); height: 100%; font: 1em/1.625 molengo, ubuntu, sans-serif; } @media (min-width: 29.75em) { html { --extra: 1 ; } } @media (min-width: 350px) { html { --large: 1 ; } } @media (max-width: 220px) { html { font-size: 0.625em; } } .js { --js: 1 ; } body { --mover-w: min(100vw + -1.25em + -3.5em, 25em); grid-gap: 3em; place-content: center; background: conic-gradient(at 0.0625em 0.4375em, #454545 25%, #3c3c3c 0%) 50vw/0.5em 0.5em, repeating-conic-gradient(#3c3c3c 0% 25%, #454545 0% 50%) 50vw/0.125em 0.125em; background-blend-mode: lighten; } div, option, ::after { place-items: center; } ::before, ::after, input, output { grid-area: 1/1; } .wrap { --hue: 300; --rng: calc(var(--max) - var(--min)); --sel: 0; --progr-o: -2em; --progr-or: calc((1 - max(var(--v0), var(--v1, var(--min)))/var(--rng))*var(--mover-w) + 0.375em); --thumb-w: var(--thumb-h); --thumb-h: 1.625em; --thumb-bg: radial-gradient(circle farthest-side at 61% 87%, hsl(calc(var(--hue) + 5), 81.5%, 87%) 61%, hsl(calc(var(--hue) + 12.5), 15%, 47%) 92%) content-box, conic-gradient(at 65%, hsl(calc(var(--hue) - 15), 57.5%, 53%), hsl(calc(var(--hue) - 25), 39%, 35%) 50%, hsl(calc(var(--hue) - 15), 35%, 27%) 0%, hsl(calc(var(--hue) - 15), 53%, 47%)) padding-box, linear-gradient(hsl(var(--hue), 51%, 63%), hsl(calc(var(--hue) - 5), 47%, 61%), hsl(var(--hue), 95%, 28.5%)) border-box; grid-gap: 5px; grid-template-rows: var(--thumb-h) max-content; width: calc(var(--mover-w) + 3.5em); color: hsla(var(--hue), 99%, 50%, 0.3); filter: Saturate(var(--hl, 0)); transition: filter 0.35s; } .wrap::after, .wrap output { display: var(--js, none); } .wrap::before, .wrap::after { width: calc(var(--mover-w) + 1em); height: 1em; border-radius: 0.5em; box-shadow: 0 1px #686868, inset 0 2px #090909; background: #252525; content: ""; } .wrap::after { width: calc(var(--mover-w) + 0.75em); height: 0.75em; box-shadow: inset 0 0 0 1px hsl(var(--hue), 75%, 25%), inset 0 -1px 3px 1px hsl(var(--hue), 90%, 55%), 0 0 10px currentcolor, 0 0 15px currentcolor; background: repeating-linear-gradient(-45deg, rgba(0, 0, 0, 0.1) 0 2.8284271247px, transparent 0 5.6568542495px), linear-gradient(hsl(calc(var(--hue) - 7.5), 67%, 81%), hsl(calc(var(--hue) + 2.5), 92.5%, 65%)); clip-path: inset(var(--progr-o) var(--progr-or) var(--progr-o) var(--progr-ol, var(--progr-o))); } .wrap--2x { --progr-ol: calc(min(var(--v0), var(--v1))/var(--rng)*var(--mover-w) + 0.375em); } .wrap--2x input { pointer-events: none; } .wrap:nth-child(2) { --hue: 180 ; } .wrap:nth-child(3) { --hue: 60; --thumb-p: .375em .625em; --thumb-w: 3.5em; --thumb-h: 1.5em; --thumb-r: .375em; --thumb-bg: repeating-linear-gradient(90deg, hsl(calc(var(--hue) - 20), 85%, 32.5%) 0 1px, hsl(calc(var(--hue) - 17.5), 62%, 25%) 0 2px, hsl(calc(var(--hue) - 22.5), 68%, 68%) 0 3px, transparent 0 5px) 0/ 13px 100% space content-box, linear-gradient( hsl(calc(var(--hue) - 15), 85%, 51%), hsl(calc(var(--hue) - 32.5), 85%, 37%)) padding-box, linear-gradient( hsl(calc(var(--hue) - 15), 87%, 81%), hsl(calc(var(--hue) - 30), 50%, 50%)) border-box ; } .wrap:focus-within, .wrap:hover { --hl: 1 ; } .sr-only { position: fixed; bottom: 100%; right: 100%; -webkit-clip-path: circle(0); clip-path: circle(0); user-select: none; } input[type=range] { width: calc(var(--mover-w) + var(--thumb-w)); cursor: pointer; } input[type=range], input[type=range]::-webkit-slider-runnable-track, input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; } input[type=range], input[type=range] + output { z-index: calc(var(--sel) + 1); } input[type=range]:focus { outline: none; } input[type=range]:is(:focus, :hover), input[type=range]:is(:focus, :hover) + output { --sel: 1 ; } input[type=range]::-webkit-slider-thumb { box-sizing: border-box; border: solid 1px transparent; padding: var(--thumb-p, 0.375em); width: var(--thumb-w); height: var(--thumb-h); border-radius: var(--thumb-r, 50%); box-shadow: 0 2px 2px rgba(20, 20, 20, 0.65); background: var(--thumb-bg); cursor: ew-resize; pointer-events: auto; } input[type=range]::-moz-range-thumb { box-sizing: border-box; border: solid 1px transparent; padding: var(--thumb-p, 0.375em); width: var(--thumb-w); height: var(--thumb-h); border-radius: var(--thumb-.........完整代码请登录后点击上方下载按钮下载查看
网友评论0