纯js和纯css+html制作的手风琴的效果

一:纯css+html的手风琴效果

这种用css写的手风琴比较简单,主要是应用到css中的,transition属性。

代码如下:

<!DOCTYPE HTML>
<html>
<head>
<style>
body{background: url(‘bg.gif‘) repeat;}
ul,li,p{margin: 0px;padding: 0px;list-style: none;}
 #div{width: 1180px;height: 405px;border:5px solid #ccc;padding: 0px;margin: 0px auto;overflow: hidden;}
 .list{width: 3200px;}
  .list li{float: left;width: 170px;height: 500px;;position: relative;
      -moz-transition:width 2s;
      transition: width 2s;
     -moz-transition: width 2s; /* Firefox 4 */
     -webkit-transition: width 2s; /* Safari 和 Chrome */
     -o-transition: width 2s; /* Opera */
  }
.list:hover li{width: 107px;}
.list li:hover{width: 538px;}
.list li p{width: 100%;height: 100%;opacity: 0.5;position: absolute;top: 0px;left: 0px;background: black; }
.list li:hover p{opacity:0}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
</script>
</head>
<body >
<div id="div">
      <ul  class="list"> <!--如果设置父级与子级之间没有空隙的话,将margin和padding设为0即可-->
          <li><img src="image/1.jpg" style="width:538px;height:405px;"><p></p></li>
          <li><img src="image/2.jpg" style="width:538px;height:405px;"><p></p></li>
          <li><img src="image/3.jpg" style="width:538px;height:405px;"><p></p></li>
          <li><img src="image/4.jpg" style="width:538px;height:405px;"><p></p></li>
          <li><img src="image/5.jpg" style="width:538px;height:405px;"><p></p></li>
          <li><img src="image/6.jpg" style="width:538px;height:405px;"><p></p></li>
          <li><img src="image/7.jpg" style="width:538px;height:405px;"><p></p></li>
      </ul>
</div>
</body>
</html>

二:纯js+html制作手风琴

     这个手风琴出现一个问题,就是单独移动每个li时,没问题,但是当移动很快时,最右边的li出现空隙。我感觉是定时器的问

题,就是当每个li还没回到自己的位置时,下一个li就开始运动了。但我定时器已经关了啊。

麻烦哪位给我留言,帮我看看怎么改哈!

问题效果如下所示:

代码如下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>手风琴效果</title>
<link href="style.css" rel="stylesheet" type="text/css" />
<script src="perfectMove2.js"></script>
<script type="text/javascript">
window.onload=function()
{
    var oDiv=document.getElementById(‘show1‘);
    var iMinWidth=9999999;
    var aLi=oDiv.getElementsByTagName(‘li‘);
    var aSpan=oDiv.getElementsByTagName(‘span‘);
    var i=0;
    var bool=false;
    for(i=0;i<aLi.length;i++)
    {
        aSpan[i].index=i;
        aSpan[i].onmouseover=function ()
        {
              for(i=0;i<aLi.length;i++)
              {
                  startMove(aLi[i],{width:this.offsetWidth});//调用运动函数
                  bool=true;
              }
             if(bool)
             {
               startMove(aLi[this.index],{width:552});
             }
        }
    }

};
</script>
</head>
<body>
<div id="show1">
    <ul>
        <li class="active">
            <span class="bg0">这是第一个</span>
            <img src="images/1.jpg" />
        </li>
        <li >
            <span class="bg1">这是第二个</span>
            <img src="images/2.jpg" />
        </li>
        <li  >
            <span class="bg2">这是第三个</span>
            <img src="images/3.jpg" />
        </li>
        <li>
            <span class="bg3">这是第四个</span>
            <img src="images/4.jpg" />
        </li>
        <li>
            <span class="bg4">这是第五个</span>
            <img src="images/5.jpg" />
        </li>
        <li>
            <span class="bg5">这是第六个</span>
            <img src="images/6.jpg" />
        </li>
    </ul>
</div>
</body>
</html>

//perfectMove2.js代码如下:

function  getStyle(obj,attr)//用此种方法获取样式中的属性
{
     if(obj.currentStyle)
     {
        return obj.currentStyle[attr];
     }
     else
     {
        return getComputedStyle(obj,false)[attr];
     }
}
function startMove(obj,json,fn)
{
        clearInterval(obj.timer);//清除定时器
        obj.timer=setInterval(function ()
       {
        var stop=true;
        for(var attr in json)
        {
                      var iCur=0;
                     if(attr==‘opacity‘)
                     {
                          iCur=parseInt(parseFloat(getStyle(obj, attr))*100);//这里加parseInt是避免div的数值不稳定,在波动
                     }
                     else
                    {
                          iCur=parseInt(getStyle(obj, attr));
                    }
                     var iSpeed=(json[attr]-iCur)/8;
                     iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
                    if(iCur!=json[attr])
                    {
                           stop=false;
                    }
                    if(attr==‘opacity‘)
                         {
                            obj.style.filter=‘alpha(opacity:‘+(iCur+iSpeed)+‘)‘;
                            obj.style.opacity=(iCur+iSpeed)/100;
                        }
                    else
                        {
                             obj.style[attr]=iCur+iSpeed+‘px‘;
                        }

        }
        if(stop)
        {
          clearInterval(obj.timer);
          if(fn){fn();}
        }
      }, 30)

}
时间: 2024-08-19 23:55:11

纯js和纯css+html制作的手风琴的效果的相关文章

纯js制作的弹球游戏

纯js的弹球游戏,撞壁自动返回,按钮放置暂停移动,移开开始移动 1 <!-- 2 author:zhangjie 3 date :2016-7-23 4 --> 5 <!DOCTYPE html> 6 <html> 7 <head> 8 <title></title> 9 <meta charset="UTF-8"> 10 <script type='text/javascript'> 11

纯js实现html转pdf

项目开发中遇到了一个变态需求,需要把一整个页面导出为pdf格式,而且要保留页面上的所有的表格.svg图片和样式.简而言之,就是希望像截图一样,把整个页面截下来,然后保存成pdf.咋不上天呢--查了一下,能够实现html转pdf的方法还是挺多的,大概有以下几种:1.大部分浏览器就有这个功能.然而我们客户要的可不是这个,人家要的是能够在系统中主动触发的导出为pdf功能,所以这种方案pass.2.利用第三方工具.我找到了一种利用wkhtmltopdf这种工具来导出的方案,自己在我们的项目中试了一下,效

[分享黑科技]纯js突破localstorage存储上线,远程抓取图片,并转码base64保存本地,最终实现整个网站所有静态资源离线到用户手机效果却不依赖浏览器的缓存机制,单页应用最新黑科技

好久没有写博客了,想到2年前答应要放出源代码的也没放出来,最近终于有空先把纯js实现无限空间大小的本地存储的功能开源了,项目地址https://github.com/xueduany/localstore,demo见http://xueduany.github.io/localstore/,下面给大家简单说说大概原理,具体细节和异常处理后面有机会在单独说 先说下突破本地localStorage的原理,官方原话是这么说的http://www.w3.org/TR/2013/PR-webstorage

纯JS文本比较工具

前段时间由于工作需要写了一个纯JS文本比较工具 在这里与大家分享下 算法有待优化,还希望大家多多指教 先上效果图: 奉上源码(把源码保存为html格式的文件就可以直接运行了): 1 <!doctype html> 2 <html> 3 <head> 4 <title>文本比较工具</title> 5 <style type="text/css"> 6 *{padding:0px;margin:0px;} 7 htm

一款非常棒的纯CSS3 3D菜单演示及制作教程

原文:一款非常棒的纯CSS3 3D菜单演示及制作教程 这段时间比较忙,很久没在这里分享一些漂亮的HTML5和CSS3资源了,今天起的早,看到一款很不错的CSS3 3D菜单,觉得非常上眼,就将它分享给大家,顺便来分析一下实现的源码.下面是效果图: 看了效果图是不是觉得它是一副麻将,对,第一眼我也认为是用CSS3写的麻将特效,结果我错了,它只是长得比较像而已. 另外,你也可以在这里直接查看菜单的DEMO演示. 接下来再分析一下实现这款3D菜单的源代码. 代码主要由HTML和CSS3组成,应该说还是比

纯js客服插件集qq、旺旺、skype、百度hi、msn

原文 纯js客服插件集qq.旺旺.skype.百度hi.msn 客服插件,集qq.旺旺.skype.百度hi.msn 等 即时通讯工具,并可自己添加支持的通讯工具,极简主义,用法自己琢磨.我的博客 http://www.qiling.org <script> //在线客服插件 powered by casejs 极简主义 http://www.mlrzw.cn function CaseService(caseServiceConfig) { this.config = caseService

纯JS实现的3D标签云,不依赖任何第三方库,支持移动页面

<span style="font-family: Arial, Helvetica, sans-serif;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></span> <html xmlns="

纯js实现图片上传

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head><title>本地图片预览</title><

纯js实现瀑布流布局及ajax动态新增数据

本文用纯js代码手写一个瀑布流网页效果,初步实现一个基本的瀑布流布局,以及滚动到底部后模拟ajax数据加载新图片功能. 缺点: 1. 程序不是响应式,不能实时调整页面宽度: 2. 程序中当新增ajax模拟数据图片后,是将整个页面的所有图片都重新定位一次. 3. 程序是等所有图片加载完成后再读取图片的尺寸,实际中肯定不能这样做. 4. 实际项目中,应该由后台程序给出图片尺寸值,在js代码中直接使用图片的width属性. 本程序思路: html结构: ? 1 2 3 4 5 6 7 8 9 10 1