コンテンツとスタイルの分離を実現するために、CSS を使用してページのレイアウト、要素の色やサイズを調整し、背景画像やボーダーを追加し、アニメーション効果を作成します。
selector {
property: value;
}
/* タグセレクタ: このCSSルールはHTML文書内のすべてのh1要素に適用され、これらのh1要素の文字色を青にし、フォントサイズを24ピクセルにします */
h1 {
color: blue;
font-size: 24px;
}
/* クラスセレクタ */
/* <div class="block1"> 赤色に変わる </div> */
.block1 {
color: red;
}
/* IDセレクタ */
/* <p id="id1"> 赤色に変わる </p> */
#id1 {
color: red;
}
/* ワイルドカードセレクタ: すべての要素タグの内外のマージンをクリアします */
* {
margin: 0;
padding: 0;
}
/* 属性セレクタ */
/* css2から */
[attribute] { property: value; } /* attribute属性を持つすべての要素に一致 */
[attribute="value"] { property: value; } /**/
[attribute^="value"] { property: value; } /* attribute属性の値が "value" で始まるすべての要素に一致 */
[attribute|="value"] { property: value; } /* attribute属性の値が "value" または "value-" で始まる要素に一致 */
/* css3 */
[attribute$="value"] { property: value; } /* attribute属性の値が "value" で終わるすべての要素に一致 */
[attribute*="value"] { property: value; } /* attribute属性の値に "value" という文字列を含むすべての要素に一致 */
[attribute~="value"] { property: value; } /* attribute属性の値に "value" という単語を含む要素に一致 */
1)selector は CSS ルールが適用される要素を指定します;selector には、タグセレクタ、クラスセレクタ、ID セレクタ、ワイルドカードセレクタが含まれます。
2)property: value;:一組の CSS 宣言
複合セレクタ#
和集合セレクタ#
複数の基本セレクタをカンマで区切ります。
p, b, i, span { /* すべての <p>、<b>、<i>、<span> 要素を選択し、color: red; を設定します */
color: red;
}
積集合セレクタ#
div.class { /* divタグであり、かつclassクラス */
color: red;
}
子孫セレクタ#
子孫セレクタは、特定の要素内のすべての子孫要素を選択します。子孫要素の階層の深さに関係なく選択されます。
p b { /* すべての <p> 要素内の <b> 要素を選択します。<b> が <p> 内でどれだけネストされていても関係ありません */
color: red;
}
子セレクタ#
特定の要素の直接の子要素を選択します。
ul > li {
border: 1px solid red;
}
隣接兄弟セレクタ#
別の要素の直後にある兄弟要素を選択します。
p + b { /* <p> 要素の直後の最初の <b> 要素を選択します */
color: red;
}
一般的な兄弟 ** セレクタ#
特定の要素の後にあるすべての兄弟要素を選択します。
p ~ b { /* <p> 要素の後にあるすべての <b> 要素を選択します。必ずしも <p> の直後である必要はなく、同じレベルのDOMツリー内にあれば選択されます */
color: red;
}
擬似クラスセレクタ#
擬似クラスセレクタ | 説明 |
---|---|
親要素の最初の子要素に一致 | |
親要素の最後の子要素に一致 | |
(n) | 親要素内の n 番目の子要素に一致;n は自然数で増加し、定数または odd、even としても書けます |
(n) | 親要素の n 番目の同タイプの子要素に一致 |
親要素内の最初の同タイプの子要素に一致 | |
親要素の最後の同タイプの子要素に一致 | |
すべての未訪問リンクに一致 | |
すべての訪問済みリンクに一致 | |
マウスが上にある要素に一致 | |
クリックされたリンクに一致(例:マウスが押されているときの状態) | |
選択状態の 要素に一致 | |
すべての無効な 要素に一致 | |
子要素がない 要素に一致 | |
すべての有効な 要素に一致 | |
フォーカスを持つ 要素に一致 | |
指定された値の範囲を持つ 要素に一致 | |
無効な値を持つすべての 要素に一致 | |
(language) | lang 属性の値が "it" で始まるすべての 要素に一致 |
(selector) | すべての非 要素に一致 |
(n) | 親要素の倒数第 n の子要素に一致 |
(n) | 親要素の倒数第 n の子要素に一致 |
親要素内の唯一の 要素に一致 | |
親要素内の唯一の子要素に一致 | |
"required" 属性を持たない 要素に一致 | |
指定された範囲外の値を持つ 要素に一致 | |
"readonly" 属性が指定された 要素に一致 | |
"readonly" 属性を持たない 要素に一致 | |
"required" 属性が指定された 要素に一致 | |
要素のルート要素に一致。HTML では、ルート要素は常に HTML です | |
現在アクティブな #news 要素に一致(そのアンカー名を含む URL をクリック) | |
有効な値を持つすべての 要素に一致 |
擬似要素セレクタ#
要素の部分(例:最初の文字、最初の行のテキストなど)に一致します。
擬似要素 | 例の説明 | css |
---|---|---|
::after | 要素の後にコンテンツを挿入 | 2 |
::before | 要素の前にコンテンツを挿入 | 2 |
::first-letter | ブロック要素の内容の最初の文字に一致 | |
::first-line | ブロック要素の内容の最初の行に一致 | |
::selection | ユーザーが選択した要素に一致 | |
::placeholder | フォームコントロールのプレースホルダーテキストに一致(例:);カスタムテキストスタイルに使用 |
<p>strick</p>
<input type="text" placeholder="入力してください"/>
p::first-letter {
font-size: 200%;
}
p::first-line {
font-weight: bold;
}
input::placeholder {
color: red;
}
p::selection {
color: red;
}
p::before {
content: "I "<!-- 画像url('./smiley.gif'); -->
}
p::after {
content: " Strick"
}
css の導入#
複数のスタイルシートが同じ要素に影響を与える場合、ブラウザは衝突スタイルのカスケード優先順位ルールに基づいて適用するスタイルを決定します:!important
マーク > 要素内蔵 > ドキュメント内蔵 > 外部リンクスタイル > ブラウザのデフォルト指定スタイル;
セレクタの優先順位:選定範囲が小さいほど優先されます。
要素内蔵#
要素タグ内の style 属性で CSS スタイルを設定します。簡単なスタイルを変更するのに適しています;各宣言のキーと値のペアは;
で区切ります。
<p style="color:red;font-size:50px;">hello world</p>
ドキュメント内蔵#
内に外部リンクスタイル#
<link rel="stylesheet" type="text/css" href="style.css">
style.css:
@charset "utf-8";
p {
color: green;
font-size: 30px;
}
強制的に最高優先度を設定#
color: green !important;
スタイルの継承#
1)要素が親要素に関連するスタイルを設定していない場合、親要素のスタイルを継承します(text-、font-、line - で始まるスタイルと color 属性のスタイルのみ継承可能で、レイアウトスタイルには適用されません)。
2)レイアウトスタイルを強制的に継承します。
<p style="color:red;">これは<b>HTML5</b>です</p> <!--<b>要素は<p>要素のスタイルを継承しました-->
<p>これは<b>HTML5</b>です</p>
<style type="text/css">
p {
border: 1px solid red; /* borderは非継承スタイル */
}
b {
border: inherit;
}
</style>
ボックスモデル#
ウェブページのレイアウトプロセス:
1)各ウェブ要素ボックスのスタイルを設定します;適切な位置に配置します。
2)ボックスにコンテンツを装填します。
content と border の距離は内側の余白です;ボックス間の距離は外側の余白です。
要素ボックスのタイプ#
ブロック要素#
- ブロック要素は 1 行を占有します;
- 高さ、幅、外側の余白、内側の余白をすべて制御できます。
- 幅はデフォルトでコンテナ(親の幅)の 100% です。
- テキスト要素内にはブロック要素を含めることはできません;例えば
〜#
。
一般的なブロック:
<h1>〜<h6>、<p>、<div>、<ul>、<ol>、<li>
インライン要素#
- 1 行に複数のインライン要素を表示できます;
- 高さ、幅を直接設定することは無効です。コンテンツの幅に自動的に適応します。
- インライン要素はテキストまたは他のインライン要素のみを含むことができます。
- リンク内にリンクを含めることはできません;特別な場合にはリンク内にブロック要素を含めることができますが、ブロックモードに変換するのが最も安全です。
一般的なインライン要素:
<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>
インラインブロック要素#
- 1 行に複数のインラインブロック要素を表示できますが、間に空白の隙間があります;
- デフォルトの幅はコンテンツの幅に自動的に適応します;高さ、行の高さ、外側の余白、内側の余白を制御できます。
一般的なインラインブロック要素:
<img />、<input />、<td>
タイプ変換#
span { /* ブロック要素に変換 */
display: block;
}
div { /* インライン要素に変換 */
display: inline;
}
div { /* インライン-ブロック要素に変換 */
display: inline-block;
}
div { display: none; /* 要素を隠し、スペースを占有しない */ }
要素ボックスのサイズを設定#
属性 | 値 | 説明 | CSS バージョン |
---|---|---|---|
width | auto、長さの値またはパーセンテージ | 要素の幅を設定 | 1 |
height | auto、長さの値またはパーセンテージ | 要素の高さを設定 | 1 |
min-width | auto、長さの値またはパーセンテージ | 要素の最小幅を設定 | 2 |
min-height | auto、長さの値またはパーセンテージ | 要素の最小高さを設定 | 2 |
max-width | auto、長さの値またはパーセンテージ | 要素の最大幅を設定 | 2 |
max-height | auto、長さの値またはパーセンテージ | 要素の最大高さを設定 | 2 |
box-sizing | content-box border-box | デフォルト値、要素の幅と高さはcontent サイズのみを計算し、padding とborder は含まれません。要素の幅と高さは内側の余白padding とボーダーborder を含むように計算されます。 | 3、各内核の初期に実験機能として、ブラウザのプレフィックスが必要でしたが、後には不要になりました。 |
resize | none both horizontal vertical | 通常の要素のデフォルト値、クライアントユーザーが要素のサイズを調整できない。フォームタイプの textarea 要素のデフォルト値、クライアントユーザーが要素の幅と高さを調整できる。クライアントユーザーが要素の幅を調整できる。クライアントユーザーが要素の高さを調整できる。 |
div {
background-color: purple;
width: 200px; height: 200px;
min-width: 100px;
min-height: 100px;
max-width: 300px;
max-height: 300px;
resize: both;
overflow: auto; /* この設定でドラッグ可能なサイズの図形が表示されます */
/* -webkit-box-sizing: border-box; */ /* Safari と Chrome */
/* -moz-box-sizing: border-box; */ /* Firefox */
/* -ms-box-sizing: border-box; */ /* IE */
box-sizing: border-box; /* 標準 */
padding: 10px; border: 5px solid red;
}
内側の余白 padding を設定#
要素内部の余白の大きさを設定します。
属性 | 値 | 説明 | CSS バージョン |
---|---|---|---|
padding-top | 長さの値またはパーセンテージ | 上部の内側の余白を設定 | 1 |
padding-right | 長さの値またはパーセンテージ | 右側の内側の余白を設定 | 1 |
padding-bottom | 長さの値またはパーセンテージ | 下部の内側の余白を設定 | 1 |
padding-left | 長さの値またはパーセンテージ | 左側の内側の余白を設定 | 1 |
padding | 1〜4 個の長さの値またはパーセンテージ | 短縮プロパティ | 1 |
div {
padding-top: 10px;
padding-right: 10px;
padding-bottom: 10px;
padding-left: 10px;
}
div {
padding: 10px 10px 10px 10px;
}
div {
padding: 10px 20px; /* 上下、左右 */
}
div {
padding: 10px;
}
外側の余白 margin を設定#
要素外部の余白の大きさを設定します。
属性 | 値 | 説明 | CSS バージョン |
---|---|---|---|
margin-top | |||
margin-right | |||
margin-bottom | |||
margin-left | |||
margin | 長さの値 パーセンテージ auto:外側の余白が自動的にブラウザの幅を占有 | 上部の内側の余白を設定 | |
右側の内側の余白を設定 | |||
下部の内側の余白を設定 | |||
左側の内側の余白を設定 | |||
短縮プロパティ | 1 |
div {
margin-top: 10px;
margin-right: 10px;
margin-bottom: 10px;
margin-left: 10px;
}
div {
margin: 10px 10px 10px 10px;
}
div {
margin: 10px 20px;
}
div {
margin: 10px;
}
/* ボックスを中央に配置 */
div {
margin: 0 auto;
}
/* ボックスを水平方向に中央に配置 */
div {
margin-right: auto;
margin-left: auto;
}
ボックスの垂直整列時のマージンの重複#
垂直に配置された隣接ボックス;実際の間隔は 2 つのボックスの上下のマージンの最大値です;他の状況のマージンの合計ではありません。
ボックス内の要素の垂直整列時のマージン上部の崩れ#
親子タグの中で、子タグにマージン上部を追加すると、親子タグが一緒に下に移動します。
解決策:子タグにマージン上部を追加する動機は、一般的に子タグの親要素内での垂直整列を調整するためですが、この垂直整列を調整するより良い方法:
1)子要素のマージンをキャンセルし、親要素に padding-top を設定します。
2)親要素に overflowを設定します。
3)親要素に border-top を設定します。
オーバーフローの処理#
属性 | 値 | 説明 | CSS バージョン |
---|---|---|---|
overflow - x | オーバーフロー値 | 水平方向のオーバーフローを設定 | 3 |
overflow - y | オーバーフロー値 | 垂直方向のオーバーフローを設定 | 3 |
overflow | 上記の値を取る: | ||
auto :ブラウザがオーバーフローした内容を処理します。オーバーフローした内容がある場合、スクロールバーを表示し、そうでない場合は表示しません。 | |||
hidden :オーバーフローした内容がある場合、直接カットします。 | |||
scroll:オーバーフローの有無にかかわらず、常にスクロールバーが表示されます。ただし、異なるプラットフォームやブラウザで表示方法が異なります。 | |||
visible :デフォルト値、オーバーフローの有無にかかわらず、内容を表示します。 | 短縮プロパティ | 2 |
div {
overflow: auto;
}
要素の可視性を設定#
属性 | 値 |
---|---|
display | |
visibility | visible:デフォルト値、要素がページ上で可視。 hidden:要素が不可視だが、スペースを占有。 collapse:要素が不可視で、隠されたテーブルの行と列、テーブルでない場合は hidden と同じ;Chrome と Opera はサポートしていない可能性があります。 |
div { visibility: hidden; }
ボックスのデバッグ時の可視性は、ボーダーと背景色を設定することで実現します。
要素の浮動を設定#
属性 | 値 | 説明 |
---|---|---|
float | left right none | 浮動要素を左に配置 浮動要素を右に配置 浮動を無効にします |
clear | none left right both | 浮動要素は左右の境界に密着できます 浮動要素は左の境界に密着できません 浮動要素は右の境界に密着できません 浮動要素は左右の境界に密着できません |
#a { /* 浮動要素を左に配置 */
background: gray;
float: left;
clear: none;
}
#c { /* 浮動要素を右に配置 */
background: navy;
float: right;
clear: both;
}
#c { /* 浮動を無効にします */
background: navy;
float: none;
}
要素の位置属性を設定#
位置属性を設定すると、要素が 1 つの position 層に上昇し、レイアウトが行われます。
属性 | 値 | 説明 |
---|---|---|
position | static absolute relative fixed | デフォルト値、位置なし。 絶対位置、文書の流れから外れ、ウィンドウ文書の左上隅 0,0 を起点とします;top、right、bottom、left を使用して相対距離を記述します。 相対位置、top、right、bottom、left を使用して相対距離を記述します。元の位置に対して移動します。 ウィンドウ参照位置、top、right、bottom、left を使用して相対距離を記述します。 |
header { /* 絶対位置:ウィンドウ文書の左上隅0,0を起点とします */
position: absolute; top: 100px; left: 100px;
}
header { /* ウィンドウ参照位置:スクロールバーがスクロールするのに伴い、ウィンドウに対して静止する効果を得ます */
position: fixed; top: 100px; left: 100px;
}
/* 特定の要素に対して位置を設定:文書の流れから外れません */
body { /* 参照点の親要素を相対に設定し、座標を設定しません */
position: relative;
}
header { /* 親要素が参照点を設定した場合、子要素の絶対位置はそれを基準にします */
position: absolute; top: 0px; left: 0px;
}
層の優先順位を設定#
属性 | 値 | 説明 |
---|---|---|
z-index | auto 数字 | デフォルトの層 層を設定し、数字が大きいほど層が高くなります |
header {
z-index: 100;
}
レイアウト#
ドキュメントの標準レイアウト#
ボックスのタイプ自体のレイアウト特性 + タイプ変換を使用します;現在、一般的にウェブページ全体の構造は標準フローのレイアウトであり、1 行内の複数の子ブロックは特殊なレイアウトです。
親ボックスに高さがない場合、子ボックスは親ボックスを押し上げます。
テーブルレイアウト#
初期にはテーブルを使用してウェブページの構造を記述し、ブロックスタイルの幅を設定することで table { width: 100% }
常にブラウザウィンドウの 100% になります。次に、子ブロック(セル)の幅を親ブロックのパーセンテージに設定して、ページがウィンドウサイズに適応するようにします。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>レイアウトテーブル</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<table border="0">
<tr>
<td colspan="2" class="header">ヘッダー</td>
</tr>
<tr>
<td class="aside">サイドバー</td>
<td class="section">セクション</td>
</tr>
<tr>
<td colspan="2" class="footer">フッター</td>
</tr>
</table>
</body>
</html>
styles.css:
/* ページの基本スタイル */
body {
margin: 0;
}
/* 流体レイアウトのテーブルスタイル */
table {
margin: 0 auto;
width: 100%; /* テーブルの幅を100%に設定し、ウィンドウの幅に適応させます */
border-spacing: 0;
}
/* ヘッダーのスタイル */
.header {
height: 120px;
background-color: #2714d1;
text-align: center;
font-size: 24px;
}
/* サイドバーのスタイル */
.aside {
width: 20%; /* 幅を20%に設定 */
height: 500px;
background-color: #2e53d0;
padding: 10px;
box-sizing: border-box;
}
/* メインコンテンツエリアのスタイル */
.section {
width: 80%; /* 幅を80%に設定 */
height: 500px;
background-color: #4eb776;
padding: 10px;
box-sizing: border-box;
}
/* フッターのスタイル */
.footer {
height: 120px;
background-color: #f2f2f2;
text-align: center;
font-size: 18px;
}
Float~~~~ レイアウト#
1)要素に浮動属性を追加すると、要素は文書の標準レイアウトのブロックの上に浮かびます。これは float 層でのレイアウトを行うことを理解できます;つまり、親ボックスに高さがない場合、子ボックスはもはや親ボックスを押し上げません。
2)要素はインラインブロック特性を持ちます。
3)要素は上部に揃います。
浮動は画像とテキストの回り込みを実現しやすくします:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>浮動レイアウト - 流体レイアウト</title>
<link rel="stylesheet" href="styles.css">
</head>
<body class="clearfix">
<header>ヘッダー</header>
<aside>サイドバー</aside>
<section>セクション</section>
<footer>フッター</footer>
</body>
</html>
styles.css:
/* bodyの幅をautoに設定し、ページの幅がビューポートに自動的に調整されるようにします */
body {
width: 100%;
margin: 0;
color: white;
background-color: #333;
}
header {
height: 120px;
background-color: #444;
text-align: center;
padding-top: 40px;
font-size: 24px;
}
aside {
width: 20%;
height: 500px;
float: left;
background-color: #555;
padding: 10px;
box-sizing: border-box;
}
section {
width: 80%;
height: 500px;
float: left;
background-color: #666;
padding: 10px;
box-sizing: border-box;
}
footer {
height: 120px;
clear: both;
background-color: #444;
text-align: center;
padding-top: 40px;
font-size: 20px;
}
.clearfix::before, /* 高さを自動調整する親ボックスにはすべてclearfixクラスを追加します */
.clearfix::after {
content: "";
display: table;
}
.clearfix::after { /* 親ボックス内に子ボックスを追加し、浮動をクリアする目的は、指定された高さのない親ボックスを押し上げることです */
clear: both;
}
位置レイアウト#
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>位置レイアウトの例</title>
<style>
body {
margin: 0;
padding: 0;
height: 100vh;
}
.container {
position: relative;
height: 100%;
background-color: #f0f0f0;
}
.box {
position: absolute;
width: 200px;
height: 100px;
background-color: #3498db;
color: white;
text-align: center;
line-height: 100px;
}
/* 最初のボックスを位置設定:コンテナの左上から50px */
.box1 {
top: 50px;
left: 50px;
}
/* 2番目のボックスを位置設定:コンテナの右下から50px */
.box2 {
bottom: 50px;
right: 50px;
}
/* 3番目のボックスを位置設定:コンテナの中心 */
.box3 {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
</style>
</head>
<body>
<div class="container">
<div class="box box1">ボックス 1</div>
<div class="box box2">ボックス 2</div>
<div class="box box3">ボックス 3</div>
</div>
</body>
</html>
マルチカラムレイアウト#
マルチカラムレイアウトの使用例、例えば横スクロールのページ(小説など)。
属性 | val | 説明 |
---|---|---|
column-width | auto:デフォルト値、自動調整 長さの値:列の幅を設定 | 各列の列幅を定義 |
column-count | auto :デフォルト値;1 列を示す 数値: 列数を設定 | 列数を定義 |
columns | column-width と column-count の 2 つの属性を統合 | |
column-gap | 列間の距離を定義 | |
column-rule column-rule-width column-rule-style column-rule-color | 列の境界線を定義 column-rule-width :境界線の幅を個別に設定 column-rule-style :境界線のスタイルを個別に設定 column-rule-color:境界線の色を個別に設定 column-rule :短縮 | |
column-span | none :デフォルト値;列を跨がない all :列を跨ぐ | 大見出しを跨がせる |
column-fill |
div {
column-width: 200px;
column-count: 4;
column-gap: 100px;
column-rule: 2px dashed gray;
column-span: all;
}
div {
columns: auto 4;
column-gap: 100px;
column-rule: 2px dashed gray;
column-span: all;
}
Flex レイアウト#
属性 | 値 | 説明 |
---|---|---|
display | flex:コンテナボックスモデルをブロックレベルのフレキシブルボックスとして表示 inline-flex:コンテナボックスモデルをインラインレベルのフレキシブルボックスとして表示 | |
flex-direction | row :左から右に並べる row-reverse :右から左に並べる column :上から下に並べる column-reverse:下から上に並べる | 子要素の並べる方向、つまり主軸の方向を設定 |
flex-wrap | nowrap :デフォルト値;すべてが 1 行または 1 列に表示され、圧縮されます wrap :フレキシブルプロジェクトが収容できないときに自動的に改行し、圧縮しません wrap-reverse:フレキシブルプロジェクトが収容できないときに自動的に改行し、wrap とは逆の方向にします | |
flex-flow | 上記 2 つの短縮 | |
justify-content | flex-start :子要素を左揃え、要素間に隙間なし flex-end :子要素を右揃え、要素間に隙間なし center :子要素を中心に揃え、要素間に隙間なし space-between:均等に揃え、残りの空白幅を子要素間の距離として使用し、両側に隙間なし space-around:均等に揃え、残りの空白幅を子要素間の距離として使用し、両側に隙間あり space-evenly:均等に揃え、残りの空白幅を子要素間の距離として使用し、両側に隙間があり、かつマージンが同じ大きさ | 主軸の整列方法(デフォルトは x 軸) |
align-items | flex-start :上部に揃え flex-end :下部に揃え center:中央に揃え baseline :フレキシブルプロジェクトを基準にして、余分なスペースをクリアします stretch:デフォルト、子要素を引き伸ばして垂直の親ボックスのスペースを埋めます。もちろん、前提として子要素に高さが設定されていないことが必要です | 交差軸の整列方法、1 行と親ボックスに高さがあるときにのみ有効 |
align-content | flex-start :子要素を上部に揃え、要素間に隙間なし flex-end :子要素を下部に揃え、要素間に隙間なし center :子要素を中心に揃え、要素間に隙間なし space-between:均等に揃え、残りの空白幅を子要素間の距離として使用し、両側に隙間なし space-around:均等に揃え、残りの空白幅を子要素間の距離として使用し、両側に隙間あり space-evenly:均等に揃え、残りの空白幅を子要素間の距離として使用し、両側に隙間があり、かつマージンが同じ大きさ | 複数行の場合の交差軸の整列方法 |
align-self | flex-start :上部に揃え flex-end :下部に揃え center:中央に揃え baseline :フレキシブルプロジェクトを基準にして、余分なスペースをクリアします stretch:デフォルト、子要素を引き伸ばして水平の親ボックスのスペースを埋めます。もちろん、前提として子要素に高さが設定されていないことが必要です | 子ボックスのレイアウトを個別に制御 |
flex | 整数 | 子要素の主軸上の幅の比率;主軸上のコントロール幅を自動的に適応させることを実現 |
order | フレキシブルプロジェクトの出現順序を制御 |
<div class="flex-container">
<p>最初の段落</p>
<p>2番目の段落</p>
<p>3番目の段落</p>
</div>
.flex-container {
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: space-around;
/*align-content: ;*/
align-itmes: center;
}
/*.flex-container {
display: flex;
flex-flow: row wrap;
justify-content: space-around;
align-itmes: center;
/*align-content: ;*/
}*/
/* 合計で5つの部分を占有し、出現順序231 */
p:nth-child(1) { /* コンテナスペースの1部分を占有 */
flex: 1; /* 主軸の幅比1:3:1 */
order: 2;
align-self: center; /* 最初の子ボックスを中央に配置 */
}
p:nth-child(2) {
flex: 3;
order: 3;
}
p:nth-child(3) {
flex: 1;
order: 1;
}
!https://secure2.wostatic.cn/static/sHJpw9ixqsocGYebDGSnX9/image.png
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>個人ホームページ</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
<header class="header">
<h1>私の個人ホームページへようこそ</h1>
</header>
<nav class="navigation">
<ul>
<li><a href="#">ホーム</a></li>
<li><a href="#">私について</a></li>
<li><a href="#">私のプロジェクト</a></li>
<li><a href="#">私に連絡する</a></li>
</ul>
</nav>
<section class="main-content">
<article class="bio">
<h2>自己紹介</h2>
<p>私はWeb開発者で、プログラミングと技術革新が大好きです。</p>
</article>
<article class="projects">
<h2>私のプロジェクト</h2>
<ul>
<li>プロジェクト1</li>
<li>プロジェクト2</li>
<li>プロジェクト3</li>
</ul>
</article>
<article class="contact">
<h2>連絡先</h2>
<p>メール: [email protected]</p>
</article>
</section>
<footer class="footer">
<p>© 2024 私の個人ホームページ</p>
</footer>
</div>
</body>
</html>
style.css:
/* ページの基本スタイルを設定 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* コアコンテナ、flexboxレイアウトを使用 */
.container {
display: flex;
flex-direction: column;
min-height: 100vh;
}
/* ヘッダー */
.header {
background-color: #4CAF50;
color: white;
padding: 20px;
text-align: center;
}
/* ナビゲーションバー、水平に並べ、折り返し */
.navigation {
display: flex;
flex-flow: row wrap; /* 折り返しを許可 */
justify-content: center; /* 中央に揃える */
background-color: #333;
}
.navigation ul {
list-style: none;
display: flex;
padding: 10px;
}
.navigation li {
margin: 0 15px;
}
.navigation a {
color: white;
text-decoration: none;
}
/* メインコンテンツエリア、flexboxレイアウトを使用 */
.main-content {
display: flex;
flex-wrap: wrap;
justify-content: space-between; /* 子要素を均等に配置 */
padding: 20px;
gap: 20px;
}
/* 自己紹介エリア */
.bio {
flex: 1 1 300px; /* 伸縮可能なボックスを設定 */
background-color: #f4f4f4;
padding: 15px;
border-radius: 8px;
}
.projects {
flex: 2 1 400px; /* 柔軟な比率を設定 */
background-color: #f9f9f9;
padding: 15px;
border-radius: 8px;
}
.contact {
flex: 1 1 300px; /* 伸縮可能なボックスを設定 */
background-color: #f4f4f4;
padding: 15px;
border-radius: 8px;
}
/* フッター */
.footer {
background-color: #333;
color: white;
padding: 10px;
text-align: center;
}
/* レイアウトの順序を調整 */
.projects {
order: -1; /* "私のプロジェクト"を"自己紹介"の前に配置 */
}
/* レスポンシブ調整 */
@media (max-width: 768px) {
.navigation {
flex-direction: column;
}
.main-content {
flex-direction: column;
}
}
Grid レイアウト#
継承されたスタイル属性#
親要素ボックス内(div)で属性を指定できます;子要素は継承されるため、子要素セレクタを指定する必要はありません;ほとんどの要素にはデフォルトスタイルがあり、スタイルをクリアする必要があるかもしれません。
属性 | 値 | 説明 | css |
---|---|---|---|
color | 色の値 | 要素の前景色を設定 | 1 |
opacity | 0 ~ 1 | 要素の透明度を設定 | 3 |
text-align | 要素のボックス内での水平整列方法を設定 | start と end は CSS3 の新機能ですが、現在 IE と Opera はサポートしていない可能性があります。 left :左揃え・デフォルト right: 右揃え center : 中央揃え justify :内容を両端揃え start :テキストを終了の境界に配置 end:テキストを終了の境界に配置 | 1,3 |
// デフォルトスタイルをクリア
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
ボックススタイル#
属性 | 値 | 説明 | css |
---|---|---|---|
vertical-align | 基準線に対する距離の長さ値 / パーセンテージ | ボックスの垂直整列 | |
box-shadow | hoffset :影の X 軸のオフセット voffset : 影の Y オフセット blur :(オプション) ぼかし半径;長さの値で、値が大きいほどボックスの境界がぼやけます。デフォルト値は 0 で、境界は鮮明です。 spread :(オプション) 拡散半径;長さの値で、正の値は影がボックスの各方向に拡大し、負の値は影が反対方向に縮小します。 color :(オプション) 影の色を設定します。省略すると、ブラウザが自動的に色を選択します。 inset:(オプション):デフォルトは外影で、内影にするにはこの値を inset に設定します。 多値、空白で区切ります。 | ボックスの影、通常はインタラクション応答スタイルに使用されます。これは調整が難しいため、直接小米や京東をコピーすることをお勧めします。 | 3 |
outline-color | 外周の輪郭の色 | 3 | |
outline-offset | 輪郭が要素のボーダーの端からのオフセット量 | 3 | |
outline-style | 輪郭のスタイル、border-style と一致 | 3 | |
outline-width | 輪郭の幅 | 3 | |
outline | 短縮 | 3 | |
cursor | auto,default,none,context-menu,help,pointer,progress,wait,cell,crosshair,text,vertical-text,alias,copy,move,no-drop,not-allowed,e-resize,n-resize,ne-resize,nw-resize,s-resize,se-resize,sw-resize,w-resize,ew-resize,ns-resize,nesw-resize,nwse-resize,col-resize,row-resize,all-scroll | ボックス上のカーソルスタイル、左側のそれぞれを試す | 1 |
div span {
vertical-align: -200px;
box-shadow: 5px 4px 10px 2px gray; /* 影 */
/* box-shadow: 5px 4px 10px 2px gray inset; */ /* 内部影 */
outline: 10px double red; /* ボックスに輪郭を追加 */
cursor: move;
}
フォントスタイル#
body { font-size: 50px; } /* 親要素のフォントサイズを設定 */
@font-face { font-family: abc; src: url('BrushScriptStd.otf'); } /* サーバーが提供するabcフォントファイル */
body {
font-style: ;
font-weight: ;
font-variant: ;
font-size: smaller; /* 親要素のフォントサイズを相対的に設定 */
font-family: 楷体, 微软雅黑, 宋体; /* 多くのブラウザシステムのフォントに互換性を持たせるために、いくつかのバックアップフォントを設定できます */
/* font: italic bold normal smaller 楷体; /* 上記の順序で値を設定 */
color: red;
opacity: 0.5;
}
テキストスタイル#
属性名 | 説明 | 値 | CSS バージョン |
---|---|---|---|
text-decoration | テキストの下線 | none:下線なし underline:テキストの下線 overline:テキストの上線 line-through:取り消し線 blink:テキストを点滅させる・基本的にはサポートされていません | 1 |
text-transform | 英文の大文字小文字 | none :変換された大文字小文字の値をデフォルトに戻す capitalize :英語の最初の文字を大文字にする uppercase :英語を大文字に変換 lowercase :英語を小文字に変換 | 1 |
text-shadow | テキストに影を追加 | 4 つの値を記述します。例:5px 5px 3px black 最初の値:水平オフセット; 2 番目の値:垂直オフセット; 3 番目の値:影のぼかし度(オプション); 4 番目の値:影の色(オプション) | 3 |
text-align | テキストの整列方法を設定 | start と end は CSS3 の新機能ですが、現在 IE と Opera はサポートしていない可能性があります。 left :左揃え・デフォルト right: 右揃え center : 中央揃え justify :内容を両端揃え start :テキストを終了の境界に配置 end:テキストを終了の境界に配置 | 1,3 |
white-space | 空白の処理方法 | normal :デフォルト値、空白文字が圧縮され、テキストが自動的に改行されます nowrap :空白文字が圧縮され、テキストが改行されません pre :空白文字が保持され、改行文字に出会うと改行されます pre-line :空白文字が圧縮され、テキストが満杯になるか改行文字に出会うと改行されます pre-wrap:空白文字が保持され、テキストが満杯になるか改行文字に出会うと改行されます | 1 |
letter-spacing | 文字間の距離 | normal:デフォルトの間隔を設定 長さの値:例えば:"数字"+"px" | 1 |
word-spacing | 単語間の距離 | normal :デフォルトの間隔を設定 長さの値 :例えば:"数字"+"px" | 1 |
line-height | 行の高さ(行間距離) | normal :デフォルトの間隔を設定 長さの値 :例えば:"数字"+"px" 数値 :例えば:1,2.3 %:例えば:200% | 1 |
word-wrap | 長すぎる英単語を折り返す | normal :単語を折り返さない break-word:単語を折り返す | 3 |
text-indent | テキストの最初の行のインデント | normal :デフォルトの間隔を設定 長さの値 :例えば:"数字"+"px" | 1 |
vertical-align | sub : テキストの下付き文字を垂直に整列 super: テキストの上付き文字を垂直に整列 | テキストを垂直に整列 |
p {
text-decoration: underline;
text-transform: uppercase;
text-shadow: 5px 5px 3px black;
text-align: center;
white-space: nowrap;
letter-spacing: 4px;
word-spacing: 14px;
line-height: 200%;
word-wrap: break-word;
text-indent: 2rem;
vertical-align: super;
}
行の高さを垂直に中央に配置#
行の高さ = ボックスの高さ
!https://secure2.wostatic.cn/static/xzYi7gmYsYLSrhRywU1mfQ/image.png
<div>中国人</div>
div {
height: 40px;
line-height: 40px;
}
ボーダースタイル#
ボーダースタイル border-style は必ず宣言する必要があります;他の 2 つの属性はオプションで、デフォルト値があります。
属性 | 値 | 説明 | css |
---|---|---|---|
border-style border-top-style border-middle-style border-left-style border-right-style | none dashed dotted double groove inset outset ridge solid | ボーダーなし 破線ボーダー 点線ボーダー 二重線ボーダー 槽線ボーダー 要素の内容に内嵌効果を持たせるボーダー 要素の内容に外凸効果を持たせるボーダー 脊線ボーダー 実線ボーダー | |
border-width border-top-width border-middle-width border-left-width border-right-width | 長さの値 / パーセンテージ thin medium thick | ボーダーの幅を設定、オプションで、デフォルト値があります | |
border-color border-top-color border-middle-color border-left-color border-right-color | 色の値 | ボーダーの色を設定、オプションで、デフォルト値があります | |
border-radius border-top-left-radius border-top-right-radius border-middle-left-radius border-middle-right-radius | 長さの値またはパーセンテージ | 4 つの辺の角の半径を設定し、丸角コントロールを作成します;border-radius=50% で純粋な円形コントロールを作成します。 左上の角 右上の角 左下の角 右下の角 | 3 |
border-image-source | 背景画像のアドレスを引き入れます | 3 | |
border-image-slice | 引き入れた背景画像を切り取ります | 3 | |
border-image-width | ボーダー画像の幅、上右下左の 4 つの値を設定できます。上下 / 左右の 2 つの値 | 3 | |
border-image-outset | ボーダー背景を外側に拡張します | 3 | |
border-image-repeat | stretch : 引き伸ばして埋めます。デフォルト値 repeat:タイル状に埋めます・画像が境界にぶつかると、超えた部分がカットされます。 round :タイル状に埋めます・境界のサイズに応じて画像のサイズを動的に調整し、境界を埋めます。 space:タイル状に埋めます・境界のサイズに応じて画像の間隔を動的に調整し、境界を埋めます。 | ボーダー背景画像の配置方法 | 3 |
border-image | 上記の 5 つの属性の短縮形式 | 3 |
div { /* 特定の辺を設定するにはプレフィックスを追加するだけで済みます */
border-width: 2px;
border-style: solid;
border-color: red;
border-radius: 10px 20px 30px 40px;
border-image-source: url(border.png);
border-image-slice: 27; /* ちょうど4つの画像 */
/* border-image-slice: 0 fill; */
border-image-width: 81px;
border-image-outset: 20px;
border-image-repeat: round;
}
div {
border: 2px solid red;
border-radius: 10px;
/* border-top: */
/* border-middle: */
/* border-left: */
/* border-right: */
border-image: url(border.png) 27/27px round;
}
背景スタイル#
属性 | 値 | 説明 | CSS バージョン |
---|---|---|---|
background-color | 色 transparent | 指定された色で背景色を設定 デフォルト値、透明色で背景色を設定 | 1 |
background-image | none url | バッチでブロック背景を設定し、その中の 1 つが背景を必要としない場合、none で背景をキャンセルできます URL を通じて背景画像を設定 | 1/3 |
background-repeat | repeat-x repeat-y repeat no-repeat | 水平方向に画像をタイル状に配置 垂直方向に画像をタイル状に配置 水平および垂直方向に同時に画像をタイル状に配置 背景画像を 1 つだけ表示し、タイル状に配置しない | 1/3 |
background-attachment | scroll fixed | デフォルト値、背景は要素に固定され、内容と一緒にスクロールしません 背景はビューポートに固定され、内容がスクロールすると背景は動きません。ウォーターマーク効果に使用できます | 1/3 |
background-position | 長さの値 / パーセンテージ top left right bottom center | 長さの値を使用して画像の位置をオフセットします 背景画像を要素の上部に配置します | 3 |
background-size | 長さの値 / パーセンテージ auto cover contain | CSS の長さの値、例えば px、em デフォルト値、画像はこのサイズで表示されます 比率を保ちながら画像をスケールし、画像がコンテナをカバーするようにしますが、コンテナを超える可能性があります 比率を保ちながら画像をスケールし、幅または高さの大きい方がコンテナに横または縦に一致します | 3 |
background-origin | border-box padding-box content-box | 要素ボックス内に背景を描画します 内側の余白ボックス内に背景を描画します コンテンツボックス内に背景を描画します | 3 |
background-clip | border-box padding-box content-box | 要素ボックス内に背景をクリップします 内側の余白ボックス内に背景をクリップします コンテンツボックス内に背景をクリップします | 3 |
background | 背景画像の短縮形式 | 1 |
div {
background-color: silver;
background-image: url(loading.gif);
background-repeat: no-repeat;
background-attachment: fixed;
background-position: top left; /* 20px 20px; */
background-size: auto;
background-origin: content-box;
background-clip: padding-box;
}
div {
width: 400px;
height: 300px;
border: 10px dashed red;
padding: 50px;
background: silver url(img.png) no-repeat scroll left top/100% border-box content-box;
}
テーブルスタイル#
属性 | 値 | 説明 | バージョン | ||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
border - collapse | separate : デフォルト値、セルのボーダーが独立 collapse : セルの隣接ボーダーが統合されます | 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||
border - spacing | 長さの値 | 隣接セルのボーダー間の距離;border-collapse: separate の時に有効。ボーダーが独立していることが設定間隔の前提です | 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||
caption - side | top:デフォルト値、タイトルが上に表示されます bottom:タイトルが下に表示されます | テーブルタイトルの位置 | 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||
empty - cells | show :デフォルト値、ボーダーを表示 hide :ボーダーを表示しない | 空のセルがボーダーを表示するかどうか | 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||
table - layout | auto :デフォルト値、内容が長すぎる場合、全体のセルを引き伸ばします fixed:内容が長すぎる場合、全体のセルを引き伸ばしません | テーブルのレイアウトスタイルを指定します | 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||
vertical-align | baseline : 内容オブジェクトを基準線に揃えます top : middle : bottom: | 内の
リストスタイル#
変形効果#要素のインタラクションアニメーションを作成するために使用できます。例えば、マウスを上に置くと、要素が変形フィードバックを持ちます。 2 次元変換#
3 次元変換#
遷移効果#
|