CSS實現(xiàn)圓形放大鏡狙擊鏡效果 只有圓圈里的放大

圖片放大,這是一個比較容易的效果了。當然,今天說的可不是簡簡單單的在一個框里放大,而是一個圓。就像放大鏡或是狙擊鏡那樣,只有圓圈里的放大,圈外的當然還是原來的圖片。這是不是很不可思議? 當然不是。做過Flash的也許會脫口而出:套個蒙版就是了。可惜CSS不是Flash,沒有那一套。我們只有從CSS里面慢慢挖掘。
先說IE,因為IE有濾鏡,可以實現(xiàn)許多意想不到的功能。先來整理下我們的目標:
效果演示提示:您可以先修改部分代碼再運行
放大一副圖片
- 只顯示其中的一個圓
- 圓外是透明的
圖片的縮放可以通過img元素的拉伸來實現(xiàn)。接著蓋上一張透明像素畫的實心圓,因此正好只顯示出放大后中心圓圈部分。但第3步可就不對了,雖然之前加蓋了一張透明圓形的gif圖片,屏幕上確實出現(xiàn)了一個放大過的圓形圖片,但圓圈的外面卻變成加蓋圖片的背景色了,因為這張圖片是在最上層了。到此你或許在想給其中某些元素加些透明度什么的,事實上無論給哪個層加透明度都是徒勞的。因為此時無非就兩種情況:圓圈外被背景色覆蓋;背景色透明的話就是一個矩形的放大,而不是圓形。我們所希望的是:蒙版的背景色透明,并且在此位置下面的放大圖也跟著透明。
對于IE來說,這并非難事,因為IE有濾鏡。如果你熟悉的話應該早就想到了Chroma濾鏡,這是一個很重要的濾鏡,因為他能把一個層里的指定顏色變成透明色!這不正是我們期待嗎。我們新建一個層,層里面分別疊上放大圖片(后)和蒙版圖片(前),就是為了讓他們合并到這個新建層里。我們給這個新建層設置Chroma濾鏡,因為他們的子層都在此合并像素了,所以圓圈外那部分背景色透明后,取而代之的就是原圖片。這就是我們最終想要的效果。
值得注意的是,Chroma濾鏡在給指定的蒙版背景色透明的時候,圓圈里同樣的顏色也會一起透明掉,所以要給蒙版設置一個非常少見的背景色,盡可能減少圓圈里的透明像素點。
IE上面的解決方案還算簡單,非IE的呢?你當然會說canvas,因為圖形方面他是萬能的。如果CSS上確實找不到辦法,我們也只能用canvas。不過可別忘了那些非IE的主流瀏覽器幾乎都是支持CSS3的。CSS3雖然沒有像Chroma濾鏡那樣的效果,但是對于本例這樣的效果還是綽綽有余的:因為我們只想要一個放大了的圓形圖片,而CSS3天生就支持畫圓。
CSS3支持層的圓角,例如border-radius:5px,就能給層的4個方角變?yōu)榘霃?px的圓角。我們不妨將其運用到極限,給一個100*100的層設置一個border-radius:50px圓角,這時可就是一個圓滾滾的層了!層里面的內(nèi)容當然不會限制在圓角里面,但層的背景圖片會。并且CSS3是支持背景圖片縮放的,本例到此也就迎刃而解了。

前面關鍵的問題都以解決,下面就實現(xiàn)一個狙擊瞄準器的效果,并支持滾輪縮放。為了使代碼更清晰,本例分別為IE,F(xiàn)F及其他瀏覽器做了3個版本,通過Demo頁面能夠自動轉(zhuǎn)跳。
當然,如果再改進的話我們還可以用png圖片作為蒙版,帶上一些漸變的透明度,就更像玻璃的材質(zhì)了。
相關文章
CSS3 最強二維布局系統(tǒng)之Grid 網(wǎng)格布局
CS3的Grid網(wǎng)格布局是目前最強的二維布局系統(tǒng),可以同時對列和行進行處理,將網(wǎng)頁劃分成一個個網(wǎng)格,可以任意組合不同的網(wǎng)格,做出各種各樣的布局,本文介紹CSS3 最強二維布局系2025-02-27- 本文介紹了如何使用CSS3的transform屬性和動畫技巧實現(xiàn)波浪式圖片墻,通過設置圖片的垂直偏移量,并使用動畫使其周期性地改變位置,可以創(chuàng)建出動態(tài)且具有波浪效果的圖片墻,同2025-02-27
CSS3模擬實現(xiàn)一個雷達探測掃描動畫特效(最新推薦)
文章介紹了如何使用CSS3實現(xiàn)一個雷達探測掃描的效果,包括夜色背景、蜘蛛網(wǎng)盤、掃描體的轉(zhuǎn)動效果、尾巴陰影以及被掃描到的光點,通過HTML和CSS的配合,實現(xiàn)了豐富的動畫效果,2025-02-21- CSS3的Flexbox是一種強大的布局模式,通過設置display:flex可以輕松實現(xiàn)對齊、排列和分布網(wǎng)頁元素,它解決了傳統(tǒng)布局方法中的對齊、間距分配和自適應布局等問題,接下來通過本2025-02-19
css3 實現(xiàn)icon刷新轉(zhuǎn)動效果
本文給大家介紹css3 實現(xiàn)icon刷新轉(zhuǎn)動效果,文章開頭給大家介紹了webkit-transform、animation、@keyframes這三個屬性,結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友一2025-02-19- CSS3過渡屬性用于實現(xiàn)元素從一種樣式平滑過渡到另一種樣式,通過設置transition-property過渡屬性、transition-duration過渡時長transition-timing-function過渡函數(shù)和trans2025-02-19
CSS3實現(xiàn)動態(tài)旋轉(zhuǎn)加載樣式的示例代碼
本文介紹了如何使用CSS3創(chuàng)建一個簡單的動態(tài)旋轉(zhuǎn)加載樣式,通過定義一個帶有類名“l(fā)oader”的HTML元素,并使用CSS樣式和@keyframes規(guī)則來實現(xiàn)旋轉(zhuǎn)動畫,你可以根據(jù)需要調(diào)整樣式2025-02-19- 這篇文章主要介紹了如何使用CSS3的transition屬性實現(xiàn)平滑的過渡動畫,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧2025-02-13
CSS3中使用flex和grid實現(xiàn)等高元素布局的示例代碼
本文介紹了使用CSS3中的Flexbox和Grid布局實現(xiàn)等高元素布局的方法,通過簡單的兩列實現(xiàn)、每行放置3列以及全部代碼的展示,展示了這兩種布局方式的實現(xiàn)細節(jié)和效果,感興趣的朋2025-02-11- CSS3和SVG的結(jié)合使用為網(wǎng)頁設計帶來了創(chuàng)新的動態(tài)視覺效果,本文通過一個圓形進度條的動畫特效示例,展示了如何利用CSS3的動畫功能和SVG的矢量圖形能力來創(chuàng)建豐富的用戶交互體2024-10-24