CSS3移入图片放大效果
CSS3移入图片放大效果
引言
我们有时看到一些网站有的照片,当我们将鼠标移入的时候,会有个放大的动画效果,今天我就来讲讲这个效果是如何实现的。
demo
最终实现效果:点击进入
涉及知识点
- transform : scale() 
- transition 
如何实现
| 1 | Ps : demo 以 Webkit 为例,其它浏览器内核请自行加上如 -moz- 等前缀。 | 
HTML的基本结构
我们需要一个 pic 来作为 3D 场景,里面有一个 img 标签作为图片的容器。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!DOCTYPEhtml><html><head>  <metacharset="UTF-8">  <title>放大镜效果</title><style></style></head><body>    <divid="pic">      <imgsrc="img/pic.jpg">    </div></body></html> | 
#pic 的基本 CSS
设定高、宽、居中效果、背景颜色(实际上图片会覆盖掉),同时超出部分hidden。
| 1 2 3 4 5 6 7 | #pic{  height:480px;  width:480px;  margin:0auto;  background-color: #ccc;  overflow: hidden;} | 
设置 img 的初始样式
  由于要保证放大后的清晰度,所以往往做这个效果的照片在鼠标未移入前会缩小显示,而hover后才恢复正常比例。
  我使用的照片是 960px × 960px 的,初始时设置照片缩小到原来的 0.5 倍(这也是为什么上面的#pic我设置高和宽都为480px)。
  图片默认是中心放大/缩小的,所以初始化时我们缩小到 0.5 倍时图片四周会有一定的“空隙”,我们可以使用 margin 的方法来解决这个问题。
| 1 2 3 4 | #pic img{  margin:-240px00-240px;  -webkit-transform: scale(.5);  /* 默认显示 0.5 倍的照片 */} | 
为了有渐渐放大的动画效果,可以使用 transition 属性:
| 1 | -webkit-transition: 1s; | 
设置 img 的移入效果
通过 :hover 这个伪类来改变 transform 属性以实现放大效果。
| 1 2 3 | #pic img:hover{  -webkit-transform: scale(.6);} | 
所有代码
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <!DOCTYPEhtml><html><head>  <metacharset="UTF-8">  <title>放大镜效果</title><style>  #pic{    height:480px;    width:480px;    margin:0 auto;    background-color: #ccc;    overflow: hidden;  }  #pic img{    margin:-240px 0 0 -240px;    -webkit-transform: scale(.5);    -webkit-transition: 1s;}  #pic img:hover{    -webkit-transform: scale(.6);  }</style></head><body>  <divid="pic">    <imgsrc="img/pic.jpg">  </div></body></html> | 
结尾
至此,效果完成!
此代码在 GitHub 上托管:点击浏览
哪里有更多demo?
欢迎浏览我的 GitHub - demos 仓库 获得更多的demo。
本文摘录自:http://jasinyip.com/WebFE/css3hoveramplify.html




