​​Git​コマンドライン

Thumbnail of post image 102

git diff –color-moved を付けると、場所を移しただけの行は赤と緑とは別の色になり、書き換えた行だけが赤と緑で残ります。リファクタリングで関数を動かしたコミットをコードレビューするときに、本当に変わった行 ...

​​React​Picture-in-Picture API,Playwright,TypeScript,カスタムフック

Thumbnail of post image 102

動画を見ながら別のタブや資料を開けるように、動画だけを画面の隅の小さな窓(ピクチャーインピクチャー)で再生するボタンを作りました。小さい窓の×で閉じたときに表示がずれない状態の持ち方と、動画のコンポーネントが消えても窓だけ残る問題の直 ...

​​React​flushSync,Playwright,TypeScript,useEffect,useState

Thumbnail of post image 180

React の useState で setCount を呼んだ直後に console.log で値を見ると、更新前の値が出ます。デバッグ中に「state が反映されない」と迷ったときのために、その理由と、新しい値をログで確かめる方法 ...

​​CSS​HTML,JavaScript,Playwright

Thumbnail of post image 105

CSS の z-index を大きくしても要素が前に出ない理由と、原因になっている祖先の見つけ方、isolation: isolate で重なりの範囲を区切る使い方を、Chromium で確かめました。区切った範囲からメニューが出られ ...

​​React​ESLint,HTML,TypeScript,フォーム

Thumbnail of post image 165

ログインフォームの「パスワードを表示」ボタンのように、送信しないボタンを押すとページが再読み込みされる理由です。HTMLではtypeのないbuttonが送信ボタンになり、Reactはtypeを補わないためです。type=” ...

​​CSS​HTML,Playwright

Thumbnail of post image 008

ボタンに commandfor と command を書くと、JavaScript なしで dialog をモーダルで開いて閉じられます。選んだボタンの値の受け取り方、背景のクリックで閉じる closedby、form の中で開かない ...

​​CSS​JavaScript,Playwright,アクセシビリティ

Thumbnail of post image 125

アコーディオンや「続きを読む」の開閉で、height を 0 から auto へ動かすには interpolate-size: allow-keywords を書きます。書く場所、効かない組み合わせ、Firefox や Safari ...

​​CSS​HTML,Playwright,Popover API

Thumbnail of post image 068

マウスを乗せると説明が出るツールチップを、JavaScript なしで作る方法です。ボタンやリンクに interestfor 属性を付けると、乗せたときやフォーカスしたときにポップオーバーが開きます。待ち時間の変え方と popover ...

​​React​ESLint,Playwright,StrictMode,TypeScript,useState

Thumbnail of post image 143

React の state の配列に push したりオブジェクトに代入したりすると、ToDo リストへの追加などで画面が変わりません。理由と直し方に加え、書き換えを Strict Mode・readonly の型・ESLint で見 ...

​​CSS​HTML,Playwright,アクセシビリティ

Thumbnail of post image 135

CSS の scroll-target-group を目次のリストに書くと、いま読んでいる節のリンクを :target-current で目立たせられます。強調が切り替わる位置や、入れ子の目次での注意点を Chromium で確かめま ...

​​React​ESLint,TypeScript,useState,フォーム

Thumbnail of post image 149

Reactのフォームで、入力欄に1文字打つとフォーカスが外れ、続けて入力できないときの原因と直し方です。コンポーネントの中で別のコンポーネントを定義すると、描画のたびに入力欄が作り直されます。外に出してpropsで渡す直し方と、ESL ...

​​CSS​CSS Grid,Flexbox,Playwright

Thumbnail of post image 068

CSS の column-rule と row-rule で、グリッドやフレックスのアイテムの間(gap)に区切り線を引けます。線が配置に影響しないこと、結合したセルや空いたセルでの線の出方、線の端を短くする方法を Chromium ...

​​CSS​HTML,Playwright,アクセシビリティ

Thumbnail of post image 106

記事一覧のカードのように角を丸くした枠に画像を入れると、画像の角が四角くはみ出します。親に overflow: hidden か clip を付けると角の丸みで切れます。2つの値で結果が変わる場面を、Chromium で確かめました。 ...

​​CSS​Chromium,JavaScript,Playwright

Thumbnail of post image 178

CSS の will-change は、これから動く要素をブラウザーに前もって伝えるヒントです。付けるとよい場面と、付けすぎたときのメモリーの増え方や、z-index・position: fixed への副作用を Chromium で ...

​​CSS​HTML,Playwright

Thumbnail of post image 123

入力欄の文字カーソル(キャレット)の色は caret-color で、点滅は caret-animation で変えられます。点滅の止め方、@keyframes で動かす書き方、動きを減らす設定への対応を Chromium で確かめま ...

​​Bun​TypeScript

Thumbnail of post image 145

開発中のサーバーを保存のたびに自動で動かし直したいとき、Bun には –watch と –hot があります。–watch はプログラムを最初から実行し直し、–hot はプロセスを残した ...

​​CSS​HTML,Playwright,アクセシビリティ

Thumbnail of post image 039

白い文字に mix-blend-mode: difference を指定すると、文字の色が後ろの色を反転した色になり、白の上では黒、黒の上では白で表示されます。固定ヘッダーでの指定の場所、効かなくなる条件、灰色の背景で読めなくなる点を ...

​​React​JavaScript,JSX,Playwright,TypeScript

Thumbnail of post image 040

保存ボタンを押していないのに、画面を開いただけで保存の処理やログが動くのは、onClick={handleSave()} と書いているためです。JSX の {} の中は描画のたびにその場で実行されます。変換後のコードと呼ばれた回数で確 ...

​​CSS​HTML,Playwright

Thumbnail of post image 153

英文に hyphens: auto を付け、lang 属性で英語だと伝えると、ブラウザーがハイフネーションの辞書をもとに単語を分け、行末にハイフンを入れて折り返します。日本語のページでの書き方、先頭が大文字の単語、ソフトハイフン、UR ...

​​Lighthouse​HTML,アクセシビリティ,トラブルシュート

Thumbnail of post image 072

Lighthouse で「Links do not have a discernible name」と出たときの直し方です。ロゴ画像やSNS・RSSのアイコンだけのリンクに alt や aria-label などで名前を付け、点数が8 ...

​​CSS​HTML,Playwright

Thumbnail of post image 093

clip-path に shape() を書くと、波やアーチのような曲線を含む形に要素を切り抜けます。curve・smooth・arc の書き方、% と calc() で要素の大きさに合わせる方法、path() との違い、アニメーショ ...

​​Core Web Vitals​Chrome,HTML,Lighthouse,Playwright,web-vitals

Thumbnail of post image 109

ページ上部の大きな画像に loading=”lazy”(画像の遅延読み込み)を付けると、Core Web Vitals の LCP が遅れます。検証したページでは、外すだけで Lighthouse の LCP ...

​​React​TanStack Router,TypeScript

Thumbnail of post image 172

TanStack Router でルートを定義し、ルーターを Register に登録すると、Link の to・params・search の間違いが tsc で止まります。わざと6種類の間違いを書いたときのエラーと、ブラウザで U ...

​​Playwright​E2Eテスト,TypeScript

Thumbnail of post image 041

E2E テストを一から手で書かずに、フォームへの入力やボタンのクリックを実際に操作して記録したい。Playwright の codegen で操作からテストのコードを作り、結果の確認(アサーション)を足して実行するまでを、実際に生成さ ...

​​React​Intl,JavaScript,Playwright,TypeScript

Thumbnail of post image 091

Intl.Locale の getWeekInfo() で地域ごとの週の始まりと週末の曜日を調べ、React の月カレンダーの並びと色分けに使いました。曜日の番号の直し方と、古いブラウザへの備えも確かめています。

​​Git​Node.js,シェルスクリプト,テスト

Thumbnail of post image 143

テストが通らないコードを、うっかりリモートに push しないようにするには、Git の pre-push フックを使います。push の前にテストを自動で実行し、失敗したら push を止めるフックの書き方と、作業ツリーではなく p ...

​​React​Lottie,lottie-web,TypeScript

Thumbnail of post image 181

lottie-react 3 で Lottie の JSON を React に表示する方法です。import と URL からの読み込み、大きさの決め方、ボタンでの再生操作、prefers-reduced-motion のときの動き ...

​​Git​gitignore,コマンドライン

Thumbnail of post image 039

ログやデータ用のフォルダーは無視しつつ、空のフォルダーを残す .gitkeep や説明用の README だけは Git で管理したいときの .gitignore の書き方です。「!」が効かない logs/と、効く logs/* の違 ...

​​React​Motion,TypeScript,アニメーション

Thumbnail of post image 119

Motion(旧 Framer Motion)の AnimatePresence と exit で、条件付きで表示する要素に消えるときのアニメーションを付ける方法を、key の付け方や mode の違いとあわせて示します。

​​Git​コマンドライン

Thumbnail of post image 014

git merge は、何も付けないと早送りできるときはマージコミットを作らず、–no-ff なら必ず作り、–ff-only なら早送りできないときに止まります。作業ブランチを main に取り込んだ後の履歴の ...