Advertisement
here2share

JSAnalogClock.html

Feb 16th, 2020
500
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <head>
  2. <style>
  3. /*# JSAnalogClock.html */
  4. body {
  5.   background-color: #272727;
  6.   margin: 0;
  7. }
  8.  
  9. body div {
  10.   width: 100%;
  11.   height: 100%;
  12. }
  13.  
  14. body div ul {
  15.   position: absolute;
  16.   top: 50%;
  17.   left: 50%;
  18.   -webkit-transform: translate(-50%, -50%);
  19.           transform: translate(-50%, -50%);
  20.   width: 301px;
  21.   height: 301px;
  22.   padding: 0px;
  23.   border-radius: 50%;
  24.   list-style: none;
  25.   -webkit-box-shadow: 0 0 20px 5px aqua;
  26.           box-shadow: 0 0 20px 5px aqua;
  27. }
  28.  
  29. body div ul li {
  30.   position: absolute;
  31.   font-size: 25px;
  32.   -webkit-transform-origin: left;
  33.           transform-origin: left;
  34.   color: white;
  35. }
  36.  
  37. body div ul li:nth-child(1) {
  38.   width: 155px;
  39.   height: 15px;
  40.   top: 147px;
  41.   left: 148px;
  42.   text-align: center;
  43.   -webkit-writing-mode: vertical-rl;
  44.       -ms-writing-mode: tb-rl;
  45.           writing-mode: vertical-rl;
  46.   -webkit-transform: rotate(-60deg);
  47.           transform: rotate(-60deg);
  48. }
  49.  
  50. body div ul li:nth-child(2) {
  51.   width: 155px;
  52.   height: 15px;
  53.   top: 145px;
  54.   left: 145px;
  55.   -webkit-transform-origin: left;
  56.           transform-origin: left;
  57.   text-align: center;
  58.   -webkit-writing-mode: vertical-rl;
  59.       -ms-writing-mode: tb-rl;
  60.           writing-mode: vertical-rl;
  61.   -webkit-transform: rotate(-30deg);
  62.           transform: rotate(-30deg);
  63. }
  64.  
  65. body div ul li:nth-child(3) {
  66.   width: 155px;
  67.   height: 15px;
  68.   top: 140px;
  69.   left: 145px;
  70.   -webkit-transform-origin: left;
  71.           transform-origin: left;
  72.   text-align: right;
  73.   -webkit-writing-mode: vertical-rl;
  74.       -ms-writing-mode: tb-rl;
  75.           writing-mode: vertical-rl;
  76. }
  77.  
  78. body div ul li:nth-child(4) {
  79.   width: 155px;
  80.   height: 15px;
  81.   top: 140px;
  82.   left: 146px;
  83.   -webkit-transform-origin: left;
  84.           transform-origin: left;
  85.   text-align: right;
  86.   -webkit-writing-mode: vertical-rl;
  87.       -ms-writing-mode: tb-rl;
  88.           writing-mode: vertical-rl;
  89.   -webkit-transform: rotate(30deg);
  90.           transform: rotate(30deg);
  91. }
  92.  
  93. body div ul li:nth-child(5) {
  94.   width: 155px;
  95.   height: 15px;
  96.   top: 138px;
  97.   left: 148px;
  98.   -webkit-transform-origin: left;
  99.           transform-origin: left;
  100.   text-align: right;
  101.   -webkit-writing-mode: vertical-rl;
  102.       -ms-writing-mode: tb-rl;
  103.           writing-mode: vertical-rl;
  104.   -webkit-transform: rotate(60deg);
  105.           transform: rotate(60deg);
  106. }
  107.  
  108. body div ul li:nth-child(6) {
  109.   width: 155px;
  110.   height: 15px;
  111.   top: 138px;
  112.   left: 152px;
  113.   -webkit-transform-origin: left;
  114.           transform-origin: left;
  115.   text-align: right;
  116.   -webkit-writing-mode: vertical-rl;
  117.       -ms-writing-mode: tb-rl;
  118.           writing-mode: vertical-rl;
  119.   -webkit-transform: rotate(90deg);
  120.           transform: rotate(90deg);
  121. }
  122.  
  123. body div ul li:nth-child(7) {
  124.   width: 155px;
  125.   height: 15px;
  126.   top: 137px;
  127.   left: 151px;
  128.   -webkit-transform-origin: left;
  129.           transform-origin: left;
  130.   text-align: right;
  131.   -webkit-writing-mode: vertical-rl;
  132.       -ms-writing-mode: tb-rl;
  133.           writing-mode: vertical-rl;
  134.   -webkit-transform: rotate(120deg);
  135.           transform: rotate(120deg);
  136. }
  137.  
  138. body div ul li:nth-child(8) {
  139.   width: 155px;
  140.   height: 15px;
  141.   top: 139px;
  142.   left: 154px;
  143.   -webkit-transform-origin: left;
  144.           transform-origin: left;
  145.   text-align: right;
  146.   -webkit-writing-mode: vertical-rl;
  147.       -ms-writing-mode: tb-rl;
  148.           writing-mode: vertical-rl;
  149.   -webkit-transform: rotate(150deg);
  150.           transform: rotate(150deg);
  151. }
  152.  
  153. body div ul li:nth-child(9) {
  154.   width: 155px;
  155.   height: 15px;
  156.   top: 142px;
  157.   left: 154px;
  158.   -webkit-transform-origin: left;
  159.           transform-origin: left;
  160.   text-align: right;
  161.   -webkit-writing-mode: vertical-rl;
  162.       -ms-writing-mode: tb-rl;
  163.           writing-mode: vertical-rl;
  164.   -webkit-transform: rotate(180deg);
  165.           transform: rotate(180deg);
  166. }
  167.  
  168. body div ul li:nth-child(10) {
  169.   width: 155px;
  170.   height: 26px;
  171.   top: 140px;
  172.   left: 154px;
  173.   -webkit-transform-origin: left;
  174.           transform-origin: left;
  175.   text-align: right;
  176.   -webkit-writing-mode: vertical-rl;
  177.       -ms-writing-mode: tb-rl;
  178.           writing-mode: vertical-rl;
  179.   -webkit-transform: rotate(210deg);
  180.           transform: rotate(210deg);
  181. }
  182.  
  183. body div ul li:nth-child(11) {
  184.   width: 155px;
  185.   height: 26px;
  186.   top: 142px;
  187.   left: 152px;
  188.   -webkit-transform-origin: left;
  189.           transform-origin: left;
  190.   text-align: right;
  191.   -webkit-writing-mode: vertical-rl;
  192.       -ms-writing-mode: tb-rl;
  193.           writing-mode: vertical-rl;
  194.   -webkit-transform: rotate(240deg);
  195.           transform: rotate(240deg);
  196. }
  197.  
  198. body div ul li:nth-child(12) {
  199.   width: 155px;
  200.   height: 26px;
  201.   top: 142px;
  202.   left: 150px;
  203.   -webkit-transform-origin: left;
  204.           transform-origin: left;
  205.   text-align: right;
  206.   -webkit-writing-mode: vertical-rl;
  207.       -ms-writing-mode: tb-rl;
  208.           writing-mode: vertical-rl;
  209.   -webkit-transform: rotate(270deg);
  210.           transform: rotate(270deg);
  211. }
  212.  
  213. body div ul li:nth-child(13) {
  214.   width: 0px;
  215.   height: 0px;
  216.   top: 145px;
  217.   left: 150px;
  218.   -webkit-transform-origin: left;
  219.           transform-origin: left;
  220.   -webkit-transform: rotate(-90deg);
  221.           transform: rotate(-90deg);
  222.   border-top: 5px solid transparent;
  223.   border-left: 120px solid aqua;
  224.   border-bottom: 5px solid transparent;
  225. }
  226.  
  227. body div ul li:nth-child(14) {
  228.   width: 0;
  229.   height: 0;
  230.   top: 146px;
  231.   left: 150px;
  232.   -webkit-transform-origin: left;
  233.           transform-origin: left;
  234.   -webkit-transform: rotate(-90deg);
  235.           transform: rotate(-90deg);
  236.   border-top: 5px solid transparent;
  237.   border-left: 150px solid aqua;
  238.   border-bottom: 5px solid transparent;
  239. }
  240.  
  241. body div ul li:nth-child(15) {
  242.   width: 0px;
  243.   height: 0px;
  244.   top: 147px;
  245.   left: 113.5px;
  246.   -webkit-transform-origin: 20%;
  247.           transform-origin: 20%;
  248.   -webkit-transform: rotate(-90deg);
  249.           transform: rotate(-90deg);
  250.   border-top: 3px solid transparent;
  251.   border-left: 185px solid aqua;
  252.   border-bottom: 3px solid transparent;
  253. }
  254.  
  255. body div ul li:nth-child(16) {
  256.   width: 18px;
  257.   height: 18px;
  258.   top: 141px;
  259.   left: 141px;
  260.   border-radius: 50%;
  261.   background-color: black;
  262.   -webkit-box-shadow: inset 0 0 0px 4px #00a4e6;
  263.           box-shadow: inset 0 0 0px 4px #00a4e6;
  264. }
  265. /*# sourceMappingURL=main.css.map */
  266. </style>
  267.     <meta charset="UTF-8">
  268.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  269.     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  270.     <title>Analog Clock | JS and SCSS</title>
  271.     <link rel="stylesheet" href="main.css">
  272. </head>
  273.  
  274. <body style="margin-bottom: 0px !important;">
  275.     <div>
  276.         <ul>
  277.             <li>1</li>
  278.             <li>2</li>
  279.             <li>3</li>
  280.             <li>4</li>
  281.             <li>5</li>
  282.             <li>6</li>
  283.             <li>7</li>
  284.             <li>8</li>
  285.             <li>9</li>
  286.             <li>10</li>
  287.             <li>11</li>
  288.             <li>12</li>
  289.             <li style="transform: rotate(-60deg);"></li>
  290.             <li style="transform: rotate(72deg);"></li>
  291.             <li style="transform: rotate(204deg);"></li>
  292.             <li></li>
  293.         </ul>
  294.     </div>
  295.     <script>
  296.         function c(data) {
  297.             console.log(data);
  298.         }
  299.  
  300.         // get clock from the machine
  301.         const askDate = new Date();
  302.  
  303.         // clock pointers degrees caclulator
  304.         let hoursStep =   -90 + (askDate.getHours() *  30);
  305.         let minutesStep = -90 + (askDate.getMinutes() * 6);
  306.         let secondsStep = -90 + (askDate.getSeconds() * 6);
  307.  
  308.         // DOM current time setup
  309.         const elements = document.body.childNodes;
  310.         elements[1].childNodes[1].childNodes[25].style.transform = "rotate(" + hoursStep + "deg)";
  311.         elements[1].childNodes[1].childNodes[27].style.transform = "rotate(" + minutesStep + "deg)";
  312.         elements[1].childNodes[1].childNodes[29].style.transform = "rotate(" + secondsStep + "deg)";
  313.  
  314.         // seconds pointer engine
  315.         setInterval(() => {
  316.             elements[1].childNodes[1].childNodes[29].style.transform = "rotate(" + secondsStep + "deg)";
  317.             secondsStep = secondsStep + 6;
  318.             if (secondsStep == 276) {
  319.                 secondsStep = -84;
  320.                 minutesStep = minutesStep + 6;
  321.                 elements[1].childNodes[1].childNodes[27].style.transform = "rotate(" + minutesStep + "deg)";
  322.                 check();
  323.             }
  324.         }, 1000);
  325.  
  326.         // prevent infinite degrees for hours and minutes
  327.         function check() {
  328.             if (minutesStep == 270) {
  329.                 minutesStep = -84;
  330.                 hoursStep = hoursStep + 30;
  331.                 elements[1].childNodes[1].childNodes[25].style.transform = "rotate(" + hoursStep + "deg)";
  332.             }
  333.             if (hoursStep == 270 || hoursStep == 630) {
  334.                 hoursStep = -90;
  335.             }
  336.         }
  337.     </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement