HTML+CSS:发光滑块

效果演示

28-发光滑块.gif

一个具有光晕效果的自定义滑动条,可以根据滑动条的位置和数值的变化来改变滑块的样式和颜色。

Code

<input type="range" class="glow" style="--val: 50" value="50" min="0" max="100"oninput="this.style='--val:'+this.value" />
```css
body {display: flex; /* 使用flex布局 */align-items: center; /* 垂直居中 */justify-content: center; /* 水平居中 */flex-direction: column; /* 垂直方向排列 */gap: 3rem; /* 元素之间的间距 */overflow: hidden; /* 隐藏溢出内容 */margin: 0; /* 边距为0 */min-height: 100vh; /* 最小高度为视口高度 */box-sizing: border-box; /* 盒模型为border-box */background-image: linear-gradient(45deg, #223, #112); /* 背景线性渐变 */background:radial-gradient(at 100% 0, #fff2, #fff0 50%), /* 背景径向渐变 */radial-gradient(at 0% 100%, #0002, #0000 50%), /* 背景径向渐变 */#545153; /* 背景颜色 */
}/* 定义CSS变量 */
@property --c {syntax: '<color>';inherits: true;initial-value: #0000;
}/* 滑动条样式 */
.glow {--c: rgb(0, 255, 255, calc(0.25 + var(--val) / 125)); /* 设置颜色透明度 */--c: hsl(160deg 80% 50% / calc(0.25 + var(--val) / 125)); /* 设置颜色透明度 */-webkit-appearance: none; /* 移除默认样式 */-moz-appearance: none; /* 移除默认样式 */appearance: none; /* 移除默认样式 */background: transparent; /* 背景透明 */cursor: pointer; /* 鼠标指针为手型 */width: 15rem; /* 宽度 */position: relative; /* 相对定位 */
}/* 滑动条前景样式 */
.glow::before {content: ""; /* 伪元素内容为空 */position: absolute; /* 绝对定位 */top: 0; /* 顶部对齐 */left: 0; /* 左侧对齐 */width: calc((var(--val) - 1) * 1%); /* 宽度根据变量值计算 */min-width: 0.5em; /* 最小宽度 */height: 100%; /* 高度100% */background: var(--c); /* 背景颜色 *//* 阴影效果 */box-shadow:0 0 0.2em 0 hsl(0 0% 0%) inset,-0.1em 0.1em 0.1em -0.1em hsl(0 0% 100% / 0.5),0 0 calc(1em + 0.001em * var(--val)) calc(0.1em + 0.00025em * var(--val)) var(--c);border-radius: 1em 0 0 1em; /* 边框圆角 */aopacity: calc(20% + var(--val) * 1%); /* 透明度根据变量值计算 */
}/* Track Styles *//* Chrome, Safari, Opera, and Edge Chromium */
.glow::-webkit-slider-runnable-track {/* 设置轨道样式 */box-shadow:0 0 0.2em 0 hsl(0 0% 0%) inset,-0.1em 0.1em 0.1em -0.1em hsl(0 0% 100% / 0.5);background:linear-gradient(to bottom right, #0001, #0000),#343133;border-radius: 1em; /* 边框圆角 */height: 1em; /* 高度 */
}/* Firefox */
.glow::-moz-range-track {/* 设置轨道样式 */box-shadow: 0 0 2px 0 hsl(0 0% 0%) inset, -1px 1px 1px -1px hsl(0 0% 100% / 0.5);background:linear-gradient(var(--c) 0 0) 0 0 / calc(var(--val) * 1%) 100% no-repeat,linear-gradient(to bottom right, #0001, #0000),#343133;border-radius: 1em; /* 边框圆角 */height: 1em; /* 高度 */
}/* Thumb Styles *//* Chrome, Safari, Opera, and Edge Chromium */
.glow::-webkit-slider-thumb {/* 设置滑块样式 */--d: var(--c);--d: rgb(from var(--c) r g b / calc(0.35 * var(--val) * 1%));-webkit-appearance: none; /* 移除默认样式 */appearance: none; /* 移除默认样式 */background-color: #5cd5eb; /* 背景颜色 */transform: translateY(calc(-50% + 0.5em)); /* 垂直居中 */width: 4em; /* 宽度 */aspect-ratio: 1; /* 宽高比为1:1 */background: red; /* 背景颜色 */border-radius: 50%; /* 边框圆角 *//* 复合背景 */background:radial-gradient(farthest-side, #0000 22.5%, var(--d) 0, #0000 calc(var(--val) * 0.75%)) 50% 50% / 100% 100% no-repeat,radial-gradient(#0000 15%, #343133 16%, #545153 20%),repeating-linear-gradient(#0000 0 10%, #0002 0 20%) 50% 50% / 25% 25% no-repeat,repeating-linear-gradient(90deg, #0000 0 10%, #0002 0 20%) 50% 50% / 25% 25% no-repeat,radial-gradient(var(--c) 17%, #0000 0),#545153;/* 阴影效果 */box-shadow:inset -0.15em -0.15em 0.2em #0008,inset 0.15em 0.15em 0.2em #ffffff22,inset calc(var(--val) * 1em / 500) 0em calc(var(--val) * 1em / 500) calc(var(--val) * -1em / 700) var(--c),0.25em 0.25em 0.5em #0006,calc(0.0125em * var(--val)) calc(0.005em * var(--val)) calc(0.02em * var(--val)) calc(-0.01em * var(--val)) #000a;border-radius: 50%; /* 边框圆角 */
}/* Firefox */
.glow::-moz-range-thumb {/* 设置滑块样式 */border: none; /* 移除边框 */-webkit-appearance: none; /* 移除默认样式 */appearance: none; /* 移除默认样式 */background-color: #5cd5eb; /* 背景颜色 */width: 4em; /* 宽度 */height: 4em; /* 高度 */aspect-ratio: 1; /* 宽高比为1:1 */background: red; /* 背景颜色 */border-radius: 50%; /* 边框圆角 *//* 复合背景 */background:radial-gradient(#0000 15%, #343133 16%, #545153 20%),repeating-linear-gradient(#0000 0 10%, #0002 0 20%) 50% 50% / 25% 25% no-repeat,repeating-linear-gradient(90deg, #0000 0 10%, #0002 0 20%) 50% 50% / 25% 25% no-repeat,radial-gradient(var(--c) 17%, #0000 0),#545153;/* 阴影效果 */box-shadow:inset -0.15em -0.15em 0.2em #0008,inset 0.15em 0.15em 0.2em #ffffff22,inset calc(var(--val) * 1em / 500) 0em calc(var(--val) * 1em / 500) calc(var(--val) * -1em / 700) var(--c),0.25em 0.25em 0.5em #0006,calc(0.015em * var(--val)) calc(0.005em * var(--val)) calc(0.02em * var(--val)) calc(-0.01em * var(--val)) #0008;border-radius: 50%; /* 边框圆角 */
}

实现思路拆分

  1. 整体布局样式设置为flex布局,垂直居中显示,背景为线性渐变和径向渐变组成的背景色。
  2. 滑动条样式设置了光晕效果,滑块样式也进行了定制化设计。
  3. 滑动条的轨道样式在不同浏览器中有不同的设置,包括阴影、背景色和边框半径等。
  4. 滑块样式也在不同浏览器中有不同设置,包括背景色、阴影、边框半径等。
  5. 代码中使用了CSS变量(–val)来动态改变滑块的样式,根据数值的变化而改变样式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/478608.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element-plus日期选择器2次封装

预期效果 官网默认样式&#xff1a; 修改后的样式&#xff1a; 代码实现 DatePicker.vue <template><div class"date-picker-container"><el-date-picker v-model"date" change"handleChange" type"date" value-for…

STM32 TIM输入捕获测频率占空比库函数

目录 一、输入捕获初始化函数 TIM_ICInit TIM_PWMIConfig TIM_ICStructInit 二、主从触发模式对应函数 TIM_SelectInputTrigger TIM_SelectOutputTrigger TIM_SelectSlaveMode 三、配置分频器函数 TIM_SetIC1Prescaler TIM_SetIC2Prescaler TIM_SetIC3Prescaler T…

Camunda快速入门(四):设计一个带网关的流程

接上一篇文章&#xff1a;Camunda快速入门&#xff08;三&#xff09;&#xff1a;设计一个人工任务流程并配置表单 在本节中&#xff0c;您将学习如何使用 BPMN 2.0 排他网关&#xff08;Exclusive Gateways&#xff09;使流程更加动态。 1、添加两个网关 我们想修改我们的…

新版Java面试专题视频教程——框架篇

新版Java面试专题视频教程——框架篇 框架篇 01-框架篇介绍02-Spring-单例bean是线程安全的吗03-Spring-AOP相关面试题04-Spring-事务失效的场景05-Spring-bean的生命周期5.1 BeanDefinition 06-Spring-bean的循环依赖(循环引用)6.1 一般对象的循环依…

[AudioRecorder]iPhone苹果通话录音汉化破解版-使用巨魔安装-ios17绕道目前还不支持

首先你必须有巨魔才能使用&#xff01;&#xff01; 不会安装的&#xff0c;还没安装的移步这里&#xff0c;ios17 以上目前装不了&#xff0c;别看了&#xff1a;永久签名 | 网址分类目录 | 路灯iOS导航-苹果签名实用知识网址导航-各种iOS技巧-后厂村路灯 视频教程 【Audio…

重学Java 17.面向对象.5.方法参数和快速生成debug

不走心的努力&#xff0c;都是在敷衍自己 ——24.2.19 一、方法参数 1.基本数据类型 整型 byte short int long 浮点型 float double 字符型 char 布尔型 boolean 2.基本数据类型做方法参数传递 基本类型做方法参数传递&a…

消息队列-RabbitMQ:MQ作用分类、RabbitMQ核心概念及消息生产消费调试

1、MQ 的相关概念 1&#xff09;什么是 MQ MQ (message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是 message 而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在互…

[杂记]mmdetection3.x中的数据流与基本流程详解(数据集读取, 数据增强, 训练)

之前跑了一下mmdetection 3.x自带的一些算法, 但是具体的代码细节总是看了就忘, 所以想做一些笔记, 方便初学者参考. 其实比较不能忍的是, 官网的文档还是空的… 这次想写其中的数据流是如何运作的, 包括从读取数据集的样本与真值, 到数据增强, 再到模型的forward当中. 0. MMDe…

新增长100人研讨会:快消零售专场探讨招商加盟数字化转型实战

2024年2月2日下午&#xff0c;一场由纷享销客与杨国福集团联合主办的招商加盟数字化转型研讨会在上海成功举办。本次研讨会汇聚了众多快消零售业界的领军人物&#xff0c;共同探讨行业未来的新增长点。 会议伊始&#xff0c;杨国福集团数字化中心负责人王林林发表了主题演讲&a…

三防平板丨手持工业平板丨ONERugged工业三防平板丨推动数字化转型

随着科技的发展&#xff0c;数字化转型已经成为企业转型升级的必由之路。而在数字化转型中&#xff0c;三防平板作为一种重要的工具&#xff0c;可以极大地推动企业的数字化转型。本文将从以下几个方面探讨三防平板如何推动数字化转型。 一、提高工作效率 ONERugged加固平板的…

Android 11.0 mtp在锁屏模式和息屏时禁止访问mtp文件夹功能实现

1.前言 在11.0的系统rom产品定制化开发中,由于系统对于mtp模式访问文件夹没有限制,就是在锁屏息屏状态下也是可以访问文件夹的,由于产品的需要 要求在锁屏和息屏的情况下,禁止访问文件夹,就是需要实现如图效果 2.mtp在锁屏模式和息屏时禁止访问mtp文件夹功能实现的核心…

搜索算法(算法竞赛、蓝桥杯)--BFS八数码难题、抓住那头牛、魔板问题

1、B站视频链接&#xff1a;B14 BFS 八数码难题_哔哩哔哩_bilibili 题目链接&#xff1a;八数码难题 - 洛谷 #include <bits/stdc.h> using namespace std; char c; string str; unordered_map<string,int> d;//记录步数 queue<string> q; int dx[4]{-1,0,1…