「HTML」カテゴリーアーカイブ

CSSとHTMLだけで作る立体的カードUI(Shadow DOM対応)

JavaScriptなしで、transform / perspective / layered shadowsCSSカスタムプロパティ だけで

“パッ”と目を引く3Dカードを作成してみましょう。

さらに Shadow DOM 内でも同じ見た目を再現できるよう、::part() と変数で拡張可能にします。


ゴール(できあがりイメージ)

  • マウスホバーでわずかに傾く3D表現

  • 斜めに流れるハイライト(きらめき)

  • ライト/ダークどちらでも映える配色

  • prefers-reduced-motion でアニメ控えめ

  • Shadow DOM対応::part() と CSS変数で外部からのテーマ変更OK

デモ:CSSとHTMLだけで作る3DカードUI

💡 マウスを乗せるとカードがわずかに傾き、立体的な効果が確認できます。


最小HTML(ライトDOM版) 

コアCSS(ライトDOM版) 


Shadow DOM に対応させる考え方

ポイントは 「パーツを切り出す」「CSS変数でテーマ化」
外側(ライトDOM)から Shadow DOM 内を直接スタイルできないため、コンポーネント作者が part を付与し、利用者は ::part() で装飾色や半径は CSS変数で調整します。

Web Component 側(作者向け:影DOM内のテンプレ)

※ここでは概念を示すための HTMLスケッチ です。実際の ShadowRoot 作成は JS が必要ですが、スタイル設計の指針としてご覧ください。

利用者側(外部)からのテーマ上書き例 

まとめ

  • 作者は Shadow DOM 内で CSS変数part名を定義

  • 利用者ホストへ変数指定し、必要なら ::part() でピンポイント調整


デザインバリエーション(クラス追加だけ)


アクセシビリティと実用Tips

  • ボタン/リンクのヒット領域は最低44×44pxを意識(paddingで確保)

  • prefers-reduced-motion に配慮(すでに対応)

  • コントラストoklchcolor-mix()で暗所・明所どちらも読みやすく

  • 画像のalt を適切に

  • フォールバック:古い環境では oklch が未対応 → 代替色を上書き可能に


よく使うCSSカスタムプロパティ(外から上書きOK)

変数名役割
--card-bg背景色#fff / #111
--card-fg文字色#111 / #eee
--card-accentCTAなどの強調色oklch(0.78 0.17 30)
--card-radius角丸12px / 20px
--card-shadow-1影レイヤ(近)0 1px 2px rgba(0,0,0,.2)
--card-shadow-2影レイヤ(遠)0 8px 24px rgba(0,0,0,.12)
--card-border境界線1px solid rgba(0,0,0,.06)
--card-tilt傾き(通常)rotateX(5deg) rotateY(-6deg)
--card-tilt-hover傾き(ホバー)rotateX(6.5deg) rotateY(-10deg)
--card-glossハイライトlinear-gradient(120deg, transparent 30%, rgba(255,255,255,.4) 45%, transparent 60%)
--card-gloss-sizeハイライトサイズ200% 200%

トラブルシュート

  • 立体感が弱い--card-tilt と影(--card-shadow-2)を強める

  • グロスが強すぎる--card-gloss の不透明度を上げる(=白を薄く)

  • 画面酔いprefers-reduced-motion 環境で確認、もしくはカードに .is-outline を付与

  • Shadow DOM で色が変わらない → 変数は ホスト(custom element)側に定義しているか確認


まとめ

項目ポイント
3D表現transformとperspectiveで奥行きを演出
輝き::beforeのグラデとbackground-positionで流し込み
配色oklchとcolor-mixでライト/ダーク両対応
アクセシビリティprefers-reduced-motionと十分なヒット領域
Shadow DOM作者はpart公開&変数化/利用者は::part()と変数上書き
拡張クラス追加でelevated/glass/outlineを切替

JSいらず!HTMLだけでポップアップを出せる「popover」属性がすごい

これまで「ポップアップ」や「モーダルウィンドウ」を作るには、
JavaScriptやCSSトリックを駆使するのが当たり前でした。

ところが最近、**HTMLだけでポップアップを表示できる新属性「popover」**が登場!
これが想像以上にシンプルで、しかも見た目も自然なんです。

この記事では、「popover」属性の基本的な使い方から応用例までまとめています。


🚀 popover属性とは?

popover属性は、HTMLの要素に「ちょっとした吹き出し」や「軽いモーダル」を表示するための新仕様です。
JavaScriptなしで開閉制御でき、ボタンやリンクに紐づけて簡単に使えます。

対応ブラウザ

  • ✅ Chrome 114以降

  • ✅ Edge 114以降

  • ✅ Safari 17以降

  • ⚠️ Firefox(現時点では開発中)

※2025年現在、多くのモダンブラウザでサポートが進んでいます。


🧱 基本の使い方

✅ 最小構成の例 


<表示例>

💬 ポイント解説

  • popover 属性を付与した要素が、ポップアップ対象になります。

  • popovertarget 属性で、どの要素を表示するか指定します。

  • ボタンをクリックするだけで自動的に開閉制御してくれます。


🎨 スタイルを整える

デフォルトのままだと少し味気ないので、CSSで整えましょう。


これで、軽いツールチップやメニュー風の見た目にできます。

背景を白系にすれば、Webアプリ風のモーダルにも。


⚙️ 応用:自動で閉じる・メニュー風表示 

popovertargetaction="toggle" を使うと、クリックごとに開閉を切り替えられます。
ナビゲーションメニューやヘルプボックスなどにも応用可能です。

<表示例>


🧠 裏側の仕組み

HTMLの「popover」属性は、ブラウザ側で開閉制御を自動的に処理します。
内部的には :popover-open という擬似クラスが追加され、
CSSで開閉状態を検知することもできます。


この仕組みにより、JSでイベントを監視せずとも

**「開いたときだけアニメーション」**などを実現できます。


💻 実用例:通知メッセージ


JavaScript不要で、ユーザーに小さなメッセージを伝えることが可能です。

フォーム送信後の完了メッセージなどにもぴったり。


⚠️ 注意点

  • 古いブラウザでは未対応なので、必要に応じて<dialog>タグやJSフォールバックを検討。

  • 開く方向は自動制御されるため、細かい位置調整が難しい場合があります。

  • 長文や複雑なレイアウトには不向き(軽量ポップアップ用途がベスト)。


🌟 まとめ

特徴内容
JavaScript不要HTMLだけで完結
見た目自由CSSで簡単カスタマイズ
軽量ページ読み込みが早い
一部ブラウザ注意Firefoxは実装中

🔮 今後の展望

「popover」属性はまだ新しい技術ですが、
“JavaScriptレスなUI” を目指すHTML進化の象徴です。

今後は、ツールチップ・通知・設定メニューなど、
より多くのシーンで採用が進むと期待されます。

JavaScriptなしで実現!HTML5 Canvasアニメーションで魅せるWeb装飾

HTML5の登場以降、Webデザインの表現力は大きく進化しました。
その中でも<canvas>タグは、まるで映像作品のような動きをブラウザ上で描くための強力な機能です。

「アニメーション=JavaScriptが必要」と思われがちですが、実はJavaScriptを使わずにCanvasを動かす方法も存在します。
今回は、HTML5の<canvas>タグだけで実現できる動くWeb装飾について紹介します。


🖋️ <canvas>タグの基本とは?

<canvas>タグは、HTML5で導入されたグラフィック描画用の要素です。
通常はJavaScriptを使って図形やアニメーションを描きますが、近年はCSSアニメーションやSVG、さらにはGIF・APNGを組み合わせてCanvasを動かす手法も増えています。


このようにCanvasを定義するだけで、背景や装飾として利用可能。

さらに、CSSや画像アニメーションを活用することで、JavaScriptなしでも“動きを感じさせる”デザインを作ることができます。


🌊 JavaScriptなしで実現する波紋・粒子エフェクト

近年注目されているのが、Canvasを静的画像やCSSアニメーションと組み合わせるアプローチです。

✅ 例:波紋エフェクト(CSS連携) 


これだけで、Canvas上に波紋が広がるような演出をCSSだけで表現できます。

動的スクリプトが不要なので、ローディング画面やメインビジュアルにも最適です。

サンプル


✨ パーティクル風の演出も可能

粒子(パーティクル)をイメージした演出も、背景のCanvasを複数重ねることで再現可能です。
たとえば、透明度の異なる複数のCanvasレイヤーをCSSで重ねると、光がゆらめくような表現になります。



これにより、動きを感じさせる静かな装飾が可能になります。

サンプル


🧩 活用シーン

HTML5 Canvasを使った静的アニメーションは、以下のような場面で効果的です。

  • 🌐 ローディング画面:シンプルで軽量な波紋アニメーションを表示

  • 🖼️ メインビジュアル:粒子や光を使った背景エフェクト

  • 🔲 ボタンホバー時:クリック誘導に動きを加える

  • 💻 プレゼン用サイト:静かな動きでブランド感を演出


💬 まとめ

JavaScriptを使わなくても、HTML5 Canvasを上手く活用すれば軽量で美しいアニメーション表現が可能です。
CSSやCanvasレイヤーを組み合わせることで、Webサイト全体の印象を大きく向上させることができます。

「動き=JS」ではなく、「表現=HTML5 × CSS × Canvas」
これが、モダンWebデザインの新しいアプローチです。

HTML:番号付きリストの開始番号を変更する方法

HTMLで番号付きリストを表示するのは<ol>タグの中に<li>タグを記述することで表現できますが、<ol>タグにreversed属性やstart属性、type属性を付与することで表示される番号を操作することが出来ます。

<ol>タグに何も属性付けない場合

HTML

表示結果

  1. パソコン
  2. テレビ
  3. ソファー

 

<ol>タグにreversed属性を付けた場合

HTML

表示結果

  1. パソコン
  2. テレビ
  3. ソファー

 

<ol>タグにstart属性を付けた場合

HTML

表示結果

  1. パソコン
  2. テレビ
  3. ソファー

<ol>タグにtype属性を付けた場合

HTML

表示結果

  1. パソコン
  2. テレビ
  3. ソファー

IEに互換表示をさせない「X-UA-Compatible」の指定方法

Web開発者泣かせでお馴染みのIEにはIEの過去バージョンモードで表示出来る互換表示機能があります。
しかし互換表示することで表示が崩れてしまう場合、デフォルトでは互換表示させたくないケースが多々あります。
そういう場合にはmetaタグで「X-UA-Compatible」を指定する事で互換モードではなく、使用しているIEの各バージョンの標準モードでレンダリングさせる事が可能となります。

使用しているIEの各バージョン毎でレンダリング

    使用しているIEの各バージョン毎でレンダリングさせたい場合は「X-UA-Compatible」へ「IE=edge」を指定します。

IEのバージョン固定でレンダリング

    特定のIEのバージョン固定でレンダリングさせたい場合は「X-UA-Compatible」へIE8なら「IE=8」、IE11なら「IE=11」を指定します。
    例えば「IE=8」を指定した場合、ブラウザのバージョンはIE11でもIE8の互換モードでレンダリングされます。

JSPコメントとHTMLコメントの違い

JSPのコメント文とHTMLのコメント文の違いについてまとめておきます。

JSPのコメント

HTMLのコメント

さて、両者の違いとは何でしょうか。

見た目大して変わらないしどっちでもいいんじゃない。というのは大きな間違いで、HTMLのコメント文はサーブレット変換時にコメントも「out.println()」によってクライアントに対して出力されてしまいます。要はそのページを表示して右クリックなどから「ソースコードを表示」などを選択するとそのコメント文もクライアント側から確認可能となります。
対してJSPのコメント文はソースコードを表示してもクライアント側から確認する事は出来ません。

使い分けとしては、そのページの開発者サイドにのみ伝えておきたい内容などは「JSPのコメント文」、そのページを閲覧するクライアント側がソースコードを確認した時に伝えたい内容は「HTMLのコメント文」というように使い分けましょう。

<b>太字タグと<strong>論理強調タグの違い

HTMLを作成する時に悩む、<b>太字タグと<strong>論理強調タグの違いについてメモしておきます。
この二つは表面上はよく似ていて、どちらも太字になります。
ですが<b>タグは単に太く見えるだけで単なる一般的な太字ですが、<strong>タグは検索エンジンなどにおいて、特別な意味を持ったタグとなります。
検索エンジンなどで注視させたい場合などは<strong>タグを用いると良いでしょう。
逆に<b>タグは単なる太く見えるだけのタグなので、文章の中で読者に対して注視させたい場合に用います。
私の場合は以前よくSEOの観点から<strong>タグを活用していました。
メタタグなどよりは多少の効果はあるようで、特定の検索ワードで上位になることも多かったです。
今は時間的に余裕がなく面倒なので、あまり文章内の特別な編集は殆どしていませんが、多少の効果があるという事は確かなようです。
他にもメタタグなど色々なタグがHTMLにはありますが、<b>タグや<strong>タグは初心者でも簡単に用いる事が出来ると思うので、うまく活用すると良いかもしれません。

HTML、CSS、JavaScriptのデバッガツール「Firebug」のインストール手順

通常ブラウザにはF12押下でブラウザ標準の開発ツールが使用可能となりますが、今回紹介する「Firebug」は高性能なJavaScriptデバッガツールです。JavaScriptだけではなくHTMLやスタイルシートの値をリアルタイムに変更して確認したり、非同期通信状況やDOMの状態などの詳細情報確認も簡単に可能となります。

Firebugの特徴

  • Firefox専用のアドオン
  • JavaScriptのデバッグ
  • 非同期通信の状況確認
  • DOMやスタイルシートの設定状況確認

Firebugのインストール手順

  1. FireFoxを起動し、メニューの「ツール」→「アドオン」を選択します。
  2. アドオンマネージャのメニュー「アドオン入手」画面で検索ボックスへ「firebug」と入力して検索します。
  3. 検索結果に「Firebug x.xx.x」と表示されますので「インストール」ボタンを押下してインストールします。
  4. インストール終了後、デバッグしたい画面を開いてブラウザの右上に追加された「虫アイコン」をクリックすれば虫アイコンに色がついてFirebugが起動します。

marginとpaddingの違い

CSSでスタイルを設定していると「margin」と「padding」の基礎知識が曖昧だと使用する際に混乱しがちなので今回は両者の違いをまとめてみます。

marginとpaddingの関係図

marginの特徴

  • borderの外側にスペース(余白)が設けられる
  • スペース(余白)に背景色は適用不可
  • marginに負数(-5pxなど)が使用可能
  • 隣接した要素と相殺される(されないケースもあります)

paddingの特徴

  • borderの内側にスペース(余白)が設けられる
  • スペース(余白)に背景色を適用可能
  • paddingに負数(-5pxなど)は使用不可
  • 隣接した要素と相殺されない

エスケープとエンコードの違い

ふとエスケープとエンコードの違いって何だろうと思ったので整理してみました。
どちらも「一定の規則に従い別の記号や文字列に置換する」という点では同義語に見えますが、根本的にその性質は全く異なるものです。

エスケープ

  • HTMLでは「< 」を「&gt;」へ変換することをエスケープ処理と呼称します。この場合、画面上はエスケープしても「

エンコード

  • 情報を暗号や通信に適した形式(コード)に変換すること。動画などの場合、この「形式」のことをコーデックと呼びます。
    例えばURLコードへエンコードすると「半角スペース」は「%20」へ置換されます。そしてURLを見てみるとエンコード後の文字列がそのまま表示されています。