【css】【面試提問】css經典問題總結

第一章 CSS基礎相關提問

1.1 選擇器問題

1.1.1 選擇器優先級疑問

1. 優先級規則
  • 內聯樣式:直接寫在 HTML 標簽的 style 屬性中的樣式,優先級最高。例如:
<p style="color: red;">這是一段紅色文字</p>

這里文字的顏色會被強制設置為紅色,因為內聯樣式的權重是最高的😎。

  • ID 選擇器:使用 # 符號定義,權重次之。比如:
<!DOCTYPE html>
<html lang="en">
<head><style>#myParagraph {color: blue;}</style>
</head>
<body><p id="myParagraph">這是一段藍色文字</p>
</body>
</html>

這里的 #myParagraph 選擇器會應用到對應的 p 標簽上,文字會顯示為藍色。

  • 類選擇器、屬性選擇器和偽類選擇器:它們的權重相同且低于 ID 選擇器。例如:
<!DOCTYPE html>
<html lang="en">
<head><style>.myClass {color: green;}</style>
</head>
<body><p class="myClass">這是一段綠色文字</p>
</body>
</html>

這里的 .myClass 類選擇器會將 p 標簽內的文字顏色設置為綠色。

  • 元素選擇器和偽元素選擇器:權重最低。比如:
<!DOCTYPE html>
<html lang="en">
<head><style>p {color: purple;}</style>
</head>
<body><p>這是一段紫色文字</p>
</body>
</html>

這里的 p 元素選擇器會將所有 p 標簽內的文字顏色設置為紫色。

2. 計算優先級

可以通過計算不同選擇器的數量來確定優先級。例如,一個包含 2 個 ID 選擇器、3 個類選擇器和 1 個元素選擇器的選擇器組合,其優先級可以大致表示為 2-3-1,數字越大的部分代表的選擇器類型權重越高🤓。

1.1.2 復雜選擇器的使用場景和示例

1. 后代選擇器
  • 使用場景:當需要選擇某個元素內部的所有特定元素時使用。
  • 示例
<!DOCTYPE html>
<html lang="en">
<head><style>ul li {color: orange;}</style>
</head>
<body><ul><li>列表項 1</li><li>列表項 2</li></ul>
</body>
</html>

這里的 ul li 選擇器會將 ul 元素內部的所有 li 元素的文字顏色設置為橙色。

2. 子選擇器
  • 使用場景:只選擇某個元素的直接子元素。
  • 示例
<!DOCTYPE html>
<html lang="en">
<head><style>div > p {color: pink;}</style>
</head>
<body><div><p>這是直接子元素</p><span><p>這不是直接子元素</p></span></div>
</body>
</html>

這里的 div > p 選擇器只會將 div 的直接子元素 p 的文字顏色設置為粉色。

3. 相鄰兄弟選擇器
  • 使用場景:選擇某個元素后面緊鄰的兄弟元素。
  • 示例
<!DOCTYPE html>
<html lang="en">
<head><style>h1 + p {color: brown;}</style>
</head>
<body><h1>標題</h1><p>這是緊鄰的段落</p><p>這不是緊鄰的段落</p>
</body>
</html>

這里的 h1 + p 選擇器會將 h1 后面緊鄰的 p 元素的文字顏色設置為棕色。

1.1.3 選擇器的性能比較及優化

1. 性能比較
  • ID 選擇器:性能最好,因為瀏覽器可以直接通過 ID 快速定位到元素。
  • 類選擇器和屬性選擇器:性能次之,需要遍歷元素的類名或屬性來匹配。
  • 元素選擇器:性能相對較差,因為需要遍歷所有元素來匹配。
  • 復雜選擇器:如后代選擇器、子選擇器等,性能最差,因為需要進行多層級的匹配。
2. 優化方法
  • 避免使用通配符選擇器* 通配符選擇器會匹配所有元素,性能開銷很大,盡量避免使用。
  • 減少復雜選擇器的嵌套:過多的嵌套會增加匹配的復雜度,降低性能。
  • 優先使用 ID 和類選擇器:它們的匹配速度更快,可以提高性能。

1.2 盒模型問題

1.2.1 盒模型各部分的計算方式

1. 內容區(content)

內容區是元素實際顯示的內容,如文字、圖片等。其寬度和高度由元素的 widthheight 屬性決定。例如:

<!DOCTYPE html>
<html lang="en">
<head><style>div {width: 200px;height: 100px;background-color: lightblue;}</style>
</head>
<body><div>這是內容區</div>
</body>
</html>

這里的 div 元素的內容區寬度為 200px,高度為 100px。

2. 內邊距(padding)

內邊距是內容區與邊框之間的距離,通過 padding 屬性設置。可以分別設置上、右、下、左四個方向的內邊距,也可以統一設置。例如:

<!DOCTYPE html>
<html lang="en">
<head><style>div {width: 200px;height: 100px;padding: 10px;background-color: lightgreen;}</style>
</head>
<body><div>這是有內邊距的元素</div>
</body>
</html>

這里的 div 元素的內邊距為 10px,實際占據的寬度為 200 + 2 * 10 = 220px,高度為 100 + 2 * 10 = 120px

3. 邊框(border)

邊框是圍繞內容區和內邊距的線條,通過 border 屬性設置。可以設置邊框的寬度、樣式和顏色。例如:

<!DOCTYPE html>
<html lang="en">
<head><style>div {width: 200px;height: 100px;padding: 10px;border: 2px solid black;background-color: lightyellow;}</style>
</head>
<body><div>這是有邊框的元素</div>
</body>
</html>

這里的 div 元素的邊框寬度為 2px,實際占據的寬度為 200 + 2 * 10 + 2 * 2 = 224px,高度為 100 + 2 * 10 + 2 * 2 = 124px

4. 外邊距(margin)

外邊距是元素與其他元素之間的距離,通過 margin 屬性設置。同樣可以分別設置四個方向的外邊距,也可以統一設置。例如:

<!DOCTYPE html>
<html lang="en">
<head><style>div {width: 200px;height: 100px;padding: 10px;border: 2px solid black;margin: 20px;background-color: lightcoral;}</style>
</head>
<body><div>這是有外邊距的元素</div>
</body>
</html>

這里的 div 元素的外邊距為 20px,它與其他元素之間會有 20px 的間距。

1.2.2 盒模型的不同類型(content-box、border-box等)及應用場景

1. content-box
  • 特點:這是盒模型的默認類型,元素的 widthheight 只包含內容區的寬度和高度,不包含內邊距、邊框和外邊距。
  • 應用場景:當需要精確控制內容區的大小時使用。例如:
<!DOCTYPE html>
<html lang="en">
<head><style>div {width: 200px;height: 100px;padding: 10px;border: 2px solid black;box-sizing: content-box;background-color: lightblue;}</style>
</head>
<body><div>這是 content-box 類型的元素</div>
</body>
</html>

這里的 div 元素的內容區寬度為 200px,高度為 100px,實際占據的寬度和高度需要加上內邊距和邊框的寬度。

2. border-box
  • 特點:元素的 widthheight 包含內容區、內邊距和邊框的寬度和高度,但不包含外邊距。
  • 應用場景:當需要固定元素的總寬度和高度,而不希望內邊距和邊框影響布局時使用。例如:
<!DOCTYPE html>
<html lang="en">
<head><style>div {width: 200px;height: 100px;padding: 10px;border: 2px solid black;box-sizing: border-box;background-color: lightgreen;}</style>
</head>
<body><div>這是 border-box 類型的元素</div>
</body>
</html>

這里的 div 元素的總寬度為 200px,總高度為 100px,內邊距和邊框會在這個范圍內顯示。

1.2.3 解決盒模型寬度計算沖突的方法

1. 使用 border-box

將元素的 box-sizing 屬性設置為 border-box,可以避免內邊距和邊框影響元素的總寬度。例如:

<!DOCTYPE html>
<html lang="en">
<head><style>div {width: 200px;padding: 10px;border: 2px solid black;box-sizing: border-box;background-color: lightyellow;}</style>
</head>
<body><div>這是使用 border-box 解決寬度沖突的元素</div>
</body>
</html>
2. 調整內邊距和邊框的寬度

如果不想改變 box-sizing 屬性,可以適當調整內邊距和邊框的寬度,以確保元素的總寬度符合要求。例如:

<!DOCTYPE html>
<html lang="en">
<head><style>div {width: 200px;padding: 5px;border: 1px solid black;background-color: lightcoral;}</style>
</head>
<body><div>這是通過調整內邊距和邊框寬度解決寬度沖突的元素</div>
</body>
</html>

1.3 樣式繼承問題

1.3.1 哪些屬性可以繼承,哪些不能

1. 可繼承的屬性
  • 文字相關屬性:如 colorfont-familyfont-sizefont-weight 等。例如:
<!DOCTYPE html>
<html lang="en">
<head><style>body {color: blue;font-family: Arial, sans-serif;}</style>
</head>
<body><p>這是一段繼承了文字顏色和字體的段落</p>
</body>
</html>

這里的 p 元素會繼承 body 元素的文字顏色和字體。

  • 列表相關屬性:如 list-style-typelist-style-position 等。例如:
<!DOCTYPE html>
<html lang="en">
<head><style>ul {list-style-type: square;}</style>
</head>
<body><ul><li>列表項 1</li><li>列表項 2</li></ul>
</body>
</html>

這里的 li 元素會繼承 ul 元素的列表樣式類型。

2. 不可繼承的屬性
  • 盒模型相關屬性:如 widthheightpaddingbordermargin 等。例如:
<!DOCTYPE html>
<html lang="en">
<head><style>body {width: 500px;}</style>
</head>
<body><p>這是一段不會繼承寬度的段落</p>
</body>
</html>

這里的 p 元素不會繼承 body 元素的寬度。

  • 定位相關屬性:如 positiontoprightbottomleft 等。

1.3.2 控制樣式繼承的方法

1. 使用 inherit

可以將某個屬性的值設置為 inherit,強制元素繼承父元素的該屬性值。例如:

<!DOCTYPE html>
<html lang="en">
<head><style>body {color: green;}p {color: inherit;}</style>
</head>
<body><p>這是一段強制繼承文字顏色的段落</p>
</body>
</html>
2. 使用 initial

將某個屬性的值設置為 initial,可以將該屬性重置為其默認值,不繼承父元素的屬性值。例如:

<!DOCTYPE html>
<html lang="en">
<head><style>body {color: purple;}p {color: initial;}</style>
</head>
<body><p>這是一段重置文字顏色的段落</p>
</body>
</html>

1.3.3 樣式繼承對布局的影響

1. 正面影響
  • 減少代碼重復:通過繼承,一些通用的樣式可以只在父元素上設置,子元素自動繼承,減少了代碼的重復編寫。例如,在 body 元素上設置文字顏色和字體,所有子元素都會繼承這些樣式。
  • 保持一致性:繼承可以確保頁面中相關元素的樣式保持一致,提高頁面的整體美觀度和可讀性。
2. 負面影響
  • 意外樣式沖突:如果不小心在父元素上設置了一些不希望子元素繼承的樣式,可能會導致子元素出現意外的樣式沖突。例如,在 body 元素上設置了 width 屬性,可能會影響到一些不希望繼承該寬度的子元素的布局。
  • 調試困難:由于樣式繼承的存在,當出現樣式問題時,可能需要追溯到父元素甚至更上層的元素來查找問題的根源,增加了調試的難度。

第二章 CSS布局相關提問

2.1 浮動布局問題

2.1.1 浮動元素的特性及影響
1. 浮動元素的特性
  • 脫離文檔流:浮動元素會脫離正常的文檔流,就像從頁面的“隊伍”中跑出來一樣😜。其他正常元素在布局時會忽略浮動元素所占的空間。例如,一個浮動的 <div> 元素,它后面的元素會向上移動,填補它原本在文檔流中的位置。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style>.float-left {float: left;width: 100px;height: 100px;background-color: lightblue;}.normal {width: 200px;height: 200px;background-color: lightcoral;}</style>
</head><body><div class="float-left"></div><div class="normal"></div>
</body></html>

在這個例子中,.float-left 元素浮動后,.normal 元素會向上移動。

  • 包裹性:浮動元素會盡可能地收縮以適應其內容,就像給內容穿上了一件緊身衣🤏。如果浮動元素內只有文本,它的寬度會根據文本的長度來確定。
  • 行內顯示:浮動元素會像行內元素一樣水平排列,多個浮動元素會依次排列在一行,直到空間不夠才會換行。
2. 浮動元素的影響
  • 父元素高度塌陷:由于浮動元素脫離文檔流,父元素在計算高度時不會包含浮動元素的高度,導致父元素高度塌陷為 0。這就好比一個容器里的東西飄起來了,容器卻不知道里面有東西,自己癟下去了😔。
  • 影響相鄰元素布局:浮動元素會影響相鄰元素的位置和排列方式,可能導致布局混亂。
2.1.2 清除浮動的方法及原理
1. 額外標簽法
  • 方法:在浮動元素的末尾添加一個空的塊級元素,如 <div style="clear: both;"></div>
  • 原理clear 屬性用于清除元素的浮動影響,clear: both 表示元素的左右兩側都不允許有浮動元素,這樣就可以讓父元素包含浮動元素的高度。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style>.parent {border: 1px solid black;}.float-left {float: left;width: 100px;height: 100px;background-color: lightblue;}.clear {clear: both;}</style>
</head><body><div class="parent"><div class="float-left"></div><div class="clear"></div></div>
</body></html>
2. BFC 法
  • 方法:將父元素設置為 BFC(塊級格式化上下文),可以通過設置 overflow: hiddendisplay: inline-block 等方式實現。
  • 原理:BFC 會包含其內部的浮動元素,就像一個獨立的小盒子,把浮動元素都裝在里面,從而避免父元素高度塌陷。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style>.parent {border: 1px solid black;overflow: hidden;}.float-left {float: left;width: 100px;height: 100px;background-color: lightblue;}</style>
</head><body><div class="parent"><div class="float-left"></div></div>
</body></html>
3. 偽元素法
  • 方法:使用 ::after 偽元素為父元素添加一個內容為空的元素,并設置 clear: both
  • 原理:本質上和額外標簽法類似,只是通過偽元素來實現,避免了在 HTML 中添加額外的標簽。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style>.parent {border: 1px solid black;}.parent::after {content: "";display: block;clear: both;}.float-left {float: left;width: 100px;height: 100px;background-color: lightblue;}</style>
</head><body><div class="parent"><div class="float-left"></div></div>
</body></html>
2.1.3 浮動布局在響應式設計中的應用和問題
1. 應用
  • 多列布局:可以使用浮動實現簡單的多列布局,在不同屏幕尺寸下,通過媒體查詢調整列的寬度和浮動方向,實現響應式效果。例如,在大屏幕上顯示三列,在小屏幕上顯示一列。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><style>.column {float: left;width: 33.33%;box-sizing: border-box;padding: 10px;background-color: lightblue;}@media (max-width: 768px) {.column {width: 100%;}}</style>
</head><body><div class="column">Column 1</div><div class="column">Column 2</div><div class="column">Column 3</div>
</body></html>
2. 問題
  • 高度不一致問題:浮動元素的高度可能不一致,導致布局錯亂。例如,在多列布局中,如果某一列的內容較多,高度較高,可能會影響其他列的顯示。
  • 清除浮動復雜:在響應式設計中,可能需要根據不同的屏幕尺寸多次清除浮動,增加了代碼的復雜性。

2.2 定位布局問題

2.2.1 不同定位類型(static、relative、absolute、fixed、sticky)的區別和使用場景
1. static
  • 特點:元素的默認定位方式,元素按照正常的文檔流進行布局,toprightbottomleftz-index 屬性無效。
  • 使用場景:當不需要對元素進行特殊定位時,使用默認的 static 定位。
2. relative
  • 特點:元素相對于其正常位置進行定位,元素仍然占據原來的空間,只是在視覺上進行了移動。
  • 使用場景:常用于作為絕對定位元素的參考元素,或者對元素進行小范圍的位置調整。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style>.relative {position: relative;top: 20px;left: 20px;background-color: lightblue;}</style>
</head><body><div class="relative">This is a relatively positioned element.</div>
</body></html>
3. absolute
  • 特點:元素脫離文檔流,相對于最近的已定位祖先元素(即 position 屬性值不為 static 的祖先元素)進行定位。如果沒有已定位的祖先元素,則相對于 <html> 元素定位。
  • 使用場景:用于創建彈出框、下拉菜單等需要脫離文檔流的元素。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style>.parent {position: relative;width: 200px;height: 200px;background-color: lightcoral;}.absolute {position: absolute;top: 50px;left: 50px;background-color: lightblue;}</style>
</head><body><div class="parent"><div class="absolute">This is an absolutely positioned element.</div></div>
</body></html>
4. fixed
  • 特點:元素脫離文檔流,相對于瀏覽器窗口進行定位,無論頁面如何滾動,元素的位置都保持不變。
  • 使用場景:常用于創建固定在頁面頂部的導航欄、側邊欄等。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style>.fixed {position: fixed;top: 0;left: 0;width: 100%;background-color: lightblue;}</style>
</head><body><div class="fixed">This is a fixed element.</div><p>Scroll down to see the fixed element stay in place.</p><p>Scroll down to see the fixed element stay in place.</p><p>Scroll down to see the fixed element stay in place.</p><!-- 更多內容 -->
</body></html>
5. sticky
  • 特點:元素在正常文檔流中,當滾動到特定位置時,會固定在頁面上,就像粘性元素一樣。它是 relativefixed 的結合。
  • 使用場景:常用于創建粘性標題、側邊欄等,當滾動到一定位置時固定顯示。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style>.sticky {position: sticky;top: 0;background-color: lightblue;}</style>
</head><body><div class="sticky">This is a sticky element.</div><p>Scroll down to see the sticky element stick to the top.</p><p>Scroll down to see the sticky element stick to the top.</p><p>Scroll down to see the sticky element stick to the top.</p><!-- 更多內容 -->
</body></html>
2.2.2 絕對定位和相對定位的組合使用技巧
  • 創建彈出框:將父元素設置為 position: relative,子元素設置為 position: absolute,可以讓子元素相對于父元素進行定位,實現彈出框的效果。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style>.parent {position: relative;width: 200px;height: 200px;background-color: lightcoral;}.popup {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);background-color: lightblue;padding: 10px;}</style>
</head><body><div class="parent"><div class="popup">This is a popup.</div></div>
</body></html>
  • 圖片上的文字說明:將圖片所在的容器設置為 position: relative,文字說明設置為 position: absolute,可以將文字說明精確地定位在圖片的特定位置。
2.2.3 定位元素的層級關系和 z-index 的使用
  • 層級關系:定位元素默認按照它們在 HTML 文檔中的順序進行堆疊,后面的元素會覆蓋前面的元素。
  • z-indexz-index 屬性用于控制定位元素的堆疊順序,值越大的元素會顯示在越上面。z-index 只對定位元素(position 屬性值不為 static)有效。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style>.box1 {position: absolute;top: 20px;left: 20px;width: 100px;height: 100px;background-color: lightblue;z-index: 1;}.box2 {position: absolute;top: 40px;left: 40px;width: 100px;height: 100px;background-color: lightcoral;z-index: 2;}</style>
</head><body><div class="box1"></div><div class="box2"></div>
</body></html>

在這個例子中,.box2z-index 值為 2,大于 .box1z-index 值 1,所以 .box2 會顯示在 .box1 的上面。

2.3 彈性布局(Flexbox)問題

2.3.1 Flexbox的基本概念和屬性
1. 基本概念
  • Flex 容器:設置了 display: flexdisplay: inline-flex 的元素稱為 Flex 容器。它就像一個“盒子”,用來容納 Flex 項目。
  • Flex 項目:Flex 容器的直接子元素稱為 Flex 項目。它們會按照 Flex 容器的規則進行布局。
2. 容器屬性
  • flex-direction:定義 Flex 項目的排列方向,有 row(水平從左到右)、row-reverse(水平從右到左)、column(垂直從上到下)、column-reverse(垂直從下到上)。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style>.flex-container {display: flex;flex-direction: row;background-color: lightblue;}.flex-item {background-color: lightcoral;margin: 10px;padding: 20px;}</style>
</head><body><div class="flex-container"><div class="flex-item">Item 1</div><div class="flex-item">Item 2</div><div class="flex-item">Item 3</div></div>
</body></html>
  • flex-wrap:定義 Flex 項目是否換行,有 nowrap(不換行)、wrap(換行)、wrap-reverse(換行且順序反轉)。
  • justify-content:定義 Flex 項目在主軸上的對齊方式,有 flex-start(左對齊)、flex-end(右對齊)、center(居中對齊)、space-between(兩端對齊,項目之間間距相等)、space-around(每個項目兩側間距相等)。
  • align-items:定義 Flex 項目在交叉軸上的對齊方式,有 stretch(拉伸填充容器)、flex-start(頂部對齊)、flex-end(底部對齊)、center(居中對齊)、baseline(基線對齊)。
3. 項目屬性
  • flex-grow:定義 Flex 項目的放大比例,默認值為 0,表示不放大。
  • flex-shrink:定義 Flex 項目的縮小比例,默認值為 1,表示可以縮小。
  • flex-basis:定義 Flex 項目在分配多余空間之前的初始大小,默認值為 auto
2.3.2 實現水平和垂直居中的Flexbox方法
  • 水平和垂直居中:將 Flex 容器的 justify-contentalign-items 屬性都設置為 center
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style>.flex-container {display: flex;justify-content: center;align-items: center;height: 300px;background-color: lightblue;}.flex-item {background-color: lightcoral;padding: 20px;}</style>
</head><body><div class="flex-container"><div class="flex-item">Centered Item</div></div>
</body></html>

第三章 CSS視覺效果相關提問

3.1 背景和邊框效果問題

3.1.1 背景圖片的處理(縮放、定位、重復等)

1. 背景圖片縮放

在CSS中,我們可以使用background-size屬性來控制背景圖片的縮放。它有以下幾種常見取值:

  • 長度值:例如background-size: 200px 100px;,第一個值表示寬度,第二個值表示高度。這會將背景圖片的寬度設置為200px,高度設置為100px。😎
  • 百分比值background-size: 50% 50%;,表示背景圖片的寬度和高度都為元素寬度和高度的50%。
  • coverbackground-size: cover;,它會將背景圖片等比例縮放,直到完全覆蓋整個元素,可能會有部分圖片超出元素范圍。🌟
  • containbackground-size: contain;,背景圖片會等比例縮放,直到圖片的寬或高完全適應元素,圖片會完整顯示在元素內。
2. 背景圖片定位

使用background-position屬性可以設置背景圖片的位置。常見取值如下:

  • 關鍵字:如background-position: top left;,表示將背景圖片定位在元素的左上角。還可以使用top centerbottom right等組合。
  • 百分比值background-position: 20% 30%;,第一個值表示水平位置,第二個值表示垂直位置。
  • 長度值background-position: 10px 20px;,同樣第一個值是水平偏移量,第二個值是垂直偏移量。
3. 背景圖片重復

background-repeat屬性用于控制背景圖片的重復方式:

  • repeat:默認值,背景圖片會在水平和垂直方向上都重復。
  • repeat-x:背景圖片只在水平方向上重復。
  • repeat-y:背景圖片只在垂直方向上重復。
  • no-repeat:背景圖片不重復,只顯示一次。

3.1.2 邊框樣式的設置和特效(圓角、陰影等)

1. 邊框樣式設置

使用border-style屬性可以設置邊框的樣式,常見取值有:

  • solid:實線邊框。
  • dotted:點狀邊框。
  • dashed:虛線邊框。
  • double:雙實線邊框。

例如:border-style: solid;會為元素添加一個實線邊框。

2. 圓角邊框

使用border-radius屬性可以創建圓角邊框。可以為每個角單獨設置半徑,也可以統一設置。

  • 統一設置border-radius: 10px;,表示四個角的圓角半徑都是10px。
  • 單獨設置border-radius: 10px 20px 30px 40px;,依次為左上角、右上角、右下角、左下角的圓角半徑。
3. 邊框陰影

使用box-shadow屬性可以為元素添加邊框陰影。它的語法是box-shadow: h-shadow v-shadow blur spread color inset;

  • h-shadow:水平陰影的位置,正值表示向右,負值表示向左。
  • v-shadow:垂直陰影的位置,正值表示向下,負值表示向上。
  • blur:可選,陰影的模糊半徑。
  • spread:可選,陰影的擴展半徑。
  • color:可選,陰影的顏色。
  • inset:可選,將外部陰影改為內部陰影。

例如:box-shadow: 5px 5px 10px 2px rgba(0, 0, 0, 0.5);會為元素添加一個向右下方偏移、模糊半徑為10px、擴展半徑為2px的黑色半透明陰影。😏

3.1.3 背景和邊框的混合模式及應用

1. 混合模式概述

CSS中的混合模式可以讓背景和邊框以不同的方式相互作用,產生獨特的視覺效果。使用background-blend-mode屬性可以設置背景的混合模式,使用mix-blend-mode屬性可以設置元素內容與背景的混合模式。

2. 常見混合模式
  • multiply:正片疊底,將背景和前景顏色相乘,結果顏色會更暗。
  • screen:濾色,將背景和前景顏色反轉后相乘,再反轉結果,顏色會更亮。
  • overlay:疊加,根據背景顏色的亮度,自動選擇正片疊底或濾色模式。

例如:background-blend-mode: multiply;會讓背景圖片和背景顏色以正片疊底的方式混合。

3. 應用場景

混合模式可以用于創建復古風格的圖片效果、突出顯示某些元素等。比如在一個圖片上疊加一個半透明的顏色層,使用混合模式可以讓圖片呈現出獨特的色調。🎨

3.2 文本效果問題

3.2.1 文本的排版和對齊方式

1. 文本排版
  • 行高:使用line-height屬性可以設置文本的行高。例如line-height: 1.5;表示行高是字體大小的1.5倍,這樣可以讓文本看起來更舒適。
  • 字母間距letter-spacing屬性可以設置字母之間的間距。如letter-spacing: 2px;會讓字母之間的間距增加2px。
  • 單詞間距word-spacing屬性用于設置單詞之間的間距。
2. 文本對齊方式
  • text-align:用于設置文本的水平對齊方式,常見取值有left(左對齊)、right(右對齊)、center(居中對齊)、justify(兩端對齊)。
  • vertical-align:用于設置行內元素或表格單元格內容的垂直對齊方式,取值有topmiddlebottom等。

3.2.2 文本的裝飾效果(下劃線、刪除線等)

1. 下劃線

使用text-decoration: underline;可以為文本添加下劃線。還可以設置下劃線的顏色、樣式等。例如:text-decoration: underline red dotted;會添加一條紅色的點狀下劃線。

2. 刪除線

text-decoration: line-through;會在文本中間添加一條刪除線。同樣可以設置刪除線的顏色和樣式。

3. 上劃線

text-decoration: overline;會在文本上方添加一條上劃線。

3.2.3 文本的陰影和漸變效果

1. 文本陰影

使用text-shadow屬性可以為文本添加陰影。語法和box-shadow類似,text-shadow: h-shadow v-shadow blur color;
例如:text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5);會為文本添加一個向右下方偏移、模糊半徑為5px的黑色半透明陰影。

2. 文本漸變

在CSS中實現文本漸變需要結合background-webkit-background-clip屬性。示例代碼如下:

.text-gradient {background: linear-gradient(to right, red, yellow);-webkit-background-clip: text;-webkit-text-fill-color: transparent;
}

這樣文本就會呈現出從紅色到黃色的漸變效果。🌈

3.3 過渡和動畫效果問題

3.3.1 過渡效果的實現和屬性設置

1. 過渡效果概述

過渡效果可以讓元素的屬性在一定時間內平滑地變化。使用transition屬性來實現過渡效果。

2. 過渡屬性設置

transition屬性是一個簡寫屬性,它包含四個部分:transition: property duration timing-function delay;

  • property:要過渡的屬性,如widthopacity等。可以使用all表示所有屬性都過渡。
  • duration:過渡的持續時間,單位是秒(s)或毫秒(ms)。
  • timing-function:過渡的時間函數,控制過渡的速度變化,常見取值有ease(默認,慢-快-慢)、linear(勻速)、ease-in(慢開始)、ease-out(慢結束)等。
  • delay:過渡的延遲時間,即多久后開始過渡。

例如:transition: width 1s ease 0.5s;表示寬度屬性在0.5秒后開始過渡,持續時間為1秒,過渡速度是慢-快-慢。

3.3.2 動畫效果的創建和關鍵幀設置

1. 動畫效果創建

使用animation屬性可以創建動畫效果。它也是一個簡寫屬性,語法為animation: name duration timing-function delay iteration-count direction fill-mode play-state;

  • name:動畫的名稱,需要和@keyframes定義的名稱一致。
  • duration:動畫的持續時間。
  • timing-function:時間函數。
  • delay:延遲時間。
  • iteration-count:動畫的播放次數,可以是具體數字,也可以是infinite(無限循環)。
  • direction:動畫的播放方向,如normal(正常播放)、reverse(反向播放)等。
  • fill-mode:動畫在播放前后的狀態,如forwards(動畫結束后停留在最后一幀)、backwards(動畫開始前應用第一幀樣式)等。
  • play-state:動畫的播放狀態,如running(播放)、paused(暫停)。
2. 關鍵幀設置

使用@keyframes規則可以定義動畫的關鍵幀。例如:

@keyframes slide {0% {transform: translateX(0);}100% {transform: translateX(200px);}
}

這個動畫會讓元素從初始位置向右移動200px。然后可以通過animation屬性應用這個動畫:animation: slide 2s linear infinite;

3.3.3 優化過渡和動畫性能的方法

1. 使用硬件加速

使用transformopacity屬性進行過渡和動畫,因為這兩個屬性可以觸發瀏覽器的硬件加速,提高性能。例如:

.element {transition: transform 0.5s ease;
}
.element:hover {transform: scale(1.2);
}
2. 減少重排和重繪

避免在過渡和動畫過程中頻繁改變元素的布局屬性(如widthheightmargin等),因為這些改變會導致瀏覽器進行重排和重繪,影響性能。

3. 控制動畫幀率

盡量將動畫的幀率控制在60fps左右,避免過高或過低的幀率。可以通過合理設置過渡和動畫的持續時間和時間函數來實現。💪

第四章 CSS兼容性相關提問

4.1 不同瀏覽器的兼容性問題

4.1.1 常見的瀏覽器兼容性差異及解決方案

1. 盒模型差異
  • 問題描述:在標準模式下,大部分現代瀏覽器(如 Chrome、Firefox 等)遵循 W3C 標準盒模型,即元素的寬度和高度只包含內容區,而內邊距(padding)和邊框(border)會額外增加元素的實際尺寸。但在 IE6、IE7 等舊版瀏覽器的怪異模式下,元素的寬度和高度包含了內容區、內邊距和邊框。
  • 解決方案:使用 box-sizing 屬性。將其值設置為 border-box,可以讓元素的寬度和高度包含內容區、內邊距和邊框,這樣在不同瀏覽器中表現一致。例如:
div {box-sizing: border-box;width: 200px;padding: 10px;border: 1px solid black;
}
2. 透明度差異
  • 問題描述:不同瀏覽器對透明度的支持方式不同。例如,IE8 及以下版本不支持 opacity 屬性,而是使用 filter 屬性來實現透明度效果。
  • 解決方案:同時使用 opacityfilter 屬性。示例如下:
div {opacity: 0.5; /* 現代瀏覽器 */filter: alpha(opacity=50); /* IE8 及以下 */
}
3. 浮動元素的清除問題
  • 問題描述:在不同瀏覽器中,浮動元素可能會導致父元素高度塌陷,即父元素無法自動適應浮動子元素的高度。
  • 解決方案:使用 clearfix 清除浮動。可以通過偽元素來實現,代碼如下:
.clearfix::after {content: "";display: block;clear: both;
}

然后在包含浮動元素的父元素上添加 clearfix 類。

4.1.2 處理瀏覽器前綴的方法和工具

1. 手動添加前綴
  • 原理:在 CSS 屬性前添加特定瀏覽器的前綴,以確保該屬性在不同瀏覽器中都能正常工作。常見的瀏覽器前綴有 -webkit-(Chrome、Safari 等 WebKit 內核瀏覽器)、-moz-(Firefox)、-ms-(IE)、-o-(Opera)。
  • 示例
div {-webkit-border-radius: 10px; /* WebKit 內核瀏覽器 */-moz-border-radius: 10px; /* Firefox */border-radius: 10px; /* 標準寫法 */
}
2. 使用 Autoprefixer
  • 原理:Autoprefixer 是一個 PostCSS 插件,它可以根據瀏覽器的兼容性配置,自動為 CSS 屬性添加必要的瀏覽器前綴。
  • 使用步驟
    • 安裝 Autoprefixer:通過 npm 安裝 autoprefixerpostcss-cli
    • 配置瀏覽器兼容性:在項目根目錄下創建 .browserslistrc 文件,指定需要兼容的瀏覽器版本,例如 last 2 versions, > 1% 表示兼容每個瀏覽器的最后兩個版本以及市場占有率大于 1% 的瀏覽器。
    • 運行 Autoprefixer:使用 postcss 命令處理 CSS 文件,例如 npx postcss input.css -o output.css --use autoprefixer

4.1.3 測試 CSS 兼容性的工具和方法

1. 瀏覽器測試工具
  • BrowserStack:這是一個在線的跨瀏覽器測試平臺,可以模擬不同瀏覽器和操作系統環境,對網頁進行測試。用戶只需上傳網頁或輸入網頁 URL,即可選擇不同的瀏覽器和版本進行測試。
  • Sauce Labs:同樣是一個在線測試平臺,支持多種瀏覽器、操作系統和移動設備。它提供了可視化的測試界面,方便用戶查看網頁在不同環境下的顯示效果。
2. 本地測試
  • 多瀏覽器安裝:在本地計算機上安裝多種不同的瀏覽器,如 Chrome、Firefox、Safari、IE(如果需要測試舊版 IE 兼容性)等,然后直接在這些瀏覽器中打開網頁進行測試。
  • 開發者工具:現代瀏覽器都提供了強大的開發者工具,如 Chrome 的開發者工具可以模擬不同的屏幕尺寸、設備類型和網絡環境,幫助開發者發現和解決 CSS 兼容性問題。

4.2 不同設備的兼容性問題

4.2.1 響應式設計在不同屏幕尺寸下的兼容性問題

1. 布局錯亂問題
  • 問題描述:在不同屏幕尺寸下,網頁的布局可能會出現錯亂,例如元素重疊、顯示不全等。
  • 解決方案:使用媒體查詢(Media Queries)。媒體查詢可以根據設備的屏幕寬度、高度、分辨率等條件,應用不同的 CSS 樣式。示例如下:
/* 小屏幕設備 */
@media (max-width: 767px) {.container {width: 100%;}
}/* 中等屏幕設備 */
@media (min-width: 768px) and (max-width: 991px) {.container {width: 750px;}
}/* 大屏幕設備 */
@media (min-width: 992px) {.container {width: 970px;}
}
2. 字體大小問題
  • 問題描述:在不同屏幕尺寸下,字體大小可能會顯得過大或過小,影響閱讀體驗。
  • 解決方案:使用相對單位,如 emremvwvh。相對單位可以根據父元素或視口的大小自動調整字體大小。例如:
body {font-size: 16px;
}h1 {font-size: 2rem; /* 相對于根元素字體大小的 2 倍 */
}

4.2.2 移動設備上的 CSS 性能優化和特殊處理

1. 性能優化
  • 減少重排和重繪:重排和重繪會消耗大量的性能,因此應盡量減少它們的發生。例如,避免頻繁修改元素的樣式,可以一次性修改多個樣式屬性。
  • 壓縮 CSS 文件:使用工具(如 CSSNano)對 CSS 文件進行壓縮,去除不必要的空格、注釋等,減小文件大小,加快加載速度。
2. 特殊處理
  • 觸摸事件優化:在移動設備上,用戶通過觸摸屏幕進行交互,因此需要優化觸摸事件的響應。可以使用 touch-action 屬性來控制元素的觸摸行為,例如:
div {touch-action: pan-y; /* 允許垂直滾動 */
}
  • 視口單位適配:使用視口單位(如 vwvh)可以根據視口的大小自動調整元素的尺寸,使網頁在不同移動設備上都能有良好的顯示效果。

4.2.3 高分辨率屏幕(Retina 屏幕)的 CSS 適配問題

1. 圖片模糊問題
  • 問題描述:在高分辨率屏幕上,普通圖片可能會顯得模糊,因為屏幕的像素密度更高。
  • 解決方案:使用高分辨率圖片或 SVG 圖片。可以通過媒體查詢和 srcset 屬性來實現根據屏幕分辨率自動加載不同分辨率的圖片。示例如下:
<img src="image.jpg"srcset="image@2x.jpg 2x, image@3x.jpg 3x"alt="An image">
2. 字體和圖標顯示問題
  • 問題描述:在高分辨率屏幕上,字體和圖標可能會出現鋸齒或顯示不清晰的問題。
  • 解決方案:使用 text-rendering 屬性來優化字體渲染,使用 SVG 圖標代替位圖圖標。例如:
body {text-rendering: optimizeLegibility;
}

第五章 CSS與其他技術結合相關提問

5.1 CSS與HTML結合問題

5.1.1 HTML結構對CSS樣式的影響

HTML結構就像是房子的骨架,它對CSS樣式的呈現起著至關重要的作用😎。

  • 元素嵌套關系:HTML元素的嵌套層次會影響CSS選擇器的使用和樣式的繼承。例如,在一個<div>元素中嵌套了一個<p>元素,我們可以使用后代選擇器div p來為<p>元素設置樣式。如果嵌套結構復雜,選擇器可能會變得很長,影響代碼的可讀性和性能。
<!DOCTYPE html>
<html lang="en">
<head><style>div p {color: blue;}</style>
</head>
<body><div><p>這是一個嵌套在div中的段落。</p></div>
</body>
</html>
  • 元素順序:HTML元素的順序會影響頁面的布局和樣式的覆蓋。如果兩個元素有重疊的樣式設置,后面的元素樣式可能會覆蓋前面的元素樣式。
<!DOCTYPE html>
<html lang="en">
<head><style>p {color: red;}p {color: green;}</style>
</head>
<body><p>這個段落的顏色最終會是綠色。</p>
</body>
</html>
5.1.2 優化HTML和CSS代碼的協作方式

為了讓HTML和CSS代碼更好地協作,我們可以采用以下方法👏:

  • 分離結構和樣式:將HTML代碼和CSS代碼分別放在不同的文件中,這樣可以提高代碼的可維護性。例如,創建一個名為styles.css的文件,將所有的CSS樣式寫在這個文件中,然后在HTML文件中通過<link>標簽引入。
<!DOCTYPE html>
<html lang="en">
<head><link rel="stylesheet" href="styles.css">
</head>
<body><p>這是一個段落。</p>
</body>
</html>
/* styles.css */
p {color: purple;
}
  • 使用類名和ID:合理使用類名和ID來為HTML元素添加樣式,避免使用內聯樣式。類名可以重復使用,ID則應該是唯一的。
<!DOCTYPE html>
<html lang="en">
<head><style>.highlight {background-color: yellow;}#special {font-weight: bold;}</style>
</head>
<body><p class="highlight">這個段落有黃色背景。</p><p id="special">這個段落是加粗的。</p>
</body>
</html>
  • 遵循命名規范:為類名和ID使用有意義的名稱,這樣可以提高代碼的可讀性。例如,使用headernavmainfooter等名稱來表示頁面的不同部分。
5.1.3 利用HTML語義化標簽優化CSS樣式

HTML語義化標簽可以讓代碼更具可讀性,同時也有助于搜索引擎優化(SEO),還能方便CSS樣式的編寫🤗。

  • 使用合適的標簽:例如,使用<header>標簽來表示頁面的頭部,使用<nav>標簽來表示導航欄,使用<main>標簽來表示頁面的主要內容,使用<footer>標簽來表示頁面的底部。
<!DOCTYPE html>
<html lang="en">
<head><style>header {background-color: lightgray;padding: 20px;}nav {background-color: #333;color: white;}main {padding: 20px;}footer {background-color: lightgray;text-align: center;padding: 10px;}</style>
</head>
<body><header><h1>網站標題</h1></header><nav><ul><li><a href="#">首頁</a></li><li><a href="#">關于我們</a></li></ul></nav><main><p>這是頁面的主要內容。</p></main><footer><p>版權所有 &copy; 2024</p></footer>
</body>
</html>
  • 樣式繼承和復用:語義化標簽可以讓CSS樣式的繼承和復用更加自然。例如,我們可以為<article>標簽設置一些通用的樣式,然后在每個具體的文章中復用這些樣式。

5.2 CSS與JavaScript結合問題

5.2.1 通過JavaScript動態修改CSS樣式的方法

JavaScript可以在頁面加載后動態地修改CSS樣式,實現更加豐富的交互效果😜。

  • 使用style屬性:可以直接通過元素的style屬性來修改元素的樣式。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8">
</head>
<body><p id="myParagraph">這是一個段落。</p><button onclick="changeStyle()">改變樣式</button><script>function changeStyle() {var paragraph = document.getElementById('myParagraph');paragraph.style.color = 'red';paragraph.style.fontSize = '20px';}</script>
</body>
</html>
  • 使用classList屬性:通過classList屬性可以添加、刪除或切換元素的類名,從而實現樣式的修改。
<!DOCTYPE html>
<html lang="en">
<head><style>.highlight {background-color: yellow;}</style>
</head>
<body><p id="myParagraph">這是一個段落。</p><button onclick="addHighlight()">添加高亮</button><script>function addHighlight() {var paragraph = document.getElementById('myParagraph');paragraph.classList.add('highlight');}</script>
</body>
</html>
5.2.2 CSS動畫與JavaScript動畫的結合和選擇

CSS動畫和JavaScript動畫各有優缺點,我們可以根據具體需求來選擇使用,也可以將它們結合起來使用🤝。

  • CSS動畫:優點是性能高、代碼簡單,適合實現一些簡單的動畫效果,如漸變、平移、旋轉等。缺點是靈活性較差,難以實現復雜的交互邏輯。
<!DOCTYPE html>
<html lang="en">
<head><style>.box {width: 100px;height: 100px;background-color: blue;animation: move 2s infinite;}@keyframes move {0% {transform: translateX(0);}100% {transform: translateX(200px);}}</style>
</head>
<body><div class="box"></div>
</body>
</html>
  • JavaScript動畫:優點是靈活性高,可以實現復雜的交互邏輯和動畫效果。缺點是性能相對較低,代碼復雜度較高。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8">
</head>
<body><div id="box" style="width: 100px; height: 100px; background-color: green;"></div><script>var box = document.getElementById('box');var position = 0;function move() {position++;box.style.left = position + 'px';if (position < 200) {requestAnimationFrame(move);}}move();</script>
</body>
</html>
  • 結合使用:可以先使用CSS動畫實現基本的動畫效果,然后通過JavaScript來控制動畫的開始、暫停、結束等。
5.2.3 利用JavaScript實現CSS樣式的響應式調整

JavaScript可以根據不同的屏幕尺寸和設備類型來動態調整CSS樣式,實現響應式設計📱。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><style>.container {width: 100%;background-color: lightblue;}</style>
</head>
<body><div class="container">這是一個容器。</div><script>function adjustStyle() {var container = document.querySelector('.container');if (window.innerWidth < 600) {container.style.backgroundColor = 'lightgreen';} else {container.style.backgroundColor = 'lightblue';}}window.addEventListener('resize', adjustStyle);adjustStyle();</script>
</body>
</html>

5.3 CSS與預處理器(如Sass、Less)結合問題

5.3.1 預處理器的基本語法和優勢

CSS預處理器(如Sass、Less)提供了一些原生CSS沒有的特性,讓CSS代碼的編寫更加高效和靈活👍。

  • 變量:可以定義變量來存儲常用的值,如顏色、字體大小等。
// Sass示例
$primary-color: #007bff;
body {color: $primary-color;
}
// Less示例
@primary-color: #007bff;
body {color: @primary-color;
}
  • 嵌套:可以在選擇器中嵌套其他選擇器,使代碼結構更加清晰。
// Sass示例
nav {ul {list-style-type: none;li {display: inline-block;a {color: #333;}}}
}
// Less示例
nav {ul {list-style-type: none;li {display: inline-block;a {color: #333;}}}
}
  • 混合(Mixin):可以定義一組樣式,然后在其他地方復用。
// Sass示例
@mixin border-radius($radius) {-webkit-border-radius: $radius;-moz-border-radius: $radius;border-radius: $radius;
}
.button {@include border-radius(5px);
}
// Less示例
.border-radius(@radius) {-webkit-border-radius: @radius;-moz-border-radius: @radius;border-radius: @radius;
}
.button {.border-radius(5px);
}
5.3.2 預處理器與原生CSS的轉換和兼容性問題

預處理器編寫的代碼不能直接在瀏覽器中使用,需要將其轉換為原生CSS代碼。

  • 轉換工具:可以使用專門的工具來進行轉換,如Sass的node-sassdart-sass,Less的lessc
  • 兼容性:轉換后的原生CSS代碼在不同瀏覽器中的兼容性與普通CSS代碼相同。需要注意的是,一些預處理器的特性可能在轉換后生成的代碼量較大,需要進行壓縮和優化。
5.3.3 利用預處理器提高CSS開發效率的技巧

使用預處理器可以提高CSS開發效率,以下是一些技巧🤓:

  • 模塊化開發:將不同功能的樣式代碼分別放在不同的文件中,然后通過@import語句引入。
// main.scss
@import 'variables';
@import 'mixins';
@import 'header';
@import 'footer';
  • 使用循環和條件語句:預處理器支持循環和條件語句,可以減少重復代碼的編寫。
// Sass示例
@for $i from 1 through 5 {.col-#{$i} {width: 20% * $i;}
}
  • 利用函數:預處理器提供了一些內置函數,還可以自定義函數,方便進行計算和處理。
// Sass示例
@function darken-color($color, $amount) {@return darken($color, $amount);
}
.button {background-color: darken-color(#007bff, 10%);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81773.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81773.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81773.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux服務器配置深度學習環境(Pytorch+Anaconda極簡版)

前言&#xff1a; 最近做橫向需要使用實驗室服務器跑模型&#xff0c;之前用師兄的賬號登錄服務器跑yolo&#xff0c;3張3090一輪14秒&#xff0c;我本地一張4080laptop要40秒&#xff0c;效率還是快很多&#xff0c;&#xff08;這么算一張4080桌面版居然算力能比肩3090&#…

【嵌入式】I2S音頻接口3分鐘入門

1. I2S接口入門 I2S&#xff08;Inter-IC Sound&#xff09;是一種專門用于數字音頻數據傳輸的串行通信接口。以下是其核心要點&#xff1a; 1.1 基本概念 I2S是飛利浦公司開發的一種音頻接口標準主要用于數字音頻設備之間的數據傳輸采用串行通信方式 1.2 主要特點 支持立…

java spring -framework -mvc

工程demo&#xff1a;myapp011工程下“_05mvcboot01” model 目錄 1、Spring MVC和MVC 2、創建項目&#xff1a; 3、處理請求 4、HTTP協議 超文本傳輸協議 4.1、 HTTP和HTTPS的區別 4.2、SSL證書 4.3、請求和響應 4.3.1、請求 4.3.2、響應 5、數據的傳遞與接收 5.1、客戶端傳…

沒有屋檐的房子-038—田鼠的酷刑

秋天是收獲的季節&#xff0c;收獲之后的田野里不再是濕漉漉的。水稻此時已經了卻了此生&#xff0c;他們的后代稻谷已經被搬進了打谷場&#xff0c;被蛻變成了大米&#xff0c;住進了生產隊的糧倉然后又進入各家的糧食口袋或者米柜中。稻田里視野逐漸開闊&#xff0c;收割完水…

IntelliJ IDEA打開項目后,目錄和文件都不顯示,只顯示pom.xml,怎樣可以再顯示出來?

檢查.idea文件夾 如果項目目錄中缺少.idea文件夾&#xff0c;可能導致項目結構無法正確加載。可以嘗試刪除項目根目錄下的.idea文件夾&#xff0c;然后重新打開項目&#xff0c;IDEA會自動生成新的.idea文件夾和相關配置文件&#xff0c;從而恢復項目結構。 問題解決&#xff0…

Harmony開發 List、Grid拖動自定義排序實現

1. Harmony開發 List、Grid拖動自定義排序實現 1.1. List拖動功能 本示例基于顯式動畫、List組件實現了ListItem的上下拖動、ListItem切換以及ListItem插入的效果。 ??實現思路:List手勢拖動 @Entry @Component struct ListDragPage {@State private arr: string[] = [0, …

Jules 從私有預覽階段推向全球公測

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

ubuntu上安裝mysql

sudo apt update查看可用版本&#xff1a; apt-cache policy mysql-server返回&#xff1a; mysql-server: 已安裝&#xff1a;(無) 候選&#xff1a; 8.0.42-0ubuntu0.24.04.1 版本列表&#xff1a; 8.0.42-0ubuntu0.24.04.1 500 500 http://cn.archive.ubuntu.com/ubuntu no…

預先學習:構建智能系統的 “未雨綢繆” 之道

一、預先學習&#xff1a;訓練階段的 “模型預構建” 哲學 1.1 核心定義與生物啟發 預先學習的本質是模擬人類的 “經驗積累 - 快速決策” 機制&#xff1a;如同醫生通過大量病例總結診斷規則&#xff0c;算法在訓練階段利用全量數據提煉規律&#xff0c;生成固化的 “決策模型…

【notes】VScode 使用總結

文章目錄 擴展 c/cwindows7 系統下 c/c 自動升級導致的插件無法正常使用 設置 文件格式設置打開文件的默認格式 擴展 c/c windows7 系統下 c/c 自動升級導致的插件無法正常使用 問題 1. c/c擴展的1.25.x版本不再支持windows7 系統&#xff0c;當設置VScode自動升級拓展插件時…

wbs校驗

*數據定義 DATA:tab_set_bukrs_gxgsdm5 TYPE TABLE OF rgsb4, rec_set_bukrs_gxgsdm5 LIKE LINE OF tab_set_bukrs_gxgsdm5, r_bukrs_gxgsdm5 TYPE RANGE OF bukrs WITH HEADER LINE. DATA: tab_set_hkont_gxkjkm5 TYPE STANDARD TABLE OF rgsb4, …

kafka入門(二)

Java客戶端訪問Kafka 引入maven依賴 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka‐clients</artifactId> <version>2.4.1</version> </dependency> 消息發送端代碼 package com.tuling.kafka.ka…

Python----目標檢測(PASCAL VOC數據集)

一、PASCAL VOC數據集 PASCAL VOC&#xff08;Visual Object Classes&#xff09;數據集是計算機視覺領域中廣泛使用的一個 標準數據集&#xff0c;用于目標檢測、圖像分割、圖像分類、動作識別等任務。該數據集由 PASCAL&#xff08;Pattern Analysis, Statistical Modelling …

mariadb 升級 (通過yum)

* 注意下 服務名, 有的服務器上是mysql,有的叫mariadb,mysqld的 #停止 systemctl stop mysql #修改源 vi /etc/yum.repos.d/MariaDB.repo baseurl http://yum.mariadb.org/11.4/centos7-amd64 #卸載 yum remove mysql #安裝 yum install MariaDB-server galera-4 MariaDB-…

vuejs處理后端返回數字類型精度丟失問題

標題問題描述 后端返回數據有5.00和3.30這種數據&#xff0c;但是前端展示的時候返回對應分別為5和3.0&#xff0c;小數點后0都丟失了。 接口返回數據展示network-Response&#xff1a; 接口返回數據展示network-Preview&#xff1a; 錯誤數據效果展示 發現問題 瀏覽器接口…

ubuntu kubeasz 部署高可用k8s 集群

ubuntu kubeasz 部署高可用k8s 集群 測試環境主機列表軟件清單kubeasz 部署高可用 kubernetes配置源配置host文件安裝 ansible 并進行 ssh 免密登錄:下載 kubeasz 項?及組件部署集群部署各組件開始安裝修改 config 配置文件增加 master 節點增加 kube_node 節點登錄dashboard…

IDEA2025版本使用Big Data Tools連接Linux上Hadoop的HDFS

目錄 Windows的準備 1. 將與Linux上版本相同的hadoop壓縮包解壓到本地 ?編輯2.設置$HADOOP HOME環境變量指向:E:\hadoop-3.3.4 3.下載hadoop.dll和winutils.exe文件 4.將hadoop.dll和winutils.exe放入$HADOOP HOME/bin中 IDEA中操作 1.下載Big Data Tools插件 2.添加并連…

Java轉Go日記(三十九):Gorm查詢

1.1.1. 查詢 // 獲取第一條記錄&#xff0c;按主鍵排序db.First(&user)SELECT * FROM users ORDER BY id LIMIT 1;// 獲取最后一條記錄&#xff0c;按主鍵排序db.Last(&user)SELECT * FROM users ORDER BY id DESC LIMIT 1;// 獲取所有記錄db.Find(&users)SELECT *…

bisheng系列(二)- 本地部署(前后端)

一、導讀 環境&#xff1a;Ubuntu 24.04、open Euler 23.03、Windows 11、WSL 2、Python 3.10 、bisheng 1.1.1 背景&#xff1a;需要bisheng二開商用&#xff0c;故而此處進行本地部署&#xff0c;便于后期調試開發 時間&#xff1a;20250519 說明&#xff1a;bisheng前后…

5G金融互聯:邁向未來金融服務的極速與智能新時代

5G金融互聯:邁向未來金融服務的極速與智能新時代 大家好,我是Echo_Wish,今天咱們聊聊一個大家都十分關心的話題:5G網絡在金融服務中的應用。咱們平時可能覺得5G只是打個電話、刷個視頻更流暢了,但在金融服務領域,5G的低延時、大帶寬和高可靠性正在悄然改變整個游戲規則。…