1. ビューポート内のコンテンツの幅を制限する
body {
max-width: clamp(320px, 90%, 1000px);
margin: auto; /* より良いエクスペリエンスのための追加分 */
}
この1行のCSSを追加すると、コンテンツのサイズが縮小され、ビューポートの90%を占めるようになり、幅が320pxから1000pxの間に制限される(最小幅と最大幅は適宜変更)。
2. テキストのサイズを大きくする
body {
font-size: 1.25rem;
}
ブラウザのデフォルトのフォントサイズである16pxは意外と小さい?
3. 行間のスペースを広げる
body {
line-height: 1.5;
}
読みやすさを改善するもう一つの方法は、段落とコンテンツの行間を広げることである。これはline-heightプロパティで簡単に実現できる。
4. 画像のサイズを制限する
img {
max-width: 100%;
}
画像は占めるスペースとほぼ同じサイズにする必要があるが、場合によっては画像が長くなってしまい、コンテンツがずれて水平スクロールが発生してしまうことがある。
これを避ける方法の一つは、画像の最大幅を100%に設定することである。これは完全な解決方法ではない(マージンやパディングが幅に影響する可能性がある)が、ほとんどの場合にうまく機能する。
5. コンテンツ内のテキストの幅を制限する
p {
max-width: 65ch;
}
テキストのブロックやスペースの川を避けるもう一つの方法は、1行の文字の幅を制限させることである。
以前は60chの値が効果的だったが、別の値を使用して、ニーズに合わせて最大幅を調整することができる。
6. 見出しをよりバランスよくする
h1, h2, h3, h4, h5, h6 {
text-wrap: balance;
}
見出しはWeb構造の重要な要素だが、サイズが大きくコンテンツが短いため、見た目が奇妙になることがある。特に見出しが2行以上になる場合はなおさらである。解決方法としてはtext-wrapで見出しのバランスをよくすることである。
balance値はtext-wrapプロパティの一般的な値のようだが、唯一の値ではない。pretty値で余分な語句を最後の行に移動したりもできる。しかし、prettyはまだ広くサポートされていない。
7. ページスタイルに合わせたフォームのカラー
body {
accent-color: #080; /* 好きなカラーに変更する */
}
これまではフォームコントロールをCSSで設定することはできず、ブラウザの表示に頼らざるを得なかったが、accent-colorで色を変更することができるようになった。
ブラウザ対応状況(accent-color)
8. テーブルの表を分かりやすくする
:is(tbody, table) > tr:nth-child(odd) {
background: #0001; /* ダークテーマなら#fff1がお勧め */
}
tableのデータを整理して読みやすくするのに役立つのが、暗い行と明るい行を交互に並べたゼブラテーブルである。
この1行のCSSで、ゼブラテーブルは簡単に実現できる。セレクタにtbodyやtableを考慮することなく、trだけに簡略化することも可能だが、そうするとテーブルのヘッダにも適用されることになるので注意が必要である。
9. テーブルのセルとヘッダのスペース
td, th {
padding: 0.5em; /* または0.5em 1em、または0以外の任意の値 */
}
テーブルをよりアクセシブルで読みやすくするための最後の変更点は、テーブルのセルとヘッダにパディングを追加して、コンテンツのスペースをすこし空けることである。ただし、不必要なスクロールや空白スペースが多くなるのを避けるため、やりすぎには気をつけること。
10. アニメーションと動きを減らす
@media (prefers-reduced-motion) {
*, *::before, *::after {
animation-duration: 0s !important;
transition: none !important; /* より良いエクスペリエンスのための追加分 */
scroll-behavior: auto !important; /* より良いエクスペリエンスのための追加分 */
}
}
このCSSはprefers-reduced-motionのメディアクエリ内に設定することで、動きを少なくしたいという人の選択を尊重したものである。このアプローチはすべての動きを削除するためやや過激だが、必ずしもすべてのユーザーの意図どおりではない可能性がある。つまり、「動きを減らす」のであって、「動きをなくす」ではない。適切であれば、ケースバイケースで動きを維持することもできる。