LLMS

Playgrounds

インタラクティブなWeb技術のデモ集。最新のWeb API、CSS機能、React技術を実際に体験できます。

Clipboard API

ブラウザのクリップボードに任意のデータをコピー・ペーストできるAPIです。

ブログを読む

テキストのコピー・ペースト

クリップボードの読み取り: 読み込めませんでした

クリップボードの書き込み: 読み込めませんでした

画像のコピー・ペースト

コピーする画像1

ペーストされた画像

権限があれば、外部でコピーした画像も貼り付けられます

ペーストされた画像

CaretPositionFromPoint

座標からキャレット位置を取得するAPIです。

ブログを読む

キャレット位置取得

吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。

↑ テキストの好きな位置をクリック

クリックするとキャレット情報が表示されます。

ドラッグ&ドロップ

素敵な可愛い立派な

吾輩は猫である。名前はまだ無い。

↑ 上のワードをドラッグしてここにドロップ

Selectionオブジェクト

ユーザーが選択したテキストの範囲やキャレットの位置を扱うSelectionオブジェクトの紹介です。

ブログを読む

Selectionオブジェクトのプロパティ

サンプルテキスト

あさ、眼をさますときの気持は、面白い。かくれんぼのとき、押入れの真っ暗い中に、じっと、しゃがんで隠れていて、突然、でこちゃんに、がらっと襖をあけられ、日の光がどっと来て、でこちゃんに、「見つけた!」と大声で言われて、まぶしさ、それから、へんな間の悪さ、それから、胸がどきどきして、着物のまえを合せたりして、ちょっと、てれくさく、押入れから出て来て、急にむかむか腹立たしく、あの感じ、いや、ちがう、あの感じでもない、なんだか、もっとやりきれない。

選択中のテキスト(selection.toString()

選択要素の開始位置の要素

selection.anchorNode.textContent, selection.anchorOffset

選択要素の終了位置の要素

selection.focusNode.textContent, selection.focusOffset

選択の種類(selection.type

Selectionオブジェクトのメソッド

サンプルテキスト

あさ、眼をさますときの気持は、面白い。かくれんぼのとき、押入れの真っ暗い中に、じっと、しゃがんで隠れていて、突然、でこちゃんに、がらっと襖をあけられ、日の光がどっと来て、でこちゃんに、「見つけた!」と大声で言われて、まぶしさ、それから、へんな間の悪さ、それから、胸がどきどきして、着物のまえを合せたりして、ちょっと、てれくさく、押入れから出て来て、急にむかむか腹立たしく、あの感じ、いや、ちがう、あの感じでもない、なんだか、もっとやりきれない。

選択範囲の追加

selection.addRange(Range)

選択範囲の削除

selection.removeAllRanges(), selection.empty()

要素の子を全て選択する

selection.selectAllChildren(Node)

範囲の変更

selection.extend(Node, ?offset)

Baseline2025で追加されたgetComposedRangesメソッド

サンプルテキスト(テキスト全体が閉じたShadow Tree)

あさ、眼をさますときの気持は、面白い。かくれんぼのとき 、押入れの真っ暗い中に、じっと、しゃがんで隠れていて、突然、でこちゃんに、がらっと襖をあけられ、日の光がどっと来て、でこちゃんに、「見つけた!」と大声で言われて、まぶしさ、それから、へんな間の悪さ、それから、胸がどきどきして、着物のまえを合せたりして、ちょっと、てれくさく、押入れから出て来て、急にむかむか腹立たしく、あの感じ、いや、ちがう、あの感じでもない、なんだか、もっとやりきれない。

SafariやIOSのChrome等ではoptionsを含んだgetComposedRangesメソッドが正しく動作しない場合があります。

content-visibility

要素のレンダリングを制御しパフォーマンスを向上させるCSSプロパティです。

ブログを読む

hiddenとautoの違い

content-visibility: hidden

サンプルコンテンツ

このコンテンツはcontent-visibility: hiddenによって制御されています。非表示の場合、レンダリング処理が行われず、スクリーンリーダーやブラウザ検索からもアクセスできません。

content-visibility: auto

サンプルコンテンツ

このコンテンツはcontent-visibility: autoによって制御されています。ビューポート外の要素のレンダリング処理を必要なタイミングまでスキップできます。

::details-content擬似要素

details要素の開閉時にスムーズなアニメーションをCSSだけで実装できる擬似要素です。

ブログを読む

スタイリング例

detailsの子要素全てにスタイルを割り当て

p要素1

p要素2

p要素3

::details-contentを用いてslot要素に割り当て

p要素1

p要素2

p要素3

アニメーション実装パターン

::details-contentによるアニメーション

想定した通りにアニメーションが適用されます

例として実装したアニメーションは@prefers-reduced-motionに対応していません。注意してご利用ください。

Event Timing

ユーザー操作によって発生したイベントの待ち時間を計測するAPIです。

ブログを読む

イベントタイミング計測

計測回数: 0

ボタンをクリックすると、Event Timing APIを使ってイベントの処理時間を計測します。 約50msの処理を意図的に行うため、処理時間が可視化されます。

font-family: math

数学的表現に特化したgeneric font familyで、数式を適切に表示します。

ブログを読む

font-family: mathプロパティ

ピタゴラスの定理(上付き文字)

x² + y² = z²

等差数列(上付き・下付き文字)

aₙ = a₁ + (n−1)d

数の集合(Blackboard bold)

ℕ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ

積分記号

∫₀^∞ e⁻ˣ dx = 1

input要素のwebkitdirectory属性

ディレクトリ選択を可能にするwebkitdirectory属性の使用例です。

ブログを読む

webkitRelativePathの例

Invoker Commands API

commandforとcommand属性でDialogやPopoverを操作する

ブログを読む

Dialogの操作

このDialogはInvoker Commands APIで開かれました。

JavaScriptを使わず、HTML属性だけで操作しています。

Popoverの操作

Invoker Commands API

Popover API

カスタムコマンド

k8o

カスタムコマンド(--zoom-in--zoom-out--reset)で操作しています。

Largest Contentful Paint

ビューポート内で最も大きなコンテンツ要素が描画されるまでの時間を計測するAPIです。

ブログを読む

LCP計測

検出回数: 0

LCPエントリを待機中...ページを再読み込みすると計測されます。

ページ読み込み時のLCP(Largest Contentful Paint)を計測しています。ページを再読み込みすると新しい計測結果が表示されます。

Popover API

JavaScriptなしでツールチップやドロップダウンメニューを実装できるAPIです。

ブログを読む

基本的なポップオーバー

このポップオーバーはPopover APIによって表示されました。 ESCキーやこのコンテンツの外側のクリック、toggleまたはhideボタンで閉じられます。

ツールチップ・ドロップダウン

Tooltip

Dropdown Menu

このUIの実装はPopover APIを使っていません。

Dialog requestClose

ダイアログのrequestCloseイベントでESCキーやクリック以外の閉じる動作を検知できます。

ブログを読む

ダイアログの閉じる動作検知

CSS print-color-adjust

印刷時の色の調整を制御するCSSプロパティです。

ブログを読む

印刷時の色調整デモ

色調整の設定(print-color-adjust)

ブラウザの印刷設定で色調整を正確にするか、ブラウザにお任せするかを選択できます。

現在の設定: ブラウザにお任せ(economy)

rcap, rch, rex, ric

ルート要素のフォントの特性に基づいたCSSの長さ単位です。

ブログを読む

単位の比較

幅を測る単位(rch, ric)

1ric
0
1rch

高さを測る単位(rcap, rex)

H
1rcap
x
1rex

文字と単位バーをそれぞれ4倍にしたものを表示しています。
1ricは「水」の幅、1rch は「0」の幅、1rcap は大文字Hの高さ、1rexは小文字xの高さです。

通常版とルート版の違い

px

8px〜48pxの範囲で変更できます

1ch
0
16px
1rch
0
16px

font-sizeの値を変更してみてください。chは親要素のfont-sizeに連動してサイズが変わりますが、rchは常にルート要素(16px)を基準にするため同じサイズです。
ブラウザの文字サイズ設定を変更している場合、正しく動作しないことがあります。

@scope

CSSスタイルの適用範囲を特定のDOM部分木に限定できるアットルールです。

ブログを読む

ドーナツスコープ

ドーナツスコープ

.article内の画像(スタイル適用対象)

サンプル画像1サンプル画像2

.nested-content内の画像(除外される)

ネストされた画像1ネストされた画像2
@scope (.article) to (.nested-content) {
  img {
    border: 3px solid var(--cyan-500);
    border-radius: var(--radius-md);
  }
}

:scopeを使ったスコープリミット

:scopeを使ったスコープリミット

.article(スコープルート)

記事の画像

.nested-content(直接の子 → 常に除外)

直接の子の画像

ラッパー要素

.nested-content(孫要素 → :scope >の時は適用される)

孫要素の画像
@scope (.article) to (:scope > .nested-content) {
  /* .nested-contentがスコープルートの直接の子の場合のみ除外 */
  img {
    border: 3px solid var(--cyan-500);
  }
}

スコープの近接性

スコープの近接性

情報メッセージ

警告メッセージ

ネストされた情報メッセージ(@scopeがONなら近接性で決定)

  • @scopeがONの場合、最も内側の<p>は近接性により.info-boxのスタイルが適用されます
  • @scopeがOFFの場合、通常のカスケードで.warning-boxのスタイルが優先されます(後に定義されているため)
@scope (.info-box) {
  .message { color: var(--color-fg-info); background: var(--color-bg-info); }
}
@scope (.warning-box) {
  .message { color: var(--color-fg-warning); background: var(--color-bg-warning); }
}

Screen Wake Lock API

デバイスのスクリーンが自動的にスリープ状態になることを防ぐAPIです。

ブログを読む

スクリーンスリープ防止

scrollbar-color

スクロールバーの色をカスタマイズするCSSプロパティです。

ブログを読む

scrollbar-colorプロパティ

#6366f1
#e2e8f0

アイテム 1

スクロールバーの色が変わっていることを確認してください

アイテム 2

スクロールバーの色が変わっていることを確認してください

アイテム 3

スクロールバーの色が変わっていることを確認してください

アイテム 4

スクロールバーの色が変わっていることを確認してください

アイテム 5

スクロールバーの色が変わっていることを確認してください

アイテム 6

スクロールバーの色が変わっていることを確認してください

アイテム 7

スクロールバーの色が変わっていることを確認してください

アイテム 8

スクロールバーの色が変わっていることを確認してください

アイテム 9

スクロールバーの色が変わっていることを確認してください

アイテム 10

スクロールバーの色が変わっていることを確認してください

アイテム 11

スクロールバーの色が変わっていることを確認してください

アイテム 12

スクロールバーの色が変わっていることを確認してください

アイテム 13

スクロールバーの色が変わっていることを確認してください

アイテム 14

スクロールバーの色が変わっていることを確認してください

アイテム 15

スクロールバーの色が変わっていることを確認してください

アイテム 16

スクロールバーの色が変わっていることを確認してください

アイテム 17

スクロールバーの色が変わっていることを確認してください

アイテム 18

スクロールバーの色が変わっていることを確認してください

アイテム 19

スクロールバーの色が変わっていることを確認してください

アイテム 20

スクロールバーの色が変わっていることを確認してください

scrollbar-color: #6366f1 #e2e8f0;

scrollend

スクロール操作が完了したときに発火するイベントです。

ブログを読む

scrollendイベント

scroll発火:0
scrollend発火:0

アイテム 1

スクロールしてscrollendイベントの発火を確認してください

アイテム 2

スクロールしてscrollendイベントの発火を確認してください

アイテム 3

スクロールしてscrollendイベントの発火を確認してください

アイテム 4

スクロールしてscrollendイベントの発火を確認してください

アイテム 5

スクロールしてscrollendイベントの発火を確認してください

アイテム 6

スクロールしてscrollendイベントの発火を確認してください

アイテム 7

スクロールしてscrollendイベントの発火を確認してください

アイテム 8

スクロールしてscrollendイベントの発火を確認してください

アイテム 9

スクロールしてscrollendイベントの発火を確認してください

アイテム 10

スクロールしてscrollendイベントの発火を確認してください

アイテム 11

スクロールしてscrollendイベントの発火を確認してください

アイテム 12

スクロールしてscrollendイベントの発火を確認してください

アイテム 13

スクロールしてscrollendイベントの発火を確認してください

アイテム 14

スクロールしてscrollendイベントの発火を確認してください

アイテム 15

スクロールしてscrollendイベントの発火を確認してください

アイテム 16

スクロールしてscrollendイベントの発火を確認してください

アイテム 17

スクロールしてscrollendイベントの発火を確認してください

アイテム 18

スクロールしてscrollendイベントの発火を確認してください

アイテム 19

スクロールしてscrollendイベントの発火を確認してください

アイテム 20

スクロールしてscrollendイベントの発火を確認してください

上のエリアをスクロールすると、scroll イベントは連続して発火しますが、scrollend イベントはスクロールが完全に終了したときのみ発火します。

発火条件

scrollend:0

scrollTo() API

アイテム 1
アイテム 2
アイテム 3
アイテム 4
アイテム 5
アイテム 6
アイテム 7
アイテム 8
アイテム 9
アイテム 10

scroll-snap

1スナップ
2スナップ
3スナップ
4スナップ
5スナップ
6スナップ
7スナップ
8スナップ

横にスクロールするとスナップします

React SuspenseList

複数のSuspenseコンポーネントの表示順序や読み込みタイミングを制御します。

ブログを読む

SuspenseListによる読み込み制御

情報

React v19.2、Nextjs v16で利用ができなくなったため、現在こちらの機能は利用できません。

<SuspenseList revealOrder="together">

Loading...
Loading...
Loading...
Loading...

CSS abs()とsign()関数

数値の絶対値と符号を取得するCSS関数です。

ブログを読む

CSS数学関数デモ

-50px

横方向の位置を調整します

30px

縦方向の位置を調整します

座標: (-50, 30)

座標の絶対値の和: 80

象限: 第二象限

absを用いて、座標の絶対値の和が大きいほど要素のサイズを大きくしています。透明度も同じようにしています。
要素のサイズ: transform: scale(calc(1 + (abs(x) + abs(y)) / 200))
透明度: opacity: calc(0.5 + (abs(x) + abs(y)) / 200)

signを用いて、座標の点の色を変えています。座標の和が正であればhsl(280, 70%, 50%)、負であればhsl(120, 70%, 50%)、0であればhsl(200, 70%, 50%)にしています。
座標の点の色: background-color: 'hsl(calc(sign(var(--x) + var(--y)) * 80 + 200), 70%, 50%)'

CSS Custom Highlight API

DOMを変更せずに任意のテキスト範囲をハイライトできるAPIです。

ブログを読む

基本的なハイライト

知らざるを知らずとなす、これ知るなり

優先度ベースハイライト

Imagination is more important than knowledge

スペリング・文法エラーハイライト

食べれる

CSS spelling-error & grammar-error

ブラウザが検出したスペルミスや文法エラーのスタイリングを制御します。

ブログを読む

スペル・文法エラースタイリング

Check a speling error and an grammar error.

View Transition API

DOMの更新にアニメーションを適用するAPIです。

ブログを読む

View Transition基本デモ

  • アイテム 1
  • アイテム 2
  • アイテム 3
  • アイテム 4
  • View TransitionのON/OFFの切り替えはview-transition-namenoneに指定することで行なっています。
  • View TransitionがONの時は、アイテム番号ごとのview-transition-nameを持ちます(例: item-1)。
  • 各アイテムは、まとまったスタイルを付与するためにview-transition-class: item;を持ちます。
::view-transition-group(.item) {
  border-radius: var(--radius-md);
}
::view-transition-group(item-1) {
  background-color: var(--red-800);
}
::view-transition-image-pair(item-2) {
  background-color: var(--pink-800);
}
::view-transition-old(item-3) {
  background-color: var(--purple-800);
}
::view-transition-new(item-4) {
  background-color: var(--cyan-800);
}

©︎ 2024〜2025 k8o. All Rights Reserved.