国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用CSS和JS打造一個(gè)簡(jiǎn)單的圖片編輯器

NSFish / 884人閱讀

摘要:原文來自效果圖本文主要是利用的和簡(jiǎn)單的代碼來實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖片編輯器,包括對(duì)圖片的透明度,黑白,圖片亮度等調(diào)節(jié)。簡(jiǎn)單地說完之后,我們來動(dòng)手創(chuàng)建一個(gè)簡(jiǎn)單的圖片編輯器。

  

原文來自:https://jellybool.com/post/build-a-simple-image-editor-with-css-js

demo: https://jellybool.com/demo/image-editor

效果圖:

本文主要是利用CSS的 filter和簡(jiǎn)單的Jquery代碼來實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖片編輯器,包括對(duì)圖片的透明度,黑白,圖片亮度等調(diào)節(jié)。

CSS filter

我們首先來探討一下filter。

首先來說明一下filter,在CSS里面要實(shí)現(xiàn)filter,其實(shí)很簡(jiǎn)單,使用類似下面的聲明方式:

.example {
  filter:  [];
}

比如說,我們給圖片添加一點(diǎn)灰度(grayscale)特效,就可以這樣:

.example {
  filter: grayscale(90%);
}

當(dāng)然,為了瀏覽器兼容,我們最好這樣寫:


.example { -webkit-filter: grayscale(90%); filter: grayscale(90%); }

需要注意的是:filter的屬性值的單位通常可能是從01之間,但是有些不是這樣的,比如blur是使用像素"px"來作為單位的,而hue-rotate則使用角度deg來作為基本單位;

.example {
  filter: blur(10px);
}

.example-2 {
  filter: hue-rotate(90deg);
}


但是如果每次只能使用一個(gè)filter就比較麻煩了,所以CSS提供了更加方便的書寫形式,直接并排著寫:

.example {
  filter: grayscale(0.5) blur(10px);
}

這樣就可以實(shí)現(xiàn)對(duì)一個(gè)元素添加多個(gè)filter屬性。

簡(jiǎn)單地說完filter之后,我們來動(dòng)手創(chuàng)建一個(gè)簡(jiǎn)單的圖片編輯器。

創(chuàng)建基本的HTML文件

在這里我們創(chuàng)建一個(gè)index.html,代碼也比較簡(jiǎn)單:


Image Editor

Image Editor

這個(gè)文件里,我們引入了main.cssmain.jsmain.css其實(shí)是對(duì)編輯器的一些排版起的作用,并沒有對(duì)圖片的filter效果做出實(shí)際的影響,我們做的是編輯器,所以在用戶改變某個(gè)filter的值的時(shí)候,我們可以實(shí)時(shí)讓用戶看到效果,于是這些實(shí)現(xiàn)filter的代碼應(yīng)該就放在main.js里面。

上面的每一個(gè)

下面的

元素下面的input都是filter的一個(gè)屬性設(shè)置,因?yàn)槲覀兛梢酝瑫r(shí)用多個(gè)filter來對(duì)圖片產(chǎn)生特效,所以我每個(gè)filter的屬性值都設(shè)置為可以調(diào)節(jié)的狀態(tài)。

上面的index.html還要說明的是,在最上面我們提供一個(gè)輸入框,用于給用戶輸入圖片的URL,當(dāng)用戶點(diǎn)擊回車的時(shí)候,我們就將這張圖片顯示到編輯區(qū)域。使用的是下面的簡(jiǎn)單js代碼:

function addImage(e) {
    var imgUrl = $("#imgUrl").val();
    if (imgUrl.length) {
        $("#imageContainer img").attr("src", imgUrl);
    }
    e.preventDefault();
}

//on pressing return, addImage() will be called
$("#urlBox").submit(addImage);


上面的js代碼也是寫到main.js當(dāng)中。有了可以用戶自己添加圖片之后,我們就可以實(shí)現(xiàn)對(duì)圖片的編輯了:

每次用戶在滑動(dòng)進(jìn)度條的時(shí)候,我們就可以將效果展示給用戶看,于是我們來監(jiān)聽用戶的mousemove事件:

$("input[type=range]").mousemove(editImage);

也就是說,每次用戶在移動(dòng)控制條的時(shí)候,我們都執(zhí)行editImage函數(shù)。
但是這樣的體驗(yàn)可能還不是最好,因?yàn)樵谧詈笥脩舻氖髽?biāo)離開控制條的時(shí)候,我們還可以監(jiān)聽change事件,把這一刻的變化也交給editImage函數(shù)處理,所以可以將上面的代碼寫成這樣:

$("input[type=range]").mousemove(editImage).change(editImage);

編寫editImage函數(shù)

上面我們將input[type=range]mousemovechange事件交給了editImage函數(shù)處理,所以,我們來編寫一下editImage的函數(shù)代碼:


function editImage() { var gs = $("#gs").val(); // grayscale var blur = $("#blur").val(); // blur var br = $("#br").val(); // brightness var ct = $("#ct").val(); // contrast var huer = $("#huer").val(); //hue-rotate var opacity = $("#opacity").val(); //opacity var invert = $("#invert").val(); //invert var saturate = $("#saturate").val(); //saturate var sepia = $("#sepia").val(); //sepia $("#imageContainer img").css("filter", "grayscale(" + gs+ "%) blur(" + blur + "px) brightness(" + br + "%) contrast(" + ct + "%) hue-rotate(" + huer + "deg) opacity(" + opacity + "%) invert(" + invert + "%) saturate(" + saturate + "%) sepia(" + sepia + "%)"); $("#imageContainer img").css("-webkit-filter", "grayscale(" + gs+ "%) blur(" + blur + "px) brightness(" + br + "%) contrast(" + ct + "%) hue-rotate(" + huer + "deg) opacity(" + opacity + "%) invert(" + invert + "%) saturate(" + saturate + "%) sepia(" + sepia + "%)"); }

其實(shí)很簡(jiǎn)單,我們?cè)诿看斡脩艋瑒?dòng)控制條的時(shí)候,我們就通過類似var gs = $("#gs").val();的語句取得相對(duì)應(yīng)地值,然后通過Jquery的css()方法直接為圖片加上filter效果,而且相信你也看得出來,這個(gè)函數(shù)的后半段就是實(shí)現(xiàn)瀏覽器兼容的

$("#imageContainer img").css("-webkit-filter",...)


這段代碼其實(shí)就是在img元素實(shí)現(xiàn)了類似下面的效果;


最后,如果你不想將某些特效加到圖片上面去,你可以點(diǎn)reset然后將圖片重置到原始狀態(tài):

$("#imageEditor").on("reset", function () {
    setTimeout(function() {
        editImage();
    },0);
});

這里需要說明一下的是,這里的setTimeout函數(shù)就是為了將reset的效果最快地展現(xiàn)出來,如果寫成下面的形式:

$("#imageEditor").on("reset", function () {

        editImage();
    });

這個(gè)時(shí)候,reset效果執(zhí)行起來其實(shí)是有一點(diǎn)延遲的,你明顯可以看到等待的時(shí)候,它并不是很快。

瀏覽器打開index.html,就可以看到相應(yīng)的調(diào)節(jié)效果了。你可以拖動(dòng)一些設(shè)置項(xiàng)的控制條來查看效果。

Happy Hacking

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/91522.html

相關(guān)文章

  • CSSJS打造一個(gè)簡(jiǎn)單圖片輯器

    摘要:原文來自效果圖本文主要是利用的和簡(jiǎn)單的代碼來實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖片編輯器,包括對(duì)圖片的透明度,黑白,圖片亮度等調(diào)節(jié)。簡(jiǎn)單地說完之后,我們來動(dòng)手創(chuàng)建一個(gè)簡(jiǎn)單的圖片編輯器。 原文來自:https://jellybool.com/post/build-a-simple-image-editor-with-css-js demo: https://jellybool.com/demo/i...

    jerryloveemily 評(píng)論0 收藏0
  • ELSE 技術(shù)周刊(2017.11.13期)

    摘要:騰訊空間超分辨率技術(shù)為用戶節(jié)省流量,處理效果和速度超谷歌技術(shù)在的標(biāo)準(zhǔn)下,處理速度在提升了,處理效果也有明顯提升。此外,也是業(yè)界首次實(shí)現(xiàn)移動(dòng)端使用深度神經(jīng)網(wǎng)絡(luò)進(jìn)行超分辨率,并保證圖片能夠?qū)崟r(shí)進(jìn)行處理。值得一提的是的對(duì)應(yīng)指標(biāo)也在名單里。 團(tuán)隊(duì)分享 魔幻語言 JavaScript 系列之 call、bind 以及上下文 從一行代碼來看看 JavaScript 是一門多么魔幻的語言,順便談?wù)?...

    caohaoyu 評(píng)論0 收藏0
  • CSS相關(guān)文章

    摘要:如何用獲取虛擬鍵盤高度前端早讀課月號(hào)早讀文章由湯谷投稿分享。大殺器和把動(dòng)畫轉(zhuǎn)換成原生動(dòng)畫初來乍到,本文搬運(yùn)自我月份在知乎發(fā)的文章。 前端面試之 CSS3 新特性 除了 HTML5 的新特性,CSS3 的新特性也是面試中經(jīng)常被問到的。 如何用 js 獲取虛擬鍵盤高度?-前端早讀課 9月7號(hào)早讀文章由@湯谷投稿分享。正文從這開始~ 這是一個(gè)存在很久的歷史問題了,對(duì)于這樣一個(gè)具有普遍性的問題...

    FrozenMap 評(píng)論0 收藏0
  • 如何打造一個(gè)令人愉悅前端開發(fā)環(huán)境(一)

    摘要:我覺得這方面的原因是當(dāng)時(shí)對(duì)和的依賴,導(dǎo)致大家對(duì)的興趣不弄,錯(cuò)過了最佳時(shí)機(jī),這個(gè)其實(shí)跟百度自己的的技術(shù)棧有很大關(guān)系。這個(gè)阮一峰對(duì)于前端構(gòu)建的變化吐槽過,說新的構(gòu)建工具就是的構(gòu)建工具。 文章來源 最近幾年,前端發(fā)展越來越迅速,各種萌新加入了前端這個(gè)大家庭,大有趕IOS、超Android的趨勢(shì)呀!同時(shí),萌新們提出了各種前端工作問題,除了最基礎(chǔ)的html、css、js三板斧之外,最讓人頭疼的應(yīng)...

    KavenFan 評(píng)論0 收藏0
  • 如何打造一個(gè)令人愉悅前端開發(fā)環(huán)境(一)

    摘要:我覺得這方面的原因是當(dāng)時(shí)對(duì)和的依賴,導(dǎo)致大家對(duì)的興趣不弄,錯(cuò)過了最佳時(shí)機(jī),這個(gè)其實(shí)跟百度自己的的技術(shù)棧有很大關(guān)系。這個(gè)阮一峰對(duì)于前端構(gòu)建的變化吐槽過,說新的構(gòu)建工具就是的構(gòu)建工具。 文章來源 最近幾年,前端發(fā)展越來越迅速,各種萌新加入了前端這個(gè)大家庭,大有趕IOS、超Android的趨勢(shì)呀!同時(shí),萌新們提出了各種前端工作問題,除了最基礎(chǔ)的html、css、js三板斧之外,最讓人頭疼的應(yīng)...

    Yangyang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<