日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JS+CSS實(shí)現(xiàn)超漂亮的動(dòng)態(tài)翻書(shū)效果(思路詳解)

瀏覽:220日期:2022-06-10 10:30:34
目錄
  • 前言
  • 思路準(zhǔn)備
  • 正文
  • 一、CSS實(shí)現(xiàn)
    • 1、搭建基本框架
    • 2、編寫(xiě)CSS
  • 二、JS實(shí)現(xiàn)
    • 總結(jié)

      前言

      本文將帶大家來(lái)實(shí)現(xiàn)一個(gè)非常有趣的案例——打開(kāi)書(shū)本效果。我們平常沖浪時(shí)是不是看過(guò)一些學(xué)校高級(jí)的錄取通知書(shū),翻開(kāi)通知書(shū)就能看見(jiàn)里面的內(nèi)容,呈現(xiàn)出逼真的3D效果!

      先來(lái)看效果圖:

      思路準(zhǔn)備

      • 把這本書(shū)看成是2個(gè)容器組成——左半本書(shū)和右半本書(shū),左半本書(shū)有外表面和內(nèi)表面,右半本書(shū)也有自己的內(nèi)表面和外表面,相當(dāng)于兩個(gè)小矩形。
      • 當(dāng)鼠標(biāo)點(diǎn)擊書(shū)本向左移動(dòng)時(shí)實(shí)現(xiàn)翻開(kāi)效果,也就是只有左半本書(shū)可以翻動(dòng)——繞著y軸旋轉(zhuǎn)。
      • 同時(shí)右半本書(shū)的卡片會(huì)豎起來(lái),陰影也會(huì)隨之傾斜,整本書(shū)也會(huì)旋轉(zhuǎn)一定角度。

      正文

      一、CSS實(shí)現(xiàn)

      1、搭建基本框架

      首先是一本書(shū),用class="book"的容器裝全部,里面分右半本書(shū)和左半本書(shū)——分別用class="back-cover"class="front-cover"的div容器表示。右半本書(shū)分內(nèi)殼和外殼——class="page front"class="page back",同理左半本書(shū)也分內(nèi)殼和外殼,也分別用相同類(lèi)名。右半本書(shū)中放卡片和陰影,分別用class="shadow"、class="card"的div裝。而左半本書(shū)內(nèi)殼放一些文字,為了方便,給一些盒子加上公共類(lèi)名。具體如下:

      <div><!-- 右半本 --><div>    <div></div>    <div><div></div><div></div>    </div></div><!-- 左半本 --><div>    <div><p>Solutions to over 1000 popular algorithm problems. All problems are from leetcode.com. Solutions include: - Problem statement - Python code with comments - Description of solution s    trategy - Time and space complexity Does not require internet connection.     Forward solutions by email. Please let me have your comments, correctio…</p>    </div>    <div></div></div>    </div>

      2、編寫(xiě)CSS

      1)設(shè)置背景顏色,實(shí)現(xiàn)漸變效果。

      body {  height: 100%;  font: 100%/1.25 Arial, Helvetica, sans-serif;//字體類(lèi)型  color: #fff;  perspective: 1000px; //必不可少!  background: #444;  background-image: linear-gradient(to bottom, #444, #999);}

      tips: perspective——定義了觀察者與 z=0 平面的距離,使具有三維位置變換的元素產(chǎn)生透視效果,值越大看到的東西越小,不設(shè)置看不出translateZ軸移動(dòng)的近大遠(yuǎn)小的感覺(jué)。perspective-origin——相當(dāng)于人的眼睛看哪里,默認(rèn)是父元素中間地方。這兩個(gè)屬性都是設(shè)置在父元素身上。

      2)設(shè)置最外層容器book的樣式:寬高設(shè)置具體值并使它們?cè)谄聊恢虚g顯示——主要利用定位position:absolute實(shí)現(xiàn),top、left的值都為50%,再讓它們的左外邊距和上外邊距為自身寬高的負(fù)一半可以實(shí)現(xiàn)垂直居中顯示。

      .book {  width: 300px;  height: 300px;  position: absolute;  top: 50%;  left: 50%;  margin-top: -150px;  margin-left: -150px;}

      3)設(shè)置左半本書(shū)和右半本書(shū)里面的頁(yè)面的寬高——和書(shū)一樣大小,并利用定位——脫離文檔流,讓這些頁(yè)面在同一個(gè)位置,同時(shí)設(shè)置內(nèi)殼背景色為紅色,外殼為白色(方便放背景圖),讓左半本書(shū)繞著Y軸旋轉(zhuǎn)。同時(shí)設(shè)置3D立體效果

      .book .page {  width: 300px;  height: 300px;  padding: 1em;  position: absolute;  left: 0;  top: 0;  text-indent: 2em;}.book .front {  background-color: #d93e2b;}.book .back {  background-color: #fff;}.book .front-cover {  cursor: move; //鼠標(biāo)放上去呈十字架形狀  transform-origin: 0 50%;  //transform:rotateY(-160deg) //可以利用這個(gè)看看旋轉(zhuǎn)的效果}.p3d {  transform-style: preserve-3d;}

      4)設(shè)置左半本書(shū)外層的封面以及右半書(shū)的外殼向Z軸平移(解決書(shū)的外層布局)

      .book .front-cover .back {  background-image: url("https://preview.qiantucdn.com/58pic/35/01/38/55A58PICaUy8sV83Dd78m_PIC2018.jpg%21w1024_new_3072");  background-repeat: no-repeat;  background-size: cover;  transform: translateZ(3px);}.book .back-cover .back {  transform: translateZ(-3px);}

      5)此時(shí)你會(huì)發(fā)現(xiàn)里面的文字反了,解決辦法是讓那頁(yè)反著的頁(yè)面旋轉(zhuǎn)180度就能正常了。到此為止左半本就完成了!

      .book .flip {  transform: rotateY(180deg);}

      6)設(shè)置右半本書(shū)的豎起來(lái)的卡片和倒影的位置、大小、顏色,起初兩者重疊。

      .book .shadow,.book .card {  width: 196px;  height: 132px;  position: absolute;  top: 60px;  left: 60px;  transform-origin: 0 100%; //設(shè)置旋轉(zhuǎn)起點(diǎn)}.book .card {  background: url("https://preview.qiantucdn.com/58pic/35/01/38/55A58PICaUy8sV83Dd78m_PIC2018.jpg%21w1024_new_3072");  background-size: cover;}.book .shadow {  background-color: rgba(0,0,0,0.5);}

      二、JS實(shí)現(xiàn)

      1)引入js文件到html中

      <script src="./index.js"></script>

      2)獲取到需要的元素。先拿到整本書(shū),再拿到左半本書(shū)、卡片、陰影.

      let book=document.querySelector(".book"),    leftPage=document.querySelector(".front-cover"),    card=document.querySelector(".card"),    shadow=document.querySelector(".shadow")

      3)鼠標(biāo)點(diǎn)擊到前半本書(shū)移動(dòng)時(shí)開(kāi)始觸發(fā)監(jiān)聽(tīng)事件,可以再window身上設(shè)置

      window.onmousemove = function(event){}

      4)用一個(gè)變量表示鼠標(biāo)的狀態(tài)是點(diǎn)擊、移動(dòng)還是松開(kāi),類(lèi)似于一個(gè)開(kāi)關(guān)變量。默認(rèn)是松開(kāi)狀態(tài)。

      let hold=false//鼠標(biāo)是按住的狀態(tài)leftPage.onmousedown=function(){  hold=true}window.addEventListener("mouseup",function(){  //鼠標(biāo)不一定在page身上松開(kāi)可能在其他地方松開(kāi),所以在window身上設(shè)置監(jiān)聽(tīng)事件  hold=false})

      5)設(shè)置移動(dòng)事件。監(jiān)聽(tīng)此時(shí)鼠標(biāo)按下去的那一刻點(diǎn)的X坐標(biāo)以及移動(dòng)中的X軸上的變化,從而設(shè)置一個(gè)合理的值,讓它繞Y軸旋轉(zhuǎn)。讓書(shū)、前半本書(shū)、卡片、陰影都能旋轉(zhuǎn)移動(dòng)角度。

      window.onmousemove = function(event){  if(hold){    console.log(event.pageX);    var angle= clamp((window.innerWidth/2 - event.pageX + 300)/300* -90,-180,0) //300為書(shū)的寬度   //該angle公式中的值不固定,可以設(shè)置其他    // leftPage.style.transform="rotate("+angle+"deg)"    leftPage.style.transform=`rotateY(${angle}deg)`    card.style.transform=`rotateX(${angle/2}deg)`    shadow.style.transform=`skewX(${angle/10}deg)`    book.style.transform=`rotateX(${60+angle/8}deg)`  }}

      tips:

      • clamp函數(shù)中——min:-180deg,max:0deg,中間值:(window.innerWidth/2 - event.pageX + 300)/300* -90。總之這樣設(shè)置是為了旋轉(zhuǎn)角度比較契合,你也可以設(shè)置其他值。該值是在-180~0之間
      • skewX():指定對(duì)象繞X軸斜切扭曲。
      • 這些旋轉(zhuǎn)的角度都可以設(shè)置其他值,不過(guò)得設(shè)置的比較符合。

      6)設(shè)置給定3個(gè)值中取中間值的函數(shù)

      let clamp=function(val,min,max) {      return Math.max(min,Math.min(val,max))    }

      到此為止,動(dòng)態(tài)翻書(shū)效果案例結(jié)束啦!有沒(méi)有覺(jué)得一種恍然大悟的感覺(jué)!說(shuō)不定以后會(huì)用上喲!

      總結(jié)

      到此這篇關(guān)于JS+CSS實(shí)現(xiàn)超漂亮的動(dòng)態(tài)翻書(shū)效果的文章就介紹到這了,更多相關(guān)js動(dòng)態(tài)翻書(shū)效果內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

      標(biāo)簽: JavaScript
      日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
      国产精品原创| 久久精品九色| 三上亚洲一区二区| 老司机免费视频一区二区三区| 日韩精品视频中文字幕| 91国内精品| 国产激情一区| 不卡福利视频| 一区免费视频| 日本一区二区三区视频在线看| 美国三级日本三级久久99| 国户精品久久久久久久久久久不卡 | 国产二区精品| 日韩制服丝袜先锋影音| 97精品国产99久久久久久免费| 国产视频网站一区二区三区| 麻豆精品少妇| 欧美~级网站不卡| 91成人福利| 蜜桃av.网站在线观看| 久久久久.com| 日本午夜精品一区二区三区电影 | 99精品在线| 亚洲午夜免费| 国产中文字幕一区二区三区| 好吊视频一区二区三区四区| 欧美视频久久| 国产高清一区| 九九99久久精品在免费线bt| 激情欧美一区二区三区| 日本a级不卡| 久久中文字幕二区| 天海翼亚洲一区二区三区| 四虎成人av| 青草综合视频| 麻豆久久精品| 亚洲v在线看| 精品久久福利| 日本va欧美va精品发布| 激情久久久久久久| 麻豆国产在线| 国产极品一区| 中文字幕免费一区二区| 欧美精品高清| 久久女人天堂| 国产日产精品一区二区三区四区的观看方式| 日韩欧美精品一区| 日本不卡视频在线观看| 激情综合自拍| 91精品久久久久久久久久不卡| 欧美日韩18| 青青草伊人久久| 亚洲天堂日韩在线| 亚洲免费网址| 91精品91| 国产偷自视频区视频一区二区| 中文字幕在线视频网站| 国产成人a视频高清在线观看| 亚洲tv在线| 日本午夜精品久久久| 国产亚洲一卡2卡3卡4卡新区| 婷婷精品在线| 鲁大师影院一区二区三区| 尤物tv在线精品| 狠狠爱成人网| 亚洲欧美日韩国产综合精品二区| 99国产精品99久久久久久粉嫩| 国产精品色网| 一区二区国产在线观看| 亚洲人成亚洲精品| 国产精选久久| 国产白浆在线免费观看| 国产一区久久| 日本一区福利在线| 国产亚洲人成a在线v网站 | 久久久久免费av| 亚洲香蕉网站| 鲁大师成人一区二区三区| 午夜久久av| 红杏一区二区三区| 在线日韩视频| 日韩精品国产欧美| 欧美国产美女| 久久不射网站| 国产精品天堂蜜av在线播放| 精品视频一区二区三区在线观看 | 国产欧美日韩影院| 97精品中文字幕| 国产亚洲一区在线| 国产九九精品| 亚洲黑丝一区二区| 国产乱码精品| 欧美日韩少妇| 日韩综合在线| 日欧美一区二区| 欧美精品高清| 欧美激情麻豆| 欧美日韩第一| 久久伊人久久| 99国产精品自拍| 精品国产精品国产偷麻豆| 亚洲精品在线观看91| 精品一区视频| 日韩av一区二| 夜夜嗨一区二区| 国语精品一区| 国产亚洲欧美日韩精品一区二区三区| 欧美日韩国产免费观看| 亚洲最新无码中文字幕久久| 国产精品美女久久久久久不卡 | 日韩av中文字幕一区二区| 88xx成人免费观看视频库| 久久国内精品| 香蕉久久久久久| 亚洲激情精品| 国产91精品对白在线播放| 91亚洲国产| av资源中文在线| 久久精品系列| 国产精品黄色片| 日韩和欧美一区二区| 伊人久久亚洲影院| 亚洲精品网址| 亚洲欧美日韩综合国产aⅴ| 91精品婷婷色在线观看| 欧美香蕉视频| 老司机精品视频网| 国产乱子精品一区二区在线观看 | 亚洲伊人精品酒店| 午夜在线播放视频欧美| 欧美日韩国产高清| 99在线|亚洲一区二区| 性一交一乱一区二区洋洋av| 久久成人亚洲| 免费不卡在线观看| 日本强好片久久久久久aaa| 欧美精品国产白浆久久久久| 国产日韩欧美| 97se综合| 欧美99久久| 蜜桃视频一区二区三区| 日本在线不卡视频| 国产欧美日韩精品高清二区综合区 | 激情久久久久久久| 丝袜美腿成人在线| 欧美日韩一区二区三区四区在线观看 | 91看片一区| 亚洲欧美日韩国产一区| 日韩国产91| 中文字幕在线看片| 亚洲一区二区三区四区电影 | 亚洲一区资源| 亚洲女人av| 精品国产亚洲一区二区三区大结局| 日韩国产一区二区| 亚洲有吗中文字幕| 韩日一区二区| 亚洲综合色婷婷在线观看| 国产日本亚洲| 亚洲高清二区| 91精品麻豆| 免费观看亚洲| 综合五月婷婷| 亚洲www啪成人一区二区| 影音先锋久久精品| 日本精品不卡| 久久国产麻豆精品| 国产一区亚洲| 美女视频一区在线观看| 久久亚洲二区| 激情久久婷婷| 天堂а√在线最新版中文在线| 在线日韩成人| 国产精品日本| 国产高清一区| 日本不卡免费高清视频在线| 热久久久久久| 亚洲制服欧美另类| 欧美久久精品一级c片| 成人日韩av| 国产精品午夜av| 日韩欧美美女在线观看| 亚洲精品国产偷自在线观看| 欧美日韩免费观看视频| 国产一区二区三区四区二区| 日韩精品视频中文字幕| 亚洲精品婷婷| 中文一区一区三区免费在线观| 欧美.日韩.国产.一区.二区| а√天堂中文在线资源8| 国产精品久久国产愉拍| 欧美日韩精品一区二区三区在线观看| 久久国产精品亚洲77777| 亚洲自啪免费| 综合激情网站| 欧美日本不卡| 国产精品片aa在线观看| 国产亚洲人成a在线v网站 | 91精品一区二区三区综合| 日韩不卡在线|