純js和純css+html製作的手風琴的效果

来源:http://www.cnblogs.com/jtjds/archive/2016/04/03/5349623.html
-Advertisement-
Play Games

一:純css+html的手風琴效果 這種用css寫的手風琴比較簡單,主要是應用到css中的,transition屬性。 代碼如下: 二:純js+html製作手風琴 這個手風琴出現一個問題,就是單獨移動每個li時,沒問題,但是當移動很快時,最右邊的li出現空隙。我感覺是定時器的問 題,就是當每個li還 ...


一:純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)
        
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 重載*運算符為友元函數。 ...
  • Filter被稱為過濾器或者攔截器,基本功能就是對調用servler過程的攔截,在servlet進行響應和處理前後實現一些特殊功能。其實,Filter過濾器就是一個實現了javax.servlet.Filter介面的類,在javax.servlet.Filter介面中定義了3個方法: init(Fi ...
  • 一、變數和常量 定義 let 定義常量,一經賦值不允許再修改 var 定義變數,賦值之後仍然可以修改 自動推導 Swift能夠根據右邊的代碼,推導出變數的準確類型 通常在開發時,不需要指定變數的類型 如果要指定變數,可以在變數名後使用:,然後跟上變數的類型 重要技巧:Option + Click 可 ...
  • 這個問題讓我糾結了幾個小時,剛開始還以為是JS有問題,一直排查排查,,最後發現,是thinkphp3.2.3把JS正則的反斜杠\過濾掉了,導致JS正則失效,比如\d{4},解析出來變成了d{4} 解決辦法是可以用兩個反斜杠\\,比如\d{4}寫成 \\d{4}即可 ...
  • 效果: 需求和分析: 1.點擊TreeView中的節點,Listview中顯示相應的電視節目,其中節目的信息都儲存在xml文件中(IO的應用) 2.在“所有電臺”中選中節點右擊可進行添加到“我的電臺”,同時在”我的電臺“也可進行刪除,在你退出後,系統會把你選擇的”我的電臺“中的記錄記錄,在你再次打開 ...
  • 不談抽象類可以有實現等語法糖的問題,本文主要講在語義層面抽象類和介面的本質區別、以及使用以及選擇。 一、介紹 抽象類,首先是個類,類是對現實世界中對象的建模模型,抽象類是對類整體的抽象描述,包含方法,以及屬性。介面是對類某特性行為的抽象。 對抽象類的繼承才是Is-A的關係,對介面的實現,則是“有沒有 ...
  • 繼承是Is-A的關係。曾經看到有人為了復用而使用了繼承:有一個Base類,裡面寫了很多Common的方法,很多類繼承自這個類,這種做飯就是把Has-A用Is-A來實現的。 繼承的概念是說一個類是另一個類的特化。 Liskov替換原則:派生類必須能夠通過基類的介面而被使用,且使用者無需瞭解兩者之間的差 ...
  • × 目錄 [1]定義 [2]過渡屬性 [3]持續時間[4]延遲時間[5]時間函數[6]多值[7]階段[8]觸發[9]API 前面的話 通過過渡transition,可以讓web前端開發人員不需要javascript就可以實現簡單的動畫交互效果。過渡屬性看似簡單,但實際上它有很多需要註意的細節和容易混 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...