[css3]css3 use transform to create walking 2D clock.
2022-02-03 04:52:39
学習終了
transform
を使って、ケーススタディをしてみましょう。
transform
の回転は
rotate
時計を作り、JavaScriptのタイマーと組み合わせて動かしてみましょう。
動画のスクリーンショットです。
事例知識分析。
1. ポジショニングを利用して、時計の図面を完成させましょう。
2. 背景は放射性グラデーションを使用しています。
3. 目盛りと時間の桁の回転を完了させるためにJavaScriptが使用されています。
4、Date()オブジェクトを使ってシステム時刻を取得し、時針が対応する目盛りを指すようにします。
5. タイマーを使って継続的に時刻を更新し、時針の動きを完成させる。
I. HTMLソースコード
<div id="clock-wrap">
<div id="clock">
<ul id="list">
</ul>
</div>
<div id="num">
<ul>
<li>12</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
</ul>
</div>
<div id="hour"></div>
<div id="min"></div>
<div id="sec"></div>
<div id="circle"></div>
</div>
II. CSSスタイル
<style id="css">/* Note that here an id is added to the style tag, which is fetched inside JavaScript, and css styles are added to it. */
body,ul{
margin:0;
padding:0;}
body{
font:1em "microsoft Yahei";
color:#666;
background-color:#333;}
h1{
text-align:center;
color:#eee;
font-size:3rem;}
li{
list-style:none;}
p{
text-align:center;
color:#ddd;
position:relative;
top:100px;
}
a{
color:#999;
text-decoration:none;
transition:0.2s;}
a:hover{
color:#ddd;}
#clock-wrap{
width:400px;
height:400px;
border:10px solid #fff;
border-radius:50%;
margin:80px auto 0;
position:relative;
box-shadow:0 0 40px rgba(0,0,0,1)}
#clock ul{
width:400px;
height:400px;
position:relative;
border-radius:50%;
background:radial-gradient(circle at center,#667eea,#764ba2);
box-shadow:0 0 50px rgba(0,0,0,0.5) inset; /* set inner-shadow*/
}
#clock ul li{
position:absolute;
left:50%;
margin-left:-2px;
top:0;
width:4px;
height:10px;
background:rgba(255,255,255,.5);
transform-origin:center 200px; /* The center point of rotation of li is in the middle of the circle. */
}
#clock li:nth-child(5n+1){ /* 5 ticks as a group, the first tick of each group should be longer. */
height:18px;
}
#num{
position:absolute;
width:360px;
height:360px;
left:0;
right:0;
top:0;
bottom:0;
margin:auto;
}
#num li{
position:absolute;
left:50%;
margin-left:-10px;
top:0;
color:rgba(255,255,255,.5);
font:2em Arial, Helvetica, sans-serif;
transform-origin:center 180px;}
#hour,#min,#sec{
background:#fff;
position:absolute;
left:50%;
top:50%;
transform-origin:bottom; /* The rotation point of the hour hand is at the bottom of itself. */
box-shadow:0 0 6px rgba(0,0,0,.5)
}
#hour{
width:14px;
height:100px;
margin-left:-7px;
margin-top:-100px;
border-radius:3px;
}
#min{
width:10px;
height:150px;
margin-left:-5px;
margin-top:-150px;
border-radius:2px;
}
#sec{
width:4px;
height:180px;
margin-left:-2px;
margin-top:-180px;
border-radius:1px;
}
#circle{
width:40px;
height:40px;
border-radius:50%;
background:#fff;
position:absolute;
left:50%;
margin-left:-20px;
top:50%;
margin-top:-20px;
box-shadow:0 0 20px rgba(0,0,0,.4)}
</style>
III. JavaScript コード
<script>
window.onload=function(){
var oList=document.getElementById("list");
var oCSS=document.getElementById("css"); //style tag can also add id attribute.
var aNums=document.getElementById("num").getElementsByTagName("li");
var oHour=document.getElementById("hour");
var oMin=document.getElementById("min");
var oSec=document.getElementById("sec");
var aLi="";
var sCSS="";
for(var i=0;i<60;i++){ //loop 60 times to produce the scale values and the number of degrees each scale rotates.
aLi+="<li></li>";
sCSS+="#clock li:nth-child("+(i+1)+"){transform:rotate("+i*6+"deg);}"
}
for(var i=0;i<12;i++){
sCSS+="#num li:nth-child("+(i+1)+"){transform:rotate("+i*30+"deg);}"
}
oList.innerHTML=aLi;
oCSS.innerHTML+=sCSS; //css needs to be appended to the original css document.
myTime(); //initialize the function.
setInterval(myTime,1000); //Set the timer to execute the function every 1 second.
function myTime(){
var oDate=new Date();
var iSec=oDate.getSeconds();
// The number of minutes accurate to the second.
var iMin=oDate.getMinutes()+iSec/60;
// The number of hours accurate to minutes and seconds. Can be more accurate when rotating.
var iHour=oDate.getHours()+iMin/60;
oSec.style.transform="rotate("+iSec*6+"deg)" ;
oMin.style.transform="rotate("+iMin*6+"deg)";
oHour.style.transform="rotate("+iHour*30+"deg)"; //The hour hand needs to be pointed to include the minutes and seconds to be accurate.
}
}
</script>
上記は、歩く2Dクロックの詳細を作成するためにCSS3使用変換であり、CSS3変換に関する詳細な情報は、スクリプトの家の他の関連記事に注意を払うしてください!.
関連
-
[CSSチュートリアル】overflow:hiddenの役割を解説(overflow hidden、clear float、外周マージンの崩れを解決する)。
-
[CSSチュートリアル]CSS気まぐれボーダーアニメーション効果
-
[css3]Apple携帯電話のロック解除のためのCSS3サンプルフォントシャインエフェクト
-
[CSSチュートリアル】CSSで実現できるのなら、わざわざJavaScriptを使う必要はない
-
[CSSチュートリアル】CSS複合セレクタの具体的な使用方法
-
[CSSチュートリアル]css transform ページめくりアニメーションの記録
-
[CSSチュートリアル】CSSを使ってボックスの水平・垂直方向の中央寄せを実現(全8種)
-
[CSSチュートリアル】ピュアCSS3による水平無限スクロールのサンプルコード
-
[css3】background属性の8つの属性値について解説(インタビュー記事)
-
[CSSチュートリアル】Chromeのフォント最小12px制限の最終解決策
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[css3]css3におけるtransformプロパティの4つの機能
-
[css3]ピュアCSS3でdivのinとoutの効果を順番に実現する
-
[CSSチュートリアル】パララックススクロールの効果を完成させるCSS
-
[css3]css3は、3つの方法のサンプルコードのテキストの点滅効果を達成するために
-
[CSSチュートリアル】ネイティブCSSでテキストの無制限回転を実現する汎用的な方法
-
[CSSチュートリアル】CSSカウンターを使った数字の並びの美化方法
-
[CSSチュートリアル】CSSで実現するTikTokのテキストジッター効果例
-
[CSSチュートリアル】カラフルで知的なシャドウ効果を実現するCSS
-
[css3]シンプルな白い雲の浮かぶ背景効果を実現するcss3
-
左上または右上にリマインダーのドットを表示するCSS3サンプルコード[CSSチュートリアル