Maison >interface Web >tutoriel CSS >Comment dessiner une horloge dynamique circulaire en utilisant CSS3 (explication détaillée)

Comment dessiner une horloge dynamique circulaire en utilisant CSS3 (explication détaillée)

坏嘻嘻
坏嘻嘻original
2018-09-30 10:15:073564parcourir

Dans cette époque où le temps c'est de l'argent, les gens deviennent de plus en plus conscients du temps, non seulement dans la vie quotidienne, mais aussi surtout lorsqu'ils surfent sur Internet. Ainsi, lors du développement du front-end, apprendre à utiliser le CSS3 pour créer une horloge. c'est suffisant Cela semble nécessaire. Le contenu que cet article vous apporte porte sur ce sujet et a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Le principe de l'utilisation de CSS3 pour dessiner une horloge dynamique circulaire

  1. Comme nous le savons tous, le La forme div est un carré, nous devons alors d'abord utiliser la propriété border-radius pour la transformer en cercle.

  2. Afin de faire pivoter le pointeur, nous devons utiliser -webkit-transform-origin:center 100px pour définir notre point de base de rotation. Utilisez ensuite -webkit-transform: rotate(0); pour laisser notre li faire pivoter l'angle correspondant pour former l'échelle correspondante.

  3. Après avoir conçu l'échelle, vous devez impliquer un sélecteur nth-of-type() pour spécifier à quel élément enfant il appartient à l'élément parent.

  4. Au centre même de l'horloge circulaire, nous devons définir une icône div pour le point de connexion du pointeur.

  5. Ensuite, nous utilisons js pour obtenir le div et restituer l'échelle du cadran.

  6. Enfin, démarrez une minuterie et exécutez la fonction toutes les secondes.

Code pour dessiner une horloge dynamique circulaire en utilisant CSS3

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"/>
    <title>钟表</title>
<style id="css">
        #wrap{width:200px; height:200px; border:2px solid #000; margin:100px auto;border-radius:50%; position:relative;}
        #wrap ul{margin:0; padding:0; height:200px; position:relative; list-style:none;}
        #wrap ul li{width:2px;  height:6px; background:#000; position:absolute; left:99px; top: 0;-webkit-transform-origin:center 100px;}
        /*#wrap ul li:nth-of-type(1){-webkit-transform: rotate(0);}
        #wrap ul li:nth-of-type(2){-webkit-transform: rotate(6deg);}
        #wrap ul li:nth-of-type(3){-webkit-transform: rotate(12deg);}
        #wrap ul li:nth-of-type(4){-webkit-transform: rotate(18deg);}
        #wrap ul li:nth-of-type(5){-webkit-transform: rotate(24deg);}
        #wrap ul li:nth-of-type(6){-webkit-transform: rotate(30deg);}
        #wrap ul li:nth-of-type(7){-webkit-transform: rotate(36deg);}
        #wrap ul li:nth-of-type(8){-webkit-transform: rotate(42deg);}*/
        #wrap ul li:nth-of-type(5n+1){ height:12px;}
        #hour{width:6px;  height:45px; background:#000; position:absolute; left:97px; top:55px;-webkit-transform-origin:bottom ;}
        #min{width:4px;  height:65px; background:#999; position:absolute; left:98px; top:35px;-webkit-transform-origin:bottom ;}
        #sec{width:2px;  height:80px; background:red; position:absolute; left:99px; top:20px;-webkit-transform-origin:bottom ;}
        .icon{width:20px; height:20px; background:#000; border-radius:50%; position:absolute; left:90px; top: 90px;}
    </style>
</head>
<body>
    <div id="wrap">
    <ul id="list">
        <!--<li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>-->
    </ul>
        <div id="hour"></div>
        <div id="min"></div>
        <div id="sec"></div>
        <div></div>
    </div>
    <script>
        var oList=document.getElementById("list");//获取到刻度
        var oCss=document.getElementById("css");
        var oHour=document.getElementById("hour");//获取时针
        var oMin=document.getElementById("min");//获取分针
        var oSec=document.getElementById("sec");//获取秒针
        var oLi="";
        var sCss="";
        for (var i=0;i<60;i++) { //一个表盘总共是60个刻度
            sCss+="#wrap ul li:nth-of-type("+(i+1)+"){-webkit-transform: rotate("+i*6+"deg);}";
            oLi+="<li></li>";
        };
        oList.innerHTML=oLi;
        oCss.innerHTML+=sCss;//表盘刻度渲染完成
        toTime();
        setInterval(toTime,1000);
        function toTime(){
            var oDate=new Date();//获取当前时间
            var iSec=oDate.getSeconds();//获取当前秒
            var iMin=oDate.getMinutes()+iSec/60;//获取当前分
            var iHour=oDate.getHours()+iMin/60;//获取当前时
            oSec.style.WebkitTransform="rotate("+iSec*6+"deg)";//秒针转动角度1秒6度 (表盘一圈360度一圈60秒所以一秒6度)
            oMin.style.WebkitTransform="rotate("+iMin*6+"deg)";//分钟转动角度1分6度 (表盘一圈360度一圈60分所以一分6度)
            oHour.style.WebkitTransform="rotate("+iHour*30+"deg)";//时针转动角度一小时30度(表盘一圈360度一圈12小时所以一小时30度)
        };
</script>
</body>
</html>

Exemple l'effet est comme indiqué sur l'image

Comment dessiner une horloge dynamique circulaire en utilisant CSS3 (explication détaillée)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn