真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

CSS3+JavaScript如何實現(xiàn)炫酷呼吸效果

這篇文章給大家分享的是有關(guān)CSS3+JavaScript如何實現(xiàn)炫酷呼吸效果的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比通州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式通州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋通州地區(qū)。費用合理售后完善,十年實體公司更值得信賴。

用css3動畫實現(xiàn)的一個簡單炫酷效果,最終的效果圖如下:

CSS3+JavaScript如何實現(xiàn)炫酷呼吸效果

頁面結(jié)構(gòu)(index.html):




  
  
  Document
  


  

Relax And Breath

       
    

           
    
          

script.js:

const container = document.querySelector('.container');
const text = document.querySelector('#text');

const totalTime = 7500;
const breathTime = (totalTime/5)*2; //呼吸的時間為3s
const holdTime = totalTime/5;    //保持呼吸的時間為1.5s
console.log(breathTime);

breathAnimation();    //一開始自執(zhí)行breathAnimation函數(shù)
function breathAnimation(){
  text.innerHTML = 'Breath In';
  container.className = 'container grow';    //給container添加grow類,實現(xiàn)放大效果

  setTimeout(function(){
    text.innerHTML = 'Hold On';
    setTimeout(function(){
      text.innerHTML = 'Breath Out';
      container.className = 'container shrink';//給container添加shrink類,實現(xiàn)縮小效果
    },holdTime)
  },breathTime)
}

setInterval(breathAnimation,totalTime);    //重復執(zhí)行

樣式(style.css):

*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body{
  background: url('./img/bg.jpg') no-repeat center center /cover;
  min-height: 100vh;
  font-family: Arial, Helvetica, sans-serif;
  color: #fff;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
/*注意設置margin為auto*/
.container{
  position: relative;
  width: 300px;
  height: 300px;
  display: flex;
  align-items: center;
  justify-content: center;
  transform: scale(1);
  margin: auto;
}

/*使用圓錐漸變作為背景,寬高比.container稍大,同時z-index要設為-2,因為還有一層為.circle,最外層是文字*/
.gradient-circle{
  position: absolute;
  left: -10px;
  top: -10px;
  background: conic-gradient(
    #55b7a4 0%,
    #4ca493 40%,
    #fff 40%,
    #fff 60%,
    #336d62 60%,
    #2a5b52 100%
  );
  width: 320px;
  height: 320px;
  border-radius: 50%;
  z-index: -2;
}

/z-index為-1,為中間黑色的圓/
.circle{
  position: absolute;
  left: 0;
  top: 0;
  width: 300px;
  height: 300px;
  background-color: #010f1c;
  border-radius: 50%;
  z-index: -1;
}

/*.pointer-container是小球外面的容器,其高設置為190,是因為其中150為半徑,還有40為top-40,這樣就會繞著圓心轉(zhuǎn),且不會換到里面來,注意transform-origin為中下方*/
.pointer-container{
  position: absolute;
  width: 20px;
  height: 190px;
  top: -40px;
  left: 140px;
  /* background-color: red; */
  transform-origin: bottom center;
  animation: rotate 7.5s linear forwards infinite;
}

/*小球*/
.pointer{
  width: 20px;
  height: 20px;
  background-color: #fff;
  border-radius: 50%;
}

/*設置小球轉(zhuǎn)圈的效果*/
@keyframes rotate{
  from{
    transform: rotate(0deg);
  }to{
    transform: rotate(360deg);
  }
}
.container.grow{
  animation: grow 3s linear forwards;
}
.container.shrink{
  animation: shrink 2s linear forwards;
}
@keyframes grow{
  from{
    transform: scale(1)
  }to{
    transform: scale(1.2);
  }
}

@keyframes shrink{
  from{
    transform: scale(1.2)
  }to{
    transform: scale(1);
  }
}

如果.container的margin不設置為auto或者一個具體的值,就會造成下圖的效果,文字和圓擠在一塊:

CSS3+JavaScript如何實現(xiàn)炫酷呼吸效果

同時我把.pointer-container里面的 background-color: red; 添上就會更加理解為什么要把.pointer-container的高度設置為190px.另外如果不把transform-origin設置為bottom center它就會如圖中標注的默認點旋轉(zhuǎn),這并不是我們想要的效果.

CSS3+JavaScript如何實現(xiàn)炫酷呼吸效果

還有個細節(jié)就是.shrink的動畫時間我設置成了兩秒,其實按照js里面的breath out這段時間應該為3s,但是為了從breath out到breath in有個緩沖的效果,就設置成了2s,不然breath out到breath in沒有一個過渡,會顯得突兀不好看.

感謝各位的閱讀!關(guān)于“CSS3+JavaScript如何實現(xiàn)炫酷呼吸效果”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


分享文章:CSS3+JavaScript如何實現(xiàn)炫酷呼吸效果
瀏覽地址:http://weahome.cn/article/jhjspc.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部