亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

CSS3 實現童年的紙飛機

2024-07-11 08:59:57
字體:
來源:轉載
供稿:網友

今天我們來折紙飛機(可以飛出去的那種哦)

基本全用css來實現,只有一小部分的js

首先看一下飛機的構造

灰色區域為可折疊區域

白色區域為機身

三角形由border畫出來的再經過各種平移翻轉變成上圖

寫之前再補充個知識點:

我們顏色的設置不用rgba,

用hsl() h: 色調 0- 360 0(或360)表示紅色,120表示綠色,240表示藍色

   s : 飽和度 0% -100%

   l : 亮度 0% - 100%

先看效果才有動力:

HTML:

<!--童年的紙飛機--><div class="airplane">    <div class="front-end show-front">        <!--寬高自適應的文本框-->        <div class="text-input" contenteditable = true></div>        <div class="fly">            fly        </div>    </div>    <div class="backup-end show-backup">        <div class="left-plane">            <!--左上角折疊區域-->            <div class="left-top fold"></div>            <!--左下角折疊區域-->            <div class="left-bottom fold"></div>            <!--機身-->            <div class="wing wing1"></div>            <div class="wing wing2"></div>        </div>        <div class="right-plane">            <!--右上角折疊區域-->            <div class="right-top fold"></div>            <!--右下角折疊區域-->            <div class="right-bottom fold"></div>            <!--機身-->            <div class="wing wing3"></div>            <div class="wing wing4"></div>        </div>    </div></div>

css:

body{    width: 100%;    height: 680px;    background-color: #000;    background-repeat: no-repeat;    overflow: hidden;    transition: all 2s linear;}/*景深加在父級上*/.airplane{    width: 100%;    height: 100%;    -webkit-perspective: 800px;    -webkit-perspective-origin: 50% 50%;}/*紙飛機前面*//*一開始不旋轉*/.front-end.show-front{    transform: rotateY(0deg);}/*點擊后旋轉*/.front-end{    background: rgba(255, 255, 255, 0.15);    *background: hsl(0, 0%, 88%);    /*繞Y軸旋轉-180度*/    transform: rotateY(-180deg);    position: relative;    box-sizing: border-box;    padding: 20px;    text-align: center;    backface-visibility: hidden;    width: 400px;    height: 260px;    top: 240px;    transition: all 0.8s ease-in-out;    margin: auto;}/*文本框*/.text-input{    width: 100%;    max-width:360px;    min-height:100px;    padding: 10px;    box-sizing: border-box;    height: 140px;    background-color: #ffffff;    font-smoothing: subpixel-antialiased;    font-size: 18px;    text-align: left;    font-family: "Microsoft YaHei",Helvetica, Arial, Verdana;    line-height: 20px;}.fly{    transition: all 0.3s ease-in-out;    /*hsl是色調/飽和度/亮度/*/    border: 2px solid hsl(194, 100%, 72%);    margin: 15px 0;    padding: 10px;    outline: none;    font-size: 18px;    cursor: pointer;    font-family: "Microsoft YaHei";    background-color: hsl(0, 0%, 94%);    border-radius:4px;    user-select: none;}/*點擊按鈕時縮小動畫*/.fly:active{    transform: scale(0.85);    transition: all 10ms ease-in-out;    background-color: hsl(0, 0%, 85%);    border: 2px solid hsl(194, 30%, 55%);}.backup-end{    perspective: 600px;    perspective-origin: 200px 131px;    transform-style: preserve-3d;    transition: all 0.8s ease-in-out;    backface-visibility: hidden;    position: relative;    width: 400px;    height: 260px;    margin: auto;}/*一開始不顯示飛機*/.backup-end.show-backup{    transform: rotateY(180deg);}/*飛機的左右兩邊公共樣式*/.left-plane, .right-plane{    transform-style: preserve-3d;    width: 200px;    height: 260px;    display: block;    position: absolute;    top: 0px;    transition: all 1s ease-in-out;}/*左邊*/.left-plane{    transform: rotateZ(0deg);    transform-origin: 100% 50% 0;    left: 0;}/*右邊*/.right-plane{    transform: rotateZ(0deg);    transform-origin: 0% 50%;    left: 199px;}/*左右機身的公共樣式*/.wing{    position: absolute;    transform-origin: 0 0 0;    perspective: 1px;    perspective-origin: 50% 50%;    backface-visibility: hidden;    transition: all 1.3s linear;    box-sizing: border-box;    margin: 0;    padding: 0;    background: none;    border: none;    border-top: 240px solid hsla(0, 0%, 0%, 0);    border-bottom: 0px solid hsla(0, 0%, 0%, 0);    border-right: 100px solid hsl(0, 0%, 88%);    width: 0;    height: 0;    bottom: 0;}/*繪制  飛機2d 雛形*/.wing1 {    transform-origin: 100% 100%;    transform: translateY(-38px) translateX(8px) rotateZ(22.62deg) skewY(-22.62deg);/*2D圖像的偏移 旋轉*/}.wing2 {    transform: rotateZ(22.62deg);    transform-origin: 100% 100%;    border-left: 100px solid hsl(0, 0%, 88%);    border-right: none;    left: 100px;}.wing3 {    transform: rotateZ(-22.62deg);    transform-origin: 0% 100%;    border-right: 100px solid hsl(0, 0%, 88%);}.wing4 {    transform: translateY(-38px) translateX(-8px) rotateZ(-22.62deg) skewY(22.62deg);    transform-origin: 0% 100%;    border-right: none;    border-left: 100px solid hsl(0, 0%, 88%);    left: 100px;}/*繪制可折疊區域*/.left-top.fold{    position: absolute;    transform-origin: 100px 112px;    transition-delay: 1300ms;    width: 0;    height: 0;    top: 0;    border-right: 202px solid hsla(0, 0%, 0%, 0);    border-bottom: 202px solid hsla(0, 0%, 0%, 0);    border-top: 222px solid hsl(0, 0%, 88%);}.right-top.fold{    position: absolute;    right: 0;    border-left: 202px solid hsla(0, 0%, 0%, 0);    border-bottom: 202px solid hsla(0, 0%, 0%, 0);    border-top: 222px solid hsl(0, 0%, 88%);    transform-origin: 96px 112px;    transition-delay: 1650ms;}.left-bottom.fold{    position: absolute;    transform-origin: 109px 0;    transition-delay: 2100ms;    width: 109px;    height: 38px;    background: hsl(0, 0%, 88%);    bottom: 0;    left: 0;}.right-bottom.fold{    position: absolute;    transform-origin: 0 0;    transition-delay: 2450ms;    width: 109px;    height: 38px;    background: hsl(0, 0%, 88%);    bottom: 0;    right: 0;}/*補全 折疊尾翼 剩余 三角區域*/.left-bottom.fold:after {    position: absolute;    content: "";    border-right: 92px solid hsla(0, 0%, 0%, 0);    border-bottom: 39px solid hsl(0, 0%, 88%);    border-top: 37px solid hsla(0, 0%, 0%, 0);    left: 109px;    bottom: 0;}.right-bottom.fold:after {    position: absolute;    content: "";    border-left: 92px solid hsla(0, 0%, 0%, 0);    border-bottom: 39px solid hsl(0, 0%, 88%);    border-top: 37px solid hsla(0, 0%, 0%, 0);    left: -92px;    bottom: 0;}/****************************//****此處開始配合js*****//*折疊效果*/.fold {    transition: transform 800ms ease-out;    backface-visibility: hidden;    position: absolute;    background-color: transparent;    z-index: 0;    width: 0;}/* 折疊效果(左機翼、左尾翼) */.left-top.fold.curved {    transform: rotate3d(1,-1.11,0,180deg);}.left-bottom.fold.curved {    transform: rotate3d(2.4867,1,0,-180deg);}/* 折疊效果(右機翼、右尾翼)*/.right-top.fold.curved {    transform: rotate3d(1,1.11,0,180deg);}.right-bottom.fold.curved {    transform: rotate3d(-2.4867,1,0,180deg);}/* 平放一整個飛機 */.airplane.hover {    transform: rotateX(54deg) rotateY(-10deg) rotateZ(25deg);    transition-delay: 0.5s;}/*放平之后 左側整體傾斜 (體現折疊效果)*/.backup-end.hover .left-plane {    transform: rotateY(60deg);}.backup-end.hover .right-plane {    transform: rotateY(-60deg);}/* 3d視覺中放平 左側機翼*/.backup-end.hover .wing1 {    transform: translateY(-38px) translateX(8px) rotateZ(22.62deg) rotateY(-60deg) skewY(-22.62deg);    border-right: 100px solid hsl(0, 0%, 95%);}/*左側 飛機手持部位透明度降低*/.backup-end.hover .wing2 {    border-left: 100px solid hsl(0, 0%, 85%);}/* 3d視覺中放平 右側機翼*/.backup-end.hover .wing4 {    transform: translateY(-38px) translateX(-8px) rotateZ(-22.62deg) rotateY(60deg) skewY(20deg);    border-left: 100px solid hsl(0, 0%, 95%);}/*右側 飛機手持部位透明度降低*/.backup-end.hover .wing3 {    border-right: 100px solid hsl(0, 0%, 71%);}/*機翼 折疊效果(右機翼、右尾翼) 之后 多余部分隱藏掉*/.backup-end.hover .curved {    display: none;}/* #wind_container.hover .wing {    backface-visibility: visible;} *//* 飛機后退助跑 */.backup-end.hover.fly_away_first {    transform: translateX(-100px) translateZ(300px) rotateX(42deg) rotateY(-11deg) rotateZ(27deg);    transition-delay: 0ms;    transition-duration: 0.4s;    transition-timing-function: ease-out;}/* 飛機向前飛翔至消失 */.backup-end.hover.fly_away_first.fly_away {    transform: translateX(600px) translateY(-400px) translateZ(-5000px) rotateX(66deg) rotateY(-12deg) rotateZ(36deg);    transition: transform 2s ease-out, opacity 1.5s 0.5s linear;    opacity: 0;}

js:

// 童年的紙飛機const fly = document.getElementsByClassName('fly')[0];const front = document.getElementsByClassName('front-end')[0];const backup = document.getElementsByClassName('backup-end')[0];const fold = document.getElementsByClassName('fold');fly.addEventListener('click', () => {    first().then(second).then(third).then(fourth).then(fifth).catch((err)=> {        console.log(err)    });}, false);// 第一步function first() {    return new Promise((suc, err) => {        setTimeout(() => {            // 隱藏信息面板            front.classList.remove('show-front');            // 翻轉至正面            backup.classList.remove('show-backup');            // 折疊效果(左翼、右翼)            for (let i = 0; i < fold.length; i++) {                fold[i].classList.add('curved')            }            // 顏色變換            document.body.style.backgroundColor = "#54575A";            suc(1)        }, 200)    })}function second() {    return new Promise((suc, err) => {        setTimeout(function () {            backup.classList.add('hover');            document.body.style.backgroundColor = "#AD8BD8";            suc(2)        }, 2800);    })}//步驟三:飛機后退助跑function third() {    return new Promise((suc, err) => {        setTimeout(function () {            backup.classList.add('fly_away_first');            document.body.style.backgroundColor = "#6E99C4";            suc(3)        }, 2000);    })}// 步驟四:飛機向前飛翔至消失function fourth() {    return new Promise((suc, err) => {        setTimeout(function () {            backup.classList.add('fly_away');            document.body.style.backgroundColor = "#3F9BFF";            suc(4)        }, 600);    })}function fifth() {    return new Promise((suc, err) => {        setTimeout(function () {            front.classList.add('show-front');            backup.classList.remove('fly_away','fly_away_first','hover');            backup.classList.add('show-backup');            for (let i = 0; i < fold.length; i++) {                fold[i].classList.remove('curved')            }            document.body.style.backgroundColor = "#000";            suc(5)        }, 3000);    })}

總結

以上所述是小編給大家介紹的CSS3 實現童年的紙飛機 ,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产精品网站| 97视频在线观看网址| 亚洲美女www午夜| 欧美高跟鞋交xxxxxhd| 欧美激情xxxx性bbbb| 国产精品免费视频xxxx| 亚洲黄页网在线观看| 国产精品午夜国产小视频| 亚洲第一免费网站| 日本19禁啪啪免费观看www| 69精品小视频| 精品视频在线播放色网色视频| 欧美刺激性大交免费视频| 国产+人+亚洲| 亚洲精品永久免费| 国产精品视频永久免费播放| 日韩风俗一区 二区| 亚洲国产精品久久| 成人乱人伦精品视频在线观看| 精品一区二区亚洲| 亚洲成人激情在线观看| 欧美福利视频网站| 日本19禁啪啪免费观看www| 91夜夜揉人人捏人人添红杏| 国产高清视频一区三区| zzjj国产精品一区二区| 欧美精品免费在线观看| www.日韩欧美| 国产极品jizzhd欧美| 欧美在线观看网址综合| 国产精品久久久久久久美男| 国产丝袜精品视频| 国产一区二区色| 精品久久久久久久久久久久| 欧美国产精品人人做人人爱| 欧美性生交大片免费| 欧美电影在线观看高清| 亚洲一区二区在线播放| 国产一区二区三区视频在线观看| 91丨九色丨国产在线| 欧美激情精品久久久久久久变态| y97精品国产97久久久久久| 国产亚洲欧美aaaa| 国精产品一区一区三区有限在线| 欧美精品www在线观看| 亚洲aⅴ男人的天堂在线观看| 久久久国产精品免费| 亚洲第一福利视频| 久久影院资源站| 中文字幕日韩欧美精品在线观看| 日韩在线视频导航| 精品亚洲aⅴ在线观看| 奇米一区二区三区四区久久| 97国产精品久久| 欧美性生交大片免费| 欧美国产日韩中文字幕在线| 日韩女优人人人人射在线视频| 性视频1819p久久| 国产一区二区三区在线视频| 黑人精品xxx一区一二区| 国产不卡在线观看| 亚洲欧美日韩国产精品| 久青草国产97香蕉在线视频| 亚洲香蕉伊综合在人在线视看| 在线观看国产精品淫| 色综合久综合久久综合久鬼88| 亚洲欧美日韩在线高清直播| 国产一区二区三区在线看| 国产亚洲精品久久久优势| 伊人久久久久久久久久久| 欧美日韩人人澡狠狠躁视频| 欧美高清不卡在线| 国产主播喷水一区二区| 丁香五六月婷婷久久激情| 久久久精品亚洲| 久久精品电影网| 国产欧美欧洲在线观看| 日韩欧美亚洲范冰冰与中字| 日韩亚洲综合在线| 欧美激情一二区| 久久久久久久久久久亚洲| 欧美性视频网站| 国产免费成人av| 国产免费一区二区三区香蕉精| 久久精品视频在线观看| 欧美激情在线观看视频| 亚洲一区二区三区在线免费观看| 欧美人与物videos| 日韩小视频在线| 亚洲色图色老头| 欧美一级视频免费在线观看| 欧美日韩精品二区| 青青久久av北条麻妃海外网| 亚洲人成网在线播放| 亚洲电影免费观看高清完整版在线观看| 成人伊人精品色xxxx视频| 8090成年在线看片午夜| 欧美精品一本久久男人的天堂| 亚洲黄色www网站| 中文字幕久精品免费视频| 日韩理论片久久| 中文字幕亚洲无线码在线一区| 中文欧美日本在线资源| 一区二区亚洲欧洲国产日韩| 欧美激情18p| 精品亚洲一区二区| 欧洲日韩成人av| 91久热免费在线视频| 美女扒开尿口让男人操亚洲视频网站| 国产精品日韩久久久久| 欧美国产在线电影| 国产精品极品美女在线观看免费| 国产午夜精品麻豆| 韩国精品美女www爽爽爽视频| 欧美另类69精品久久久久9999| 日韩欧美中文字幕在线播放| 欧美精品一区三区| 久久久久久中文字幕| 国产精品999| 国产精品久久久久99| 668精品在线视频| 日韩欧美国产成人| www日韩欧美| 亚洲春色另类小说| 国产精品日韩欧美大师| 欧美日韩在线影院| 欧美日韩成人在线观看| 亚洲国产精品va| 日韩亚洲欧美成人| 亚洲人成电影网站色xx| 久久精品成人一区二区三区| 亚州欧美日韩中文视频| 国产精品久久久久影院日本| 亚洲精品一区中文字幕乱码| 国产精品亚洲欧美导航| 国产成人精品久久亚洲高清不卡| 久久免费视频观看| 久久精品99久久久久久久久| 亚洲黄色在线看| 国产91免费观看| 久久色免费在线视频| xvideos成人免费中文版| 欧美日韩国产区| 日韩欧美成人精品| 国产91精品最新在线播放| 国产精品女人久久久久久| 久久免费视频网站| 国产综合视频在线观看| 欧美成人合集magnet| 欧美成人手机在线| 96pao国产成视频永久免费| 欧美中文字幕第一页| 国产91精品久久久久久久| 精品视频久久久久久久| 精品国产31久久久久久| 欧美视频在线免费| www.日韩系列| 日韩中文字幕免费视频| 色噜噜狠狠狠综合曰曰曰88av| 色樱桃影院亚洲精品影院| 色综合天天综合网国产成人网| 日韩成人久久久| 久久亚洲影音av资源网| 亚洲欧美国产日韩天堂区|