纯CSS相册2

原创|其它|编辑:郝浩|2009-09-21 10:02:53.000|阅读 630 次

概述:这部分的思路可以说全部秉承《a:hover应用精粹》一文,因为事实证明,锚点切换的效果不好(要劳驾用户的尊手多动一下啦,点之后页面会跳动啦,并且不兼容opera)。这部分的效果比较眩目,但难度绝对不会超过“推搡式放大效果”。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

这部分的思路可以说全部秉承《a:hover应用精粹》一文,因为事实证明,锚点切换的效果不好(要劳驾用户的尊手多动一下啦,点之后页面会跳动啦,并且不兼容opera)。这部分的效果比较眩目,但难度绝对不会超过“推搡式放大效果”。

它的结构层与《a:hover应用精粹》的后三个示范出奇的相似。CSS也足够强大地表达出我们想要新效果。

01.   
02.<ul id="album">
03.  <li>
04.    <a href="http://www.cnblogs.com/rubylouvre/">
05.      <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg" alt="纯CSS相册 by 司徒正美"  />
06.      <span>
07.        <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg" alt="纯CSS相册 by 司徒正美" />
08.      </span>
09.    </a>
10.  </li>
11.  <li>
12.    <a href="http://www.cnblogs.com/rubylouvre/">
13.      <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s002.jpg" alt="纯CSS相册 by 司徒正美"  />
14.      <span>
15.        <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s002.jpg" alt="纯CSS相册 by 司徒正美" />
16.      </span>
17.    </a>
18.  </li>
19.  <li>
20.    <a href="http://www.cnblogs.com/rubylouvre/">
21.      <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s003.jpg" alt="纯CSS相册 by 司徒正美"  />
22.      <span>
23.        <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s003.jpg" alt="纯CSS相册 by 司徒正美" />
24.      </span>
25.    </a>
26.  </li>
27.//**************略*********
28.    <a href="http://www.cnblogs.com/rubylouvre/">
29.      <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s016.jpg" alt="纯CSS相册 by 司徒正美"  />
30.      <span>
31.        <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s016.jpg" alt="纯CSS相册 by 司徒正美" />
32.      </span>
33.    </a>
34.  </li>
35.</ul>

用到的图片比较多,但结构我们应该很熟悉。一共32张,其实只是16张,每张重复使用2次(大图与小图)。我们要做的出效果,图片分析4行排列,每行4张,鼠标移到小图上面,对应的大图会在小图左上方出现,并遮住小图。实现思路是,限制UL元素的大小,并且LI元素全部左浮动。大图我们一开始就隐藏起来,当移动到小图上时,我们显示大图,并用绝对定位设置大图的位置,包含块设在A元素上。

01.ul#album, #album li{
02.  margin:0;
03.  padding:0;
04.  list-style:none;
05.}
06.ul#album{/*第1层*/
07.  width:400px;
08.  height:300px;
09.}
10.#album img {
11.  border:none;/*默认存在边框,为了精确控制,我们清除它*/
12.  display:block;/*li img下方多出5px空白bug*/
13.  width:100px;/*默认平时都以小图形式显示*/
14.  height:75px;
15.}
16.#album li{/*第2层*/
17.  float:left;/*用于平行排列与换行*/
18.}
19.#album span {
20.  display:none;/*平时隐藏大图*/
21.}
22.#album a:hover {
23.  position:relative;
24.}
25.#album a:hover span{/*第3层*/
26.  display:block;
27.  position:absolute;
28.  left:-50px;/*左移距离为小图的宽的一半*/
29.  top:-37px;/*上移距离为小图的高的一半*/
30.}
31.#album a:hover span img{
32.  width:200px;/*我们原图实现太大了,所以也要缩小一下*/
33.  height:150px;
34.}

但需要的图片太多了,换言之,请求数也很多,这对服务器的压力很大,有没有办法砍掉一些呢??能!因为我们可以通过hover切换相应图片的大小,就不需要span那一部分了。于是结构层更简单。

01.   
02.<ul id="album">
03.  <li>
04.    <a href="http://www.cnblogs.com/rubylouvre/">
05.      <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg" alt="纯CSS相册 by 司徒正美" class="small" />
06.    </a>
07.  </li>
08.  <li>
09.    <a href="http://www.cnblogs.com/rubylouvre/">
10.      <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s002.jpg" alt="纯CSS相册 by 司徒正美" class="small" />
11.    </a>
12.  </li>
13.  <li>
14.    <a href="http://www.cnblogs.com/rubylouvre/">
15.      <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s003.jpg" alt="纯CSS相册 by 司徒正美" class="small" />
16.    </a>
17.  </li>
18.  <li>
19.    <a href="http://www.cnblogs.com/rubylouvre/">
20.      <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s004.jpg" alt="纯CSS相册 by 司徒正美" class="small" />
21.    </a>
22.  </li>
23. //****************略************
24.  <li>
25.    <a href="http://www.cnblogs.com/rubylouvre/">
26.      <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s016.jpg" alt="纯CSS相册 by 司徒正美" class="small" />
27.    </a>
28.  </li>
29.</ul>
01.ul#album, #album li{
02.  margin:0;
03.  padding:0;
04.  list-style:none;
05.}
06.ul#album{/*第1层*/
07.  width:400px;
08.  height:300px;
09.}
10.#album li{/*第2层*/
11.  float:left;
12.  width:100px;/*一定要设置,要不当hover激活img成为大图时,img就上升到更上一层,↓*/
13.  height:75px;/*LI元素为空,就会被挤成一条线,后面的元素就会挤压过来填满此空间,出现最右下角少一块的现象*/
14.}
15.#album img{
16.  border:none;/*默认存在边框,为了精确控制,我们清除它*/
17.  display:block;/*li img下方多出5px空白bug*/
18.  width:100px;/*默认平时都以小图形式显示*/
19.  height:75px;
20.}
21.#album a:hover {
22.  position:relative;/*成为包含块*/
23.}
24.#album a:hover img{/*只有由hover激活的img才位于第3层*/
25.  position:absolute;
26.  left:-50px;/*上移小图的宽的一半*/
27.  top:-37px;/*上移小图的高的一半*/
28.  width:200px;
29.  height:150px;
30.}

这次竟然发现在chrome出现问题,症状是大图总是出现第一幅小图之上,而不是我们鼠标指向那个小图上。留意我们的小图其实位于A元素上,而A元素为大图的包含块。不过A元素好像什么也没有设置,我们给点东西A做延缓A的渲染速度,可能chrome做了过多的内部优化……在样式中添加:

1./*[修复chrome绝对定位错乱Bug*/
2.#album li a{
3.  display:block;/*让具有盒子模型*/
4.  width:100px;
5.  height:75px;
6.}
7./*******完*****]*/

我们再加上边框等修饰了,一个艳丽抢眼的相册就又搞定了。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:博客园

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP