JavaScript 圖片切割效果(放大鏡)第1/4頁
更新時間:2008年12月10日 17:25:39 作者:
自上一個版本的圖片切割效果出來后,雖然也經(jīng)??吹健翱蚣荛_發(fā)這個如何如何容易”之類的評論,但也受到很多人的肯定,小弟在此感謝大家的支持。
上一個版本由于是初次接觸這類效果,而且是三個大功能一起開發(fā),能力所限,所以僅僅是實現(xiàn)了效果就完成了。
近來我把其中的 拖放效果 和 縮放效果 單獨出來研究,經(jīng)過整理和完善,再套進(jìn)切割效果,個人感覺效果已經(jīng)不錯了。
要說明的是這個只是一個效果,并不是真正的切割圖片,要獲取真正的切割圖片請參考 圖片切割系統(tǒng) 。
效果預(yù)覽請看這里
完整實例下載
代碼太多貼不出來,只好給個效果圖:

程序說明
這個效果主要分三個部分:層的拖放、層的縮放、圖片切割(包括預(yù)覽)。
其中 層的拖放 和 層的縮放 我已經(jīng)在其他兩篇文章中有詳細(xì)說明,這里就說說圖片切割這部分吧。
圖片切割
關(guān)于圖片切割的設(shè)計,有三個方法:
把圖片設(shè)為背景圖,通過設(shè)置背景圖的位置來實現(xiàn),但這樣的缺點是只能按圖片的正常比例實現(xiàn),不夠靈活;
把圖片放到切割對象里面,通過設(shè)置圖片的top和left實現(xiàn),這個方法是可行,但下面有更簡單的方法實現(xiàn);
通過設(shè)置圖片的clip來實現(xiàn)。
這里介紹方法3的實現(xiàn)方法,這個方法是從當(dāng)年“珍藏”的代碼中看到的,先說說clip:
clip的作用是“檢索或設(shè)置對象的可視區(qū)域??梢晠^(qū)域外的部分是透明的?!?
依據(jù)上-右-下-左的順序提供自對象左上角為(0,0)坐標(biāo)計算的四個偏移數(shù)值來剪切。
例如:
div { position:absolute; width:60px; height:60px; clip:rect(0 20 50 10); }
注意position:absolute的設(shè)置是必須的(詳細(xì)看手冊)。
下面說說具體實現(xiàn)原理:
首先需要一個容器(_Container),容器里面會插入三個層:
底圖層(_layBase):那個半透明的圖片;
切割層(_layCropper):正常顯示的那個部分;
控制層(_layHandle):就是控制顯示的那個部分。
其中為了底圖層和切割層是程序自動創(chuàng)建的圖片,控制層是自己定義的層(程序中是一個div)。
底圖層和切割層必須完全重合,程序中把這兩個層都絕對定位到了左上角:
this._layBase.style.top = this._layBase.style.left = this._layCropper.style.top = this._layCropper.style.left = 0;
層疊順序也要設(shè)置一下保證各層順序。
近來我把其中的 拖放效果 和 縮放效果 單獨出來研究,經(jīng)過整理和完善,再套進(jìn)切割效果,個人感覺效果已經(jīng)不錯了。
要說明的是這個只是一個效果,并不是真正的切割圖片,要獲取真正的切割圖片請參考 圖片切割系統(tǒng) 。
效果預(yù)覽請看這里
完整實例下載
代碼太多貼不出來,只好給個效果圖:

程序說明
這個效果主要分三個部分:層的拖放、層的縮放、圖片切割(包括預(yù)覽)。
其中 層的拖放 和 層的縮放 我已經(jīng)在其他兩篇文章中有詳細(xì)說明,這里就說說圖片切割這部分吧。
圖片切割
關(guān)于圖片切割的設(shè)計,有三個方法:
把圖片設(shè)為背景圖,通過設(shè)置背景圖的位置來實現(xiàn),但這樣的缺點是只能按圖片的正常比例實現(xiàn),不夠靈活;
把圖片放到切割對象里面,通過設(shè)置圖片的top和left實現(xiàn),這個方法是可行,但下面有更簡單的方法實現(xiàn);
通過設(shè)置圖片的clip來實現(xiàn)。
這里介紹方法3的實現(xiàn)方法,這個方法是從當(dāng)年“珍藏”的代碼中看到的,先說說clip:
clip的作用是“檢索或設(shè)置對象的可視區(qū)域??梢晠^(qū)域外的部分是透明的?!?
依據(jù)上-右-下-左的順序提供自對象左上角為(0,0)坐標(biāo)計算的四個偏移數(shù)值來剪切。
例如:
復(fù)制代碼 代碼如下:
div { position:absolute; width:60px; height:60px; clip:rect(0 20 50 10); }
注意position:absolute的設(shè)置是必須的(詳細(xì)看手冊)。
下面說說具體實現(xiàn)原理:
首先需要一個容器(_Container),容器里面會插入三個層:
底圖層(_layBase):那個半透明的圖片;
切割層(_layCropper):正常顯示的那個部分;
控制層(_layHandle):就是控制顯示的那個部分。
其中為了底圖層和切割層是程序自動創(chuàng)建的圖片,控制層是自己定義的層(程序中是一個div)。
底圖層和切割層必須完全重合,程序中把這兩個層都絕對定位到了左上角:
復(fù)制代碼 代碼如下:
this._layBase.style.top = this._layBase.style.left = this._layCropper.style.top = this._layCropper.style.left = 0;
層疊順序也要設(shè)置一下保證各層順序。
相關(guān)文章
JavaScript判斷圖片是否能夠加載,失敗則替換默認(rèn)圖片
JavaScript智能判斷圖片是否能夠正確加載,若加載失敗則用默認(rèn)圖片替換,這是個比較實用的功能,不少網(wǎng)站都可見到這種功能.2010-10-10JS+FLASH幻燈片播放圖片腳本,整理了代碼,使得調(diào)用更加方便!
JS+FLASH幻燈片播放圖片腳本,整理了代碼,使得調(diào)用更加方便!...2007-01-01javascript圖片自動縮放和垂直居中處理函數(shù)
非常不錯的應(yīng)用代碼,方便我們處理一些圖片效果2008-10-10符合web標(biāo)準(zhǔn)的連續(xù)滾動圖像的js代碼
符合web標(biāo)準(zhǔn)的連續(xù)滾動圖像的js代碼...2007-02-02