2024-11-21CSS樣式整理

2024-11-21CSS樣式整理

針對(duì) CSS學(xué)習(xí)過(guò)程中核心的知識(shí)進(jìn)行總結(jié),內(nèi)容可能不全,當(dāng)前只是為了知識(shí)掃盲!


1-針對(duì)CSS中的 選擇器 給出具體的知識(shí)案例


CSS 選擇器詳解及案例

CSS 選擇器用于選擇你想要樣式化的 HTML 元素。選擇器是 CSS 規(guī)則的一部分,它指定了你要應(yīng)用樣式的元素。以下是一些常見的 CSS 選擇器及其具體案例:

1. 元素選擇器

用于選擇特定類型的 HTML 元素。

案例:

<style>
p {
    color: blue;
}
</style>

<p>這是一個(gè)段落。</p>
<p>這是另一個(gè)段落。</p>

解釋: 所有 <p> 元素的文本顏色將被設(shè)置為藍(lán)色。

2. 類選擇器

用于選擇具有特定 class 屬性的元素。

案例:

<style>
.highlight {
    background-color: yellow;
}
</style>

<p class="highlight">這是一個(gè)高亮的段落。</p>
<p>這是另一個(gè)段落。</p>

解釋: 具有 highlight 類的段落背景顏色將被設(shè)置為黃色。

3. ID 選擇器

用于選擇具有特定 id 屬性的元素。

案例:

<style>
#unique {
    font-weight: bold;
}
</style>

<p id="unique">這是一個(gè)唯一標(biāo)識(shí)的段落。</p>
<p>這是另一個(gè)段落。</p>

解釋: 具有 unique ID 的段落文本將加粗顯示。

4. 屬性選擇器

用于選擇具有特定屬性的元素。

案例:

<style>
input[type="text"] {
    border: 2px solid green;
}
</style>

<input type="text" placeholder="輸入文本">
<input type="password" placeholder="輸入密碼">

解釋: 所有 type="text" 的輸入框?qū)⒕哂芯G色邊框。

5. 偽類選擇器

用于選擇處于特定狀態(tài)的元素,如懸停、點(diǎn)擊等。

案例:

<style>
a:hover {
    text-decoration: underline;
}
</style>

<a href="#">這是一個(gè)鏈接</a>

解釋: 當(dāng)鼠標(biāo)懸停在鏈接上時(shí),鏈接將顯示下劃線。

6. 偽元素選擇器

用于選擇元素的特定部分,如第一行、第一個(gè)字母等。

案例:

<style>
p::first-letter {
    font-size: 2em;
}
</style>

<p>這是一個(gè)段落。</p>

解釋: 段落中的第一個(gè)字母將放大顯示。

7. 組合選擇器

用于通過(guò)組合不同的選擇器來(lái)選擇元素。

案例:

<style>
div p {
    color: red;
}
</style>

<div>
    <p>這是一個(gè)在 div 中的段落。</p>
</div>
<p>這是一個(gè)不在 div 中的段落。</p>

解釋: 所有位于 <div> 內(nèi)的 <p> 元素的文本顏色將被設(shè)置為紅色。

8. 子選擇器

用于選擇直接子元素。

案例:

<style>
ul > li {
    list-style-type: square;
}
</style>

<ul>
    <li>第一項(xiàng)</li>
    <li>第二項(xiàng)</li>
</ul>

解釋: 所有直接位于 <ul> 內(nèi)的 <li> 元素將以方形項(xiàng)目符號(hào)顯示。

9. 相鄰兄弟選擇器

用于選擇緊接在另一個(gè)元素后的元素。

案例:

<style>
h2 + p {
    font-style: italic;
}
</style>

<h2>標(biāo)題</h2>
<p>這是一個(gè)段落。</p>
<p>這是另一個(gè)段落。</p>

解釋: 直接位于 <h2> 元素后的第一個(gè) <p> 元素將顯示為斜體。

10. 通用選擇器

用于選擇所有元素。

案例:

<style>
* {
    margin: 0;
    padding: 0;
}
</style>

<!-- 頁(yè)面內(nèi)容 -->

解釋: 所有元素的 marginpadding 將被重置為 0。

這些選擇器可以單獨(dú)使用,也可以組合使用,以實(shí)現(xiàn)更復(fù)雜和精確的樣式控制。理解并熟練使用這些選擇器是掌握 CSS 的關(guān)鍵。

2-針對(duì)CSS中的 顏色 給出具體的知識(shí)案例


CSS 顏色詳解及案例

在 CSS 中,顏色可以通過(guò)多種方式指定,包括顏色名稱、十六進(jìn)制值、RGB 值、RGBA 值、HSL 值和 HSLA 值。以下是一些具體的知識(shí)案例,展示了如何在 CSS 中使用這些顏色表示法。

1. 顏色名稱

CSS 支持許多預(yù)定義的顏色名稱。

案例:

<style>
p {
    color: red;
}
</style>

<p>這是紅色的文本。</p>

解釋: 文本顏色將被設(shè)置為紅色。

2. 十六進(jìn)制顏色值 (Hexadecimal)

十六進(jìn)制顏色值是最常見的顏色表示法之一,由 # 符號(hào)和六位十六進(jìn)制數(shù)組成。

案例:

<style>
p {
    color: #00FF00;
}
</style>

<p>這是綠色的文本。</p>

解釋: 文本顏色將被設(shè)置為綠色(RGB 值為 0, 255, 0)。

3. 簡(jiǎn)寫的十六進(jìn)制顏色值

如果每?jī)晌粩?shù)字相同,可以簡(jiǎn)寫為三位數(shù)字。

案例:

<style>
p {
    color: #F00;
}
</style>

<p>這是紅色的文本。</p>

解釋: 文本顏色將被設(shè)置為紅色(RGB 值為 255, 0, 0)。

4. RGB 顏色值

RGB 顏色值由紅、綠、藍(lán)三個(gè)分量組成,每個(gè)分量的值范圍是 0 到 255。

案例:

<style>
p {
    color: rgb(0, 0, 255);
}
</style>

<p>這是藍(lán)色的文本。</p>

解釋: 文本顏色將被設(shè)置為藍(lán)色(RGB 值為 0, 0, 255)。

5. RGBA 顏色值

RGBA 顏色值在 RGB 的基礎(chǔ)上增加了一個(gè)透明度(Alpha)分量,范圍是 0 到 1。

案例:

<style>
p {
    color: rgba(255, 0, 0, 0.5);
}
</style>

<p>這是半透明的紅色文本。</p>

解釋: 文本顏色將被設(shè)置為半透明的紅色(RGB 值為 255, 0, 0,透明度為 0.5)。

6. HSL 顏色值

HSL 顏色值由色相(Hue)、飽和度(Saturation)和亮度(Lightness)三個(gè)分量組成。

案例:

<style>
p {
    color: hsl(120, 100%, 50%);
}
</style>

<p>這是綠色的文本。</p>

解釋: 文本顏色將被設(shè)置為綠色(色相為 120,飽和度為 100%,亮度為 50%)。

7. HSLA 顏色值

HSLA 顏色值在 HSL 的基礎(chǔ)上增加了一個(gè)透明度(Alpha)分量,范圍是 0 到 1。

案例:

<style>
p {
    color: hsla(240, 100%, 50%, 0.3);
}
</style>

<p>這是半透明的藍(lán)色文本。</p>

解釋: 文本顏色將被設(shè)置為半透明的藍(lán)色(色相為 240,飽和度為 100%,亮度為 50%,透明度為 0.3)。

8. 背景顏色

除了文本顏色,還可以設(shè)置元素的背景顏色。

案例:

<style>
div {
    background-color: #FFA500;
}
</style>

<div>這是一個(gè)橙色背景的元素。</div>

解釋: 元素的背景顏色將被設(shè)置為橙色(十六進(jìn)制值為 #FFA500)。

9. 邊框顏色

可以為元素的邊框設(shè)置顏色。

案例:

<style>
div {
    border: 2px solid green;
}
</style>

<div>這是一個(gè)綠色邊框的元素。</div>

解釋: 元素的邊框?qū)⒈辉O(shè)置為綠色(顏色名稱為 green)。

10. 漸變背景

可以使用 CSS 漸變功能來(lái)創(chuàng)建復(fù)雜的背景顏色效果。

案例:

<style>
div {
    background: linear-gradient(to right, red, yellow);
}
</style>

<div>這是一個(gè)紅色到黃色漸變的背景。</div>

解釋: 元素的背景將從左到右由紅色漸變?yōu)辄S色。

這些顏色表示法可以根據(jù)具體需求靈活使用,幫助你實(shí)現(xiàn)豐富的視覺(jué)效果。

3-針對(duì)CSS中的 文本 給出具體的知識(shí)案例


CSS 文本樣式詳解及案例

在 CSS 中,文本樣式可以通過(guò)多種屬性進(jìn)行控制,包括字體、顏色、對(duì)齊方式、裝飾、縮進(jìn)、行高等。以下是一些具體的知識(shí)案例,展示了如何在 CSS 中應(yīng)用這些文本樣式。

1. 字體 (Font Family)

使用 font-family 屬性可以設(shè)置文本的字體。

案例:

<style>
p {
    font-family: "Arial", sans-serif;
}
</style>

<p>這是一個(gè)使用 Arial 字體的段落。</p>

解釋: 文本將使用 Arial 字體,如果 Arial 不可用,將使用系統(tǒng)默認(rèn)的 sans-serif 字體。

2. 字體大小 (Font Size)

使用 font-size 屬性可以設(shè)置文本的字體大小。

案例:

<style>
p {
    font-size: 16px;
}
</style>

<p>這是一個(gè)字體大小為 16px 的段落。</p>

解釋: 文本的字體大小將被設(shè)置為 16 像素。

3. 字體粗細(xì) (Font Weight)

使用 font-weight 屬性可以設(shè)置文本的字體粗細(xì)。

案例:

<style>
p {
    font-weight: bold;
}
</style>

<p>這是一個(gè)加粗的段落。</p>

解釋: 文本將加粗顯示。

4. 字體樣式 (Font Style)

使用 font-style 屬性可以設(shè)置文本的字體樣式,如斜體。

案例:

<style>
p {
    font-style: italic;
}
</style>

<p>這是一個(gè)斜體的段落。</p>

解釋: 文本將以斜體顯示。

5. 文本顏色 (Color)

使用 color 屬性可以設(shè)置文本的顏色。

案例:

<style>
p {
    color: blue;
}
</style>

<p>這是一個(gè)藍(lán)色的段落。</p>

解釋: 文本顏色將被設(shè)置為藍(lán)色。

6. 文本對(duì)齊 (Text Align)

使用 text-align 屬性可以設(shè)置文本的對(duì)齊方式。

案例:

<style>
p {
    text-align: center;
}
</style>

<p>這是一個(gè)居中對(duì)齊的段落。</p>

解釋: 文本將居中對(duì)齊。

7. 文本裝飾 (Text Decoration)

使用 text-decoration 屬性可以為文本添加裝飾,如下劃線、刪除線等。

案例:

<style>
a {
    text-decoration: none;
}
</style>

<a href="#">這是一個(gè)沒(méi)有下劃線的鏈接。</a>

解釋: 鏈接文本將沒(méi)有下劃線。

8. 文本縮進(jìn) (Text Indent)

使用 text-indent 屬性可以設(shè)置段落的首行縮進(jìn)。

案例:

<style>
p {
    text-indent: 20px;
}
</style>

<p>這是一個(gè)首行縮進(jìn) 20px 的段落。這是一個(gè)首行縮進(jìn) 20px 的段落。這是一個(gè)首行縮進(jìn) 20px 的段落。</p>

解釋: 段落的首行將縮進(jìn) 20 像素。

9. 行高 (Line Height)

使用 line-height 屬性可以設(shè)置行高。

案例:

<style>
p {
    line-height: 1.5;
}
</style>

<p>這是一個(gè)行高為 1.5 的段落。這是一個(gè)行高為 1.5 的段落。這是一個(gè)行高為 1.5 的段落。</p>

解釋: 行高將被設(shè)置為字體大小的 1.5 倍。

10. 字母間距 (Letter Spacing)

使用 letter-spacing 屬性可以設(shè)置字母之間的間距。

案例:

<style>
p {
    letter-spacing: 2px;
}
</style>

<p>這是一個(gè)字母間距為 2px 的段落。</p>

解釋: 字母之間的間距將被設(shè)置為 2 像素。

11. 文本轉(zhuǎn)換 (Text Transform)

使用 text-transform 屬性可以改變文本的大小寫。

案例:

<style>
p {
    text-transform: uppercase;
}
</style>

<p>這是一個(gè)全部大寫的段落。</p>

解釋: 文本將全部轉(zhuǎn)換為大寫。

12. 文本陰影 (Text Shadow)

使用 text-shadow 屬性可以為文本添加陰影效果。

案例:

<style>
p {
    text-shadow: 2px 2px 4px #000000;
}
</style>

<p>這是一個(gè)帶有陰影的段落。</p>

解釋: 文本將有一個(gè) 2 像素的水平和垂直偏移,4 像素的模糊半徑,黑色陰影。

這些文本樣式屬性可以根據(jù)具體需求靈活使用,幫助你實(shí)現(xiàn)豐富多樣的文本效果。

4-針對(duì)CSS中的 盒子模型 給出具體的知識(shí)案例


CSS 盒子模型詳解及案例

CSS 盒子模型是理解和控制網(wǎng)頁(yè)布局的基礎(chǔ)。每個(gè) HTML 元素都被視為一個(gè)矩形盒子,這個(gè)盒子由四個(gè)部分組成:內(nèi)容區(qū)域、內(nèi)邊距(padding)、邊框(border)和外邊距(margin)。以下是一些具體的知識(shí)案例,展示了如何在 CSS 中應(yīng)用盒子模型。

1. 內(nèi)容區(qū)域 (Content Area)

內(nèi)容區(qū)域是盒子模型的核心,包含了實(shí)際的文本、圖像或其他內(nèi)容。

案例:

<style>
div {
    width: 200px;
    height: 100px;
    background-color: lightblue;
}
</style>

<div>這是一個(gè)內(nèi)容區(qū)域。</div>

解釋: 這個(gè) div 元素的內(nèi)容區(qū)域大小為 200px 寬、100px 高,背景顏色為淺藍(lán)色。

2. 內(nèi)邊距 (Padding)

內(nèi)邊距是內(nèi)容區(qū)域與邊框之間的空間,可以通過(guò) padding 屬性設(shè)置。

案例:

<style>
div {
    width: 200px;
    height: 100px;
    background-color: lightblue;
    padding: 20px;
}
</style>

<div>這是一個(gè)帶有內(nèi)邊距的盒子。</div>

解釋: 這個(gè) div 元素的內(nèi)容區(qū)域周圍有 20px 的內(nèi)邊距,背景顏色為淺藍(lán)色。

3. 邊框 (Border)

邊框是環(huán)繞內(nèi)容區(qū)域和內(nèi)邊距的線條,可以通過(guò) border 屬性設(shè)置。

案例:

<style>
div {
    width: 200px;
    height: 100px;
    background-color: lightblue;
    padding: 20px;
    border: 2px solid black;
}
</style>

<div>這是一個(gè)帶有邊框和內(nèi)邊距的盒子。</div>

解釋: 這個(gè) div 元素的內(nèi)容區(qū)域周圍有 2px 寬的黑色實(shí)線邊框,內(nèi)部還有 20px 的內(nèi)邊距。

4. 外邊距 (Margin)

外邊距是邊框與其他元素之間的空間,可以通過(guò) margin 屬性設(shè)置。

案例:

<style>
div {
    width: 200px;
    height: 100px;
    background-color: lightblue;
    padding: 20px;
    border: 2px solid black;
    margin: 30px;
}
</style>

<div>這是一個(gè)帶有邊框、內(nèi)邊距和外邊距的盒子。</div>

解釋: 這個(gè) div 元素的內(nèi)容區(qū)域周圍有 2px 寬的黑色實(shí)線邊框,內(nèi)部還有 20px 的內(nèi)邊距,外部還有 30px 的外邊距。

5. 盒子模型的總寬度與高度

盒子模型的總寬度與高度包括內(nèi)容區(qū)域、內(nèi)邊距、邊框和外邊距。

案例:

<style>
div {
    width: 200px;
    height: 100px;
    padding: 20px;
    border: 2px solid black;
    margin: 30px;
}
</style>

<div>這是一個(gè)盒子模型。</div>

解釋:

  • 總寬度 = 內(nèi)容寬度 (200px) + 左右內(nèi)邊距 (20px * 2) + 左右邊框 (2px * 2) + 左右外邊距 (30px * 2) = 200 + 40 + 4 + 60 = 304px
  • 總高度 = 內(nèi)容高度 (100px) + 上下內(nèi)邊距 (20px * 2) + 上下邊框 (2px * 2) + 上下外邊距 (30px * 2) = 100 + 40 + 4 + 60 = 204px

6. 盒子模型的計(jì)算 (box-sizing)

默認(rèn)情況下,widthheight 屬性只包括內(nèi)容區(qū)域??梢酝ㄟ^(guò) box-sizing 屬性改變這種行為。

案例:

<style>
div {
    width: 200px;
    height: 100px;
    padding: 20px;
    border: 2px solid black;
    margin: 30px;
    box-sizing: border-box;
}
</style>

<div>這是一個(gè)盒子模型。</div>

解釋: 使用 box-sizing: border-box; 后,widthheight 屬性將包括內(nèi)容區(qū)域、內(nèi)邊距和邊框,但不包括外邊距。

7. 內(nèi)邊距和邊框的單邊設(shè)置

可以分別設(shè)置內(nèi)邊距和邊框的四個(gè)邊。

案例:

<style>
div {
    width: 200px;
    height: 100px;
    background-color: lightblue;
    padding-top: 10px;
    padding-right: 20px;
    padding-bottom: 30px;
    padding-left: 40px;
    border-top: 1px solid red;
    border-right: 2px solid green;
    border-bottom: 3px solid blue;
    border-left: 4px solid yellow;
}
</style>

<div>這是一個(gè)帶有個(gè)性化內(nèi)邊距和邊框的盒子。</div>

解釋: 內(nèi)邊距和邊框的四個(gè)邊分別設(shè)置了不同的值。

8. 外邊距的重疊 (Margin Collapse)

在垂直方向上,兩個(gè)相鄰元素的外邊距會(huì)發(fā)生重疊,取較大的一個(gè)。

案例:

<style>
div {
    width: 200px;
    height: 100px;
    background-color: lightblue;
    margin-top: 20px;
    margin-bottom: 30px;
}
</style>

<div>第一個(gè)盒子。</div>
<div>第二個(gè)盒子。</div>

解釋: 兩個(gè) div 元素之間的垂直外邊距為 30px(取較大的一個(gè)),而不是 20px + 30px = 50px。

這些盒子模型的屬性可以根據(jù)具體需求靈活使用,幫助你更好地控制網(wǎng)頁(yè)布局。

5-針對(duì)CSS中的 布局 給出具體的知識(shí)案例


CSS 布局詳解及案例

CSS 布局是網(wǎng)頁(yè)設(shè)計(jì)的核心,通過(guò)各種布局技術(shù),可以實(shí)現(xiàn)不同的頁(yè)面結(jié)構(gòu)和視覺(jué)效果。以下是一些常見的 CSS 布局技術(shù)的具體知識(shí)案例。

1. 普通流布局 (Normal Flow Layout)

普通流布局是默認(rèn)的元素排列方式,包括塊級(jí)元素和行內(nèi)元素。

案例:

<style>
div {
    width: 200px;
    height: 100px;
    background-color: lightblue;
    margin: 10px;
}
</style>

<div>第一個(gè)盒子</div>
<div>第二個(gè)盒子</div>

解釋: 默認(rèn)情況下,塊級(jí)元素(如 div)會(huì)在垂直方向上依次排列。

2. 浮動(dòng)布局 (Float Layout)

浮動(dòng)布局通過(guò) float 屬性實(shí)現(xiàn),常用于圖文混排。

案例:

<style>
img {
    float: left;
    margin-right: 10px;
}
</style>

<div>
    <img src="image.jpg" alt="圖片">
    這是一段包含圖片的文字,圖片位于左側(cè)浮動(dòng)。
</div>

解釋: 圖片會(huì)浮動(dòng)到左側(cè),文字會(huì)環(huán)繞在右側(cè)。

3. 定位布局 (Position Layout)

定位布局通過(guò) position 屬性實(shí)現(xiàn),可以精確控制元素的位置。

案例:

<style>
.box {
    width: 100px;
    height: 100px;
    background-color: lightblue;
    position: absolute;
    top: 50px;
    left: 100px;
}
</style>

<div class="box">絕對(duì)定位的盒子</div>

解釋: 盒子會(huì)相對(duì)于最近的已定位祖先元素(如果沒(méi)有,則相對(duì)于初始包含塊)偏移 50px 向下、100px 向右。

4. 彈性盒子布局 (Flexbox Layout)

彈性盒子布局通過(guò) display: flex 實(shí)現(xiàn),適用于一維布局(水平或垂直)。

案例:

<style>
.container {
    display: flex;
    justify-content: space-between;
    background-color: lightgray;
    padding: 10px;
}

.item {
    width: 100px;
    height: 100px;
    background-color: lightblue;
    margin: 5px;
}
</style>

<div class="container">
    <div class="item">盒子1</div>
    <div class="item">盒子2</div>
    <div class="item">盒子3</div>
</div>

解釋: 容器中的子元素會(huì)水平排列,并在容器中均勻分布。

5. 網(wǎng)格布局 (Grid Layout)

網(wǎng)格布局通過(guò) display: grid 實(shí)現(xiàn),適用于二維布局。

案例:

<style>
.container {
    display: grid;
    grid-template-columns: repeat(3, 100px);
    grid-template-rows: repeat(2, 100px);
    gap: 10px;
    background-color: lightgray;
    padding: 10px;
}

.item {
    background-color: lightblue;
    padding: 20px;
    text-align: center;
}
</style>

<div class="container">
    <div class="item">盒子1</div>
    <div class="item">盒子2</div>
    <div class="item">盒子3</div>
    <div class="item">盒子4</div>
    <div class="item">盒子5</div>
    <div class="item">盒子6</div>
</div>

解釋: 容器會(huì)創(chuàng)建一個(gè) 3 列 2 行的網(wǎng)格布局,子元素會(huì)依次填充網(wǎng)格單元。

6. 多列布局 (Multi-column Layout)

多列布局通過(guò) column-countcolumn-width 屬性實(shí)現(xiàn),適用于內(nèi)容分欄顯示。

案例:

<style>
.container {
    column-count: 3;
    column-gap: 20px;
    background-color: lightgray;
    padding: 20px;
}

.item {
    background-color: lightblue;
    padding: 20px;
    margin-bottom: 20px;
}
</style>

<div class="container">
    <div class="item">內(nèi)容1</div>
    <div class="item">內(nèi)容2</div>
    <div class="item">內(nèi)容3</div>
    <div class="item">內(nèi)容4</div>
    <div class="item">內(nèi)容5</div>
    <div class="item">內(nèi)容6</div>
</div>

解釋: 容器中的內(nèi)容會(huì)被分成 3 列顯示,每列之間有 20px 的間隔。

7. 響應(yīng)式布局 (Responsive Layout)

響應(yīng)式布局通過(guò)媒體查詢(Media Queries)實(shí)現(xiàn),使網(wǎng)頁(yè)在不同設(shè)備上具有良好的顯示效果。

案例:

<style>
.container {
    display: flex;
    flex-wrap: wrap;
    background-color: lightgray;
    padding: 10px;
}

.item {
    width: 100%;
    height: 100px;
    background-color: lightblue;
    margin: 5px;
}

@media (min-width: 600px) {
    .item {
        width: 50%;
    }
}

@media (min-width: 900px) {
    .item {
        width: 33.33%;
    }
}
</style>

<div class="container">
    <div class="item">盒子1</div>
    <div class="item">盒子2</div>
    <div class="item">盒子3</div>
    <div class="item">盒子4</div>
    <div class="item">盒子5</div>
    <div class="item">盒子6</div>
</div>

解釋: 在不同的屏幕寬度下,子元素的寬度會(huì)根據(jù)媒體查詢的設(shè)置自動(dòng)調(diào)整。手機(jī)上每行顯示 1 個(gè)盒子,平板電腦上每行顯示 2 個(gè)盒子,桌面設(shè)備上每行顯示 3 個(gè)盒子。

這些布局技術(shù)可以根據(jù)具體需求靈活使用,幫助你實(shí)現(xiàn)豐富多樣的頁(yè)面結(jié)構(gòu)和視覺(jué)效果。

6-針對(duì)CSS中的 網(wǎng)格布局 給出具體的知識(shí)案例


CSS 網(wǎng)格布局詳解及案例

CSS 網(wǎng)格布局(Grid Layout)是一種強(qiáng)大的二維布局系統(tǒng),能夠靈活地控制元素在行和列中的位置。以下是一些具體的知識(shí)案例。

1. 基本網(wǎng)格布局

案例:

<style>
.container {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr; /* 3列,每列等寬 */
    grid-template-rows: 100px 100px; /* 2行,每行100px高 */
    gap: 10px; /* 行和列之間的間距 */
    background-color: lightgray;
    padding: 10px;
}

.item {
    background-color: lightblue;
    padding: 20px;
    text-align: center;
}
</style>

<div class="container">
    <div class="item">盒子1</div>
    <div class="item">盒子2</div>
    <div class="item">盒子3</div>
    <div class="item">盒子4</div>
    <div class="item">盒子5</div>
    <div class="item">盒子6</div>
</div>

解釋:

  • display: grid;.container 設(shè)置為網(wǎng)格容器。
  • grid-template-columns: 1fr 1fr 1fr; 創(chuàng)建三列,每列等寬。
  • grid-template-rows: 100px 100px; 創(chuàng)建兩行,每行高 100px。
  • gap: 10px; 設(shè)置行和列之間的間距。

2. 網(wǎng)格區(qū)域命名

案例:

<style>
.container {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    grid-template-rows: 100px 100px;
    grid-template-areas: 
        "header header header"
        "sidebar content content";
    gap: 10px;
    background-color: lightgray;
    padding: 10px;
}

.item1 { grid-area: header; }
.item2 { grid-area: sidebar; }
.item3 { grid-area: content; }

.item {
    background-color: lightblue;
    padding: 20px;
    text-align: center;
}
</style>

<div class="container">
    <div class="item item1">Header</div>
    <div class="item item2">Sidebar</div>
    <div class="item item3">Content</div>
</div>

解釋:

  • grid-template-areas 定義了一個(gè)網(wǎng)格區(qū)域布局。
  • .item1 { grid-area: header; } 將第一個(gè)子元素放置在命名為 header 的區(qū)域。
  • .item2 { grid-area: sidebar; } 將第二個(gè)子元素放置在命名為 sidebar 的區(qū)域。
  • .item3 { grid-area: content; } 將第三個(gè)子元素放置在命名為 content 的區(qū)域。

3. 自動(dòng)填充和自動(dòng)適應(yīng)

案例:

<style>
.container {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 10px;
    background-color: lightgray;
    padding: 10px;
}

.item {
    background-color: lightblue;
    padding: 20px;
    text-align: center;
}
</style>

<div class="container">
    <div class="item">盒子1</div>
    <div class="item">盒子2</div>
    <div class="item">盒子3</div>
    <div class="item">盒子4</div>
    <div class="item">盒子5</div>
    <div class="item">盒子6</div>
</div>

解釋:

  • grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); 創(chuàng)建盡可能多的列,每列最小寬度為 200px,最大寬度為 1fr。
  • auto-fill 自動(dòng)填充盡可能多的列,minmax(200px, 1fr) 定義每列的最小和最大寬度。

4. 網(wǎng)格元素的放置

案例:

<style>
.container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: repeat(3, 100px);
    gap: 10px;
    background-color: lightgray;
    padding: 10px;
}

.item1 {
    grid-column: 1 / 3; /* 從第1列到第3列 */
    grid-row: 1 / 2;   /* 從第1行到第2行 */
}

.item2 {
    grid-column: 3 / 4; /* 從第3列到第4列 */
    grid-row: 1 / 3;    /* 從第1行到第3行 */
}

.item {
    background-color: lightblue;
    padding: 20px;
    text-align: center;
}
</style>

<div class="container">
    <div class="item item1">盒子1</div>
    <div class="item item2">盒子2</div>
    <div class="item">盒子3</div>
    <div class="item">盒子4</div>
    <div class="item">盒子5</div>
    <div class="item">盒子6</div>
</div>

解釋:

  • .item1 { grid-column: 1 / 3; grid-row: 1 / 2; } 將第一個(gè)子元素放置在第1列到第3列,第1行。
  • .item2 { grid-column: 3 / 4; grid-row: 1 / 3; } 將第二個(gè)子元素放置在第3列到第4列,第1行到第3行。

5. 響應(yīng)式網(wǎng)格布局

案例:

<style>
.container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 10px;
    background-color: lightgray;
    padding: 10px;
}

.item {
    background-color: lightblue;
    padding: 20px;
    text-align: center;
}
</style>

<div class="container">
    <div class="item">盒子1</div>
    <div class="item">盒子2</div>
    <div class="item">盒子3</div>
    <div class="item">盒子4</div>
    <div class="item">盒子5</div>
    <div class="item">盒子6</div>
</div>

解釋:

  • grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); 創(chuàng)建盡可能多的列,每列最小寬度為 200px,最大寬度為 1fr。
  • auto-fit 類似于 auto-fill,但在容器寬度不足以容納所有列時(shí),會(huì)自動(dòng)調(diào)整列的寬度以適應(yīng)容器。

這些案例展示了 CSS 網(wǎng)格布局的各種應(yīng)用場(chǎng)景,幫助你更好地理解和使用這一強(qiáng)大的布局系統(tǒng)。

6-針對(duì)CSS中的 定位 給出具體的知識(shí)案例


CSS 定位詳解及案例

CSS 定位(Positioning)是指如何控制 HTML 元素在頁(yè)面中的位置。CSS 提供了多種定位方式,包括靜態(tài)定位(static)、相對(duì)定位(relative)、絕對(duì)定位(absolute)、固定定位(fixed)和粘性定位(sticky)。以下是具體的知識(shí)案例。

1. 靜態(tài)定位(Static Positioning)

案例:

<style>
.container {
    width: 500px;
    height: 300px;
    border: 2px solid black;
}

.box {
    width: 100px;
    height: 100px;
    background-color: lightblue;
    position: static; /* 默認(rèn)值 */
}
</style>

<div class="container">
    <div class="box">靜態(tài)定位</div>
</div>

解釋:

  • position: static; 是默認(rèn)值,元素按照正常的文檔流進(jìn)行布局。

2. 相對(duì)定位(Relative Positioning)

案例:

<style>
.container {
    width: 500px;
    height: 300px;
    border: 2px solid black;
    position: relative;
}

.box {
    width: 100px;
    height: 100px;
    background-color: lightblue;
    position: relative;
    top: 50px; /* 向下偏移50px */
    left: 50px; /* 向右偏移50px */
}
</style>

<div class="container">
    <div class="box">相對(duì)定位</div>
</div>

解釋:

  • position: relative; 元素相對(duì)于其正常位置進(jìn)行定位。
  • top: 50px; 向下偏移 50px,left: 50px; 向右偏移 50px。

3. 絕對(duì)定位(Absolute Positioning)

案例:

<style>
.container {
    width: 500px;
    height: 300px;
    border: 2px solid black;
    position: relative;
}

.box {
    width: 100px;
    height: 100px;
    background-color: lightblue;
    position: absolute;
    top: 50px; /* 相對(duì)于容器頂部偏移50px */
    left: 50px; /* 相對(duì)于容器左側(cè)偏移50px */
}
</style>

<div class="container">
    <div class="box">絕對(duì)定位</div>
</div>

解釋:

  • position: absolute; 元素相對(duì)于最近的已定位祖先元素(非 static 定位)進(jìn)行定位。
  • top: 50px; 相對(duì)于容器頂部偏移 50px,left: 50px; 相對(duì)于容器左側(cè)偏移 50px。

4. 固定定位(Fixed Positioning)

案例:

<style>
.box {
    width: 100px;
    height: 100px;
    background-color: lightblue;
    position: fixed;
    top: 50px; /* 相對(duì)于視口頂部偏移50px */
    right: 50px; /* 相對(duì)于視口右側(cè)偏移50px */
}
</style>

<div class="box">固定定位</div>

解釋:

  • position: fixed; 元素相對(duì)于視口進(jìn)行定位,即使頁(yè)面滾動(dòng),元素位置也不會(huì)改變。
  • top: 50px; 相對(duì)于視口頂部偏移 50px,right: 50px; 相對(duì)于視口右側(cè)偏移 50px。

5. 粘性定位(Sticky Positioning)

案例:

<style>
.container {
    width: 100%;
    height: 2000px;
    border: 2px solid black;
}

.box {
    width: 100px;
    height: 100px;
    background-color: lightblue;
    position: sticky;
    top: 50px; /* 相對(duì)于視口頂部偏移50px */
    left: 50px; /* 相對(duì)于容器左側(cè)偏移50px */
}
</style>

<div class="container">
    <div class="box">粘性定位</div>
</div>

解釋:

  • position: sticky; 元素在滾動(dòng)到特定位置之前是相對(duì)定位的,滾動(dòng)到該位置后變?yōu)楣潭ǘㄎ弧?/li>
  • top: 50px; 當(dāng)元素滾動(dòng)到距離視口頂部 50px 時(shí),它會(huì)“粘”在那個(gè)位置。
  • left: 50px; 相對(duì)于容器左側(cè)偏移 50px。

6. 混合定位案例

案例:

<style>
.container {
    width: 500px;
    height: 300px;
    border: 2px solid black;
    position: relative;
}

.box1 {
    width: 100px;
    height: 100px;
    background-color: lightblue;
    position: absolute;
    top: 0;
    left: 0;
}

.box2 {
    width: 100px;
    height: 100px;
    background-color: lightgreen;
    position: absolute;
    top: 50px;
    left: 50px;
}

.box3 {
    width: 100px;
    height: 100px;
    background-color: lightcoral;
    position: absolute;
    top: 100px;
    left: 100px;
}
</style>

<div class="container">
    <div class="box1">絕對(duì)定位1</div>
    <div class="box2">絕對(duì)定位2</div>
    <div class="box3">絕對(duì)定位3</div>
</div>



7-grid針對(duì)多個(gè)圖片進(jìn)行排版

為了實(shí)現(xiàn)根據(jù)圖片數(shù)量動(dòng)態(tài)調(diào)整列數(shù)的效果,可以使用CSS Grid布局。我們可以通過(guò)JavaScript來(lái)動(dòng)態(tài)調(diào)整列數(shù),并在CSS中定義不同數(shù)量的列布局。

基礎(chǔ)要求圖片大小250*250,padding=10,gap=10,然后1張圖片1列展示,兩張圖片2列展示,其它都是3列展示

以下是一個(gè)示例代碼:

HTML

<div class="grid-container">
    <img src="image1.jpg" alt="Image 1">
    <img src="image2.jpg" alt="Image 2">
    <img src="image3.jpg" alt="Image 3">
    <img src="image4.jpg" alt="Image 4">
    <!-- 更多圖片 -->
</div>

CSS

/* 基礎(chǔ)樣式 */
.grid-container {
    display: grid;
    gap: 10px;
    padding: 10px;
}

.grid-container img {
    width: 250px;
    height: 250px;
    object-fit: cover;
}

/* 不同數(shù)量的列樣式 */
.grid-container.one-column {
    grid-template-columns: repeat(1, 1fr);
}

.grid-container.two-columns {
    grid-template-columns: repeat(2, 1fr);
}

.grid-container.three-columns {
    grid-template-columns: repeat(3, 1fr);
}

JavaScript

// 獲取圖片數(shù)量并設(shè)置相應(yīng)的類
function setGridColumns() {
    const gridContainer = document.querySelector('.grid-container');
    const images = gridContainer.querySelectorAll('img');
    const imageCount = images.length;

    // 移除所有列樣式類
    gridContainer.classList.remove('one-column', 'two-columns', 'three-columns');

    // 根據(jù)圖片數(shù)量添加相應(yīng)的列樣式類
    if (imageCount === 1) {
        gridContainer.classList.add('one-column');
    } else if (imageCount === 2) {
        gridContainer.classList.add('two-columns');
    } else {
        gridContainer.classList.add('three-columns');
    }
}

// 頁(yè)面加載時(shí)設(shè)置列樣式
window.addEventListener('load', setGridColumns);

解釋

  1. HTML: 創(chuàng)建一個(gè)包含圖片的容器。
  2. CSS:
    • .grid-container 使用 display: grid; 布局,并設(shè)置 gappadding。
    • .grid-container img 設(shè)置圖片大小為 250x250,并確保圖片覆蓋整個(gè)區(qū)域。
    • 針對(duì)不同數(shù)量的圖片,定義不同的列布局類(.one-column, .two-columns, .three-columns)。
  3. JavaScript:
    • setGridColumns 函數(shù)根據(jù)圖片數(shù)量動(dòng)態(tài)調(diào)整列布局。
    • 頁(yè)面加載時(shí)調(diào)用 setGridColumns 函數(shù),確保布局正確。

這樣,當(dāng)頁(yè)面加載時(shí),JavaScript 會(huì)根據(jù)圖片數(shù)量自動(dòng)調(diào)整列布局,從而實(shí)現(xiàn)根據(jù)圖片數(shù)量動(dòng)態(tài)排版的效果。


8-grid針對(duì)多個(gè)圖片進(jìn)行排版-VUE版本

參考視頻:https://www.bilibili.com/video/BV1Em421g7LN


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容