CSS3 過渡、變形和動畫

来源:https://www.cnblogs.com/lishenghao/archive/2018/11/25/css3GuoDuBianXingDongHua.html
-Advertisement-
Play Games

一、我們來給按鈕增加一個懸停效果:#content a:hover {border: 1px solid #000000;color: #000000;text-shadow: 0px 1px white;}兩種狀態下的效果如下,先看預設狀態: 再看懸停狀態: 這裡只是在滑鼠懸停時簡單地修改了一下文 ...


一、我們來給按鈕增加一個懸停效果:
#content a:hover {
border: 1px solid #000000;
color: #000000;
text-shadow: 0px 1px white;
}
兩種狀態下的效果如下,先看預設狀態:

 

 

再看懸停狀態:

這裡只是在滑鼠懸停時簡單地修改了一下文字、文字陰影以及邊框的顏色。所以,你可
能想象出來,使用這段 CSS 代碼,當滑鼠懸停在按鈕上面時,按鈕會直接從第一種狀態
(白色文字)突變到第二種狀態(黑色文字)——就是一個開關效果。我們來給第一段
CSS規則添加一點 CSS3魔法:
#content a {
transition: all 1s ease 0s;
}

現在再把滑鼠懸停在按鈕上,文字、文字陰影和邊框陰影的顏色都會從第一種狀態平滑
過渡到第二種狀態。

CSS3過渡效果涉及四個屬性,也可以使用包含這四個屬性的縮寫。
 transition-property :要過渡的 CSS 屬性名稱(比如 background-color 、
text-shadow 或者 all ,使用 all 則過渡會被應用到每一個可能的 CSS屬性上);
 transition-duration :定義過渡效果持續的時間(時間單位為秒,比如 .3s 、 2s
或 1.5s );
 transition-timing-function :定義過渡期間速度如何變化(比如 ease 、 linear 、
ease-in 、 ease-out 、 ease-in-out 或 cubic-bezier );
 transition-delay :可選,用於定義過渡開始前的延遲時間。相反,將該值設置為
一個負數,可以讓過渡效果立即開始,但過渡旅程則會從半路開始。
單獨使用各種過渡屬性創建轉換效果的語法如下:
#content a {
……其他樣式……
transition-property: all;
transition-duration: 1s;
transition-timing-function: ease;
transition-delay: 0s;
}

1. 過渡的簡寫語法
正如我們之前所見過的那樣,我們可以將單個的聲明組合成一個簡寫版:
transition: all 1s ease 0s;

簡寫聲明添加了瀏覽器私有首碼
之後,代碼如下:
-o-transition: all 1s ease 0s;
-ms-transition: all 1s ease 0s;
-moz-transition: all 1s ease 0s;
-webkit-transition: all 1s ease 0s;
transition: all 1s ease 0s;

2. 在不同時間段內過渡不同屬性
當一條規則要實現多個屬性過渡時,這些屬性不必步調一致。看看下麵這段代碼:
#content a {
/*……其他樣式……*/
transition-property: border, color, text-shadow;
transition-duration: 2s, 3s, 8s;
}
此處我們通過 transition-property 來指定只過渡 border 、 color 和 text-shadow ,
然後在 transition-duration 聲明中我們設定邊框過渡效果應該 2秒內完成,文字顏
色 3秒,文字陰影 8秒。由逗號分隔的過渡持續時間按順序對應上面的 CSS屬性。

二、CSS3 的 2D 變形

有兩種可用的 CSS3變形:2D變形和 3D變形。2D變形的實現更廣泛,瀏覽器支持更好,
寫起來也更簡單些,所以我們先來看看 2D 變形。CSS3 的 2D 變形模塊允許我們使用下
列變形。
 scale :用來縮放元素(放大或縮小)
 translate :在屏幕上移動元素(上下左右四個方向)
 rotate :按照一定角度旋轉元素(單位為度)
 skew :沿 X和 Y軸對元素進行斜切
 matrix :允許你以像素精度來控制變形效果

傻瓜化的矩陣變形工具
無論怎麼想象我都不是一個數學家,所以當我需要創建矩陣變形時,我一般都走捷徑。
如果你的數學也不太好,我建議你訪問這裡

傻瓜化的矩陣變形工具
無論怎麼想象我都不是一個數學家,所以當我需要創建矩陣變形時,我一般都走捷徑。
如果你的數學也不太好,我建議你訪問這裡:http://www.useragentman.com/matrix/

 

嘗試 CSS3 的 3D 變形

將滑鼠懸停在圖片上(在觸摸屏上則是觸擊圖片)就能揭曉答案。
下麵的代碼是相關的頁面標簽,其中省略了重覆的圖片標簽,因為它們的結構都一樣:
<section class="Qcontainer">
<div class="film">
<div class="face front">
<img src="img/goonies.jpg" alt="The Goonies" />
</div>
<div class="face back"><h5>HOT!</h5></div>
</div>
</section>
對應的 CSS代碼如下。

.Qcontainer {
height: 100%;
width: 28%;
position: relative;
-webkit-perspective: 800;
float: left;
margin-right: 2%;
}
.film {
width: 100%;
height: 15em;
-webkit-transform-style: preserve-3d;
-webkit-transition: 1s;
}
.Qcontainer:hover .film {
-webkit-transform: rotateY(180deg);
}
.face {
position: absolute;
-webkit-backface-visibility: hidden;
}
.back {
width: 66%;
height: 127%;
-webkit-transform: rotateY(180deg);
background: #3b3b3b;
background: -webkit-linear-gradient(top,
rgba(0,0,0,0.65) 0%,
rgba(0,0,0,0) 100%);
padding: 15%;
}
代碼部署好之後,將滑鼠懸停在海報圖片上,會看到圖片翻轉到背面並顯示出了該電影
的評判結果。

 

CSS3 動畫效果

首先是關鍵幀規則:
@keyframes warning {
0% {
text-shadow: 0px 0px 4px #000000;
}
50% {
text-shadow: 0 0 20px #000000;
}
100% {
text-shadow: 0px 0px 4px #000000;
}
}
此處的代碼沒有加首碼,如果在瀏覽器中沒有效果,你可能需要添加一組完整的瀏覽器
私有首碼(如 @-webkit-keyframes )。

分析代碼:

首先,我們定義了一個 @keyframes (關鍵幀)聲明。然後為這個特定的關鍵幀聲明設置
了一個名稱: warning 。你可以將其叫成任何名字,但考慮到這些關鍵幀聲明可以在多
個元素上復用,所以建議取一個合理的名字。
可以設置多個關鍵幀(比如百分比值 10%、20%、30%、40%等等),或者也可以使用 from
和 to 值來定義動畫的開始幀和結束幀。

動畫開始時是 4像素陰影,然後用 50%的時間變化至 40像
素陰影,之後再變化回 4像素陰影

我們設定了要使用的關鍵幀(例子中的 warning ),然後設定
了動畫的持續時間( 1.5s ),之後設定了 animation-iteration-count (我們在此時
使用了 infinite 讓動畫連續迴圈播放),最後設定了調速函數( ease-in )。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • @[toc] Hadoop所用安裝包和配置文件等我找到最方便使用的方式再上傳到博客,如果有需要也歡迎找我分享。 這篇博客是建立在我另一篇博客的基礎上,建議先瀏覽博文 "大數據入門第一篇:maven項目的搭建" 在windows下, 1.導包Hadoop包 我用的是破解版的文件,不需要安裝,直接解壓到 ...
  • 比如學hadoop,從哪兒開始學首先要根據你的基本情況而定,如果你就一小白,沒有任何開發基礎,也沒有學過任何開發語言,那就必須先從基礎java開始學起(大數據支持很多開發語言,但企業用的最多的還是JAVA),接下來學習數據結構、關係型資料庫、linux系統操作,夯實基礎之後,再進入大數據的學習,例如 ...
  • 問題現象:hadoop 3.1.0源碼文件ClientNamenodeProtocolProtos大小4M+,IDEA打開時載入失敗,ClientNamenodeProtocolPB報錯找不到類。 問題原因:IDEA預設載入文件大小不超過2500KB,配置項為idea.max.intellisens ...
  • 在調用glide介面時,因為最新版本為4.8.0 調用代碼如下: repositories { mavenCentral() google() } dependencies { implementation 'com.github.bumptech.glide:glide:4.8.0' annota ...
  • 1.背景 最近在做一個單頁面的管理後臺項目,為了提高開發效率,使用了Vue框架來開發。為了使各個部分的功能,獨立結構更加清晰,於是就拆分了很多組件,但是組件與組件之間數據共用成了一個問題,父子組件實現起來相對簡單,prop,$emit,$on就能搞定。除此之外,有很多兄弟組件和跨多級組件,實現起來過 ...
  • 傳統的JavaScript語言,輸出模板通常是這樣的寫的。 上面這種寫法相當繁瑣不方便,ES6 引入了模板字元串解決這個問題。 模板字元串(template string)是增強版的字元串,用反引號(`)標識。它可以當作普通字元串使用,也可以用來定義多行字元串,或者在字元串中嵌入變數 上面代碼中的模 ...
  • 前端開發“異常處理”實踐---包括try,catch,finally,throw error,new Error(),console.error在“非同步操作---$.ajax()與fetch()”過程當中的運用 ...
  • 一、具備的基礎知識 1.扎實的HTML/CSS/Javascript基本功,這是前置條件。 2.不要用任何的構建項目工具,只用最簡單的<script>,把教程里的例子模仿一遍,理解用法。不推薦上來就直接用 vue-cli 構建項目,尤其是如果沒有 Node/Webpack 基礎。 另外在這裡大家補充 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...