本系列可作為前端學習系列的筆記,代碼的運行環境是在HBuilder中,小編會將代碼復制下來,大家復制下來就可以練習了,方便大家學習。
HTML系列文章?已經收錄在前端專欄,有需要的寶寶們可以點擊前端專欄查看!
點贊關注不迷路!您的點贊、關注和收藏是對小編最大的支持和鼓勵!
系列文章目錄
CSS- 1.1 css選擇器
CSS- 2.1 實戰之圖文混排、表格、表單、學校官網一級導航欄
CSS- 3.1 盒子模型-塊級元素、行內元素、行內塊級元素和display屬性
CSS- 4.1 浮動(Float)
CSS- 4.2 相對定位(position: relative)
CSS- 4.3 絕對定位(position: absolute)&學校官網導航欄實例
CSS- 4.4 固定定位(fixed)& 咖啡售賣官網實例
CSS- 4.5 css + div 布局 & 簡易網易云音樂 官網布置實例?
CSS- 4.6 radiu、shadow、animation動畫
CSS-5.1 Transition 過渡
目錄
系列文章目錄
前言
一、Transition 過渡詳解
1.基本概念
2.語法
3.常用過渡屬性
4.示例
1. 基礎懸停效果
2. 尺寸變化過渡
3. 透明度過渡
4. 多屬性過渡
5.高級用法
1. 使用?all?關鍵字
2. 指定多個過渡
3. 結合?transform?實現高性能動畫
6.速度曲線函數
7.注意事項
8.實際應用場景
二、代碼實例
1. css3-transition過渡 代碼如下:
2. 過渡應用1 代碼如下:
3. 過渡應用2?代碼如下:
?4. 過渡應用3 代碼如下:
總結
前言
小編作為新晉碼農一枚,會定期整理一些寫的比較好的代碼,作為自己的學習筆記,會試著做一下批注和補充,如轉載或者參考他人文獻會標明出處,非商用,如有侵權會刪改!歡迎大家斧正和討論!
一、Transition 過渡詳解
CSS3 的?transition
?屬性允許元素在狀態變化時(如懸停、點擊等)產生平滑的動畫效果,而無需使用 JavaScript。它是創建簡單動畫效果的一種高效方式。
1.基本概念
transition
?屬性是以下四個子屬性的簡寫:
- transition-property:指定應用過渡效果的 CSS 屬性
- transition-duration:指定過渡效果持續的時間
- transition-timing-function:指定過渡效果的速度曲線
- transition-delay:指定過渡效果開始前的延遲時間
2.語法
css
.element {transition: property duration timing-function delay;
}
或分別指定:
css
.element {transition-property: width;transition-duration: 0.5s;transition-timing-function: ease-in-out;transition-delay: 0.2s;
}
3.常用過渡屬性
任何可以動畫化的 CSS 屬性都可以使用過渡效果,常見的包括:
color
(顏色)background-color
(背景色)width
(寬度)height
(高度)opacity
(透明度)transform
(變形)border-radius
(圓角)box-shadow
(陰影)font-size
(字體大小)margin
(外邊距)padding
(內邊距)
4.示例
1. 基礎懸停效果
css
.button {background-color: #3498db;color: white;padding: 10px 20px;border: none;border-radius: 5px;transition: background-color 0.3s ease;
}.button:hover {background-color: #2980b9;
}
效果:當鼠標懸停在按鈕上時,背景色會平滑過渡到更深的藍色。
2. 尺寸變化過渡
css
.box {width: 100px;height: 100px;background-color: #e74c3c;transition: all 0.5s ease-in-out;
}.box:hover {width: 200px;height: 200px;background-color: #c0392b;
}
效果:懸停時,盒子會平滑放大并改變顏色。
3. 透明度過渡
css
.overlay {position: fixed;top: 0;left: 0;width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0);transition: background-color 0.5s ease;
}.overlay.active {background-color: rgba(0, 0, 0, 0.5);
}
效果:疊加層在激活時平滑地從不透明變為半透明。
4. 多屬性過渡
css
.card {width: 200px;height: 200px;background-color: #f1c40f;border-radius: 10px;box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);transition: transform 0.3s ease,box-shadow 0.3s ease;
}.card:hover {transform: translateY(-10px);box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3);
}
效果:懸停時,卡片輕微上浮并陰影加深,產生浮動效果。
5.高級用法
1. 使用?all
?關鍵字
css
.element {transition: all 0.3s ease;
}
注意:雖然方便,但可能影響性能,特別是當有很多屬性需要過渡時。
2. 指定多個過渡
css
.element {transition: width 0.5s ease-in,height 0.3s ease-out,background-color 0.2s linear;
}
3. 結合?transform
?實現高性能動畫
css
.element {transition: transform 0.3s ease;
}.element:hover {transform: scale(1.1) rotate(5deg);
}
優勢:transform
?和?opacity
?是由 GPU 加速的屬性,性能更好。
6.速度曲線函數
ease
(默認):慢速開始,然后變快,然后慢速結束linear
:勻速ease-in
:慢速開始ease-out
:慢速結束ease-in-out
:慢速開始和結束cubic-bezier(n,n,n,n)
:自定義貝塞爾曲線
7.注意事項
- 性能考慮:避免對會頻繁觸發的屬性(如?
top
、left
)使用過渡,可能引起性能問題。 - 硬件加速:優先使用?
transform
?和?opacity
?屬性以獲得最佳性能。 - 可訪問性:確保過渡效果不會影響用戶體驗,特別是對于有運動敏感問題的用戶。
- 兼容性:現代瀏覽器都支持?
transition
,但對于舊版瀏覽器可能需要前綴或回退方案。
8.實際應用場景
- 導航菜單懸停效果
- 按鈕狀態變化
- 模態框顯示/隱藏
- 卡片懸停效果
- 加載指示器
- 圖片懸停放大
- 表單元素焦點狀態
CSS3 的?transition
?屬性為網頁交互提供了簡單而強大的工具,可以顯著提升用戶體驗而無需編寫復雜的 JavaScript 代碼。合理使用過渡效果可以使網站感覺更加生動和專業。
二、代碼實例
1. 過渡應用 代碼如下:
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>css3-transition過渡</title><style type="text/css">div {width: 300px;height: 100px;border: 1px solid black;text-align: center;line-height: 100px;font-size: 20px;background-color: silver;border-radius: 20px;transition: all 1s linear;}/* 觸發器 hover *//* 那個元素的哪個屬性發生變化 *//* div background-color 發生變化 *//* 哪個元素的屬性值發生變化 我們就把transition放在哪個屬性元素對應的選擇器當中 */div:hover {background-color: #45b823;color: white;border: none;}</style></head><body><h1>過渡transition</h1><p>將元素的某個屬性從“一個值”在指定的時間內過渡到“另一個值”</p><div>web design</div></body>
</html>
代碼運行如下:
2. 過渡應用1 代碼如下:
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>過渡應用1</title><style type="text/css">* {margin: 0;padding: 0;}.showlist ul {list-style-type: none;}/* 最大的父盒子,用來進行頁面居中 */.showlist {}.showlist ul li {width: 300px;height: 40px;border: 1px solid black;overflow: hidden;transition: all 1s linear;}.showlist h3 {width: 300px;height: 40px;text-align: left;line-height: 40px;}.showlist .text {width: 300px;height: 180px;background-color: white;color: black;}.showlist ul li:hover {height: 220px;background-color: black;color: white;}.showlist img {width: 300px;}</style></head><body><div class="showlist"><ul><li><h3>這是標題</h3><div class="text"><img src="../img/Leslie%20Mint.png" ></div></li><li><h3>這是標題</h3><div class="text">這是內容</div></li><li><h3>這是標題</h3><div class="text">這是內容</div></li><li><h3>這是標題</h3><div class="text">這是內容</div></li></ul></div></body>
</html>
代碼運行如下:
3. 過渡應用2?代碼如下:
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>transition過渡應用2</title><style type="text/css">*{margin: 0;padding: 0;}.container {width: 170px;height: 190px;position: relative;overflow: hidden;float: left;margin-right: 50px;}.container .text {width: 170px;height: 190px;/* border: 1px solid black; */position: absolute;left: 170px;top: 0px;transition: all 1s linear;}.container:hover .text {left: 0px;background-color: rgba(255,255,255,.6);color: saddlebrown;}</style></head><body><div class="container"><img src="../img/kbjn.jpg" ><div class="text"><h1>標題</h1><p>對文本的解釋說明</p></div></div><div class="container"><img src="../img/kbjn.jpg" ><div class="text"><h1>標題</h1><p>對文本的解釋說明</p></div></div><div class="container"><img src="../img/kbjn.jpg" ><div class="text"><h1>標題</h1><p>對文本的解釋說明</p></div></div></body>
</html>
代碼運行如下:
?4. 過渡應用3 代碼如下:
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>過渡應用3</title><style type="text/css">.wrap {width: 170px;height: 190px;transform-style: preserve-3d;position: relative;transition: all 1s linear;}.face {width: 170px;height: 190px;border: 1px solid saddlebrown;}.wrap:hover {transform: rotateY(180deg);}.wrap .back {/* 為了防止背面的字產生鏡面效果,我們先翻180deg */transform: rotateY(180deg);background-color: saddlebrown;color: wheat;position: absolute;top: 0px;}</style></head><body><div class="wrap"><div class="face front"><img src="../img/kbjn.jpg" ></div><div class="face back"><h1>標題</h1><p>這是解釋說明</p></div></div></body>
</html>
代碼運行如下:?
總結
以上就是今天要講的內容,本文簡單記錄了Transition 過渡,僅作為一份簡單的筆記使用,大家根據注釋理解