一花一世界 – CSS实例教程:纯CSS实现图片缩略与延展效果

by admin on 2009/07/17

in CSS

SEO优化,CSS教程,Wordpress博客 - 来自西米CC

原文来自:Create Resizing Thumbnails Using Overflow Property

翻译整理:西米CC

本教程是学习如何利用CSS来实现鼠标经过网页中图片时的缩略放大效果,因为有时候我们的网页布局中没有足够大的空间来放置原始尺寸的图片,并且也不想把尺寸调小的图片光秃秃的摆放在那里。本文讲述的CSS技巧可以让我们在网页中预先放置尺寸较小的缩略图,而当鼠标上移时,图片能显示其全貌。

效果演示:纯CSS实现图片缩略与延展

概述【Overview】

注意,我们这里所将的并不是图片尺寸的放大或缩小,例子中所谓的缩略图实际上是图片中的一块区域,当鼠标经过时显示完整图片,其实是一种“区域延展”而非“尺寸缩放”!

CSS中的overflow属性定义了容器范围之外内容的显示方式,也就是说当容器区域不足以容纳下它里面的内容时,超出部分的内容应该如何处理。Overflow属性的取值包括visible, hidden, scroll和 auto,在本例中我们将综合利用这些属性值。基本的思路是,默认时图片的某些区域是隐藏的,而当鼠标经过时,它又会取消隐藏完整的显示出来。

原理【The Concept】

本实例的基本理念是:把一张图片放置在一个容器中,因为要响应鼠标经过的动作,所以这个容器我们采用a标签;我们把容器的尺寸设置为我们需要的缩略大小,并将其定位方式设置为相对定位,而其中的图片采用绝对定位方式,设置一定量的负值top和left;容器的overflow属性预设为hidden,如此就能实现图片的局部显示; 最后当鼠标经过动作触发容器a的a:hover状态时,将其overflow属性重置为 visible,实现最终的全图显示效果。

汇聚博客资源,点亮博客价值

代码【The Code】

这个技巧可以应用于单图或多图,首先来看一下HTML代码:

  1. <ul id="thumbs">
  2. <li><a href="http://ximicc.com/"><img src="002.jpg" /></a></li>
  3. <li><a href="http://ximicc.com/"><img src="001.jpg" /></a></li>
  4. <li><a href="http://ximicc.com/"><img src="004.jpg" /></a></li>
  5. </ul>

CSS中我们首先对容器样式进行定义:

  1. ul#thumbs, ul#thumbs li{
  2. margin:0;
  3. padding:0;
  4. list-style:none;
  5. }
  6. ul#thumbs li{
  7. float:left;
  8. margin-right:5px;
  9. border:1px solid #999;
  10. padding:2px;
  11. }
  12. ul#thumbs a{
  13. display:block;
  14. float:left;
  15. width:100px;
  16. height:100px;
  17. line-height:100px;
  18. overflow:hidden;
  19. position:relative;
  20. z-index:1;
  21. }

接着是对图片的CSS样式设定:

  1. ul#thumbs a img{
  2. float:left;
  3. position:absolute;
  4. top:-10px;
  5. left:-20px;
  6. }

a标签定义了宽和高,所以它里面不管放置的是什么,都只能出现在预设的区域之内。然后我们通过负值定位灵活的裁切缩略图区域,如果你不嫌麻烦,可以为每张图片定义不同的缩略范围:

  1. ul#thumbs a img{
  2. float:left;
  3. position:absolute;
  4. top:-10px;
  5. left:-20px;
  6. }
  7. ul#thumbs li#image1 a img{
  8. top:-40px;
  9. left:-120px;
  10. }
  11. ul#thumbs li#image2 a img{
  12. top:-10px;
  13. left:-120px;
  14. }

接着定义鼠标经过时应用在图片上的CSS样式:

  1. ul#thumbs a:hover{
  2. overflow:visible;
  3. z-index:1000;
  4. border:none;
  5. }

注意其中容器和图片CSS上均有的z-index取值,因为它决定了图片与其邻近元素的覆盖关系,一般情况下我们都希望完整的图片能遮盖住旁边的文字等元素,所以其z-index取值要足够大。

喜欢的就爱屋及乌 被雷了就诛连九族

Leave a Comment

Previous post:

Next post: