我试图解决从右到左扩展div的宽度和从下到上的不同容器的高度的问题.我正在尝试创建将在正方形旋转的CSS动画,并且模仿这里的边框是我的CodePen
https://codepen.io/Archezi/pen/xReqvq?editors=0100的链接,如果有帮助的话.
这是我的HTML .container是一个主要包装.circle是一个动画line1-line4是正方形的边框,我正在尝试动画.
<div class="container"> <div class="circle "></div> <div class="line1 "></div> <div class="line2 "></div> <div class="line3 "></div> <div class="line4 "></div> </div>
这是我的CSS
body { margin: 0 auto; } .container { position:relative; margin: 50px auto; width: 800px; height:800px; border:1px solid #000; } .circle { display:inline-block; width: 25px; height: 25px; border-radius:50%; position: absolute; top:100px; left:100px; background:#000; animation: myframes 4s ease-in-out 0s infinite; /* animation-name: myanimation; animation-duration:5s; animation-timing-function:ease-in-out; animation-delay: 0s; animaiton-iteration-count: infinite; animation-direction: normal; animation-fill-mode: forwards; animation-play-state: running; */ } .line1 { height:15px; width:15px; position:absolute; top:105px; left:105px; background:red; animation: squerframe 2s ease-in-out 0s infinite; } .line2 { height:15px; width:15px; position:absolute; top:105px; left:205px; background:green; animation: squerframe2 2s ease-in-out 1s infinite; } .line3 { height:15px; width:15px; position:absolute; top:205px; left:205px; background-color:red; animation: squerframe3 2s ease-in-out 2s infinite; } .line4 { height:15px; width:15px; position:absolute; top:205px; left:105px; background:green; animation: squerframe4 2s ease-in-out 3s infinite; } @Keyframes squerframe { 0% { width:15px; opacity: 1; } 50% { width:115px; } 100%{ width:115px; opacity: 0; } } @Keyframes squerframe2 { 0% { height:15px; opacity: 1; } 50% { height:115px; } 100%{ height:115px; opacity: 0; } } @Keyframes squerframe3 { 0% { width:115px; opacity: 0;} 50% { width:115px; } 100%{ width:15px; opacity: 1; } } @Keyframes squerframe3 { 0% { width:15px; opacity: 1;} 50% { width:115px; } 100%{ width:115px; opacity: 0; } } @Keyframes squerframe4 { 0% { height:15px; opacity: 1;} 50% { height:115px; } 100%{ height:115px; opacity: 0; } } @keyframes myframes { 0% { top:100px; left:100px; } 25% { top:100px; left:200px; } 50% { top:200px; left:200px; } 75% { top:200px; left:100px; } 100% { top:100px; left:100px; } }
解决方法
这里的问题是你需要line3具有绝对权限,这样当宽度改变时,它将向左伸展.
另外,第4行应该有一个绝对的底部,所以它会伸展.
我建议您添加一个容器或更改当前div.container的维度(就像我在示例中所做的那样)为四行,并使用4行作为该容器的极值.
以下是您修改的示例,作为如何继续的参考点:
https://codepen.io/anon/pen/MbRvGM?editors=0100
body { margin: 0 auto; } .container { position:relative; margin: 50px auto; width: 115px; height:115px; border:1px solid #000; } .circle { display:inline-block; width: 25px; height: 25px; border-radius:50%; position: absolute; top:0px; left:0px; background:#000; animation: myframes 4s ease-in-out 0s infinite; /* animation-name: myanimation; animation-duration:5s; animation-timing-function:ease-in-out; animation-delay: 0s; animaiton-iteration-count: infinite; animation-direction: normal; animation-fill-mode: forwards; animation-play-state: running; */ } .line1 { height:15px; width:15px; position:absolute; top:0px; left:0px; background:red; animation: squerframe 2s ease-in-out 0s infinite; } .line2 { height:15px; width:15px; position:absolute; top:0px; left:100px; background:green; animation: squerframe2 2s ease-in-out 1s infinite; } .line3 { height:15px; width:15px; position:absolute; top:100px; right:0px; float: right; background-color:red; animation: squerframe3 2s ease-in-out 2s infinite; } .line4 { height:15px; width:15px; position:absolute; left:0px; bottom: 0; background:green; animation: squerframe4 2s ease-in-out 3s infinite; } @Keyframes squerframe { 0% { width:15px; opacity: 1; } 50% { width:115px; } 100%{ width:115px; opacity: 0; } } @Keyframes squerframe2 { 0% { height:15px; opacity: 1; } 50% { height:115px; } 100%{ height:115px; opacity: 0; } } @Keyframes squerframe3 { 0% { width:115px; opacity: 0;} 50% { width:115px; } 100%{ width:15px; opacity: 1; } } @Keyframes squerframe3 { 0% { width:15px; opacity: 1;} 50% { width:115px; } 100%{ width:115px; opacity: 0; } } @Keyframes squerframe4 { 0% { height:15px; opacity: 1;} 50% { height:115px; } 100%{ height:115px; opacity: 0; } } @keyframes myframes { 0% { top:0px; left:0px; } 25% { top:0px; left:100px; } 50% { top:100px; left:100px; } 75% { top:100px; left:0px; } 100% { top:0px; left:0px; } }