【HTML/CSS講座】 第6回 実践、時計を作ろう
<!DOCTYPE html> <html> <head> <style> #clock { font-size: 48px; text-align: center; margin-top: 200px; } </style> </head> <body> <div id="clock"></div> <script> function updateTime() { var currentTime = new Date(); var hours = currentTime.getHours(); var minutes = currentTime.getMinutes(); var seconds = currentTime.getSeconds(); hours = (hours < 10 ? "0" : "") + hours; minutes = (minutes < 10 ? "0" : "") + minutes; seconds = (seconds < 10 ? "0" : "") + seconds; var timeString = hours + ":" + minutes + ":" + seconds; document.getElementById("clock").innerText = timeString; } setInterval(updateTime, 1000); // 毎秒ごとに時刻を更新する // ページ読み込み時に初回の時刻表示を行う updateTime(); </script> </body> </html>
本日は、第6回/ 実践、時計を作ろうです。
時計は、1ページで完成します。
CSSとHTMLのみではできません。
上記が時計の例です。
デザインは、CSSとjavascriptで弄るとして、このデジタル時計は精密です。
デザインを弄ると正常に機能しないかもしれません。そこは試していません。
1ページで、精密なデジタル時計ができるなんて驚異ですよね。
上記のコードは、MITライセンスで提供しています。お好きにサイトにお使いください。
もちろん、時、分、秒の表示をつけることもできますが、各々ご自身で修正してほしいです。
【近況】体が痺れている話
CSS講座記事を書こうにも手足が痺れて痛い。
どうにも解せない。
がん、糖尿病、脳梗塞、腎臓病。
とてもじゃないが、そんな病気、耐えられる精神力ではない。
それどころか自分が認知症になるなんて考えたこともなかった。認知症ではないが、そうなる確率は誰にでもある。ことに筆者は医者から注意されているのだ。
脳梗塞、脳卒中、脳出血、こんな病気気づけるはずがなないので、ならないに越したことはない。
まさか、自分がなるとは的な病気はあってほしくないものだ。しかし、一族に糖尿病、脳梗塞の病気があるため、とにかくやばい。
既にヤバめの境地に来ている筆者は、CSSで時計を作って遊ぶ傍ら、脳梗塞にならないかと怯えている。
4年前までは、Twitter等で他人と議論することが多かったが、筆者は他人を【説得】するのを諦めた。
口論から撤退し、論争以外、こうしてHTMLに関する講座を開いている訳だ。
口論でも昂れば脳梗塞になるかもしれないし、他の病気を併発するかもしれない。
脳梗塞、脳出血、脳卒中、全然兆候がわからないが、今回の足の痺れは、それらと関係はない。
発生時間を増すこれらの手足の痺れに、筆者は怯えながら過ごしている。
【HTML/CSS講座】休題回 LESS(LeanerCSS)は実践したくないです。
LESSをご存知ですか。LeanerCSSっていうんですが、動的スタイルシート言語となります。
最初聞いた時は、「はあ?」的な感覚になりましたが、かなり気になります。
いやね、HTMLはマークアップ言語、CSSはスタイルシート言語、javascriptはスクリプト言語です。そこに加えて動的スタイルシート言語ですね。
正直、面倒やねん。
いちいち環境用意しなきゃならないものを作るなという心境です。失礼。
もちろん、CMS等を運用する上ではLESSは要りません。
普通のCSSで結構です。LESSは自己満足に過ぎません。
まあ、自己満足以外にもメリットはあるんですが、
LESSはできるけど、CSSはできない派も増加中なんで、筆者は困り果てております。
LESS自体は知っているんですが、日頃のブログ運用では要らないです。
LESSをgithubで見つけると身構えてしまいます。
【HTML/CSS講座】 第5回 @charset "UTF-8";
普通にHTMLとCSSを順序よく講座しろよ、
という苦情が来てもおかしくないですが、
基本方針としては、
【HTMLとCSSがわからない人にとって どれから始めても大して問題じゃない】
という先入観からです。
筆者自身、 グリッドシステムとかから始めたので
順序はそこまで問題ではありません。
ようは、わかりやすいね、
箇所から崩していきましょう。
が、基本方針です。
今回は、
@charset "UTF-8";
についてです。
これはCSSの先頭につけるもので、
一部識者からは【おまじない】と呼ばれています。
何が起こるかと言いますと、
たいしたことは起きません。
フォントファミリーと同じで文字化け回避
の【おまじない】です。
実際問題、これらをつけているからと
言って、保険みたいなものにはなり得ません。
おまじないは、あくまでもおまじないです。
@charset "UTF-8";
を1行目につけます。
必ず一行目につけてください。
むしろ、
一行目につけないと、
文字化けしてしまうかもしれません。
@charset "UTF-8";
をつけたのに、 ファイルの保存は別の文字コードだったぜ
とならないようにしましょう。
ただし、気をつけてください。
@charset "UTF-8";
をつけるのは、【外部ファイルCSSだけ】です。
【内部CSSの先頭につけても 大して意味はありません】 。
外部CSSの先頭には
@charset "UTF-8";
を付けておきましょう。
もちろん、ついていないCSSもありますし、
オレは文字化け回避のプロだ
って方は、差し迫ってつける必要はありません。
そもそもUTF-8ではないサイトもあります。
基本的なのは、UTF-8です。
もう一度言います。
外部CSSファイルの先頭に @charset "UTF-8"; をつけてください。
放置したままCSSをすると、 文字化けの原因になります。
HTMLとCSSは、文字化けの要素があります。
一つめは、
<meta charset="UTF-8">
二つ目は
@charset "UTF-8";
三つ目は
<html lang="ja">
四つ目は
ファイル形式を保存するとき
です。
これらを間違えなければ、
文字化けする可能性を極力回避できます。
文字化けに困っている人は、 文字化けの回避方法があることを 知ってください。
実際、日本語の 文字コードは幾つかあります。
Shift-JIS、EUC-JP、JIS、UTF-8
です。
普通のプログラマーは、
Shift-JISかUTF-8かで迷います。
もちろん、EUC-JP、JISで、
個性派的な感じを出す
プログラマーもいるでしょう。
しかし、UTF-8が多いです。
UTF-8が基本的な文字化け回避の秘訣です。
基本的には、UTF-8に合わせるように
しておくことです。
今回の【HTML/CSS講座】 は、
@charset "UTF-8";
についてでした。
【HTML/CSS講座】 第4回 グリッドシステムの適用
/* グリッドシステム */ .container { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 15px; } .row { display: flex; flex-wrap: wrap; margin: 0 -15px; } .col-1 { width: 8.33%; } .col-2 { width: 16.66%; } .col-3 { width: 25%; } .col-4 { width: 33.33%; } .col-5 { width: 41.66%; } .col-6 { width: 50%; } .col-7 { width: 58.33%; } .col-8 { width: 66.66%; } .col-9 { width: 75%; } .col-10 { width: 83.33%; } .col-11 { width: 91.66%; } .col-12 { width: 100%; }
グリッドシステムとは、予めCSSでカラムの幅を決めておくシステムです。
デザインレイアウトをする上でグリッドシステムは、素早くレイアウトを配置できるため、3column、2column、フッターだけ3分割等が 簡単に可能です。
上記のCSSコードは、グリッドシステムを採用したCSSの例です。(ステータスは独自の数値)
col12以上の数値を入れることもできますが、グリッドシステムの配分は正確な横幅数値を基本軸とするので、慣れや感覚が大事になってきます。
CSSフレームワークの半分以上にグリッドシステムが付いています。
1から12までが良いでしょう。細かく細分化しすぎると、使用者が戸惑います。
グリッドシステムは、CSSの中でも大事なものになってきます。
従来の発想では、【3column】を表現するのに、3つのCSSクラスを並べる必要がありました。
【グリッドシステム】という概念の登場によって、
自サイトや社内の規則に沿ってデザインレイアウトをしましょう。
3columnにするには、3つグリッドシステムを並べればいいのです。
グリッドシステムの数値が登場するまでは、クラスやIDで3columnを表現する必要がありましたが、
グリッドシステムの登場は、サイトの量産化に貢献しているようです。
CSSフレームワークの肝であるグリッドシステム。
7500円もするグリッドシステム専用の本がある程です。
グリッドシステムは奥が深く、またグリッドシステムによるホームページは増幅する一方です。
グリッドシステムの幅には個性があります。
<div class="container"> <div class="row"> <div class="col-1">Col1</div> <div class="col-2">Col 2</div> <div class="col-3">Col 3</div> <div class="col-4">Col 4</div> <div class="col-5">Col 5</div> <div class="col-6">Col 6</div> <div class="col-7">Col 7</div> <div class="col-8">Col 8</div> <div class="col-9">Col 9</div> <div class="col-10">Col 10</div> <div class="col-11">Col 11</div> <div class="col-12">Col 12</div> </div> </div>
【HTML/CSS講座】第3回 CSSの適用方法
CSSの適用方法では、CSSの適用方法についてお伝えします
内部CSS
<head> <meta charset="UTF-8"> <title>サンプル</title> <style> h1{ color:; } </style> </head>
外部CSS
<link rel="stylesheet" href="style.css">
style.cssが一般ですが、
<link rel="stylesheet" href="home.css">
でも反応します。
WP等はstyle.cssと言うファイル名が標準なので気をつけてください。
<link rel="stylesheet" href="css/home.css">
でcssフォルダ内のcssが適用されます。
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" referrerpolicy="no-referrer" />
とすることで、CDNのCSSを読み込みます。
如何でしたか。第3回は外部CSSと内部CSSについて語ってみました。
【HTML/CSS講座】第2回 MP3プレイヤーをサイトに導入する
/* CSSファイル */ /* 音楽再生プレイヤーコンテナのスタイル */ .audio-player { width: 300px; background-color: #333; color: #fff; padding: 20px; border-radius: 10px; } /* 曲名スタイル */ .audio-player .song-title { font-size: 20px; margin-bottom: 10px; } /* 再生ボタンスタイル */ .audio-player .play-btn { display: inline-block; width: 40px; height: 40px; background-color: #fff; color: #333; border-radius: 50%; text-align: center; line-height: 40px; cursor: pointer; } /* 停止ボタンスタイル */ .audio-player .stop-btn { display: inline-block; width: 40px; height: 40px; background-color: #fff; color: #333; border-radius: 50%; text-align: center; line-height: 40px; cursor: pointer; margin-left: 10px; } /* スライダーレールスタイル */ .audio-player .slider { width: 100%; height: 4px; background-color: #666; margin-top: 20px; } /* スライダーハンドルスタイル */ .audio-player .slider .handle { width: 10px; height: 10px; background-color: #fff; border-radius: 50%; position: relative; top: -3px; cursor: pointer; }
第2回は、MP3プレイヤーをサイトに導入する
です。
音楽再生プレイヤーをサイトに導入します。
<div class="audio-player"> <h2 class="song-title">Song Title</h2> <div class="controls"> <div class="play-btn">►</div> <div class="stop-btn">■</div> </div> <div class="slider"> <div class="handle"></div> </div> <audio src="audio.mp3" class="audio-element"></audio> <div class="time-info"> <span class="current-time">00:00</span> / <span class="duration">00:00</span> </div> </div> <script> var audioElement = document.querySelector('.audio-element'); var playBtn = document.querySelector('.play-btn'); var stopBtn = document.querySelector('.stop-btn'); var currentTimeSpan = document.querySelector('.current-time'); var durationSpan = document.querySelector('.duration'); playBtn.addEventListener('click', function() { audioElement.play(); }); stopBtn.addEventListener('click', function() { audioElement.pause(); audioElement.currentTime = 0; }); audioElement.addEventListener('timeupdate', function() { var currentTime = formatTime(audioElement.currentTime); var duration = formatTime(audioElement.duration); currentTimeSpan.textContent = currentTime; durationSpan.textContent = duration; }); function formatTime(time) { var minutes = Math.floor(time / 60); var seconds = Math.floor(time % 60); return ('0' + minutes).slice(-2) + ':' + ('0' + seconds).slice(-2); } </script>
このソースコードをコピペすることで、audio-playerができ上がります。
audio.mp3としていますが、各自のファイル名で調整してください。
再生時間は、ストップすると0に戻ります。途中で停止せずに0になるので気をつけてください。