CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大


Posted in HTML / CSS onDecember 10, 2012

图片放大,这是一个比较容易的效果了。当然,今天说的可不是简简单单的在一个框里放大,而是一个圆。就像放大镜或是狙击镜那样,只有圆圈里的放大,圈外的当然还是原来的图片。这是不是很不可思议? 当然不是。做过Flash的也许会脱口而出:套个蒙版就是了。可惜CSS不是Flash,没有那一套。我们只有从CSS里面慢慢挖掘。

先说IE,因为IE有滤镜,可以实现许多意想不到的功能。先来整理下我们的目标:

效果演示 

提示:您可以先修改部分代码再运行

放大一副图片
  1. 只显示其中的一个圆
  2. 圆外是透明的

图片的缩放可以通过img元素的拉伸来实现。接着盖上一张透明像素画的实心圆,因此正好只显示出放大后中心圆圈部分。但第3步可就不对了,虽然之前加盖了一张透明圆形的gif图片,屏幕上确实出现了一个放大过的圆形图片,但圆圈的外面却变成加盖图片的背景色了,因为这张图片是在最上层了。到此你或许在想给其中某些元素加些透明度什么的,事实上无论给哪个层加透明度都是徒劳的。因为此时无非就两种情况:圆圈外被背景色覆盖;背景色透明的话就是一个矩形的放大,而不是圆形。我们所希望的是:蒙版的背景色透明,并且在此位置下面的放大图也跟着透明。

对于IE来说,这并非难事,因为IE有滤镜。如果你熟悉的话应该早就想到了Chroma滤镜,这是一个很重要的滤镜,因为他能把一个层里的指定颜色变成透明色!这不正是我们期待吗。我们新建一个层,层里面分别叠上放大图片(后)和蒙版图片(前),就是为了让他们合并到这个新建层里。我们给这个新建层设置Chroma滤镜,因为他们的子层都在此合并像素了,所以圆圈外那部分背景色透明后,取而代之的就是原图片。这就是我们最终想要的效果。

值得注意的是,Chroma滤镜在给指定的蒙版背景色透明的时候,圆圈里同样的颜色也会一起透明掉,所以要给蒙版设置一个非常少见的背景色,尽可能减少圆圈里的透明像素点。

IE上面的解决方案还算简单,非IE的呢?你当然会说canvas,因为图形方面他是万能的。如果CSS上确实找不到办法,我们也只能用canvas。不过可别忘了那些非IE的主流浏览器几乎都是支持CSS3的。CSS3虽然没有像Chroma滤镜那样的效果,但是对于本例这样的效果还是绰绰有余的:因为我们只想要一个放大了的圆形图片,而CSS3天生就支持画圆。

CSS3支持层的圆角,例如border-radius:5px,就能给层的4个方角变为半径5px的圆角。我们不妨将其运用到极限,给一个100*100的层设置一个border-radius:50px圆角,这时可就是一个圆滚滚的层了!层里面的内容当然不会限制在圆角里面,但层的背景图片会。并且CSS3是支持背景图片缩放的,本例到此也就迎刃而解了。

CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大

前面关键的问题都以解决,下面就实现一个狙击瞄准器的效果,并支持滚轮缩放。为了使代码更清晰,本例分别为IE,FF及其他浏览器做了3个版本,通过Demo页面能够自动转跳。

当然,如果再改进的话我们还可以用png图片作为蒙版,带上一些渐变的透明度,就更像玻璃的材质了。

HTML / CSS 相关文章推荐
使用CSS3的appearance属性改变任何元素的浏览器默认风格
Dec 24 HTML / CSS
CSS3动画animation实现云彩向左滚动
May 09 HTML / CSS
CSS3制作缩略图的详细过程
Jul 08 HTML / CSS
CSS3 :not()选择器实现最后一行li去除某种css样式
Oct 19 HTML / CSS
css3旋转木马_动力节点Java学院整理
Jul 12 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
Apr 19 HTML / CSS
css3遮罩层镂空效果的多种实现方法
May 11 HTML / CSS
html5组织文档结构_动力节点Java学院整理
Jul 11 HTML / CSS
html5之Canvas路径绘图、坐标变换应用实例
Dec 26 HTML / CSS
一款利用html5和css3动画排列人物头像的实例演示
Dec 05 HTML / CSS
HTML5新增的8类INPUT输入类型介绍
Jul 06 HTML / CSS
html5的pushstate以及监听浏览器返回事件的实现
Aug 11 HTML / CSS
CSS3制作半透明边框(Facebox)类似渐变
Dec 09 #HTML / CSS
CSS伪类与CSS伪元素的区别及由来具体说明
Dec 07 #HTML / CSS
用CSS禁用输入法(CSS3 UI规范)实例解析
Dec 04 #HTML / CSS
html5 css3 动态气泡按钮实例演示
Dec 02 #HTML / CSS
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
Nov 29 #HTML / CSS
CSS3悬停效果案例应用
Nov 21 #HTML / CSS
在css3中background-clip属性与background-origin属性的用法介绍
Nov 13 #HTML / CSS
You might like
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
php 不同编码下的字符串长度区分
2009/09/26 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
实例讲解php将字符串输出到HTML
2019/01/27 PHP
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
js仿微博实现统计字符和本地存储功能
2015/12/22 Javascript
利用fecha进行JS日期处理
2016/11/21 Javascript
详解vuejs几种不同组件(页面)间传值的方式
2017/06/01 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
python字典的常用操作方法小结
2016/05/16 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
Django多数据库的实现过程详解
2019/08/01 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
详解Django CAS 解决方案
2019/10/30 Python
解决python运行启动报错问题
2020/06/01 Python
详解Python中第三方库Faker
2020/09/25 Python
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
好军嫂事迹材料
2014/01/15 职场文书
物流创业计划书
2014/02/01 职场文书
服装促销活动方案
2014/02/23 职场文书
纠风工作实施方案
2014/03/15 职场文书
劳动竞赛活动总结
2014/05/05 职场文书
幼儿园小班班务总结
2015/08/03 职场文书