老师,在汉克狗案例中,我想要狗的大小随窗口的缩放而同步,这个怎么修改代码呀

来源:2-12 汉克狗最终动画效果

蒹葭苍沧

2020-04-20 23:05:03

<!DOCTYPE html>
<html>
 <head>
 <title>Cartoon dog</title>
 <meta charset="utf-8">
 </head>
 <body>
 <div class="dog center">
 <div class="forehead center"></div>
 <div class="face center"></div>
 <div class="chin center"></div>
 <div class="ear"></div>
 <div class="ear right"></div>
 <div class="birthmark"></div>
 <div class="eye">
 <div class="pupil"></div>
 </div>
 <div class="eye right">
 <div class="pupil"></div>
 </div>
 <div class="nose center">
 <div class="nostril"></div>
 <div class="nostril right"></div>
 </div>
 <div class="mouth center">
 <div class="teen"></div>
 <div class="teen right"></div>
 <div class="tongue center"></div>
 </div>
 <div class="body center">
 <div class="arm"></div>
 <div class="arm right"></div>
 <div class="leg">
 <div class="foot"></div>
 </div>
 <div class="leg right">
 <div class="foot"></div>
 </div>
 <div class="belly center"></div>
 </div>
 </div>
 <style type="text/css">
 :root{
 --h1:#1b2f90;
 --bg:#f9f9f6;
 --t:2s;
 }
 body{
 background:url(bg.png) no-repeat center top;
 background-size:100% auto;
 }
 .dog{
 width:300px;
 height:400px;
 position:relative;
 top:380px;
 }
 .center{
 position:absolute;
 left:50%;
 transform:translate(-50%,0);
 }
 .forehead{
 width:102px;
 height:48px;
 background:var(--bg);
 border-radius:51px/40px 40px 8px 8px;
 z-index:1;
 }
 .face{
 width:110px;
 height:68px;
 background:var(--bg);
 border-radius:50%;
 top:20px;
 z-index:1;
 }
 .chin{
 width:104px;
 height:36px;
 background:var(--bg);
 border-radius:52px/0px 0px 36px 36px;
 top:60px;
 z-index:1;
 }
 .ear{
 width:16px;
 height:70px;
 background:var(--h1);
 border-radius:50%;
 position:absolute;
 left:50%;
 top:34px;
 z-index:0;
 transform-origin:50% 0;
 transform:translate(-42px,0) rotate(10deg);
 animation:rotate var(--t) ease-out infinite;
 }
 .ear.right{
 transform:scale(-1,1) translate(-26px,0) rotate(10deg);
 animation:rotate-r var(--t) ease-out infinite;
 }
 .birthmark{
 width:30px;
 height:36px;
 background:var(--h1);
 border-radius:15px/17px 23px 2px 13px;
 position:absolute;
 left:50%;
 top:10px;
 z-index:1;
 transform:translate(17px,0) rotate(-10deg); 
 }
 .eye{
 width:24px;
 height:24px;
 background:var(--bg);
 border-radius:12px/13px 12px 12px 2px;
 position:absolute;
 left:50%;
 top:20px;
 z-index:2;
 transform-origin:50% 0;
 transform:translate(-44px,0) rotate(10deg);
 box-shadow:1px 0px 0px 0px #000 inset,-1px 0px 5px 1px #ddd;
 overflow:hidden;
 }
 .eye.right{
 transform:scale(-1,1) translate(-21px,0) rotate(10deg);
 box-shadow:1px 0px 0px 0px #000 inset;
 }
 .pupil{
 width:26px;
 height:26px;
 background:#e79101;
 border-radius:50%;
 position:absolute;
 top:1px;
 left:3px;
 box-shadow:0 0 8px 0 #000 inset;
 animation:translate var(--t) ease-out infinite;
 }
 .pupil:before{
 width:18px;
 height:18px;
 background:#000;
 border-radius:50%;
 position:absolute;
 left:50%;
 top:50%;
 transform:translate(-50%,-50%);
 content:'';
 }
 .pupil:after{
 width:5px;
 height:5px;
 background:#fff;
 border-radius:50%;
 position:absolute;
 left:3px;
 top:7px;
 content:'';
 }
 .nose{
 width:62px;
 height:32px;
 top:42px;
 background:#363035;
 z-index:3;
 border-radius:31px/10px 10px 22px 22px;
 }
 .nose:before{
 content:'';
 width:60px;
 height:10px;
 position:absolute;
 left:50%;
 top:1px;
 transform:translate(-50%,0);
 border-radius:30px/8px 8px 2px 2px;
 background:linear-gradient(30deg,#fff 0%,#b1aeb1 15%,#b1aeb1 50%,#544d53 100%);
 }
 .nostril{
 width:15px;
 height:4px;
 position:absolute;
 left:50%;
 top:19px;
 background:linear-gradient(0deg,#363035 0%,#000 100%);
 border-radius:50%;
 transform:translate(-21px,0) rotate(30deg);
 animation:resize var(--t) ease-out infinite;
 }
 .nostril.right{
 transform:scale(-1,1) translate(-7px,0) rotate(30deg);
 }
 .mouth{
 width:68px;
 height:27px;
 background:#671316;
 border-radius:34px/0px 0px 27px 27px;
 z-index:1;
 box-shadow:0 0 4 #000 inset;
 top:68px; 
 animation:open var(--t) ease-out infinite;
 }
 .mouth:before{
 width:68px;
 height:8px;
 background:var(--bg);
 border-radius:34px/0px 0px 5px 5px;
 content:'';
 position:absolute;
 z-index:1;
 }
 .teen{
 width:8px;
 height:3px;
 background:var(--bg);
 border-radius:4px/0px 0px 0px 1px;
 position:absolute;
 left:50%;
 top:7px;
 transform:translate(-8px,0);
 z-index:1;
 }
 .teen.right{
 transform:scale(-1,1) translate(0px,0);
 border-right:0.5px solid #ddd;
 }
 .tongue{
 width:34px;
 height:14px;
 background:#a2504f;
 border-radius:17px/0px 0px 7px 7px;
 z-index:0;
 box-shadow:0 0 4px 0 #000 inset;
 position:absolute;
 top:0px;
 animation:extend var(--t) ease-out infinite;
 }
 .body{
 width:66px;
 height:70px;
 background:var(--bg);
 border-radius:50%;
 top:89px;
 }
 .arm{
 width:26px;
 height:40px;
 background:var(--bg);
 border-radius:13px/20px 0 14px 20px;
 position:absolute;
 top:5px;
 left:50%;
 transform:translate(-43px,0) rotate(21deg);
 }
 .arm:before{
 content:'';
 width:5px;
 height:20px;
 border-radius:5px/10px 0 0 10px;
 box-shadow:-1px 0 0 0 rgba(200,200,200,0.5);
 position:absolute;
 top:14px;
 right:6px;
 transform:rotate(-5deg);
 }
 .arm.right{
 transform:scale(-1,1) translate(-17px,0) rotate(21deg);
 }
 .leg{
 width:29px;
 height:50px;
 background:linear-gradient(-85deg,#ddd 0%,#ddd 5%,#fff 20%,#fff 100%);
 border-radius:15px/5px 5px 15px 45px;
 position:absolute;
 top:40px;
 left:50%;
 transform:translate(-32px,0);
 }
 .leg.right{
 transform:scale(-1,1) translate(-3px,0);
 }
 .foot{
 width:29px;
 height:15px;
 background:linear-gradient(-120deg,#ddd 0%,#ddd 10%,#fff 30%,#fff 100%);
 position:absolute;
 bottom:-8px;
 left:2px;
 border-radius:15px/10px 10px 5px 5px;
 }
 .belly{
 z-index:2;
 width:60px;
 height:36px;
 background:linear-gradient(0deg,#ddd 0%,#fff 20%,#fff 100%);
 border-radius:30px/0 0 36px 36px;
 top:34px;
 }
 @keyframes rotate{
 0%{transform:translate(-42px,0) rotate(10deg);}
 50%{transform:translate(-42px,0) rotate(30deg);}
 100%{transform:translate(-42px,0) rotate(10deg);}
 }
 @keyframes rotate-r{
 0%{transform:scale(-1,1) translate(-26px,0) rotate(10deg);}
 50%{transform:scale(-1,1) translate(-26px,0) rotate(30deg);}
 100%{transform:scale(-1,1) translate(-26px,0) rotate(10deg);}
 }
 @keyframes translate{
 0%{left:3px;}
 50%{left:6px;}
 100%{left:3px;}
 }
 @keyframes resize{
 0%{height:4px;}
 50%{height:3px;}
 100%{height:4px;}
 }
 @keyframes extend{
 0%{height:14px;}
 50%{height:23px;}
 100%{height:14px;}
 }
 @keyframes open{
 0%{
 height:27px;
 border-radius:34px/0px 0px 27px 27px;
 }
 50%{
 height:20px;
 border-radius:34px/0px 0px 20px 20px;
 }
 100%{
 height:27px;
 border-radius:34px/0px 0px 27px 27px;
 }
 }
 </style>
 </body>
</html>


写回答

1回答

好帮手慕粉

2020-04-21

同学你好,关于同学的问题回答如下:

1、代码实现的是正确的。

2、同学说的功能是要使用适配实现的,但是我们现阶段还没学到,是第三阶段会学到的东西:

http://img.mukewang.com/climg/5e9e5fa7092840b314050601.jpg

同学可以学到了以后再研究。

祝学习愉快~

0

0 学习 · 40143 问题

查看课程