用css3實現背景即背景動畫(高級附源碼)

2020-12-24 酷扯兒

本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫

我們傳統的前端更多的是用javascript實現各種複雜動畫,自從有了Css3 transition和animation以來,前端開發在動畫這一塊有了更高的自由度和格局,對動畫的開發也越來越容易。這篇文章就讓我們匯總一下使用Css3實現的各種特效。

這篇文章參考《css揭秘》這本書,並作出了自己的總結,希望能讓大家更有收穫,也強烈推薦大家看看這本書,你值得擁有。我們將學到

Css3outlineradial-gradientlinear-gradientbox-shadow

1.實現內部虛線邊框

知識點:outline

核心代碼

.dash-border{

width: 200px;

height: 100px;

line-height: 100px;

outline: 1px dashed #fff;

outline-offset: -10px;

}

2.邊框內圓角的實現

知識點:box-shadow

核心代碼

.radius-border{

margin-top: 20px;

width: 180px;

height: 80px;

box-shadow: 0 0 0 10px gray;

}

3.實現條紋背景與進度條

知識點:linear-gradient,repeating-linear-gradient

核心代碼

/* 上 */

background: linear-gradient(to right,#fb3 50%,#58a 0);

background-size: 40px 100%;

box-shadow: inset 0 0 3px #555;

/* 中 */

background: linear-gradient(45deg,#fb3 25%,#58a 0,#58a 50%,#fb3 0,#fb3 75%,#58a 0);

background-size: 40px 40px;

/* 下 (可以實現任意角度的漸變,45°時顯示效果最好) */

background: repeating-linear-gradient(60deg,#fb3,#fb3 15px,#58a 0,#58a 30px);

4.複雜的背景圖案

知識點:linear-gradient,repeating-linear-gradient,radial-gradient

由於第二個圖會有複雜的隨機動畫,建議大家可以親自嘗試看看效果,核心代碼

<style>

.bg-grid{

margin-top: 20px;

width: 200px;

height: 200px;

background-image: linear-gradient(rgba(255,255,255,1) 2px,transparent 0),

linear-gradient(to right,rgba(255,255,255,1) 2px,transparent 0),

linear-gradient(rgba(255,255,255,.2) 1px,transparent 0),

linear-gradient(to right,rgba(255,255,255,.2) 1px,transparent 0);

background-position: -50px -50px;

background-size: 100px 100px,100px 100px, 100% 10px, 10px 100%;

}

.animate-grid{

animation: move-grid 6s linear infinite;

}

@keyframes move-grid{

0%{

background-position: -50px -50px;

}

30%{

background-position: -100px -100px;

}

60%{

background-position: -100px -150px;

}

100%{

background-position: -50px -50px;

}

}

</style>

<div></div>

<div></div>

紅綠燈以及紅路燈隨機運動動畫

利用css3多背景和position實現紅綠燈和背景色塊移動

核心代碼

<style>

.bg-dot{

margin-top: 20px;

width: 200px;

height: 50px;

background-image: radial-gradient(circle,#0cf 15px,transparent),

radial-gradient(circle,red 15px,transparent),

radial-gradient(circle,yellow 15px,transparent),

radial-gradient(circle,green 15px,transparent);

background-repeat: no-repeat;

background-position: 0 0, 50px 0, 100px 0, 150px 0, 200px 0;

background-size: 50px 50px;

}

.animate-dot{

animation: move-dot 8s linear infinite;

}

.animate-dot2{

animation: move-dot2 6s linear infinite;

}

@keyframes move-dot{

0%{

background-position: 0 0, 50px 0, 100px 0, 150px 0;

}

30%{

background-position: 50px 0, 0 0, 100px 0, 150px 0;

}

60%{

background-position: 50px 0, 100px 0, 0 0, 150px 0;

}

100%{

background-position: 50px 0, 100px 0, 150px 0, 0 0;

}

}

@keyframes move-dot2{

0%{

background-image: radial-gradient(circle,#0cf 15px,transparent),

radial-gradient(circle,gray 15px,transparent),

radial-gradient(circle,gray 15px,transparent),

radial-gradient(circle,gray 15px,transparent);

}

30%{

background-image: radial-gradient(circle,gray 15px,transparent),

radial-gradient(circle,red 15px,transparent),

radial-gradient(circle,gray 15px,transparent),

radial-gradient(circle,gray 15px,transparent);

}

60%{

background-image: radial-gradient(circle,gray 15px,transparent),

radial-gradient(circle,gray 15px,transparent),

radial-gradient(circle,yellow 15px,transparent),

radial-gradient(circle,gray 15px,transparent);

}

100%{

background-image: radial-gradient(circle,gray 15px,transparent),

radial-gradient(circle,gray 15px,transparent),

radial-gradient(circle,gray 15px,transparent),

radial-gradient(circle,green 15px,transparent);

}

}

</style>

<div></div>

<div></div>

棋盤背景以及棋盤背景隨機動畫

利用背景漸變實現棋盤圖案

核心代碼

<style>

.bg-qi{

margin-top: 20px;

width: 200px;

height: 200px;

background-color: #eee;

background-image: linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 0,transparent 75%,rgba(0,0,0,.25) 0),

linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 0,transparent 75%,rgba(0,0,0,.25) 0);

background-position: 0 0, 20px 20px;

background-size: 40px 40px;

box-shadow: 2px 2px 4px rgba(0,0,0,.4);

}

</style>

<div></div>

偽隨機背景

利用背景漸變,keyframe動畫,實現複雜的偽隨機動畫

核心代碼

<style>

.bg-line-rand{

margin-top: 20px;

width: 480px;

height: 60px;

background-color: #eee;

background-image: linear-gradient(90deg,#fb3 11px, transparent 0),

linear-gradient(90deg,#ab4 23px, transparent 0),

linear-gradient(90deg,#655 41px, transparent 0);

background-size: 41px 100%, 61px 100%, 83px 100%;

box-shadow: 2px 2px 4px rgba(0,0,0,.4);

}

.bg-dot-rand{

margin-top: 20px;

width: 200px;

height: 200px;

background-color: #eee;

background-image: radial-gradient(circle,#fb3 5px, transparent 0),

radial-gradient(circle,#ab4 13px, transparent 0),

radial-gradient(circle,#655 31px, transparent 0);

background-repeat: no-repeat;

background-size: 101px 203px, 147px 60px, 373px 201px;

box-shadow: 2px 2px 4px rgba(0,0,0,.4);

}

.animate1{

animation: move 4s linear infinite;

}

.animate2{

animation: move2 4s linear infinite;

}

@keyframes move{

0%{

background-position: 0 0, 0 0, 0 0;

}

50%{

background-position: -10px 0, 20px 0, 30px 0;

}

100%{

background-position: 0 0, 30px 0, 10px 0;

}

}

@keyframes move2{

0%{

background-position: 0 0, 0 0, 0 0;

}

50%{

background-position: -10px 30px, 20px 0, -40px 80px;

}

100%{

background-position: 0 20px, 60px -20px, 10px 30px;

}

}

</style>

<div></div>

<div></div>

<div></div>

5.折角效果

知識點:linear-gradient

核心代碼

<style>

.fold{

margin-left: auto;

margin-right: auto;

margin-bottom: 20px;

width: 200px;

height: 80px;

color: #fff;

line-height: 80px;

text-align: center;

background: linear-gradient(to left bottom,transparent 50%,rgba(0,0,0,.5) 0) no-repeat 100% 0 / 2em 2em,

linear-gradient(-135deg,transparent 1.4em,#06c 0);

}

.linear{

background: linear-gradient(to left bottom,transparent 50%,rgba(0,0,0,.5)) no-repeat 100% 0 / 2em 2em,

linear-gradient(-135deg,transparent 1.4em,#06c);

}

</style>

<div>折角效果哦</div>

<div>折角效果哦</div>

2.內陰影圓折角效果

核心代碼

<style>

.fold-1{

margin-left: auto;

margin-right: auto;

margin-bottom: 20px;

position: relative;

width: 200px;

height: 80px;

border-radius: .5em;

color: #fff;

line-height: 80px;

text-align: center;

background: linear-gradient(-150deg,transparent 1.5em, #58a 0);

}

.fold-1::before{

content: "";

position: absolute;

top: 0;

right: 0;

background: linear-gradient(to left bottom,transparent 50%,rgba(0,0,0,.2) 0,rgba(0,0,0,.4)) 100% 0 no-repeat;

width: 1.73em;

height: 3em;

transform: translateY(-1.3em) rotate(-30deg);

transform-origin: bottom right;

border-bottom-left-radius: inherit;

box-shadow: -.2em .2em .3em -.1em rgba(0,0,0,.15);

}

</style>

<div>折角效果哦</div>

6.自適應文本的條紋背景

知識點:linear-gradient,line-height,background-origin

核心代碼

<style>

.stripe-bg{

padding: .5em;

line-height: 1.5em;

background: beige;

background-size: auto 3em;

background-origin: content-box;

background-image: linear-gradient(rgba(0,0,0,.2) 50%, transparent 0);

}

.stripe-bg > p{

margin: 0;

}

</style>

<div>

<p>hello you</p>

<p>hello you</p>

<p>hello you</p>

<p>hello you</p>

<p>hello you</p>

</div>

7.自定義的下劃線實現

知識點linear-gridient

小夥伴們注意到了嗎?默認的下劃線會將文字穿過,而上面的不會呦!

核心代碼

<style>

.my-line{

line-height: 1.4em;

background: linear-gradient(gray,gray) no-repeat;

background-size: 100% 1px;

background-position: 0 1.15em;

text-shadow: .05em 0 #fff, -.05em 0 #fff;

}

</style>

<div><span>i have your big apple.you have a too? hi hi hi.</span></div>

相關焦點

  • 前端工程師必備的css3動畫技巧
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫本文是筆者之前文章用css3實現驚豔面試官的背景即背景動畫(高級附源碼)的續篇也是介紹css3技巧的文章,因為css這塊知識難點不是很多,更多的在於去熟悉css3的新特性和基礎理論知識。
  • 《前端5分鐘》之使用純css實現網站換膚和焦點圖切換動畫
    ,即#06c.了解這個偽類之後,我們的網站換膚就很容易實現了,比如說我們要實現網站背景色的換膚,我們可以預先準備幾個背景色的容器, 然後用a標籤的href錨點分別對應相應的背景元素id,然後當點擊背景色的時候調整背景容器的層級,這樣就可以實現換膚了,實際效果可以看文章開頭的效果展示.
  • 前端—— CSS3動畫
    雖說IE9以及更早版本的IE瀏覽器都不支持css3動畫,但是IE6-8瀏覽器已是江河日下,使用谷歌瀏覽器、火狐瀏覽器、IE10+瀏覽器以及移動端瀏覽器等這些支持css3動畫的瀏覽器的人數越來越多,所以如果很簡單的就能讓一部分人獲得更好的用戶體驗,那何樂而不為呢。
  • 輕鬆使用純css3打造有點意思的故障藝術(附React加強組件版)
    所以在文章開頭的動畫實現就變得很簡單了,我們只需要設置一個畫布背景,然後用內容混合讓文字疊加, 最後設計文字和故障線的動畫即可. 接下來我們看看具體的實現步驟.實現方案我們先來實現文字的混合效果, 故障線和畫布背景, css代碼如下:.blink {// ...
  • 因為CSS3,動畫將一切皆有可能
    熱火朝天的css3無疑吸引了很多前端開發者的眼球,然而在css3中的動畫屬性則是新功能中的主打招牌,說到css3的動畫屬性不得不讓人想起這三個屬性:Transform﹑Transition﹑Animation。
  • css3動畫怎麼實現旋轉效果
    華清遠見成都中心高端IT就業培訓專家伴隨HTML5而來的CSS3讓前端小夥伴們可以用簡單的CSS樣式即可寫出動畫效果來,而在這之前,一提到動畫我們可能會想到JavaScript,Flash,等。如果是用JavaScript那倒也不是很糟糕的事啦,但如果寫出來的效果非要強迫客戶端安裝第三方插件才能顯示,畢竟不是很理想。
  • 如何用純css打造類materialUI的按鈕點擊動畫並封裝成react組件
    但隨著對用戶體驗的越來越重視,對交互體驗要求的提高以及css3等新標準的出現,使得web更加大放異彩, 各種動效的實現都變得非常容易.筆者在研究materialUI框架時對於它的交互及其讚嘆.所以為了自己能實現一個類似materialUI的按鈕點擊動畫,並封裝到自己的UI庫中,筆者特地總結了一些思路,希望可以和廣大的前端工程師們一起探討.
  • SVG動畫、CSS3動畫常用知識點全解析
    repeatCount設置動畫重複執行的次數。repeatDur和repeatCount都可以通過設置為indefinit實現無限循環動畫。當repeatDur和repeatCount同時作用於同一個<animate>時,動畫終止時間取兩者中較小值。複雜動畫之多節點變化的動畫1.
  • 基於Vue實現一個有點意思的拼拼樂小遊戲
    回到我們的小遊戲開發,我們更多的是javascript和css3的掌握程度,在學習完這篇文章之後相信大家對javascript和css3的編程能力都會有極大的提升,後面還會介紹如何使用canvas實現生成戰績海報圖的功能。
  • 前端:用javascript實現一個轉盤小遊戲?
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫本文主要介紹如何使用原生javascript和Css3來實現一個在各大移動應用中經常出現的轉盤遊戲,由於改實現可以有不同方式,如果熟悉canvas的話也可以用canvas實現,本文採用js和css實現主要考慮到複雜度較小性能較好
  • 大平層設計——質感高級灰,電視背景和床頭背景設計很有格調
    大平層設計——質感高級灰,電視背景和床頭背景設計很有格調買衣服的時候,營業員經常會說今年流行什麼顏色什麼款式,其實不僅僅是在服裝上,在所有設計行業都會有經典和流行的存在;在室內設計中,高級灰可以說是一個不朽的存在;
  • 推薦9款使用CSS3實現的超酷動畫效果
    大家都知道,在網頁製作時使用CSS技術,可以有效地對頁面的布局、字體、顏色、背景和其它效果實現更加精確的控制。只要對相應的代碼做一些簡單的修改,就可以改變同一頁面的不同部分,或者頁數不同的網頁的外觀和格式。CSS3是CSS技術的升級版本,CSS3語言開發是朝著模塊化發展的。
  • 動畫製作揭秘 · 第十三期|背景
    背景工作是較為獨立的環節,和原畫部分幾乎是完全分開繪製的,由原畫師繪製畫面中運動的人或物,而基本靜止的動畫背景由專門的背景畫師負責。在製作流程中,背景和原畫基本是平行進行的,為了提高效率,一些遠景畫面在動畫前期的場景設定完成後就可以開始。
  • ins風背景圖 高級小眾
    ins風背景圖 高級小眾
  • 12個經典大氣的HTML5/CSS3應用動畫
    1、HTML5/CSS3自定義下拉框 3D卡片摺疊動畫之前我們分享過一款CSS3帶小圖標下拉菜單,它更多的是一款菜單,但是今天要分享的一款CSS3自定義下拉框取代了傳統的Select樣式,用不一樣的風格來讓select更加美觀。這款CSS3下拉框還有3D立體的卡片摺疊動畫效果,非常酷。
  • 「咻動畫」二維動畫製作怎樣處理背景?
    下面咻動畫就來簡單分析一下:二維動畫中的畫面背景有哪些處理要點。「咻動畫」二維動畫製作怎樣處理背景? 一般在二維動畫中的景物都是有分遠、中、近三個層次,其中近景與中景都有可能是需要細緻刻畫的主體所在的位置。遠近大部分情況下是指畫面中的背景,相當於舞臺劇中的背景板非主要但不可少。雖然在動畫製作中遠景通常都是會被簡化不會深入去刻畫,但遠景的作用也是不容小覷的。
  • 動畫裡的背景圖怎麼畫 這些動畫作品給你靈感!
    動畫裡的背景圖怎麼畫?這些動畫作品給你靈感!畫師Orks772作品來了,Orks772的動畫裡的背景圖畫得特別棒,畫動畫裡的背景圖可以參考Orks772的作品,喜歡畫師Orks772的小夥伴別錯過哦,畫師Orks772的作品很受歡迎,畫師Orks772的動畫裡的背景圖都相當棒,臨摹學習的時候存一下畫師Orks772的作品準沒錯,下面進入今天畫師Orks772的作品分享吧,一起感受畫師Orks772的筆下世界!
  • 「咻動畫」動畫宣傳片的背景音樂有什麼類型?
    了解過動畫製作的小夥伴們都知道這是一個繁瑣的過程,單單是動畫配音就有背景音樂、動畫旁白、動作音效、角色獨白、音響效果等好幾種聲音需要調。雖然這些聲音效果並不會同時都出現在一個畫面當中,甚至有些聲音不會在同一個動畫當中被應用到,但是其中背景音樂對於動畫宣傳片來說可以算是不可少的一部分。
  • 12款超強CSS3應用集錦下載
    CSS3非常強大,它可以渲染很多你意想不到的特效,而且目前瀏覽器對CSS3的支持也逐漸放開了,所以利用CSS3可以製作一些即美觀又實用的網頁應用,下面12款CSS3應用集錦分享給大家,有原始碼下載。今天我們要分享一款利用CSS3實現的提示框Tooltip動畫。當滑鼠移到圖標按鈕上時,就會在按鈕正上方彈出一個Tooltip提示框,並且伴有淡入淡出的效果。