javascript - 将动画笑脸添加到范围滑块旋钮
问题描述
我正在尝试在范围滑块的旋钮上添加一个动画笑脸,但是我不确定是否有办法做到这一点。
这是我正在使用的内容:
var emojis = ['','','','',''];
$("input").mousemove(function(){
var i = $(this).val();
$(".emoji").html(emojis[i]);
});
.rate {
text-align: center;
width: 200px;
height: 200px;
ouline: thin solid lightgray;
}
.emoji {
font-size: 120px;
height: 170px;
line-height: 170px;
}
input {
cursor: ew-resize;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="rate">
<div class="emoji"></div>
<input type="range" min="0" max="4" step="1">
</div>
我想要实现的是在滑动时改变的旋钮上添加笑脸。
解决方案
嗯,答案是肯定的,你可以添加表情符号,但有很多东西需要注意。
您基本上是在删除所有
range input
系统样式并用您自己的自定义样式替换它。在所有主要的浏览器渲染引擎(Webkit、Mozilla、MS)中,做这种样式的 CSS 都是不同的,所以需要做很多工作。
因为每个渲染引擎都是不同的,所以它很有可能在某些浏览器中无法正常工作(确保你对它如何失败感到满意)。
据我所知,您无法
utf-8
向滑块旋钮添加文本。因此,您需要每个表情符号的背景图像或可能的 SVG。
从 CSS 的角度来看,这是针对不同浏览器所需的一切示例:
input[type=range] {
-webkit-appearance: none;
width: 100%;
margin: 7.8px 0;
}
input[type=range]:focus {
outline: none;
}
input[type=range]::-webkit-slider-runnable-track {
width: 100%;
height: 11.4px;
cursor: pointer;
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
background: rgba(48, 113, 169, 0.78);
border-radius: 1.3px;
border: 0.2px solid #010101;
}
input[type=range]::-webkit-slider-thumb {
box-shadow: 0.9px 0.9px 1px #000031, 0px 0px 0.9px #00004b;
border: 1.8px solid #00001e;
height: 27px;
width: 26px;
border-radius: 12px;
background: #ffffff;
cursor: pointer;
-webkit-appearance: none;
margin-top: -8px;
}
input[type=range]:focus::-webkit-slider-runnable-track {
background: rgba(54, 126, 189, 0.78);
}
input[type=range]::-moz-range-track {
width: 100%;
height: 11.4px;
cursor: pointer;
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
background: rgba(48, 113, 169, 0.78);
border-radius: 1.3px;
border: 0.2px solid #010101;
}
input[type=range]::-moz-range-thumb {
box-shadow: 0.9px 0.9px 1px #000031, 0px 0px 0.9px #00004b;
border: 1.8px solid #00001e;
height: 27px;
width: 26px;
border-radius: 12px;
background: #ffffff;
cursor: pointer;
}
input[type=range]::-ms-track {
width: 100%;
height: 11.4px;
cursor: pointer;
background: transparent;
border-color: transparent;
color: transparent;
}
input[type=range]::-ms-fill-lower {
background: rgba(42, 100, 149, 0.78);
border: 0.2px solid #010101;
border-radius: 2.6px;
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
}
input[type=range]::-ms-fill-upper {
background: rgba(48, 113, 169, 0.78);
border: 0.2px solid #010101;
border-radius: 2.6px;
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
}
input[type=range]::-ms-thumb {
box-shadow: 0.9px 0.9px 1px #000031, 0px 0px 0.9px #00004b;
border: 1.8px solid #00001e;
height: 27px;
width: 26px;
border-radius: 12px;
background: #ffffff;
cursor: pointer;
height: 11.4px;
}
input[type=range]:focus::-ms-fill-lower {
background: rgba(48, 113, 169, 0.78);
}
input[type=range]:focus::-ms-fill-upper {
background: rgba(54, 126, 189, 0.78);
}
<input type="range" />
当我有几分钟的时间时,我将用一些图像编辑这个例子。但基本上我建议background-image
在-thumb
伪元素中添加 a 。
归根结底,您最好构建一个完整的 javascript 解决方案并完全忘记 HTML5 范围输入
推荐阅读
- joomla - Joomla:如何获取 loadTemplate 函数传递的变量
- python - 简单求和功能故障排除
- sql-server - Sargable 查询与函数,SQL Server
- php - 我能够读取文件但无法写入
- ios - 我无法发送推送通知来测试飞行博览会独立应用程序
- django - 为什么 forms.ModelForm 在 Django 2.0 中从 FileField 丢失数据
- bootstrap-4 - 我正在尝试使用 bootsrap4 创建一个粘性导航,但它无法正常工作
- angular - 如何显示用户结构
- node.js - npm install myPackage -g,错误:找不到模块'commander'
- java - 如何在java中获取4周前的所有日期