body {margin: 0px;background: #F6F7A7;} .mao_box {position: relative;top: 50px"/>
body {margin: 0px;background: #F6F7A7;} .mao_box {position: relative;top: 50px">

首頁  >  文章  >  web前端  >  html實現的動圖小貓笑臉

html實現的動圖小貓笑臉

零下一度
零下一度原創
2017-06-24 13:09:054476瀏覽
貓咪容器

  • 咱們每次畫一個圖片,肯定先要確定一個容器,幾確定一下圖形的位置和大小。

    <div class="mao_box">
      <div class="mao"></div>
    </div>body {margin: 0px;background: #F6F7A7;}.mao_box {position: relative;top: 50px ;}/*设置宽度并且居中显示*/.mao {margin: 0 auto;width: 400px;}
畫喵咪的頭部和頭部的花紋
  • #依照繪畫習慣,我們一定是先畫出最大的頭部,頭部確定了,耳朵嘴巴的位置才能確定。

    <!-- 猫咪的头部框架 -->
          <div class="mao_head">
              <div class="huawen">
                  <div><!--头部花纹——左边橙色--></div>
              </div>
          </div>.mao_head {  width: 400px;    /*设置高度和宽度*/  height: 340px;  background: #F6F7F2;   
      position: relative;  border-radius: 50% 50% 35% 35%;   /*画出猫脸的形状*/  border: solid 2px #2e2e2e;  /*给猫咪画一个偏黑色的边框*/  overflow: hidden;  z-index: 10;
    }.huawen {  position: absolute;  height: 160px;   /*设置宽度和高度*/  width: 180px;  background: #8D8D8D;  left: 110px;      /*距离猫脸左面110px的位置,正好在中间位置 (400-180)/2*/  border-radius: 0% 0% 50% 50%;   /*画出花纹的形状,下面为圆角边框*/  overflow: hidden;    /*花纹超出头部的部分隐藏*/
    }.huawen > div:first-child {   /*花纹的左右两边颜色不一样,所以改变左边半边的颜色为橙色*/      height: 160px;      width: 90px;    /*宽度和花纹总宽度的一半*/      background: #F0AC6B;
      }

    貓咪頭.png
#畫貓咪的耳部

  • #貓咪的耳朵分佈在頭部的左右兩邊,所以肯定是由兩個div畫成,為了不顯得那麼僵硬,我們可以把兩邊的耳朵稍微畫的不一樣大。
大家一定會想:耳朵的形狀這麼奇怪,到時是怎麼畫的呢?其實很簡單,就是透過矩形然後設定各個角度的border-radius就會形成一種尖角的效果,再旋轉對應的角度跟頭部貼合就可以了。
  • 最後將耳朵隱藏在臉部的後面,露出一點點耳尖就可以了。
    <!--绘制耳朵的容器-->
    <div class="erduo">
              <div></div><!--绘制左耳-->
              <div></div><!--绘制右耳-->
          </div>/*耳朵*/.erduo {  width: 374px;   /*设置耳朵容器的高度和宽度*/  height: 120px;  position: absolute;  top: -6px;   /*将耳朵的位置放到对应的地方*/  left: 50%;  margin-left: -187px;
    }  /*左耳*/  .erduo > div:first-child {      height: 200px;  /*设置左耳的高度和宽度*/      width: 160px;      border: 2px solid #2e2e2e;  /*给左耳设置一个边框*/      background: #f3f3f3;      border-radius: 4% 80% 0% 50%;  /*设置左耳各个角度的圆角程度*/      transform: rotate(-15deg);  /*设置左耳的旋转角度*/
          -ms-transform: rotate(-15deg);
          -moz-transform: rotate(-15deg);
          -webkit-transform: rotate(-15deg);
          -o-transform: rotate(-15deg);  
          position: absolute;      left: -20px;      top: 0px;      transition: transform 1s,left 1s;    /*设置左耳的hover动效*/
      }  /*右耳跟左耳的画法同理*/  .erduo > div:last-child {      height: 180px;      width: 160px;      border: 2px solid #2e2e2e;      background: #f3f3f3;      transform: rotate(15deg);
          -ms-transform: rotate(15deg);
          -moz-transform: rotate(15deg);
          -webkit-transform: rotate(15deg);
          -o-transform: rotate(15deg);      border-radius: 80% 4% 50% 0%;      position: absolute;      right: -20px;      top: 0px;transition: transform 1s,right 1s;
      }

    耳朵.jpg
#畫貓咪的眼睛部分
  • 眼睛部分有點複雜喲,不經過仔細的一番研究和強大的想像力是很難畫出來的:解剖一下就是上下兩個橢圓重疊而成,多餘的部分隱藏,中間的褐色眼珠是在上面圓形中的一個黑色矩形。
  • <div class="yanjing">
              <div>
                  <div class="yanquan">
                      <div></div>  <!--存放竖着的眼球的div-->
                  </div>
                  <div class="yanquan_hedding">  <!--存放眼睛下睫毛的div-->
                  </div>
                  <div class="hong"></div>
              </div>
              <div class="yan_right">
                  <div class="yanquan">
                      <div></div>
                  </div>
                  <div class="yanquan_hedding">
    
                  </div>
                  <div class="hong"></div>
              </div>
              <div style="clear:both"></div>
    </div>/*眼睛*/.yanjing {  height: 60px;   /*设置眼睛整体的高度和宽度,多余的部分隐藏*/  width: 300px;  position: absolute;  /*设置眼睛的位置,使它定位在脸部中间*/  top: 200px;  z-index: 20;  left: 50%;  margin-left: -150px;  overflow: hidden;
    }/*左眼*/.yanquan {  height: 100px;  /*设置左眼的高度和宽度,多余的部分隐藏*/  width: 100px;  border: 2px solid #2e2e2e;  border-radius: 50% 50% 50% 50%;  overflow: hidden;  position: absolute;
    }/*黑色眼珠子 左*/  .yanquan > div {      height: 100px;      width: 30px;      background-color: #2e2e2e;      margin-left: 35px;   /*将黑色眼珠子定义在眼睛的中间*/      transition:all 1s;
      }/*眼睛下睫毛部分*/.yanquan_hedding {  height: 100px;  width: 180px;  border-top: 2px solid #2e2e2e;  border-radius: 50% 50% 50% 50%;  background: #F6F7F2;   /*背景色脸部的背景色一样,这样就只能看见上边框了*/  margin-top: 50px;   /*定义位置与眼睛融为一体*/  margin-left: -40px;  position: absolute; 
       transition: margin-top 1s;    /*为后面的hover动态做准备*/
    }/*右边眼睛的整体定义,其它都跟左眼一样,就是位置不一样*/.yan_right {  left: 196px;  top: 0px;  position: absolute;
    }
  • 貓咪眼睛.jpg
    #畫貓咪的臉部花紋
喵咪的鬍鬚可是很重要的喲,如果不小心把它剪了可是很嚴重的,貓咪就再也無法測量自己可以鑽進多大的洞裡了,哈哈。
  • 仔細觀察花紋其實就是由左右各5條線條組成,畫出線條再做對應的變換就可以了。
    <div class="face_huawen">
          <!-- 存放花纹的div -->
              <div class="face_huawen_huawen huawen_left">
              <!-- 存放每一个线条的div -->
                  <div></div>
                  <div></div>
                  <div></div>
                  <div></div>
                  <div></div>
              </div>
              <div class="face_huawen_huawen huawen_right">
                  <div></div>
                  <div></div>
                  <div></div>
                  <div></div>
                  <div></div>
              </div>
              <div style="clear:both"></div>
          </div>/*脸部花纹*//*左边花纹*/.face_huawen {  height: 80px;     /*设置花纹整体的高度和宽度*/  width: 380px;  position: absolute;  /*设置花纹在脸部的位置*/  top: 190px;  z-index: 20;  left: 50%;  margin-left: -190px;
    }.face_huawen_huawen > div:first-child {  /*设置第一条花纹的宽高和变化情况(圆角大小和旋转角度)*/  width: 30px;  height: 10px;  border-top: 6px #E53941 solid;  border-radius: 30% 80% 20% 50%;  transform: rotate(25deg);
      -ms-transform: rotate(25deg);
      -moz-transform: rotate(25deg);
      -webkit-transform: rotate(25deg);
      -o-transform: rotate(25deg);  margin-left: 20px;
    }.face_huawen_huawen > div:nth-child(2) { /*设置第二条花纹*/  width: 20px;  height: 6px;  background-color: #E53941;  border-radius: 50% 50% 50% 50%;  transform: rotate(25deg);
      -ms-transform: rotate(25deg);
      -moz-transform: rotate(25deg);
      -webkit-transform: rotate(25deg);
      -o-transform: rotate(25deg);  margin-left: 20px;
    }.face_huawen_huawen > div:nth-child(3) {/*设置第三条花纹*/  /*margin-top:10px;*/  width: 32px;  height: 10px;  border-bottom: 4px #E53941 solid;  border-radius: 30% 0% 90% 30%;  transform: rotate(25deg);
      -ms-transform: rotate(25deg);
      -moz-transform: rotate(25deg);
      -webkit-transform: rotate(25deg);
      -o-transform: rotate(25deg);  margin-left: 8px;
    }.face_huawen_huawen > div:nth-child(4) {/*设置第四条花纹*/  margin-top: 20px;  width: 26px;  height: 20px;  border-bottom: 4px #E53941 solid;  border-radius: 30% 0% 90% 30%;  transform: rotate(30deg);
      -ms-transform: rotate(30deg);
      -moz-transform: rotate(30deg);
      -webkit-transform: rotate(30deg);
      -o-transform: rotate(30deg);  margin-left: 28px;
    }.face_huawen_huawen > div:last-child {/*设置第二五条花纹*/  width: 22px;  height: 10px;  border-bottom: 3px #E53941 solid;  border-radius: 0% 0% 50% 50%;  transform: rotate(-15deg);
      -ms-transform: rotate(-15deg);
      -moz-transform: rotate(-15deg);
      -webkit-transform: rotate(-15deg);
      -o-transform: rotate(-15deg);  margin-left: 40px;  margin-top: -8px;
    }/*右边花纹,右边花纹的位置和旋转角度跟左边花纹不一样,其它变换都一样*/.huawen_right {  
      float: right;  transform: rotateY(180deg);
      -webkit-transform: rotateY(180deg); /* Safari 和 Chrome */
      -moz-transform: rotateY(180deg); /* Firefox */  margin-top: -85px;
    }

    貓咪臉部花紋.jpg
#畫貓咪的鼻子
  • 感覺這是整個貓咪最好畫的地方了,簡單的一個半圓就可以解決問題啦~啦啦啦啦~
  • <div class="bizi">
              <div></div>
          </div>/*鼻子,不多做解释了,方法都差不多:确定位置和形状即可*/.bizi {  width: 30px;  height: 36px;  position: absolute;  left: 50%;  margin-left: -15px;  top: 260px;  z-index: 30;
    }  .bizi > div {      width: 30px;      height: 10px;      border-bottom: 8px solid #2e2e2e;      border-radius: 0% 0% 50% 50%;      margin-top: -10px;
      }
  • 貓咪的鼻子. png
    畫貓咪的嘴巴
#咦?是不是感覺畫著畫著就到了最後一部分了,哈哈哈哈哈,好開心啊~又吃成長快樂了~

  • 嘴巴就像兩撇小鬍子,用兩個矩形邊框就可以實現了。

    <div class="zuiba_box">
              <div class="zuiba">
                  <div></div>
                  <div></div>
              </div>
          </div>.zuiba {  /*设置嘴巴的位置*/  margin-left: 85px;  margin-top: 6px;
    }  /*右半边嘴巴*/  .zuiba > div:first-child  {      width: 50px;      height: 40px;      border-bottom: 4px solid #2e2e2e;   /*设置底部和左边边框,形成直角矩形*/      border-left: 4px solid #2e2e2e;      border-radius:40% 0% 20% 50%;  /*设置各边的圆角程度*/      margin-left: 13px;      margin-top: -26px;      position:absolute;      transition:  border-radius  1s;  /*为动效做过渡效果*/
      }  /*左半边嘴巴*/  .zuiba > div:nth-child(2) {      width: 50px;      height: 40px;      border-bottom: 4px solid #2e2e2e;      border-right: 4px solid #2e2e2e;      border-radius:0% 40% 50% 20%;      margin-left: -38px;      margin-top: -26px;      position:absolute;      transition:  border-radius  1s;       
      }

    貓咪嘴巴.jpg
#各部位拼接成一個完整的小貓
  • 各個部位都畫好之後,又到了像大白一樣的拼圖時間了,哈哈~大家一起拼出一個萌萌噠小貓吧~(主要是對transition屬性的運用,設定:hover之後的屬性,然後用transition設定屬性完成變化的過渡時間)

  • #拼圖咯--哈哈.jpg

  • ##製作滑鼠移動上去的動態效果

  • 我們家毛球可是個動如脫兔的傢伙哦,所以我們來給貓咪加點特效吧~(

    ^ __^
    )

    滑鼠移動上去之後兩耳耳朵左右擺動
    眼睛瞇瞇呈現笑臉的形狀
嘴角上揚
/*鼠标浮动耳朵样式*/.mao:hover .erduo > div:first-child {  left: -10px;  transform: rotate(0deg);  -ms-transform: rotate(0deg);  -moz-transform: rotate(0deg);  -webkit-transform: rotate(0deg);  -o-transform: rotate(0deg);  border-radius: 4% 80% 0% 60%;
}.mao:hover .erduo > div:last-child {  right: -10px;  transform: rotate(0deg);  -ms-transform: rotate(0deg);  -moz-transform: rotate(0deg);  -webkit-transform: rotate(0deg);  -o-transform: rotate(0deg);  border-radius: 80% 4% 60% 0%;  /*transition: transform 1s,right 1s;*/
}/*眯眼并且出现红晕的动态效果,眼珠的宽度变宽*/.mao:hover .yanquan > div:first-child {width:40px;  margin-left: 30px;
}.hong {  position: absolute;  height: 28px;  width: 70px;  background: red;  top: 34px;  /*top: 64px;*/  left: 18px;  border-radius: 50% 50% 50% 50%;  background-image: -moz-radial-gradient( 50% 50%, rgba(253,214,240,0.8) 0%, rgba(253,224,244,0.8) 66%, rgba(253,234,247,0.8) 100%);  background-image: -webkit-radial-gradient( 50% 50%, rgba(253,214,240,0.8) 0%, rgba(253,224,244,0.8) 66%, rgba(253,234,247,0.8) 100%);  background-image: -ms-radial-gradient( 50% 50%, rgba(253,214,240,0.8) 0%, rgba(253,224,244,0.8) 66%, rgba(253,234,247,0.8) 100%);  opacity: 0.0;  /*transition: opacity 0.5s ease-in 0.2s;*/
}/*眼睛浮动属性*/.mao:hover .yanquan_hedding {  margin-top: 30px;  /*transition: margin-top 1s;*/
}.mao:hover .hong {  /*top: 34px;*/  opacity: 0.8;  transition: opacity 0.5s ease-in 0.2s;
}/*嘴巴上扬的效果*/.mao:hover .zuiba > div:first-child {  border-radius: 50% 50% 50% 50%;width: 40px;
}.mao:hover .zuiba > div:nth-child(2) { 
       width: 40px;margin-left: -30px;border-radius: 50% 50% 50% 50%;
}
###PS:眼睛瞇起來之後下面出現了一部分紅暈,就是兩個背景顏色半透明的小橢圓組成的,只要在滑鼠移動上去只會把橢圓顯示出來就可以了。 ###############眼睛下面的紅暈.png########################

學習過程中遇到什麼問題或想獲取學習資源的話,歡迎加入學習交流群組

#

以上是html實現的動圖小貓笑臉的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn