js实现手风琴效果
之前在慕课网上有练习手风琴效果,但是老师使用jquery简简单单的两三行实现了,今天自己用js练习一下效果
<div id="divbox">
<ul>
<li class="pic1"><a href="javascript:;">床头明月光</a></li>
<li class="pic2"><a href="javascript:;">疑似地上霜</a></li>
<li class="pic3"><a href="javascript:;">举头望明月</a></li>
<li class="pic4"><a href="javascript:;">低头思故乡</a></li>
</ul>
</div>
*{padding: 0;margin: 0;list-style: none}
#divbox{
width: 1000px;
}
ul{
width: 1000px;
height: 300px;
}
ul li{
height: 300px;
float: left;/*
width: 100px; */
}
ul li a{
text-decoration: none;
color:#666;
width: 100px;
height: 300px;
line-height: 300px;
text-align: center;
display: block;
background-color:#fff;
opacity: 0.3;
}
.pic1{
background: url('1.png');
}
.pic2{
background: url('2.png');
}
.pic3{
background: url('3.png');
}
.pic4{
background: url('4.png');
}
.active{
width: 700px;
}
</style>
js代码:
var lis=document.getElementsByTagName('li'); //获取document中的所有li
/*animate动画*/
function ani(obj){
timer=setInterval(function(){ //设置定时器
var speed=10;
if(parseInt(obj.style.width)<700){ //如果传入的对象的宽小于700px
obj.style.width=parseInt(obj.style.width)+speed+'px'; //让当前宽加speed
speed+=10; //每执行一次定时器,speed+10
}else{
return;
}
},20); 20ms执行一次定时器
}
for(var i=0;i<lis.length;i++){ //遍历li数组
lis[i].index=i; //循环把i的值赋值给li的index
var timer;
lis[i].onmouseover=function(){
for(var i=0;i<lis.length;i++){
lis[i].style.width='100px'; //当鼠标移入到某个li时,遍历循环数组,把所有li的宽都设置为100px
}
ani(lis[this.index]); //使用ani方法,把鼠标移入的li的宽值变为700px
}
lis[i].onmouseout=function(){
lis[this.index].style.width='100px'; //鼠标移出时,把当前li的宽设置回100px
clearInterval(timer); //清除定时器
}
}
这样就能实现手风琴效果了,但是还有一点点bug,因为li初始化的时候宽度是100px,当鼠标移入li时,li会变为700px,但是鼠标移开时不会按700px的宽度,仍然以100px的宽为准。如果有知道这个问题的小伙伴请大家多多指教指教。
用jquery实现非常简单,而且效果非常好:
$(function(){
$(".handpic ul li").mouseover(function(){
$(this).stop(true).animate({'width':'700px'},1000).siblings().stop(true).animate({'width':'100px'},1000);
});
});
如果想要背景图片,请到本人相册下载。
js实现手风琴效果的更多相关文章
- 使用JS实现手风琴效果
想要实现简单的手风琴切换效果,需要使用JS实现,如下是使用javascript源码实现,后续会更新使用jQuery实现. 1. 先进行简单的布局:我们可以再ul下添加几个li实现html的简单布局,再 ...
- JS+JQ手风琴效果
最新在学习JS写一些实用的小玩意——手风琴 CSS样式: <style type="text/css"> * { margin: 0px; border: 0px; p ...
- js 特效 手风琴效果
$(document).ready(function(){ //定义展开的块 var lastBlock = $('#a1'); //展开的块的宽度 var maxWidth = 406; //折叠的 ...
- jquery 图片手风琴效果
这篇主要是手风琴效果和无缝切换相结合,在Demo里的Demo3.html.Demo4.html. 手风琴原理比较简单,当鼠标经过的时候改变图片的路径,鼠标移到另一张图片时还原路径. 虽然原理简单,但是 ...
- 一步步教你css3手风琴效果的实现
什么是手风琴效果? 首先我们先来看一段动画,如下图所示: 在上面动画中,我们不难发现,一排照片正常排列,当我鼠标移上(:hover)时,照片会变大显示并且把其它照片挤小.那么在鼠标来回移动的过程中,画 ...
- 超简单jQuary链式操作代码实现手风琴效果
超简单jQuery代码实现手风琴效果 HTML代码 <div id="cont"> <div> <p>人生若只如初见</p> < ...
- jQuery效果之简单的手风琴效果
实现效果如图所示: html结构: <div class="item_box box10"> <div class="item_box_wp" ...
- Bootstrap手风琴效果
前面的话 Bootstrap 框架中 Collapse插件(折叠)其实就是我们常见的手风琴效果.当单击一个触发元素时,在另外一个可折叠区域进行显示或隐藏,再次单击时可以反转显示状态.经典的场景是多个折 ...
- jQuery插件实例五:手风琴效果[动画效果可配置版]
昨天写了个jQuery插件实例四:手风琴效果[无动画版]那个是没有动画效果的,且可配置性不高,本篇为有动画效果.对于一些数据做了动态的计算,以实现自适应. 欢迎大家入群相互交流,学习,新群初建,欢迎各 ...
随机推荐
- SDUT OJ 数据结构实验之串一:KMP简单应用 && 浅谈对看毛片算法的理解
数据结构实验之串一:KMP简单应用 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...
- asp.net MVC中的@model与Model
asp.net MVC中的@model与Model https://blog.csdn.net/ydm19891101/article/details/44301201 在MVC的实际使用中,我们经常 ...
- 【转】IntelliJ IDEA下自动生成Hibernate映射文件以及实体类
1.构建项目并添加项目结构配置以及配置初始参数 1.1.如图将基本的架子搭建好 1.2.点击File,弹出的菜单中点击Project Structure: 1.3.点击左侧的Modul ...
- sharepoint_study_1
描述:机器上进行SharePoint开发,需要SQL Server提供最基本的服务 解决: SQL Server 的数据库引擎: SQL Server 代理: SQL Server 浏览器组件:
- vue-awesome-swiper 的 使用
1.确保 package.json文件中有 "vue-awesome-swiper": "^3.1.3",没有的话install下 2.在main.js配置 ...
- Cannot reinitialise DataTable 问题
加个 destroy:true, //Cannot reinitialise DataTable,解决重新加载表格内容问题
- Codeforces - 662A 思路巧妙的异或
题意:给你\(n\)堆石子玩尼姆博弈,每堆石子可以是\(a_i\)也可以是\(b_i\),选择概率相等且每堆选择相互独立,求先手必胜(异或不为0)的概率 首先需要找出一种优雅的策略表示方法(利用异或的 ...
- C++ GUI Qt4编程(02)-1.2quit
1. 根据C++ GUI Qt4编程(第二版)整理2. 系统:centos7: Qt版本:5.5.13. 程序:quit.cpp #include <QApplication> #inc ...
- Two Sum [easy] (Python)
由于题目说了有且只有唯一解,可以考虑两遍扫描求解:第一遍扫描原数组,将所有的数重新存放到一个dict中,该dict以原数组中的值为键,原数组中的下标为值:第二遍扫描原数组,对于每个数nums[i]查看 ...
- google风格
复制一下代码即可: <?xml version="1.0" encoding="UTF-8" standalone="no"?> ...