一步步教你css3手风琴效果的实现
什么是手风琴效果?
首先我们先来看一段动画,如下图所示:

在上面动画中,我们不难发现,一排照片正常排列,当我鼠标移上(:hover)时,照片会变大显示并且把其它照片挤小。那么在鼠标来回移动的过程中,画面正常显示的效果类似我们的手风琴,所以叫手风琴效果。
手风琴效果的实现
把图片显示出来
通过上面的效果,我们不难发现,首先所有照片的集合是一个有1px边框的div盒子,盒子里面有一组ul li ,每个li标签里面有一张照片,那么我们首先把这段代码实现,html代码如下
<div class="box">
<ul>
<li><img src="data:images/01.jpg" alt=""></li>
<li><img src="data:images/02.jpg" alt=""></li>
<li><img src="data:images/03.jpg" alt=""></li>
<li><img src="data:images/04.jpg" alt=""></li>
<li><img src="data:images/05.jpg" alt=""></li>
<li><img src="data:images/06.jpg" alt=""></li>
</ul>
</div>
css代码如下:
*{
margin:;
padding:;
border:;
list-style: none;
}
.box{
width: 1200px;
height: 300px;
border: 1px solid #000;
margin: 100px auto;
}
.box ul{
overflow: hidden;
}
.box ul li{
float: left;
width: 200px;
height: 300px;
transition: all 1s;
}
鼠标移上事件
接下来我们完成鼠标移上事件的代码。从上面的动画中我们不难发现,鼠标移上一共有3个效果;1、鼠标移上的那个li的宽度变大 2、其它li的宽度变小 3、移上两个效果的变化是逐渐完成的。首先我们想:第一个效果的话,是不是li:hover{width:XXXpx;}就可以实现了。那么第二个效果呢?我们是不是可以理解为鼠标移动到div上之后,div里面所有li的宽度都变小了,那代码实现为.box:hover li{width: XXXpx;}即可实现。第三个效果是不是可以使用css3中的trantation属性来实现?那么完整的代码如下
.box ul li{
transition: all 1s;
}
.box:hover li{
width: 150px;
}
.box ul li:hover{
width: 500px;
}
看效果调BUG
那么完成上述代码,我们是不是就完成了手风琴效果了呢?我们不妨来看看效果,运行代码,效果如下:
在上述效果中,我们发现当鼠标移动到右边数第二张照片的时候,最右边的照片显示不出来,这是为什么呢?我们来分析一下:上文中鼠标移上之后,我每张照片设置的宽度为150px,鼠标移上的那张照片为500px;150*5+500=1250,大于我们设置的1200的总宽度。由于ul上文中没有给它设置宽度,所以它默认的最大宽度为1200,所以没有足够的宽度让它来显示所有的照片,所以最后一张照片没有显示出来。那么我给ul的宽度设置的大一点可以吗?当然可以,保险起见,我给ul的宽度设置为9999px,那么有人会问了,ul这么宽,会超过div的宽度,这么办?放心,div给它设置一个overflow:hidden属性,超出隐藏即可。增加的代码如下:
.box{
overflow: hidden;
}
.box ul{
width: 9999px;
}
运行程序,完美实,但是gif太大,上传不了,最后还是放弃。有兴趣的同学可以自己试着写一下,然后看看效果。
总结
前面也写了几篇博客,但是每次都忘记总结一下在工作中实现一个功能的步骤,那在这里总结一下吧。
分析需求
首先我们拿到需求之后,我们不要急着去coding,而是先分析清楚我们的需求是什么,我们在实现这个需求的时候使用可以用到哪些标签,哪些样式,哪些js行为,哪些api等内容。
分步骤实现
分析完需求之后,我们按照分析的需求,一步一步实现代码。先搭建html标签,写css样式……在写的过程中,一步一步看看写的样式,js行为有没有起作用,确保上一条代码起作用之后再写下一条代码。
测试解决bug
所有的功能实现之后,我们来系统的测试一下完成的模块,看和需求有没有出入,有没有BUG,如果有BUG解决BUG,如果没有,那么,恭喜你,可以提交你的代码到测试部门了。
一步步教你css3手风琴效果的实现的更多相关文章
- 基于css3实现手风琴效果
终于在凌晨一点钟逼迫自己写博客.一直想记录自己的前端工程师之路,但毕竟拖延症晚期.因为第一篇随笔,所以多写一点废话吧.刚刚从学校毕业,放弃了一直学习的java,而想从事前端的工作.第一是觉得osgi这 ...
- 使用 jQuery & CSS3 实现优雅的手风琴效果
手风琴效果常用于切换显示一组内容,这种方式既可以节省网页空间又可以有动画效果.今天,我们将创造一个优雅的手风琴内容效果.这个想法是有悬停时滑出一些垂直手风琴标签.我们将添加一些 CSS3 属性来提升外 ...
- 纯css3实现美化复选框和手风琴效果(详细)
关键技术点和原理: 原理就是把 checkbox或 radio 给隐藏掉 ,然后给选框 绑定一个label标签. 然后用label标签作为容器,在里面放一个:before或一个after 用bef ...
- 一步步教你轻松学主成分分析PCA降维算法
一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...
- 一步步教你轻松学奇异值分解SVD降维算法
一步步教你轻松学奇异值分解SVD降维算法 (白宁超 2018年10月24日09:04:56 ) 摘要:奇异值分解(singular value decomposition)是线性代数中一种重要的矩阵分 ...
- 一步步教你轻松学支持向量机SVM算法之案例篇2
一步步教你轻松学支持向量机SVM算法之案例篇2 (白宁超 2018年10月22日10:09:07) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...
- 一步步教你轻松学支持向量机SVM算法之理论篇1
一步步教你轻松学支持向量机SVM算法之理论篇1 (白宁超 2018年10月22日10:03:35) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...
- 一步步教你轻松学K-means聚类算法
一步步教你轻松学K-means聚类算法(白宁超 2018年9月13日09:10:33) 导读:k-均值算法(英文:k-means clustering),属于比较常用的算法之一,文本首先介绍聚类的理 ...
- 一步步教你轻松学朴素贝叶斯模型算法Sklearn深度篇3
一步步教你轻松学朴素贝叶斯深度篇3(白宁超 2018年9月4日14:18:14) 导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果.所以很受欢迎,对 ...
随机推荐
- C程序设计语言练习题1-18
练习1-18 编写一个程序,删除每个输入行末尾的空格及制表符,并删除完全是空格的行. 代码如下: #include <stdio.h> // 包含标准库的信息. #define MAXLI ...
- MVC 使用AJAX POST上传图片的方式
我们来总结一下使用AJAX以POST方式上传图片的方法. 一.普遍的一种是以file的格式请求.在Request.Files中获取文件. public ActionResult UploadFile( ...
- android-support-v7-appcompat下载
http://download.csdn.net/detail/u010556601/7449661 将压缩包解压,放入sdk\extras\android\support\v7目录下 在eclips ...
- CreateLiveCMSV4.0 漏洞,无需后台Get shell
Title:CreateLiveCMSV4.0 漏洞,无需后台Get shell --2012-03-06 17:28 标题:CreateLive CMS Version 4.0.1006 漏洞,无需 ...
- (摘自ItPub)物理standby中switchover时switchover pending的解决办法
http://www.itpub.net/thread-1782245-1-1.html DataGuard一主一物理备,sid为primary和standby,现在要把primary切换成备库,st ...
- 文本阴影:text-shadow
例如: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- Linux/CentOS下的CST和UTC时间的区别以及不一致的解决方法
今天被我遇到了,相差八小时,,,tzselect过了都不行,还得用ntupdate核一下. 网上找的,备不时之需要. ~~~~~~~~~~~~~~~~ 1.在linux中,用date查看时间的时候显示 ...
- 【HDOJ】1315 Basic
这道题目巨坑啊,注意__int64,int wa了一个下午. #include <cstdio> #include <cstring> #include <cstdlib ...
- Linux系统编程(37)—— socket编程之原始套接字
原始套接字的特点 原始套接字(SOCK_RAW)可以用来自行组装IP数据包,然后将数据包发送到其他终端.也就是说原始套接字是基于IP数据包的编程(SOCK_PACKET是基于数据链路层的编程).另外, ...
- office web apps server 问题和解决办法
New-OfficeWebAppsFarm –InternalURL "http://owa.zjkhlib.com" –AllowHttp –EditingEnabled 错误1 ...