生涯、学習していきたい

いろいろなことを考えるのが好きです。

ドットインストールでCSS3を学ぼう#07〜#09

どきどきわくわくプログラミング学習!

ドットインストールさんの「CSS3」#07~#09を学習します。

 

f:id:ponnkichi:20180223222315p:plain

 

 #07 nth-of-typeなどを使ってみよう

#06で学んだ擬似クラスの続きです。

nth-childなどは、要素のうちの何番目なのかを指定することができましたが

そのときの子要素はすべて隣接していなければならなかったのでした。

 

今回は、隣接していなくても指定する方法を学習します。

今回用意されたhtmlはこんなかんじ。

<section>

   <h1>Title</h1>

   <p>Hello 1</p>

   <p>Hello 2</p>

   <h2>Ttle</h2> 

   <p>Hello  3</p>

   <p>Hello 4</p>

   <p>Hello 5</p>

</section>

pの間にタイトルが挟まっている感じですよね。

こうなると、nth-childで一気に指定することはできません。

そのような時に使うものは以下のとおり。

first-of-type

 css

:p first-of-type

{

background: violet;

}

としていたとしましょう。

first-of-typeで指定すると、

「すべてのp要素のうち、最初に出てくるもの」ということになるので

最初のp要素「Hello 1」だけが

背景紫になっているはずです。ブラウザで確認してみましょう。

f:id:ponnkichi:20180223115519p:plain

OK!ばっちりですね。

 

last-of-type

同じように、このように指定してみましょう。

:p last-of-type

{

background: violet;

}

全てのp要素のうち、最後のものを指定するということなので

最後のp要素、「Hello 5」の背景色が紫になっているはずです。

f:id:ponnkichi:20180223115738p:plain

はい!ばっちりです!

nth-of-type

 nth-childと同じように、何番目なのかを指定することもできます。

次のように記述してみましょう。

:p nth-of-type(3)

{

background: violet;

}

すべての要素のうち、最初から数えて3番目の背景色が紫になります。

今回の場合は「Hello 3」の背景色が紫になっているはずです。

f:id:ponnkichi:20180223120000p:plain

うん、なっていますね!

nth-last-of-type

:p nth-last-of-type(4)

{

background: violet;

}

これも、last-childと同じで

「すべてのp要素のうち、最後から数えて4番目」ということです。

p要素を最後から数えて4番目のものは「Hello 2」なので

背景色が紫になっていればOKです。

f:id:ponnkichi:20180223120226p:plain

OKですね!

 

ただ、疑問が。これ、どこで使うんだろう(白目)

あとからp要素が増えたらえらいこっちゃになる気がします。

私だけ?

 only-of-type

これは、その要素が一つだけのときに使います。

次のように指定してみましょう。

h2: only-of-type

{

background: violet;

}

 

ひとつしかない、「h2」につけてみます。

h2にあたる、2個目の「Title」の背景が紫になるはずです。

f:id:ponnkichi:20180223120501p:plain

なりました!

なるほど、このような指定方法もあるのですね。

普通にh2に指定するのとどう違うんだろう?

h2がたくさんある場合と、一つしかない場合では色々と違うのかな?

 

疑問点を残しつつも、また例のごとく「進んだらわかるだろう」とゆるーく受け止めて次に進みます。

#08 もっと擬似クラスを見てみよう

ほかの擬似クラスも見てみましょう。

not

最初に、否定の擬似クラス「not」です。

用意されているhtmlはこんな感じ。

<ul>

   <li>Hello 1</li>

   <li class="target">Hello 2</li>

   <li>Hello 3</li>

   <li>Hello 4</li>

   <li>Hello 5</li>

   <li></li>

</ul>

 Hello2だけが、ターゲットクラスになっています。

ここでは、「ターゲットがついている以外のもの」を指定してみましょう。

cssにこのように記述します。

li:not(.target)

{

background: violet;

}

 

「ターゲットがついているもの以外」の背景色を紫にします。

ブラウザを見ると、このようになっています。 

f:id:ponnkichi:20180223213316p:plain

「Hello 2」以外が紫になっていますね。

 

あれ?さっき(#07)の紫と色が違うよね?ずいぶんピンク寄りだよね?どうしてなんだろう??

まあ…いいか。(いいのか?)

empty

次は、要素の中身が空のものを指定する「empty」です。

li:empty

{

background: violet;

要素の中身が空のもの

<li></li>

のところだけ、背景色が紫になっています。

f:id:ponnkichi:20180223213652p:plain

要素の中身がないものだけ、背景色が紫になっています。

 

enabled,disabled

これらは、フォーム部品でよく使います。

enabledが有効になっている状態、

disabledが無効になっている状態を選択するためのものです。

htmlでinputテキストが用意されていました。

<form>

<p>Email:<input

type="text"

name="email"</p>

</form> 

これに対して、cssを次のように記述します。

input [type="text"]  : enabled

{

background: violet;

}

 htmlに、disabledなどの記述がないので、enabledということになります。

なので、インプットフォームの中が紫になっているはずです。

f:id:ponnkichi:20180223214444p:plain

なっています。OK!

 

ではdisabledはどうするかというと、htmlを少し変えてみましょう。

 

<form>

<p>Email:<input

type="text"

name="email"disabled</p>

</form> 

 disabledを書き足します。

このままだと、背景に色はつきません。

f:id:ponnkichi:20180223214649p:plain

真っ白ですね^皿^

disabledのときに背景色を変えたい場合には、cssに次のように記述します。

input [type="text"]  : disabled

{

background: violet;

}

 すると、背景が紫になります。

f:id:ponnkichi:20180223214444p:plain

checked

これは、チェックボックスに何かをされているときに指定をするというものです。

htmlにはこのようなチェックボックスが用意されていました。

 <form>

   <p><input type="checkbox"

   name="check" value="1"

   id="check"><label

   for="check">check?</label></p>

</form>

 ええと…。

最近htmlの復習もしているのに、ぱっと見でどんな感じかわからない私がここにおりますが

気にせず(気にしろ)進めましょう。

 

これにチェックされているときに色がつくようにしましょう。

cssに次のように記述します。

 

input [type="checkbox"]  : checked

{

background: violet;

}

 

ただ…、チェックボックスの背景色が変わっても見づらいですよね。

なので、チェックボックスの隣にあるラベル(<label>)の背景色を変えてみましょう。

どうするかというと、

隣接するセレクタを指定すればいいので

input [type="checkbox"]  : checked + label

{

background: violet;

}

+で繋ぐのでしたね。 

これは、「css入門編#04」で学習しました。復習復習。

こうすると、チェックボックスのとなりの背景色が紫になっているはずです。

ブラウザを見てみましょう。

f:id:ponnkichi:20180223215803p:plain

チェックボックスにチェックをすると、隣のラベル「Check?」の背景色が紫になりました。

たくさんの擬似クラスがあって覚えるのはとても大変ですが、役に立ちそうですね。

#09 border-radiusを使ってみよう

次は、角丸をつける方法です。

画像や領域の角がまるくなっているものです。

これはすぐに役立ちそう。楽しみですね!

今回htmlに用意されたのは空っぽのdiv。

<div></div> 

 とてもすがすがしいdivだけっぷりです。

これを、cssでこのようにしています。

div{

width: 200px;

heigtht: 200px; 

background: skyblue

}

 幅が200px、高さが200px、背景色がスカイブルーの四角になっています。

f:id:ponnkichi:20180223220515p:plain

こんな感じの四角ですね。これの角を丸くしていきましょう。

それには、border-radiusを使います。

div{

width: 200px;

heigtht: 200px; 

background: skyblue

border-radius: 30px;

}

 このようにすると、

f:id:ponnkichi:20180223220641p:plain

半径30pxの円で、角が丸くなるのです。楽しいね!

 

ちなみに楕円にするときには、水平方向と垂直方向の間を/で区切ります。

div{

width: 200px;

heigtht: 200px; 

background: skyblue

border-radius: 30px  / 15px;

}

 こうすると、水平方向は半径30px、垂直方向には10pxの楕円になります。

f:id:ponnkichi:20180223220918p:plain

おもしろい!

どの角を丸めるのかを指定することもできます。たとえば右下の角を丸めたいときには

div{

width: 200px;

heigtht: 200px; 

background: skyblue

border-bottom-right-radius: 30px ;

}

 このように書くと、

f:id:ponnkichi:20180223221110p:plain

右下だけが丸まります。

 

もう一つの方法としては、padding やmargin のように、数値を複数指定することで角丸にすることもできます。

 

 

div{

width: 200px;

heigtht: 200px; 

background: skyblue

border-radius: 30px;

}

 このように、数値が一つだと全ての角が丸になります。

f:id:ponnkichi:20180223220641p:plain

2つ数値を入れた場合

border-radius: 10px 30px;

などとした場合には、1つ目の数値が左上と右下、

2つ目の数値が右上と左下になります。

 

3つ数値を入れた場合

border-radius: 10px 20px 30px; 

 1つ目が左上

2つ目が右上と左下

3つ目が右下

という順番になります。

 

4つ数値を入れた場合

border-radius: 10px 20px 30px;  

 これは、時計回りに

左上、右上、右下、左下という順番になります。

 

 

例を見てみましょう。

border-radius: 10px 20px 30px;  

 この場合には、

f:id:ponnkichi:20180223221628p:plain

左上が10px、右上と左下が20px、右下が30pxの円になっています。

 

また、丸める単位もpxだけでなくemや%で表すこともできます。

例えば、次のようにしてみましょう。

border-radius: 50%;  

 50%にするとどうなるかというと、

f:id:ponnkichi:20180223221825p:plain

正円になります!

50%は半径ということになりますものね。

 

ちなみに、背景に画像を入れると、

backgroud: skyblue url('sheep.jpg') ;

border-radius: 50%; 

 (今回も羊の画像が用意されていました)

このようになりました!

f:id:ponnkichi:20180223222103p:plain

こ、これはアイコン!

よく見る、丸いアイコンのようになっていますね。

このように作られていたのかな、と思うと感慨深いですね。

 

内容がだんだんむずかしくなってきましたが、がんばりたいと思います。