Open7

CSS個人学習スクラップ1 - 基本知識まとめ

ピン留めされたアイテム
AnriAnri

CSS個人学習スクラップ1 - 基本知識まとめ

HTML&CSSとWebデザイン入門講座本を読了したので、CSSを実際に色々と触ってみる。
CSSの練習問題を解いた後、模写コーディングをしていく。

※スクラップテスト投稿を兼ねています

リンク集

AnriAnri

CSS記述方法

構文

セレクター名 { プロパティ: 値; }
h1 { color: red; }

セレクター・class・id 記述方法

  • class名:.で記述。複数指定可能。

  • id名:#で記述。1回のみ指定可能。

  • {親セレクター} {子セレクター}:子セレクターに装飾指定する。(同じタグやクラス名があっても親子関係以外には装飾が反映されない)

    • h3 p {}
    • .parent .child {}
    • .parent #child {}
    • 親子関係の位置間違わないように(div>a, pの配置の場合、pを装飾したいならdiv p になる。a p ではない。)
  • {セレクター1}, {セレクター2}:カンマで区切ると複数指定

    • h3,p
    • .name1, #name2
AnriAnri

プロパティ

テキストに関するプロパティ

  • text-decroration: テキストの装飾的な線の表示を設定。一括指定プロパティ。
    • text-decoration-line, color, style, thicknessの一括指定
    • text-decoration(-line): underline; /*下線を指定*/
    • tex-decoration-line: line-through; /*取り消し線を指定*/
    • リストの下に下線などを引きたい場合はlist-style-typeプロパティになる

フォントに関するプロパティ

  • font-weight: 文字の太さを指定する。defaultはnormal
    • 数値(100-900)とnormal(=400), bold(=700), bolder(親要素より相対的に1つ太くなる), lighter(親要素より相対的に1つ細くなる)が指定できる。
    • font-weight: bold; /*太字に設定*/
  • font-size: フォントの大きさを設定
    • em: 要素のfont-sizeプロパティの乗数を指定できる
    • (2emならp要素のfont-sizeの計算値の2倍。未設定時は1em=16pxと思っとけばいい。font-sizeが20pxと指定しているなら、2emは40pxになる。)
  • font-style: 通常体 (normal)、筆記体 (italic)、斜体 (oblique) を指定可能
  • color: 文字の色を変える。(font-colorとかではない)

テキスト・フォントの指定例
テキスト・フォントの指定例

<!-- html抜粋 -->
<div class="continer">
        <span class="lead">ABC</span>
        <p>でも、ラーメン食べる</p>
 </div>
/* css抜粋*/
.continer .lead {
  font-style: italic;
  color: green;
  text-decoration-line: underline;
  font-weight: bold;
  font-size: 2em;
}
.continer p {
  letter-spacing: 0.5em;
  text-decoration: line-through;
}

字間・行間のプロパティ

  • letter-spacing: 水平方向の字間を調整。0.3em, 3pxとかで指定
  • line-height: 行の高さ(縦方向)を指定。40pxとか3emとかで指定。

余談:テキスト・フォントの違い

  • テキスト:文字データ
    • テキスト(text)とは、本、文章、本文、原本などの意味を持つ英単語。 IT分野では、(他の形態と対比して)文字データのことをテキストという。 [1]
  • フォント:コンピュータ画面の表示や印刷物に使用される書体。[2]
    • 「font」は、印刷やデジタルメディアにおける文字のスタイルやデザインを指す言葉である。具体的には、文字の形状、大きさ、太さ、間隔など、文字を構成する要素全体を包括する概念である。[3]
脚注
  1. https://e-words.jp/w/テキスト.html ↩︎

  2. https://online-fstyle.com/column/『書体』と『フォント』の違いって何? ↩︎

  3. https://www.weblio.jp/content/フォント ↩︎

AnriAnri

背景・枠線に関するプロパティ

  • background-color: 背景色を指定
  • background-image: 背景画像を指定
  • border: 枠線の幅・種類・色を 一括指定。
    • border: 1px solid #999;
    • 枠線は上下左右いずれかのみも指定可能。
    • border-bottom: 下線を引く(※)
    • border-bottom: 1px solid #ccc;
  • border-style: 枠線の形式を指定(solid:実線、dotted:点線、double:2重の実線、dashed:破線など)
  • border-color: 枠線の色を指定

background, borderの指定例
background, borderの指定例

<!-- html抜粋 -->
<div class="continer">
        <span class="lead">今日こそオムライス食べる</span>
        <p class="subject">あきらめたら、そこで試合終了。</p>
        <p>オムライスはやっぱりケチャップ。</p>
    </div>
/* CSS抜粋 */
.continer .subject {
  background-color: beige;
  border-style: solid;
  border-color: #8a8a8a;
}
.continer p {
  border: 2px dashed #999;
  padding: 10px 3px 20px 4px;
}

※余談:text-decoration-lineとborder-bottomの違い

  • text-decoration: underline: テキストに下線を引く
  • border-bottom: solid: ボックスの下線を表す

text-decoration
text-decorationを指定した場合

<!-- html抜粋 -->
<div class="lead">Pythonでニューラルネットワーク</div>
<div class="content">
            Keras(ケラス)を利用する。
            こいつはTensorFlow(テンサーフロー)を利用する。(テンソルじゃないのかな?)
            ニューラルネットワークの勉強を始めると、微分・積分を使いまくる。特に微分。
            確率的勾配降下法を理解しないと駄目なようだ。
            モンテカルロ木探索など覚えることは多いです。
            活性化関数ってなんだー。
 </div>
/* css抜粋 */
.lead {
  text-decoration: underline red;
}

border-bottomを指定した場合
border-bottomを指定した場合

/* css抜粋 */
.lead {
  border-bottom: 1px solid red;
  width: 520px;
}
AnriAnri

余白に関するプロパティ

  • margin: 外側の余白を指定
    • 単位はpx, %, em, remなどで指定
    • margin-top, -left, -right, -bottomで単体箇所を指定できる
    • 上・右・下・左の順で指定できる
      • 四辺すべて同じ: margin 50px;
      • 個別に指定:margin 0 10px 20px 0;
      • 上下・左右:margin 30px 40px
      • 上・左右・下:margin 10px 20px 30px
    • 子要素に左40px, 親要素に左40pxを指定した場合は両方反映される(※2)

※2子要素・親要素のmargin指定

実行結果
実行結果(.continerに対してmargin-leftが80px適用されている)

加算というより、40px移動したあと更にその地点から40px移動するイメージが近い。

<!-- html抜粋 -->
 <div class="continer">
        <div class="lead">Pythonでニューラルネットワーク</div>
        <div class="content">
            Keras(ケラス)を利用する。
            こいつはTensorFlow(テンサーフロー)を利用する。(テンソルじゃないのかな?)
            ニューラルネットワークの勉強を始めると、微分・積分を使いまくる。特に微分。
            確率的勾配降下法を理解しないと駄目なようだ。
            モンテカルロ木探索など覚えることは多いです。
            活性化関数ってなんだー。
        </div>
    </div>
/* CSS抜粋 */
body {
  border: 3px solid gray;
}

.continer {
  border: 3px dashed brown;
  margin: 40px 0 0 40px;
}

.lead {
  border-bottom: 1px solid red;
  width: 500px;
  margin-bottom: 30px;
  font-size: 2em;
}

.content {
  border: 3px dotted orange;
  margin: 0 0 0 40px;
}
AnriAnri

疑似クラス

  • :hover : 上に乗ったら変更する。疑似クラス。
    • .continer:hover { background-color: aqua; }の形式で記述。
  • cursol: カーソルの形を指定。
    • cursol:pointer; /*カーソルを指に変更*/
AnriAnri

位置を並べる

  • display:flex: FlexBox
    • Flexコンテナー(親要素)とFlexアイテム(子要素)から成る。
    • flex-direction: 子要素の並べる順を変える (初期値は左から右に配置するrow
      • flex-direction: row-reverse; /*子要素を右から左に配置*/
      • flex-direction: column; /*子要素を上から下に配置*/
      • flex-direction: column-reverse; /*子要素を下から上に配置*/
    • justify-content: 親要素に空きがあった場合、子要素の水平方向の位置揃えを指定する。(初期値は左揃えのflex-start
      • justify-content: flex-end /*子要素を行末から右揃えに配置*/
      • justify-content: space-between /*最初と最後の子要素を両端揃え、残りを均等配置*/
      • justify-content: space-around /*子要素を両端も含めて均等配置*/
    • Flexアイテムの余白指定:gapプロパティを使う。(各アイテムに個別にmargin指定するのは面倒かつずれるので)
      • gapは元々grid(タイル型)で使われていたが、Flex Boxでも使えるようになった。
      • gap: 20px;/*縦・横で同じ余白*/
      • gap: 20px 30px;/*縦20px、横30pxの指定*/
      • 上下左右の余白に対応しているわけではない。あくまでアイテム間の余白を作るだけ。

FlexBoxの例
FlexBoxの例

<!-- html抜粋 -->
<div class="continer">
        <section id="page1">
            <div class="lead">確率的勾配降下法</div>
            <div class="content">
                勾配降下法は統計学や機械学習で多く使われています。
                特に機械学習というのは基本的に何かしらの関数を最小化(最大化)する問題を数値解析的に解くことに帰結する場合が多いです。
                なので、基本的にはひたすら微分して0となるところを探す問題です。微分して0。
                で、その微分して0となる値は何か、をプログラムで解く場合に重要になるのがこの勾配降下法です。
                幾つか勾配法にも種類がありますがここでは最急降下法、確率的勾配降下法の2つを扱います。
            </div>
        </section>
        <section id="page2">
            <div class="lead">誤差逆伝搬法</div>
            <div class="content">
                勾配降下法に基づいた各層各パラメータの更新量を、上位層側から得る値を利用した計算により得る方法である。
                従って、出力層での誤差関数等の値からパラメータの勾配降下量を計算し、入力層方向へ各層各パラメータの更新量を決める値を計算しながら逆方向へ伝搬させていく。
            </div>
        </section>
    </div>
/* CSS抜粋 */
body {
  border: 2px dotted gray;
}
.continer {
  display: flex;
  max-width: 800px;
  margin: 10px;
}
.continer #page1 {
  border: 3px solid brown;
  margin-right: 40px;
}
.continer #page2 {
  border: 3px solid orange;
}

要素の並び順を右から左にした場合
要素の並び順を右から左にした場合

/* CSS抜粋 */
body {
  border: 2px dotted gray;
}
.continer {
  display: flex;
  flex-direction: row-reverse;
  gap: 10px;
  max-width: 800px;
}
.continer #page1 {
  border: 3px solid brown;
}
.continer #page2 {
  border: 3px solid orange;
}

余談:FlexBoxを重ねる

参考記事:「いつから、z-indexがpositionだけのものだと錯覚していた?」https://qiita.com/nishihara_zari/items/b6feb6320d4a3e030a4b

アイテムを重ねた例
アイテムを重ねた例

/* css抜粋 */
body {
  border: 2px dotted gray;
}
.continer {
  display: flex;
  flex-direction: row-reverse;
  gap: 10px;
  max-width: 400px;
}
.continer #page1 {
  border: 3px solid brown;
  z-index: 1;
  margin-top: 40px;
  margin-left: -80px;
}
.continer #page2 {
  border: 3px solid orange;
  z-index: 2;
}