用CSS和JS打造一个简单的图片编辑器
CSS filter
filter。
filter,在CSS里面要实现filter,其实很简单,使用类似下面的声明方式:
1. <font size="3">.example {</font>
2. <font size="3"> filter: [];</font>
3. <font size="3"> }</font>
<font size="3">比如说,我们给图片添加一点灰度(grayscale)特效,就可以这样:</font>
1. <font size="3"> .example {</font>
2. <font size="3"> filter: grayscale(90%);</font>
3. <font size="3"> }</font>
1. <font size="3">.example {</font>
2. <font size="3"> -webkit-filter: grayscale(90%);</font>
3. <font size="3"> filter: grayscale(90%);</font>
4. <font size="3"> }</font>
filter的属性值的单位通常可能是从0到1之间,但是有些不是这样的,比如blur是使用像素'px'来作为单位的,而hue-rotate则使用角度deg来作为基本单位;
1. <font size="3"> .example {</font>
2. <font size="3"> filter: blur(10px);</font>
3. <font size="3"> }</font>
4. <font size="3"> .example-2 {</font>
5. <font size="3"> filter: hue-rotate(90deg);</font>
6. <font size="3"> }</font>
filter就比较麻烦了,所以CSS提供了更加方便的书写形式,直接并排着写:
1. <font size="3"> .example {</font>
2. <font size="3"> filter: grayscale(0.5) blur(10px);</font>
3. <font size="3"> }</font>
filter属性。
filter之后,我们来动手创建一个简单的图片编辑器。
HTML文件
index.html,代码也比较简单:
1. <font size="3"> Image Editor</font>
2. <font size="3"> Grayscale</font>
3. <font size="3"> Blur</font>
4. <font size="3"> Brightness</font>
5. <font size="3"> Contrast</font>
6. <font size="3"> Hue Rotate</font>
7. <font size="3"> Opacity</font>
8. <font size="3"> Invert</font>
9. <font size="3"> Saturate</font>
10. <font size="3"> Sepia</font>
main.css和main.js,main.css其实是对编辑器的一些排版起的作用,并没有对图片的filter效果做出实际的影响,我们做的是编辑器,所以在用户改变某个filter的值的时候,我们可以实时让用户看到效果,于是这些实现filter的代码应该就放在main.js里面。
input都是filter的一个属性设置,因为我们可以同时用多个filter来对图片产生特效,所以我每个filter的属性值都设置为可以调节的状态。
index.html还要说明的是,在最上面我们提供一个输入框,用于给用户输入图片的URL,当用户点击回车的时候,我们就将这张图片显示到编辑区域。使用的是下面的简单js代码:
1. <font size="3"> function addImage(e) {</font>
2. <font size="3"> var imgUrl = $("#imgUrl").val();</font>
3. <font size="3"> if (imgUrl.length) {</font>
4. <font size="3"> $("#imageContainer img").attr("src", imgUrl);</font>
5. <font size="3"> }</font>
6. <font size="3"> e.preventDefault();</font>
7. <font size="3"> }</font>
8. <font size="3"> //on pressing return, addImage() will be called</font>
9. <font size="3"> $("#urlBox").submit(addImage);</font>
js代码也是写到main.js当中。有了可以用户自己添加图片之后,我们就可以实现对图片的编辑了:
mousemove事件:
1.
$("input[type=range]").mousemove(editImage);
editImage函数。
change事件,把这一刻的变化也交给editImage函数处理,所以可以将上面的代码写成这样:
1. font size="3">$("input[type=range]").mousemove(editImage).change(editImage);</font>
2. <font size="3"> 复制代码编写editImage函数</font>
3. <font size="3"> 上面我们将input[type=range]的mousemove和change事件交给了editImage函数处理,所以,我们来编写一下editImage的函数代码:</font>
4. <font size="3"> function editImage() {</font>
5. <font size="3"> var gs = $("#gs").val(); // grayscale</font>
6. <font size="3"> var blur = $("#blur").val(); // blur</font>
7. <font size="3"> var br = $("#br").val(); // brightness</font>
8. <font size="3"> var ct = $("#ct").val(); // contrast</font>
9. <font size="3"> var huer = $("#huer").val(); //hue-rotate</font>
10. <font size="3"> var opacity = $("#opacity").val(); //opacity</font>
11. <font size="3"> var invert = $("#invert").val(); //invert</font>
12. <font size="3"> var saturate = $("#saturate").val(); //saturate</font>
13. <font size="3"> var sepia = $("#sepia").val(); //sepia</font>
14. <font size="3"> $("#imageContainer img").css("filter", 'grayscale(' + gs+</font>
15. <font size="3"> '%) blur(' + blur +</font>
16. <font size="3"> 'px) brightness(' + br +</font>
17. <font size="3"> '%) contrast(' + ct +</font>
18. <font size="3"> '%) hue-rotate(' + huer +</font>
19. <font size="3"> 'deg) opacity(' + opacity +</font>
20. <font size="3"> '%) invert(' + invert +</font>
21. <font size="3"> '%) saturate(' + saturate +</font>
22. <font size="3"> '%) sepia(' + sepia + '%)');</font>
23. <font size="3"> $("#imageContainer img").css("-webkit-filter", 'grayscale(' + gs+</font>
24. <font size="3"> '%) blur(' + blur +</font>
25. <font size="3"> 'px) brightness(' + br +</font>
26. <font size="3"> '%) contrast(' + ct +</font>
27. <font size="3"> '%) hue-rotate(' + huer +</font>
28. <font size="3"> 'deg) opacity(' + opacity +</font>
29. <font size="3"> '%) invert(' + invert +</font>
30. <font size="3"> '%) saturate(' + saturate +</font>
31. <font size="3"> '%) sepia(' + sepia + '%)');</font>
32. <font size="3"> }</font>
var gs = $("#gs").val();的语句取得相对应地值,然后通过Jquery的css()方法直接为图片加上filter效果,而且相信你也看得出来,这个函数的后半段就是实现浏览器兼容的
1. <font size="3"> $("#imageContainer img").css("-webkit-filter",...)</font>
2. <font size="3"> 复制代码</font>
3. <font size="3"> 这段代码其实就是在img元素实现了类似下面的效果;</font>
4. <font size="3"> </font>
5. <font size="3">[img=28,30][/img]</font>
reset然后将图片重置到原始状态:
1. <font size="3">
2.
$('#imageEditor').on('reset', function () {</font>
3. <font size="3"> setTimeout(function() {</font>
4. <font size="3"> editImage();</font>
5. <font size="3"> },0);</font>
6. <font size="3"> });</font>
setTimeout函数就是为了将reset的效果最快地展现出来,如果写成下面的形式:
1. <font size="3">$('#imageEditor').on('reset', function () {</font>
2. <font size="3"> editImage();</font>
3. <font size="3"> });</font>
reset效果执行起来其实是有一点延迟的,你明显可以看到等待的时候,它并不是很快。
index.html,就可以看到相应的调节效果了。你可以拖动一些设置项的控制条来查看效果。
用CSS和JS打造一个简单的图片编辑器相关推荐
- 好程序员web前端分享用CSS和JS打造一个简单的图片编辑器
本文主要是利用 CSS的 filter和简单的Jquery代码来实现一个简单的图片编辑器,包括对图片的透明度,黑白,图片亮度等调节. CSS filter 我们首先来探讨一下 filter. 首先来说 ...
- [DIV/CSS] 用CSS和JS打造一个简单的图片编辑器
本文主要是利用CSS的 filter和简单的Jquery代码来实现一个简单的图片编辑器,包括对图片的透明度,黑白,图片亮度等调节. CSS filter 我们首先来探讨一下filter. 首先来说明一 ...
- Web(前端开发)结合html、css、js写一个简单的相册
该相册制作分为登录.注册和主页面(由于后端没有实现,登录注册只有一些简单的判断),代码如下 (1)登录界面的HTML <!DOCTYPE html> <html lang=" ...
- 如何用 Node.js 实现一个简单的 Websocket 服务?
最近正在研究 Websocket 相关的知识,想着如何能自己实现 Websocket 协议.到网上搜罗了一番资料后用 Node.js 实现该协议,倒也没有想象中那么复杂,除去注释语句和 console ...
- JS写一个简单的五星评价
JS写一个简单的五星评价 在做前端网页页面的时候很多时候回有遇到星级评价的模块,用到的地方挺多所以自己就上传下方便大家和自己使用(不支持半星评价因为没有半星的图). 效果图如下: 下面是我们的代码: ...
- HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌)
用HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌) 效果如下:(鼠标点击按钮可以实现播放或暂停,按钮会旋转,实现了歌词同步,功能还需改进) 代码如下: <!DOCTYPE htm ...
- 使用 Vue.js 制作一个简单的调查问卷平台
使用 Vue.js 制作一个简单的调查问卷平台 原文 https://github.com/pramper/Demos/tree/master/Vue-Demos/Questionnaire 主题 ...
- Node.js搭建一个简单的服务器
文章目录 Node.js的安装 了解Node.js模块系统 服务器的搭建 一.创建一个Web服务器 注意 程序代码 运行 二.静态资源托管 静态资源 注意 程序代码 运行 三.简单接口的实现(简单服务 ...
- 原生JS实现一个简单的打字小游戏
原生JS实现一个简单的打字小游戏 利用javascript制作一个简单的打字小游戏 之前写了一个贪吃蛇小游戏好像反响不错 今天我来写一个比贪吃蛇更low更简单的打字小游戏 打字小游戏原理 接下来咋们直 ...
最新文章
- Debian与《玩具总动员》
- kafka的groupid
- CIO:2019年 IT 创造业务价值的12种方式
- 这个高度站立办公十分的棒
- 如何通向“广义人工智能”?LSTM 提出者之一Sepp Hochreiter:将符号 AI 与神经 AI 相结合...
- php session作用,PHP中Session的作用
- 北林oj-算法设计与分析-Line up in the canteen(两种解法,附思路)
- 计算机程序的思维逻辑 (54) - 剖析Collections - 设计模式
- SpringBoot2.1.5(7)---更换Banner
- apache cxf 测试webservice接口
- bind函数怎么用JAVA_面试官:能解释一下javascript中bind、apply和call这三个函数的用法吗...
- 室外AP设备的防雷接地
- ANDROID 绘制 三角形 XML
- 网络协议—应用层的HTTP协议
- 嵌入式Web开发——Boa服务器移植
- 【FPGA】数码管电子时钟
- 程序员小灰灰专栏收集
- linux mint19.01 运行steam错误解决办法
- 翻译:VESA Adaptive-Sync / AMD FreeSync / VRR 白皮书
- Python 第四十八章 css样式