transform實現的時鐘效果

来源:http://www.cnblogs.com/zhangzhicheng/archive/2016/08/14/5770769.html
-Advertisement-
Play Games

又來一個時鐘效果了,這個的實現不需要canvas,都是div、ul、li畫出的,好玩有真實。 哈哈~ 需要的js才能實現到走動這個效果,但js的內容不多,也不難。 主要是一個css里transform的使用的思路,transform里有很多變幻屬性,而普通的時鐘 在我心中就是個圓圓的東西,那麼是不是 ...


又來一個時鐘效果了,這個的實現不需要canvas,都是div、ul、li畫出的,好玩有真實。

哈哈~

需要的js才能實現到走動這個效果,但js的內容不多,也不難。

主要是一個css里transform的使用的思路,transform里有很多變幻屬性,而普通的時鐘

在我心中就是個圓圓的東西,那麼是不是可以旋轉這個屬性(rotate)實現了,它的刻度

使用旋轉且把旋轉點設置在圓心,那不就可以繞著圓心轉了嗎,而時針它們的底部不是和

圓心接觸的嗎,那麼設置時針的底部為旋轉點不就OK了,大概的說了說思路。

代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>transform</title>
    <style id="css">
        #clock{
            width: 200px;
            height: 200px;
            border: 2px solid #000;
            border-radius: 50%;
            margin: 100px auto 0;
            position: relative;
        }
        #clock ul{
            width: 200px;
            height: 200px;
            position: relative;
            list-style: none;
            padding:0;
            margin: 0;
        }
        #clock ul li{
            width: 2px;
            height: 10px;
            background: #000;
            transform-origin: center 100px;
            position: absolute;
            top: 0;
            left: 50%;
        }
        #clock ul li:nth-of-type(5n+1){
            height: 20px;
        }    
        #hour{
            height: 40px;
            width: 4px;
            background: #00fefe;
            position: absolute;
            top: 60px;
            left: 99px;
            transform-origin:center bottom;
        }
        #min{
            height: 60px;
            width: 3px;
            background: #001afe;
            position: absolute;
            top: 40px;
            left: 99px;
            transform-origin: center bottom;
            transform: rotate(15deg);
        }
        #sec{
            height: 70px;
            width: 2px;
            background: #000;
            position: absolute;
            top: 30px;
            left: 99px;
            transform-origin:center bottom;
        }
        #dot{
            width: 10px;
            height: 10px;
            position: absolute;
            left: 95px;
            top: 95px;
            background: #aaa;
            border-radius: 50%;
        }
    </style>
</head>
<body>
    <div id="clock">
        <ul></ul>
        <div id="hour"></div>
        <div id="min"></div>
        <div id="sec"></div>
        <div id="dot"></div>
    </div>
    <script>
        var oCss=document.getElementById("css"); 
        var oClock=document.getElementById("clock");
        var oUl=oClock.getElementsByTagName("ul")[0];
        var oHour=document.getElementById("hour");
        var oMin=document.getElementById("min");
        var oSec=document.getElementById("sec");
        var strLi="";
        var strCss="";
        for(var i=0;i<60;i++){
            strLi+="<li></li>";
        }
        oUl.innerHTML=strLi;
        for(var i=0;i<60;i++){
            strCss+='#clock ul li:nth-of-type('+(i+1)+'){transform:rotate('+i*6+'deg);}';
        }
        oCss.innerHTML+=strCss;
        time();
        setInterval(time,1000);
        function time(){
        var date=new Date();
        var h=date.getHours();
        var m=date.getMinutes();
        var s=date.getSeconds();

        oHour.style.transform="rotate("+(h+m/60)*30+"deg)";
        oMin.style.transform="rotate("+(m+s/60)*6+"deg)";
        oSec.style.transform="rotate("+s*6+"deg)";
        }
    </script>
</body>
</html>

使用標簽畫圖最主要的是定位,因為這樣我們就可以把弄到形狀的盒子放到你所想要的位置,內部css樣式表是可以使用獲取元素的方式獲取的,這樣就可以

使用innerHTML為其添加樣式,且可以迴圈添加,還有因為刻度太多所以使用迴圈添加,這樣省時省力,至於剩下的就是定時器了,給定好1秒的時間,每1

秒執行一次函數,這樣它就是動起來了。


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

-Advertisement-
Play Games
更多相關文章
  • 一、概述 模板方法模式在一個方法中定義一個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。 二、結構類圖 三、解決問題 模板方法就是提供一個演算法框架,框架裡面的步驟有些是父類已經定好的,有些需要子類自己實現。相當於要去辦一件事情,行動的流 ...
  • [轉載]協程三講 http://ravenw.com/blog/2011/08/24/coroutine-part-1-defination-and-classification-of-coroutine/ http://ravenw.com/blog/2011/09/01/coroutine-pa ...
  • 在學習Hibernate的過程中我們肯定會碰上一個名詞 緩存,一直都聽說緩存機制是Hibernate中的一個難點,它分為好幾種,有一級緩存,二級緩存和查詢緩存 今天呢,我就跟大家分享分享我所理解的一級緩存 要想完美的體現出緩存機制的話,我想通過查詢語句生成的sql應該就能夠很清楚的看到 那些Hibe ...
  • background-origin 設置元素背景圖片的原始起始位置。必須保證背景是background-repeat為no-repeat此屬性才會生效。可取值有 border-box | padding-box | content-box border-box:設置背景圖片原點在邊框的最左上角 pa ...
  • 簡介 Casperjs是一個基於PhantomJS和SlimerJS的前端端對端測試框架,當然你也可以使用它完成網路爬蟲功能,它的特點的通過簡單的腳本模擬瀏覽器行為, 主要有casper、tester、mouse等六大模塊,其豐富的API為開發者減少了很多壓力。 "官網casperjs" "API文 ...
  • 一、2D變換 1、transform 設置或檢索對象的轉換 取值: none::以一個含六值的(a,b,c,d,e,f)變換矩陣的形式指定一個2D變換,相當於直接應用一個[a,b,c,d,e,f]變換矩陣 translate(<length>[, <length>])。第一個參數對應X軸,第二個參數 ...
  • ECMAScript中涉及字元串大小寫轉換的方法有4個:toLowerCase()、toLocaleLowerCase()、toUpperCase()和toLocaleUpperCase()。其中,toLowerCase()和toUpperCase()是兩個經典的方法,借鑒自java.lang.St ...
  • 數組元素的添加、刪除、截取、合併、拷貝、插入、替換、位置、迭代、合併、字元串化 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...