初衷

制作一个针对视觉的产品,快速调出想要的颜色,然后写在给前端程序员的文档里,方便前端程序员进行页面的配色处理[滑稽]

什么是range

在html中有一个<input>的标签,通过在input中的type属性来控制输入框的类型。 其中有一个type="range"的range类型,可以实现滑动取值的效果。

效果图

range的值

一个小实验

实现了一个range的滚动条之后,我们先做个小实验,通过js获取一下他的value,看看是什么呢?

<!DOCTYPE html>
<html><head><title>range演示</title><meta charset="utf-8"></head><body><input type="range" id="range"></body><script> let range = document.getElementById('range');let flag = false;range.addEventListener('mousedown',()=>{range.addEventListener('mouseup',()=>{console.log(document.getElementById('range').value);})}) </script>
</html>

上面代码我首先设置了在html代码中写了一个range的滑动条,并为他赋予了一个id—range。 然后在JavaScript中首先通过document.getElementById获取这个id,然后为他绑定了一个鼠标按下的事件,当鼠标按下后,抬起的的时候会触发绑定的第二个事件,同时在控制台中打印出value。 如图

控制range的value的范围

value的范围,默认的是0-100,但是因为我们要制作的rgba()函数的参数是0-255,所以我们可以通过在<input type="range" id="range">中设置min和max的值来控制其value的范围 方案如下:

<input type="range" id="range" min="0" max="255">

分别为rgba的四个参数进行绑定

let range1 = document.getElementById('range1');let range2 = document.getElementById('range2');let range3 = document.getElementById('range3');let range4 = document.getElementById('range4');range1.addEventListener('mousedown',()=>{range1.addEventListener('mouseup',()=>{console.log(range1.value);})})range2.addEventListener('mousemove',()=>{range2.addEventListener('mouseup',()=>{console.log(range2.value);})})range3.addEventListener('mousedown',()=>{range3.addEventListener('mouseup',()=>{console.log(range3.value);})})range4.addEventListener('mousedown',()=>{range4.addEventListener('mouseup',()=>{console.log(range4.value);})})

分别为四个range条进行绑定,通过移动range来改变值

改变div区域颜色的JavaScript函数

function change(){let divColor = document.getElementById('div');divColor.style.backgroundColor = `rgba(${range1.value},${range2.value},${range3.value},${range4.value / 100})`}

首先获取div区域的id,然后通过divColor.style.backgroundColor改变背景色,实现滑动改变颜色的效果。

初版本全部代码

<!DOCTYPE html>
<html><head><title>range演示</title><meta charset="utf-8"><style> .div{position: absolute;width: 800px;height: 600px;top: 50%;left: 50%;transform: translate(-50%,-50%);}[type="range"]{margin-right: 200px;} </style></head><body>red:<input type="range" id="range1" min="0" max="255">green:<input type="range" id="range2" min="0" max="255">blue:<input type="range" id="range3" min="0" max="255">alpha:<input type="range" id="range4" min="0" max="100"><div class="div" id="div"></div></body><script> function change(){let divColor = document.getElementById('div');divColor.style.backgroundColor = `rgba(${range1.value},${range2.value},${range3.value},${range4.value / 100})`}let range1 = document.getElementById('range1');let range2 = document.getElementById('range2');let range3 = document.getElementById('range3');let range4 = document.getElementById('range4');range1.addEventListener('mousedown',()=>{range1.addEventListener('mouseup',()=>{console.log(range1.value);change();})})range2.addEventListener('mousemove',()=>{range2.addEventListener('mouseup',()=>{console.log(range2.value);change();})})range3.addEventListener('mousedown',()=>{range3.addEventListener('mouseup',()=>{console.log(range3.value);change();})})range4.addEventListener('mousedown',()=>{range4.addEventListener('mouseup',()=>{console.log(range4.value);change();})}) </script>
</html>

不足和优化----最终解决的版本

我们上面虽然完成了通过滚动条改变颜色的效果,但是我们发现,上述我们完成的demo有一些缺陷,即:只有滑动之后,鼠标松开,才能看到渲染的效果,中途的改变无法发现,不能很好的很直观的进行观察。 为了解决这个问题,我采取了通过mousemove来替换mousedown嵌套mouseup的方法。addEventListener()内调用change()函数。完成动态渲染改变页面颜色。 最终解决版本如下:

<!DOCTYPE html>
<html><head><title>range演示</title><meta charset="utf-8"><style> .div{position: absolute;width: 800px;height: 600px;top: 50%;left: 50%;transform: translate(-50%,-50%);}[type="range"]{margin-right: 200px;} </style></head><body>red:<input type="range" id="range1" min="0" max="255">green:<input type="range" id="range2" min="0" max="255">blue:<input type="range" id="range3" min="0" max="255">alpha:<input type="range" id="range4" min="0" max="100"><div class="div" id="div"></div></body><script> function change(){let divColor = document.getElementById('div');divColor.style.backgroundColor = `rgba(${range1.value},${range2.value},${range3.value},${range4.value / 100})`}let range1 = document.getElementById('range1');let range2 = document.getElementById('range2');let range3 = document.getElementById('range3');let range4 = document.getElementById('range4');range1.addEventListener('mousemove',()=>{change();})range2.addEventListener('mousemove',()=>{change();})range3.addEventListener('mousemove',()=>{change();})range4.addEventListener('mousemove',()=>{change();}) </script>
</html>

最后完成。

最后

整理了75个JS高频面试题,并给出了答案和解析,基本上可以保证你能应付面试官关于JS的提问。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

前端通过range控制的rgba配色小工具相关推荐

  1. 整理了 25 个前端相关的学习网站和一些靠谱的小工具,都来看看吧

    给大家整理了 25 个前端相关的学习网站和一些靠谱的小工具,包括一些小游戏.教程.社区网站和博客,以及一些资源网站,希望可以帮助到大家! CSS 相关 1.CSS Battle - 在线比拼 CSS ...

  2. 前端工程师都有用哪些比较靠谱的小工具?(转)

    Wappalyzer 是一个用于识别网站使用的库和框架的工具.它也是一个 Chrome 插件,是目前为前端开发人员最有用的工具之一.下一次你想知道一个网站使用什么库,来创建一个特定的可视化功能,Wap ...

  3. python前端开发需要的工具_前端工程师都有用哪些比较靠谱的小工具?

    Wappalyzer 是一个用于识别网站使用的库和框架的工具.它也是一个 Chrome 插件,是目前为前端开发人员最有用的工具之一.下一次你想知道一个网站使用什么库,来创建一个特定的可视化功能,Wap ...

  4. 值得收藏的25 个前端相关的学习网站 + 靠谱的小工具

    点击上方"IT平头哥联盟",选择"置顶或者星标" 你的关注意义重大! 来自:南瓜编程公众号 给大家整理了 25 个前端相关的学习网站和一些靠谱的小工具,包括一些 ...

  5. 25 个前端相关的学习网站和一些靠谱的小工具

    关注公众号 前端开发博客,回复"加群" 加入我们一起学习,天天进步 给大家整理了 25 个前端相关的学习网站和一些靠谱的小工具,包括一些小游戏.教程.社区网站和博客,以及一些资源网 ...

  6. 前端开发小工具SuperApp——Ctrl+S自动刷新浏览器

    推荐前端开发中一个小工具SuperApp,灰常好用,前端开发的童鞋们,走过路过不要错过啊! 使用SuperApp后,在编辑器中更新页面资源(html,js,css)时,只需按Ctrl+S,浏览器会自动 ...

  7. Vue-Access-Control:前端用户权限控制解决方案

    Vue-Access-Control:前端用户权限控制解决方案 参考文章: (1)Vue-Access-Control:前端用户权限控制解决方案 (2)https://www.cnblogs.com/ ...

  8. web前端开发小工具集合

    收集的一些轻量级非常实用的前端开发小工具,以后还会不定期进行更新,现将目前收集的信息列表如下:   CSS 3相关 1.CSS3样式生成器:http://www.css88.com/tool/css3 ...

  9. 仿站小工具的使用---扒取别人前端代码

    1.下载仿站小工具: 点击跳转  仿站小工具下载链接 2.查看配置,如果不需要改变路径也可不设置, 输入网址 输入保存目录,开扒 首页扒取结果: 打开index.html,可正常访问 逐个界面扒取,, ...

最新文章

  1. Spring boot的Webjars
  2. win10任务栏透明_任务栏1秒变透明,桌面瞬间高大上,美化必备!
  3. 在cmd指令看计算机位数,在.cmd中使用Windows命令来测试32位或64位并运行命令
  4. c++学习笔记之运算符的重载
  5. 题解 LGOJ P4168 【[Violet]蒲公英】
  6. python开发软件的实例-由Python编写的MySQL管理工具代码实例
  7. thinkphp的find()方法获取结果
  8. 重载全局new/delete实现内存检测
  9. m4s格式转换mp3_AnyMP4 MP3 Converter for Mac(音视频mp3格式转换工具)
  10. 利用动态数组生成魔方矩阵
  11. linux企业版as,Redhat 企业版 LINUX AS5.0 下载地址
  12. mongodb WT_ERROR: non-specific WiredTiger error
  13. excel公式不自动计算_梯形丝杠设计计算公式及三针法测量Excel表
  14. 奇点云宣布完成1.2亿元B1轮融资,首次公开数据星图
  15. java自行车北京_JAVA公共自行车地图api调用代码实例
  16. Unity 之 Scorll Rect 动态循环列表
  17. 【VREP】四舵轮(or n舵轮)自旋与平移融合运动解算
  18. Python下载MP4视频
  19. C3+H5小案例 | 03 3D立体旋转相册
  20. 祝读者朋友们新年快乐

热门文章

  1. 日常英语口语练习-情景交际场景25(四)
  2. DCTCP之FCT优化随想
  3. ViSP学习笔记(一):Ubuntu环境下ViSP安装
  4. 转载 深度学习---ResNet
  5. selenium捞取http请求信息
  6. Go语言入门【11】接口
  7. 算法时间复杂度、空间复杂度分析
  8. HTML xmlns 属性
  9. 简易理解设计模式之:桥接模式——穿衣服经典案例2
  10. 如何使用Kafka API入门Spark流和MapR流