nlog

とめどなく流れるよだれ

CSSの基本、構文と意味をMDNから学び直す

構文

プロパティと値のセットが宣言、宣言を中括弧({、})で包んだものが宣言ブロック、スタイルを当てる場所を指定するのがセレクター、セレクターと宣言ブロックを合わせて規則セット(規則)、という。

@-規則

@documentに期待。

inheritance

非継承プロパティの説明にあるborderの例はなるほど。ショートハンド使ったときに起こり得そうなミスなので気をつけよ。

一括指定プロパティ

一括指定が対応する個別プロパティの内、省略したプロパティ全てに初期値が設定されます

意図せず上書きする、なんてことが起こりがち。

fontプロパティのfont-sizeとline-heightのように、中には構文が複雑(覚えづらい)ものもあるので、できればショートハンドを使った指定は避けたい。

詳細度

:notは疑似クラスとして詳細度はカウントされないけど、:notの中で指定されたセレクターは詳細度としてカウントされる。

:notは便利な使い方もあるけれど、コードを見ても何をやってるか瞬時に判断しにくいという問題がある。そもそもあまり使われないかもしれない。

また、CSSの詳細度はあくまで型ベースで決まる点を覚えておきたい。#fooと[id="foo"]は同じ場所をあらわすセレクターだが、#fooがIDセレクターなのでこちらのほうが優先される。

値の定義構文

「構成値の組み合わせ」を理解しておくと、MDNなど、CSSの仕様を読むときに役立つ。

知らないCSSプロパティ・セレクターを知る、その6

https://developer.mozilla.org/ja/docs/Web/CSS/Reference

今日はアルファベット順でT〜Zまで。これで終わり。

  • tab-size ... タブ文字(スペース)のサイズを決める
  • text-align-last ... ブロック要素の最後の行の配置を指定する
  • text-combine-upright ... 1文字分の空間に挿入する複数文字の組み合わせを指定する。この処理は縦中横と呼ばれるもの
  • text-decoration-line ... 要素にほどこす線の種類(配置)を指定する。空白で値を区切って、複数の線を指定できる
  • text-decoration-color ... text-decoration-lineの色を決める
  • text-decoration-style ... text-decoration-lineの線のスタイルを決める
  • text-emphasis-position ... 圏点の配置を指定する
  • text-emphasis-color ... 圏点の色を指定する
  • text-emphasis-style ... 圏点のスタイルを指定する
  • text-orientation ... 行内のテキストの向きを指定する
  • text-transform ... 要素の大文字・小文字表記を指定する
  • text-underline-position ... text-decorationプロパティにおけるunderlinで指定される下線の位置を指定する
  • transform-box ... transformtransform-originプロパティに関連したレイアウトボックスを指定する
  • transform-style ... 要素の子要素が3D空間に配置するか、平らにされて要素の面上に配置するかを指定する
  • transition-property ... トランジション効果を与えるプロパティ名を指定する
  • unicode-bidi ... 説明読んでもわからん。使いそうにない感じはわかる
  • widows ... 印刷用。新しいページの始めに必ず残す最小行数を指定する
  • will-change ... ブラウザに要素上で予測される変更の種類についてヒントを出す

知らないCSSプロパティ・セレクターを知る、その5

https://developer.mozilla.org/ja/docs/Web/CSS/Reference

今日はアルファベット順でRとS。

  • radial-gradient ... 原点を要素の中心として、そこから放射状に延びるグラデーションをつくる
  • repeat() ... CSS Grid Layoutで使うプロパティ。トラックリスト内での繰り返し短い記述で指定できる
  • repeating-linear-gradient ... 自動的に繰り返しを備えた線形グラデーション
  • repeating-radial-gradient ... 自動的に繰り返しを備えた放射状グラデーション
  • resize ... textarea 要素にデフォルトでついてるやつ。ユーザーが要素のリサイズをできるようにする
  • ruby-align ... ベーステキストに対してルビの配置と配分を指定。
  • ruby-position ... ベーステキストに対してルビの表示位置を指定。ルビをそれぞれの文字の間に配置する inter-character 値はまだサポートしているブラウザがない
  • scroll-snap-type ... スクロールコンテナの中にスナップ点(つまり複数のブロック要素?)がある場合、スクロールしたときにこのスナップ点の移動の振る舞い方を決める。scroll-snap-type: mandatory を指定した例をFirefoxで見ると、まるでスライドのページ送りのように振る舞ってるのが確認できる

知らないCSSプロパティ・セレクターを知る、その4

https://developer.mozilla.org/ja/docs/Web/CSS/Reference

昨日はアルファベット順でNまで見たから、今日はOから。Qまで確認した。

  • orphans ... 印刷用。改ページされる際に残す最低行数を指定する
  • overflow-wrap ... 自動生成される文字列のように、単語の途中で改行をいれなければ枠の中に収まらないものに対して、適当なところで改行をいれるかどうか指定する
  • page-break-inside ... 印刷用。指定した要素の中で改ページおこなうか否かを指定する
  • pc ... 長さの単位。1パイカ
  • perspective ... 3D配置された要素に遠近感を与えるプロパティ。ほとんど使ったことないからわからんけど、要素に奥行きをもたせるようなプロパティかな
  • q ... 長さの単位。1/4ミリメートル
  • quotes ... 引用符の出し方を指定する

知らないCSSプロパティ・セレクターを知る、その3

https://developer.mozilla.org/ja/docs/Web/CSS/Reference

昨日はアルファベット順でFまで見たから、今日はEから。Nまで確認した。

  • image-orientation ... 画像の向きを回転させる
  • image-rendering ... 拡大・縮小される画像の描画アルゴリズムのヒントをブラウザに伝える。デモを見てると、image-rendering: pixelatedの指定が拡大・縮小したときのぼやけ除去に役立ちそう
  • isolation ... 要素が新しいスタッキングコンテキストを生成すべきかどうかを定義するって書いてあるけど、読んでもよくわからん。background-blend-modeと一緒に使うと有効らしいけど
  • mix-blend-mode ... このプロパティが指定された要素とその下の要素の背景色のブレンド方法を指定する
  • minmax() ... Grid Layoutにおいて、トラック幅の最小値と最大値を指定する
  • ms ... ミリ秒をあわらす単位
  • @namespace ... スタイルシートで使用するXML名前空間を定義する

仮に値 0 に対してすべての単位が同じ時間を表すとしても、これは <length> ではないので、単位を省略してはいけません。0 は無効で、0s や 0ms を表しません。

Firefoxではこの記事にある通り、このデータ型で単位を省略した 0 は無効値になります。その他のブラウザには、0s(または 0ms )と解釈し、計算値に反映するものがあります。

https://developer.mozilla.org/ja/docs/Web/CSS/time#ms に書かれていた文章。アニメーションなんかで時間に関する値を指定するときは単位を省略せずに書こう。

align-items: centerを指定すると小数点以下はどうなるか

FlexboxとGrid Layoutで align-items: center を指定したときの表示を確認した。16pxのブロックに1pxの線を垂直中央配置したとき、どうなるか。IE11とEdgeはVirtualBoxを使った仮想環境で確認した。

結論、使うプロパティとブラウザによって結果が異なった。Flexboxを使うと小数点まで考慮されずに配置が決定されたが、上下にとる数値はブラウザによって違った。Grid Layoutを使うとSafariFirefoxでは小数点まで考慮されたものの、Chromeでは考慮されなかった(IE11とEdgeは確認できなかった)。

望ましいのは小数点まで考慮して配置が決定されることだと思う。

Flexbox

ちなみに border-top の代わりに height を使っても結果は同じ

Grid Layout

余談

grid-template-columns の代わりは -ms-grid-columns 。最後に「s」いるで。

余談2

結果は予想通り。このままでいいと思う。

知らないCSSプロパティ・セレクターを知る、その2

昨日の続き。CSSの知らないことを知るっていう。

https://developer.mozilla.org/ja/docs/Web/CSS/Reference

昨日はアルファベット順でCまで見たから、今日はDから。

  • @font-face ... Webフォントを指定する
  • font-feature-settings ... OpenTypeフォントの先進的なタイポグラフィの機能を制御する
  • font-kerning ... カーニングの使用を制御する
  • font-language-override ... フォントが持つ言語固有グリフ(たとえばfiのリガチャー)の使用を制御する
  • font-size-adjust ... font-size に掛け合わせる値を指定することで、フォントの小文字の高さを指定する
  • font-stretch ... 提供されているフォントフェイスの中から、幅の狭い〜広いフォントを選ぶ
  • font-synthesis ... ボールドまたはイタリック体がないフォントに対して、ブラウザが合成してよいか制御する
  • font-variant ... font-variant から始まるいろんなプロパティのショートハンド

フォントまわりのことが全然把握できてない。