中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用CSS和JS打造一個簡單的圖片編輯器

發布時間:2021-11-06 15:04:38 來源:億速云 閱讀:176 作者:iii 欄目:web開發

本篇內容介紹了“怎么用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打造一個簡單的圖片編輯器”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玉树县| 岑溪市| 军事| 射阳县| 大连市| 沁水县| 达拉特旗| 娄烦县| 噶尔县| 海城市| 龙川县| 尼勒克县| 蓝田县| 朝阳县| 峡江县| 石阡县| 临漳县| 南昌市| 老河口市| 维西| 芜湖市| 长丰县| 内江市| 若尔盖县| 乐都县| 屏南县| 塔河县| 中牟县| 白朗县| 东源县| 海兴县| 天水市| 习水县| 友谊县| 历史| 宁河县| 景宁| 眉山市| 获嘉县| 高州市| 长岭县|