JavaScript 圖片切割效果(放大鏡)第1/4頁

來源:互聯網
上載者:User

上一個版本由於是初次接觸這類效果,而且是三個大功能一起開發,能力所限,所以僅僅是實現了效果就完成了。
近來我把其中的 拖放效果 和 縮放效果 單獨出來研究,經過整理和完善,再套進切割效果,個人感覺效果已經不錯了。
要說明的是這個只是一個效果,並不是真正的切割圖片,要擷取真正的切割圖片請參考 圖片切割系統 。
效果預覽請看這裡
完整執行個體下載
代碼太多貼不出來,只好給個:

程式說明

這個效果主要分三個部分:層的拖放、層的縮放、圖片切割(包括預覽)。
其中 層的拖放 和 層的縮放 我已經在其他兩篇文章中有詳細說明,這裡就說說圖片切割這部分吧。

圖片切割

關於圖片切割的設計,有三個方法:

把圖片設為背景圖,通過設定背景圖的位置來實現,但這樣的缺點是只能按圖片的正常比例實現,不夠靈活;
把圖片放到切割對象裡面,通過設定圖片的top和left實現,這個方法是可行,但下面有更簡單的方法實現;
通過設定圖片的clip來實現。
這裡介紹方法3的實現方法,這個方法是從當年“珍藏”的代碼中看到的,先說說clip:
clip的作用是“檢索或設定對象的可視地區。可視地區外的部分是透明的。”
依據上-右-下-左的順序提供自對象左上方為(0,0)座標計算的四個位移數值來剪下。
例如: 複製代碼 代碼如下:div { position:absolute; width:60px; height:60px; clip:rect(0 20 50 10); }

注意position:absolute的設定是必須的(詳細看手冊)。
下面說說具體實現原理:

首先需要一個容器(_Container),容器裡面會插入三個層:

底圖層(_layBase):那個半透明的圖片;
切割層(_layCropper):正常顯示的那個部分;
控制層(_layHandle):就是控制顯示的那個部分。
其中為了底圖層和切割層是程式自動建立的圖片,控制層是自己定義的層(程式中是一個div)。
底圖層和切割層必須完全重合,程式中把這兩個層都絕對位置到了左上方: 複製代碼 代碼如下:this._layBase.style.top = this._layBase.style.left = this._layCropper.style.top = this._layCropper.style.left = 0;

層疊順序也要設定一下保證各層順序。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.