整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          幾個有趣的CSS3動畫效果,你應該要掌握的

          幾個有趣的CSS3動畫效果,你應該要掌握的

          天我們一起來看幾個有趣的css動畫效果,用到的CSS3的知識點

          線條圍繞著容器轉動

          • 運行效果

          首先,我們看下運行出來的效果圖

          • 實現方式

          這個效果并不是直接使用animation來實現的,而是通過clip屬性來實現的。外邊的藍色運動的線條實際為一個完整的div,只是通過clip屬性裁剪后只剩下上下左右之中的一邊

          clip屬性依據上-右-下-左的順序,以左上角(0, 0)為標準點進行裁剪,如果傳入的參數為auto,則表示不裁剪

          • 實例代碼

          html部分的代碼

          css部分的代碼

          CSS部分代碼

          CSS實現餅圖

          在我們畫餅圖的時候會想到使用Canvas或者SVG,使用CSS我們同樣可以模擬出餅圖的形狀

          • 運行效果

          • 實現方式

          1. 首先要使用border-radius屬性將div設置為圓角

          2. 使用animation-delay屬性控制動畫效果

          • 實例代碼

          html部分代碼

          css部分代碼

          總結

          今天這兩個有趣的CSS動畫效果,你學會了嗎?

          篇點題,嘿嘿嘿!

          首先來聊聊今日主角:今天在公司,偶然間和同事談天說地,聊古說今簡直就是無shi不歡吧。所以今天咱不玩個人英雄主義,咱來聊一聊規模宏大的HTML通shi,別想太多了是“史真香的史”!

          (集翔物鎮樓)

          前幾期我承認都比較黃,所以今天為了改變下大家的胃口,咱來聊聊史。(很帶逼格吧)

          就在今天和同事聊史的時候偶然間突發奇想,其實每個HTML標簽何嘗不是一段史記,他們記載著這段HTML代碼的興衰。

          所以這期我們先來簡單介紹一下HTML標簽的基礎皇室體系:

          角色: 國王

          本體: 標簽本身(例如:<a>,<div>,<span>)

          自我介紹:每個朝代雖然都有國王但是每個國王卻代表著不同朝代,國王象征著至高權利。

          角色: 王后

          本體: id

          自我介紹:每個國王標配一位王后,王后是王朝的另一個代表,雖然可被替換,但是僅此一款。利用自己的小政權(js,css等)輔助國王治理國家。

          角色: 王妃

          本體: class

          自我介紹:哪個國王不好色,后宮三千爭芳斗艷,一個國王可以有一群的王妃,但總有幾位是比較出眾的,她們同樣可以使用自己的小政權(js,css等)來吸引國王并輔助治理國家,但是權力相對應沒有王后大。

          角色: 王子

          本體: style

          自我介紹:國王最親近的人,未來王朝的接班人,俗話說虎毒不食子,style王子是集萬千寵愛于一身,他的小政權(css)是最受國王關注的,但是品質優秀的style王子可以為王朝更添風采,而頑劣不堪的則會拖垮整個王朝。雖然說style是王子,但是如果遇到太強勢的王后,可能他就被這么雪藏了(比如武則天?慈禧?)又或者說他的國王老爹比較Low撐不到這狗腿子耍威風就垮臺了。

          角色: 剛正不阿的史官

          本體: title

          自我介紹:為什么在史官前面加了個剛正不阿呢?為人太過正直以致于寫出來的史不夠浮夸不夠拉風,這裝逼不到位皇帝老兒肯定不高興(司馬遷:你在說我么~),和css,js這種前衛,會造勢的文武官比起來自然就較為不被重視。但他們所寫的內容往往是后世人對于這個王朝的標注。

          他們的故事是這樣發展的

          <div id="惠文后" class="羋月" style="display:block" title="" > </div>

          Long, long ago有個王朝叫秦國,他們的國王叫秦惠文王(div),話說這國王各種牛逼,秦國一哥,北掃義渠,西平巴蜀,東出函谷,南下商於,為秦統一中國打下堅實基礎。業績這么好后宮也是風生水起,王后惠文后(id)給他生了個胖小子取名叫贏蕩(style,很淫蕩哦~)日子很幸福,時不時還跟小秘羋月(class)談談情說說愛,這生活簡直沒誰了。贏蕩王子天生神力,殷勇善戰深得惠文王喜愛,惠文王病逝時將大業傳位于其,然而贏蕩卻因一時好斗與人比舉鼎結果脫力被砸死英年早逝。

          可能有人會疑惑,一整個王朝耶~,怎么可能就這么點阿貓阿狗的,其他人呢?這個嘛每個王朝都有自己的特色,也有屬于自己那個時代的superStar,小編我又不是在寫紀傳體史書,怎么可能寫那么細,再說了就我這半吊子歷史水平能把牛逼吹到這已經算不錯了。。。。

          文章節選自:優聚YOUJ知識手冊《HTML后宮秘史》

          優聚YOUJ知識共享平臺是專為-2到2歲的職場人士打造的學習社區,提供系統化的崗位知識手冊,并幫助建立自己的工作知識庫。

          章出處:趣味CSS3效果挑戰小匯總

          挑戰1: 畫一個對話框

          要畫一個對話框,首先來學習做一個三角形。其實非常的簡單。

          <!DOCTYPE html>
          <html lang="en">
          <head>
           <meta charset="UTF-8">
           <meta name="viewport" content="width=device-width, initial-scale=1.0">
           <meta http-equiv="X-UA-Compatible" content="ie=edge">
           <title>Document</title>
           <style>
           .triangle{
           width: 0;
           height: 0;
           border: 50px solid;
           border-color: #f00 #0f0 #ccc #00f;
           }
           </style>
          </head>
          <body>
           <div class="triangle"></div>
          </body>
          </html>
          

          出現如下效果:

          估計你已經知道border的構成原理,然后只需改一行代碼:

          // 四個參數對應 :上 右 下 左
          border-color: transparent transparent #ccc transparent;
          

          于是就只剩下面的三角形部分啦!

          現在來利用三角形技術做對話框:

          <!DOCTYPE html>
          <html lang="en">
          <head>
           <meta charset="UTF-8">
           <meta name="viewport" content="width=device-width, initial-scale=1.0">
           <meta http-equiv="X-UA-Compatible" content="ie=edge">
           <title>Document</title>
           <style>
           .dialog {
           position: relative;
           margin-top: 50px;
           margin-left: 50px;
           padding-left: 20px;
           width: 300px;
           line-height: 2;
           background: lightblue;
           color: #fff;
           }
           .dialog::before {
           content: '';
           position: absolute;
           border: 8px solid;
           border-color: transparent lightblue transparent transparent;
           left: -16px;
           top: 8px;
           }
           </style>
          </head>
          <body>
           <div class="dialog">這是一個對話框鴨!</div>
          </body>
          </html>
          

          效果如下:

          挑戰2: 畫一個平行四邊形

          利用skew特性,第一個參數為x軸傾斜的角度,第二個參數為y軸傾斜的角度。

          <!DOCTYPE html>
          <html lang="en">
          <head>
           <meta charset="UTF-8">
           <meta name="viewport" content="width=device-width, initial-scale=1.0">
           <meta http-equiv="X-UA-Compatible" content="ie=edge">
           <title>Document</title>
           <style>
           .parallel {
           margin-top: 50px;
           margin-left: 50px;
           width: 200px;
           height: 100px;
           background: lightblue;
           transform: skew(-20deg, 0);
           }
           </style>
          </head>
          <body>
           <div class="parallel"></div>
          </body>
          </html>
          

          大家可以自己動手試試。 效果如下:

          挑戰3: 用一個div畫五角星

          對于這個五角星而言,我們可以拆分成三個部分,想一想是不是這樣?

          那我們現在就來實現這三個部分。 對于最上面的三角,我們在第一個部分已經實現了三角形,這個不難。但是下面的兩個如何實現呢?

          其實也非常的簡單,想一想,下面這兩個是不是就是一個向上的三角形旋轉而來呢?明白了這一點,就可以動手實現啦!

          <!DOCTYPE html>
          <html lang="en">
          <head>
           <meta charset="UTF-8">
           <meta name="viewport" content="width=device-width, initial-scale=1.0">
           <meta http-equiv="X-UA-Compatible" content="ie=edge">
           <title>Document</title>
           <style>
           #star {
           position: relative;
           margin: 200px auto;
           width: 0;
           height: 0;
           border-style: solid;
           border-color: transparent transparent red transparent;
           border-width: 70px 100px;
           transform: rotate(35deg);
           }
           #star::before {
           position: absolute;
           content: '';
           width: 0;
           height: 0;
           top: -128px;
           left: -95px;
           border-style: solid;
           border-color: transparent transparent red transparent;
           border-width: 80px 30px;
           transform: rotate(-35deg);
           }
           #star::after {
           position: absolute;
           content: '';
           width: 0;
           height: 0;
           top: -45px;
           left: -140px;
           border-style: solid;
           border-color: transparent transparent red transparent;
           border-width: 70px 100px;
           transform: rotate(-70deg);
           }
           </style>
          </head>
          <body>
           <div id="star"></div>
          </body>
          </html>
          

          效果如下:

          你沒看錯,這就是CSS3的威力!

          挑戰4: 畫一個愛心

          看起來好像不容易下手,我們先來分解一下這個心形的結構:

          是兩個形狀相同的部分,對其中一種稍微旋轉一下:

          現在就來構造這個部分:

          <!DOCTYPE html>
          <html lang="en">
          <head>
           <meta charset="UTF-8">
           <meta name="viewport" content="width=device-width, initial-scale=1.0">
           <meta http-equiv="X-UA-Compatible" content="ie=edge">
           <title>Document</title>
           <style>
           .heart {
           width: 100px;
           height: 90px;
           position: relative;
           margin: 100px auto;
           }
           .heart::before {
           content: '';
           position: absolute;
           width: 50px;
           height: 90px;
           background: red;
           border-radius: 50px 45px 0 0;
           /* 設置旋轉中心 */
           transform-origin: 0 100%;
           transform: rotate(-45deg);
           }
           .heart::after {
           content: '';
           position: absolute;
           width: 50px;
           height: 90px;
           top: -35px;
           left: -35px;
           background: red;
           border-radius: 50px 45px 0 0;
           /* 設置旋轉中心 */
           transform-origin: 0 100%;
           transform: rotate(45deg);
           }
           </style>
          </head>
          <body>
           <div class="heart"></div>
          </body>
          </html>
          

          效果如下:

          同樣一個div完成了這個效果,是不是非??犰拍兀?

          關注我的頭條號,分享更多的技術學習文章,我自己是一名從事了多年開發的web前端老程序員,目前辭職在做自己的web前端私人定制課程,今年年初我花了一個月整理了一份最適合2019年學習的web前端學習干貨,各種框架都有整理,送給每一位前端小伙伴,想要獲取的可以關注我的頭條號并在后臺私信我:前端,即可免費獲取。

          挑戰5: 畫一個八卦陣

          還是來分解它的結構:

          按照之前的思路,估計你也有想法了,這個時候依然可以用偽類來畫出兩個小的圓,那么問題來了,像這種顏色不同的同心圓如何用CSS表達呢?

          其實很簡單,根據border-radius可以影響padding的形狀這一規則,外面的一圈用border來表達,而中間利用白色的背景顏色將padding填滿,寬度和高度都可以設為0。

          另一個問題是:大圓的效果如何實現? 有兩種實現思路,一種是用border-left來表示左邊的半圓,右邊的半圓利用本身的寬度。 第二種方案其實是從《CSS揭秘》獲得的靈感,可以利用linear-gradient顏色漸變的屬性來調整。

          接下來編碼實現:

          <!DOCTYPE html>
          <html lang="en">
          <head>
           <meta charset="UTF-8">
           <meta name="viewport" content="width=device-width, initial-scale=1.0">
           <meta http-equiv="X-UA-Compatible" content="ie=edge">
           <title>Document</title>
           <style>
           body{
           background-color: #ccc;
           }
           /* 大圓部分第一種思路 (注意下面的小圓定位要調整下)*/
           /* .bagua{
           position: relative;
           width: 150px;
           height: 300px;
           margin: 100px auto;
           border-radius: 50%;
           background-color: #fff;
           border-left: 150px solid #000;
           } */
           /* 大圓部分第二種思路 */
           .bagua{
           position: relative;
           width: 300px;
           height: 300px;
           margin: 100px auto;
           border-radius: 50%;
           background-color: #000;
           /*從0-50%用背景色,50%開始到100%用#fff */
           background-image: linear-gradient(to right, transparent 50%, #fff 50%);
           }
           .bagua::before{
           content: '';
           position: absolute;
           left: 75px;
           width: 0;
           height: 0;
           padding: 25px;
           border-radius: 50%;
           border: 50px solid #000;
           background: #fff;
           background-clip: padding-box;
           }
           .bagua::after{
           content: '';
           position: absolute;
           top: 150px;
           left: 75px;
           width: 0;
           height: 0;
           padding: 25px;
           border-radius: 50%;
           border: 50px solid #fff;
           background: #000;
           background-clip: padding-box;
           }
           </style>
          </head>
          <body>
           <div class="bagua"></div>
          </body>
          </html>
          

          效果如下:

          挑戰6: 超級棒棒糖

          這里直接擺出效果吧:

          其中利用了兩個CSS3中非常重要的屬性————線性漸變和徑向漸變。 其中圓形部分利用radial-gradient屬性,也就是徑向漸變,棒子的顏色利用linear-gradient,之前已經用過,也就是線性漸變。

          代碼參考如下:

          <!DOCTYPE html>
          <html lang="en">
          <head>
           <meta charset="UTF-8">
           <meta name="viewport" content="width=device-width, initial-scale=1.0">
           <meta http-equiv="X-UA-Compatible" content="ie=edge">
           <title>Document</title>
           <style>
           .linear{
           width: 300px;
           height: 300px;
           margin: 20px auto;
           border-radius: 50%;
           /* 重復性徑向漸變 */
           background-image: repeating-radial-gradient(red 0px, green 30px, orange 40px);
           position: relative;
           }
           .linear::after{
           content: '';
           position: absolute;
           top: 100%;
           left: 50%;
           width: 10px;
           height: 500px;
           border-radius: 0 0 10px 10px;
           /* 線性漸變 */
           background-image: linear-gradient(to top, red 20%, orange 40%, lightblue 60%, green 80%);
           }
           </style>
          </head>
          <body>
           <div class="linear"></div>
          </body>
          </html>
          

          挑戰7:跳動的字節

          相當于是一個loading的效果。其實實現起來是非常簡單的,這里直接用animation-delay即可控制五個元素的錯落感。直接貼上代碼,大家可以參考一下:

          <!DOCTYPE html>
          <html>
          <head>
           <meta charset="utf-8">
           <title>JS Bin</title>
           <style>
           .spinner{
           margin: 100px auto;
           width: 50px;
           height: 50px;
           text-align: center;
           font-size: 10px;
           }
           
           .spinner > div{
           display: inline-block;
           background-color: rgb(43, 128, 226);
           height: 100%;
           width: 5px;
           margin-right:1px;
           animation: bytedance 1s infinite;
           }
           
           .spinner >div:nth-child(2) {
           background-color: rgb(49, 84, 124);
           animation-delay: -0.9s;
           }
           .spinner >div:nth-child(3) {
           background-color: rgb(88, 128, 173);
           animation-delay: -0.8s;
           }
           .spinner >div:nth-child(4) {
           background-color: rgb(88, 128, 173);
           animation-delay: -0.7s;
           }
           .spinner >div:nth-child(5) {
           background-color: rgb(142, 187, 240);
           animation-delay: -0.6s;
           } 
           
           @keyframes bytedance{
           0%, 40%, 100%{
           transform: scaleY(0.4);
           }
           20%{
           transform: scaleY(1);
           }
           }
           </style>
          </head>
          <body>
           <div class="spinner">
           <div></div>
           <div></div>
           <div></div>
           <div></div>
           <div></div>
           </div>
          </body>
          </html>
          

          挑戰8: 漣漪緩動效果

          這里顯然可以分解成兩個圓,仍然是利用animation-delay來實現錯落感。 當一個圓縮小為0的時候,另一圓剛好擴展為最大,依次規律循環。

          <!DOCTYPE html>
          <html>
          <head>
           <meta charset="utf-8">
           <title>Loading</title>
           <style>
           .spinner{
           width: 60px;
           height: 60px;
           position: relative;
           margin: 100px auto;
           }
           
           .spinner > div{
           width: 100%;
           height: 100%;
           opacity: 0.6;
           border-radius: 50%;
           background-color: lightblue;
           position: absolute;
           top: 0;
           left: 0;
           animation: loading 1.4s infinite ease-in;
           }
           
           .spinner > div:nth-child(2){
           animation-delay: -0.7s;
           }
           
           @keyframes loading{
           0%, 100% {
           transform: scale(0.0);
           }
           50% {
           transform: scale(1.0);
           }
           
           }
           </style>
          </head>
          <body>
           <div class="spinner">
           <div></div>
           <div></div>
           </div>
          </body>
          </html>
          

          通過這些有趣的挑戰,相信你已經體會到CSS3世界的奇妙了,但是但是,有部分屬性并不是所有的瀏覽器都支持,保守起見,最好在CSS3新特性名之前加上瀏覽器的前綴,本文側重效果的實現,兼容這塊暫不做處理。

          作為前端工程師,平時通常拿CSS做頁面布局,甚至有時候會出現很多莫名其妙的bug,于是很多人不太愿意來寫CSS,但實際上更多的時候是因為我們了解不夠,功夫不到家,才會覺得這個東西不友好,感到不喜歡,當你開始擺脫門外漢的姿態,真正踏進那個廣袤的世界,能夠對它的各種特點信手拈來,又會情不自禁地愛上這個東西。因此,有時候我們缺少的不是能力,而是一種包容的心態。


          主站蜘蛛池模板: 日韩一区二区在线视频| 无码夜色一区二区三区| 日产精品久久久一区二区| 亚洲国产精品一区二区第一页免| 日韩一区二区三区无码影院| 精品人伦一区二区三区潘金莲| 国产主播一区二区三区在线观看| 亚洲午夜电影一区二区三区| 精品国产免费一区二区三区香蕉 | 亚洲日本一区二区三区在线| 人妻激情偷乱视频一区二区三区| 国产不卡视频一区二区三区| 无码人妻品一区二区三区精99 | 中文字幕在线无码一区| 国产一区二区三区小说| 一区二区免费视频| 夜色福利一区二区三区| 国产在线观看一区精品| 国产一区二区内射最近更新| 久久精品一区二区免费看| 日韩视频一区二区| 波多野结衣免费一区视频| 亚洲国产一区二区视频网站| 多人伦精品一区二区三区视频| 农村乱人伦一区二区| 天堂va在线高清一区| 在线成人一区二区| 久久蜜桃精品一区二区三区| 麻豆一区二区免费播放网站| 日美欧韩一区二去三区| 国产精品无码一区二区在线观| 精品一区二区三区四区在线播放| 人妻无码一区二区三区免费| 国产午夜精品一区二区三区极品 | 中文乱码字幕高清一区二区| 国产一区二区精品久久| 久久久精品人妻一区亚美研究所 | 福利片免费一区二区三区| 日本一区二区三区在线看| 国产精品自在拍一区二区不卡| 亚洲国产成人一区二区精品区 |