CSS(Cascading Style Sheets、カスケーディング・スタイル・シート)
HTML文書の見た目の設定
セレクタ{プロパティ名:値;}
<html> <head> </head> <body> <p>初めてのCSS</p> </body> </html>
1.headタグの中のstyleタグの中に記述 <head> <style> p{color:green;} </style> </head> 2.style属性として直接記述 <p style="color:green;">初めてのCSS</p> 3.外部ファイルとして作成しリンクさせる style.cssファイルを作成し p{color:green;} と記述 HTMLのheadタグ内に <link rel="stylesheet" href="style.css"> と記述
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>セレクタとプロパティ</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>初めてのCSS</h1> <p id="main">1行目</p> <p class="spec">2行目</p> <p class="spec">3行目</p> </body> </html>
*{ color:gray;} h1{ color:maroon;} p{color:green;} #main{ color:orange;} .spec{ color:skyblue;}
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>セレクタの書き方いろいろ</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>セレクタの書き方いろいろ</h1> <div> <p>pのみ</p> <p class="attention">クラス付きp</p> <p><span class="attention">pの中のクラス付きspan</span></p> <span>spanのみ</span> </div> </body> </html>
h1,p{ color:navy;} /* 同じスタイルを適用 */ div span{ color:orange;} /* divの下(内側)の階層にあるspan */ div > span{ color:violet;} /* divの直下にあるspan */ p + p{ color:skyblue;} /* pの次にあるp */ p.attention{ color:red;} /* attentionクラスの付いているp */
属性の有無や特定の値を持つ属性でスタイルを適用
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>属性セレクタ</title> <link rel="stylesheet" href="style.css"> </head> <body> <p> <a href="http://google.com">google</a> </p> <p> <a href="http://yahoo.co.jp" title="yahoo" class="link search">Yahoo</a> </p> </body> </html>
a[title]{ color:lime;} /* title属性を持つa */ a[href="http://google.com"]{ color: orange;} /* href属性が"http://google.com"であるa */ a[class~="search"]{ color:skyblue;} /* class属性にsearchが含まれているa */
要素が特定の状態にある場合
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>擬似クラス</title> <link rel="stylesheet" href="style.css"> </head> <body> <ul> <li>項目1</li> <li>項目2</li> <li>項目3</li> </ul> <p><a href="http://www.msn.com">MSN</a></p> <p><a href="http://www.disney.co.jp/">Disney</a></p> </body> </html>
ul li:first-child{ color:violet;} /* 最初のul要素にだけ適用 */ a:link{ color:lime;} /* 未訪問のリンク */ a:visited{ color:lightgray;} /* 訪問済みのリンク */ a:hover{ color:red;}/* マウスが乗ったとき */ a:active{ color:yellow;} /* リンクをクリックしたとき */
ある要素の一部を指定するとき
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>擬似要素</title> <link rel="stylesheet" href="style.css"> </head> <body> <p>親譲りの無鉄砲で小供の時から損ばかりしている。 小学校に居る時分学校の二階から飛び降りて一週間ほど 腰を抜かした事がある。なぜそんな無闇をしたと聞く人が あるかも知れぬ。別段深い理由でもない。新築の二階から 首を出していたら、同級生の一人が冗談に、いくら威張っ ても、そこから飛び降りる事は出来まい。弱虫やーい。と 囃したからである。小使に負ぶさって帰って来た時、おや じが大きな眼をして二階ぐらいから飛び降りて腰を抜かす 奴があるかと云ったから、この次は抜かさずに飛んで見せ ますと答えた。(青空文庫より)</p> </body> </html>
p:first-line{ color:green;} /* 最初の1行にだけ適用 */ p:first-letter{font-size:2em;} /* 最初の1文字にだけ適用 */ p:before{ content:">>>"; } p:after{ content:""; }
セレクタの優先度を表す
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>セレクタの詳細度</title> <link rel="stylesheet" href="style.css"> </head> <body> <a href="http://www.google.com" id="site" class="link search">Google</a> </body> </html>
要素のみ 0, 0, 0, 1 a{color: navy;} 属性を持った方が優先 0, 0, 1. 0 a.link{color:red;} 同じ詳細度なら後で書いた方が優先 a.search{ ccolor:} id持つ方が優先 0, 1, 0, 0 a#site{ color:pink;} 直接style属性を持つ物が最優先 1, 0, 0, 0 style="green"
大きさの指定
色の指定
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>プロパティの値(単位)</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>Title</h1> <h2>Sub Title</h2> </body> </html>
body{ font-size:16px;} h1{ font-size:2em;} h2{ font-size:150%;} /* 下記いずれも同じ結果となる */ h1{ color:blue;} h1{ color:#00f;} h1{ color:#0000ff;} h1{ color:rgb(0, 0, 255);} h1{ color:rgb(0%, 0%, 100%);}
ある要素がブラウザで表示された時に
こういった領域ができる
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ボックスモデル</title> <link rel="stylesheet" href="style.css"> </head> <body> <div>Elemen1</div> </body> </html>
div{ background: lightgrey; width:100px; height:100px; } /* %で指定すると */ div{ width:50%; heighit:50%; } /* しかしこのままでは思った通りに動かない heightに関しては親要素の高さを明示的に示す必要 */ html, body{ height: 100%; }
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>境界線</title> <link rel="stylesheet" href="style.css"> </head> <body> <div>Elemen1</div> </body> </html>
div{ background: lightgrey; border-color:red; border-width:3px; border-style:dotted; } /* あるいはボーダーに関するプロパティをまとめて設定も可 */ div{ border: 3px dotted red; } /* 部分的な設定 */ div{ border-bottom: 3px dotted red; }
パディングの設定にはいくつかの方法がある
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>padding</title> <link rel="stylesheet" href="style.css"> </head> <body> <div>親譲りの無鉄砲で小供の時から損ばかりしている。 小学校に居る時分学校の二階から飛び降りて一週間ほど 腰を抜かした事がある。なぜそんな無闇をしたと聞く人が あるかも知れぬ。別段深い理由でもない。新築の二階から 首を出していたら、同級生の一人が冗談に、いくら威張っ ても、そこから飛び降りる事は出来まい。弱虫やーい。と 囃したからである。小使に負ぶさって帰って来た時、おや じが大きな眼をして二階ぐらいから飛び降りて腰を抜かす 奴があるかと云ったから、この次は抜かさずに飛んで見せ ますと答えた。(青空文庫より)</div> </body> </html>
/* それぞれに設定する場合 */ div{ padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; } /*値が1つの場合上下左右同じ値になる*/ padding:10px;} /* 値が2つの場合 上下 / 左右の指定となる */ div{ padding:10px 30px;} /* 値が3つの場合 上 / 左右/ 下の指定となる */ div{ padding:10px 20px 30px;} /* 値が4つの場合上から時計回りの指定になる 上 / 右 / 下 / 左*/ div{ padding:10px 20px 30px 40px;}
marginの指定方法はpaddingと同じ
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>margin</title> <link rel="stylesheet" href="style.css"> </head> <body> <div id="box1"> 親譲りの無鉄砲で小供の時から損ばかりしている。 小学校に居る時分 学校の二階から飛び降りて 一週間ほど腰を抜かした事がある。なぜそんな 無闇をしたと聞く人があるかも知れぬ。別段深い 理由でもない。新築の二階から首を出していたら、 同級生の一人が冗談に、いくら威張っても、そこ から飛び降りる事は出来まい。弱虫やーい。と囃した からである。小使に負ぶさって帰って来た時、 おやじが大きな眼をて二階ぐらいから飛び降りて 腰を抜かす奴があるかと云ったから、この次は抜 かさずに飛んで見せますと答えた。(青空文庫より) </div> <div id="box2"> 親譲りの無鉄砲で小供の時から損ばかりしている。 小学校に居る時分 学校の二階から飛び降りて 一週間ほど腰を抜かした事がある。なぜそんな 無闇をしたと聞く人があるかも知れぬ。別段深い 理由でもない。新築の二階から首を出していたら、 同級生の一人が冗談に、いくら威張っても、そこ から飛び降りる事は出来まい。弱虫やーい。と囃した からである。小使に負ぶさって帰って来た時、 おやじが大きな眼をて二階ぐらいから飛び降りて 腰を抜かす奴があるかと云ったから、この次は抜 かさずに飛んで見せますと答えた。(青空文庫より) </div> </body> </html>
/* それぞれに設定する場合 */ div{ margin-top: 10px; margin-right: 10px; margin-bottom: 10px; margin-left: 10px; } /*値が1つの場合上下左右同じ値になる*/ margin:10px;} /* 値が2つの場合 上下 / 左右の指定となる */ div{ margin:10px 30px;} /* 値が3つの場合 上 / 左右/ 下の指定となる */ div{ margin:10px 20px 30px;} /* 値が4つの場合上から時計回りの指定になる 上 / 右 / 下 / 左*/ div{ margin:10px 20px 30px 40px;} div#box1{ background: beige; margin: 10px 20px 30px; } div#box2{ background: lavender ; } /* マージンの相殺とは */ /* #box2にマージンを付けた場合3 0+20=50pxになりそうだが… */ div#box1{ background: beige; margin: 10px 20px 30px; } div#box2{ background: lavender ; margin: 20px; } /* 上下にブロックボックスが並んだ場合、 その間の margin は結合されて、 大きな方の margin になる */
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>文字に関するプロパティ</title> <link rel="stylesheet" href="style.css"> </head> <body> <p>文字スタイル</p> </body> </html>
/* 文字周りのプロパティ */ /* colot: blue; font-size: 14px; font-family: Arial, Helvetica; font-weight: bold / normal font-style: italic; text-align: left / center / right; text-decoration: underline / line-through / none; */ p{ color: orange; font-size: 24px; font-family: Roman; font-weight:bold; text-align: center; text-decoration line-through; }
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>リストのスタイルを変更する</title> <link rel="stylesheet" href="style.css"> </head> <body> <ul> <li>項目1</li> <li>項目2</li> <li>項目3</li> </ul> </body> </html>
/* list-style-type: disc / circle / square / decimal / lower-alpha; list-style-image: list-style-position: inside / outside; list-style で一括設定が可能 */ ul{ list-style: inside secimal; }
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>背景スタイル</title> <link rel="stylesheet" href="style.css"> </head> <body> <p>この文章はダミーです。文字の大きさ、 量、字間、行間等を確認するために入れています。</p> <p>この文章はダミーです。文字の大きさ、 量、字間、行間等を確認するために入れています。</p> <p>この文章はダミーです。文字の大きさ、 量、字間、行間等を確認するために入れています。</p> <p>この文章はダミーです。文字の大きさ、 量、字間、行間等を確認するために入れています。</p> <p>この文章はダミーです。文字の大きさ、 量、字間、行間等を確認するために入れています。</p> </body> </html>
body { /* background-color: silver; background-image: url('bg2.png'); background-repeat: no-repeat; background-repeat: repeat-x; background-position: 10px 10px; background-position: top center; background-attachment: scroll; background-attachment: fixed; */ background: url('bg2.png') no-repeat fixed; }
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>display</title> <link rel="stylesheet" href="default.css"> </head> <body> <h1>hello</h1> <p>world</p> <span>wow!</span> <a href="">link</a> </body> </html>
/* display: - block - inline - list-item - inline-block - none */ h1, p, span, a { border: 1px solid #ddd; } h1, p { width: 120px; /*display: inline;*/ display: inline-block; } span { display: none; }
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>display:table</title> <link rel="stylesheet" href="style.css"> </head> <body> <!-- <div class="container"> <div class="box gray"> Hello Hello Hello Hello Hello Hello </div> <div class="box silver"> Hello Hello Hello </div> <div class="box orange"> Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello </div> </div> --> <div class="container"> <div class="row"> <div class="box gray"> Hello Hello Hello Hello Hello Hello </div> <div class="box silver"> Hello Hello Hello </div> </div> <div class="row"> <div class="box orange"> Hello Hello Hello Hello Hello Hello </div> <div class="box gray"> Hello Hello Hello </div> </div> </div> </body> </html>
/* display: table */ .container { display: table; width: 300px; } .box { display: table-cell; width: 100px; } .row { display: table-row; } .gray { background: gray; } .silver { background: silver; } .orange { background: orange; }
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>line-height、vertical-align</title> <link rel="stylesheet" href="style.css"> </head> <body> <p>親譲りの無鉄砲で小供の時から損ばかりしている。 小学校に居る時分 学校の二階から飛び降りて 一週間ほど腰を抜かした事がある。なぜそんな 無闇をしたと聞く人があるかも知れぬ。別段深い 理由でもない。新築の二階から首を出していたら、 同級生の一人が冗談に、いくら威張っても、そこ から飛び降りる事は出来まい。弱虫やーい。と囃した からである。小使に負ぶさって帰って来た時、 おやじが大きな眼をて二階ぐらいから飛び降りて 腰を抜かす奴があるかと云ったから、この次は抜 かさずに飛んで見せますと答えた。(青空文庫より) </p> </body> </html>
/* line-height vertical-align */ p { border: 1px solid #ddd; font-size: 18px; /*line-height: 24px;*/ line-height: 1.5; }
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>float、clearで右寄せ・左寄せ</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>右寄せ・左寄せ</h1> <p><img src="food.jpg">文字を右あるいは 左に寄せて、 写真の反対側に文字を流し込むには、 CSSでimg要素にfloatプロパティを設定します。 また、回り込みを解除するには次の要素にclearを 設定します。</p> <h2>見出し2</h2> <p>ダミーテキスト。ダミーテキスト。ダミーテキスト。 ダミーテキスト。ダミーテキスト。</p> </body> </html>
/* float clear */ h1, h2, p, img { border:1px solid #ddd; } img { float: right; width: 100px; } h2 { clear: right; }