臭大大3560892
2018-05-10 14:20
看到楼下有个哥们说动画有问题,按照他这种方式去修改动画是回复了,我就很奇怪,看了下初始化图片的位置css,position后,left了50%,然后左移了50%,造成了动画一半的效果,将left改为0,并且左移的动画删掉,动画就正常了,希望能够帮到耐心看评论的朋友。。。
问题及答案。
给您参考下我修改后的代码,经测试动画比较流畅:
<!DOCTYPE html> <html lang="en"> <link rel="stylesheet" href="demo.css"> <head> <meta charset="UTF-8"> <title>box-sizing</title> <style> @importurl("http://www.w3cplus.com/demo/css3/base.css"); @importurl("http://fonts.googleapis.com/css?family=Yesteryear"); html, body { height: 100%; } /*设置背景图片全屏显示,并且居中*/ img.bg { min-height: 100%; min-width: 1024px; width: 100%; height: 100%; position: fixed; top: 0; left: 0; z-index:1; } /*设置背景图片从左向右移入显示的动画效果*/ /* Slide Left */ @-webkit-keyframes slideLeft { 0% { left: -10%; } 100% { left: 0; } } @-moz-keyframes slideLeft { 0% { left: -500px; } 100% { left: 0; } } @-o-keyframes slideLeft { 0% { left: -500px; } 100% { left: 0; } } @-ms-keyframes slideLeft { 0% { left: -500px; } 100% { left:1000px;} } @keyframes slideLeft { 0% { left: -100%; } 100% { left: 0; } } /*设置背景图像从底部向顶部移入的动画效果*/ /* Slide Bottom */ @-webkit-keyframes slideBottom { 0% { top: 350px; } 100% { top: 0; } } @-moz-keyframes slideBottom { 0% { top: 350px; } 100% { top: 0; } } @-ms-keyframes slideBottom { 0% { top: 350px; } 100% { top: 0; } } @-o-keyframes slideBottom { 0% { top: 350px; } 100% { top: 0; } } @keyframes slideBottom { 0% { top: 350px; } 100% { top: 0; } } /*设置背景图片由小到大放大动画效果*/ /* Zoom In */ @-webkit-keyframes zoomIn { 0% { -webkit-transform: scale(0.1); } 100% { -webkit-transform: none; } } @-moz-keyframes zoomIn { 0% { -moz-transform: scale(0.1); } 100% { -moz-transform: none; } } @-ms-keyframes zoomIn { 0% { -ms-transform: scale(0.1); } 100% { -ms-transform: none; } } @-o-keyframes zoomIn { 0% { -o-transform: scale(0.1); } 100% { -o-transform: none; } } @keyframes zoomIn { 0% { transform: scale(0.1); } 100% { transform: none; } } /*设置背景图像由大到小缩小动画效果*/ /* Zoom Out */ @-webkit-keyframes zoomOut { 0% { -webkit-transform: scale(2); } 100% { -webkit-transform: none; } } @-moz-keyframes zoomOut { 0% { -moz-transform: scale(2); } 100% { -moz-transform: none; } } @-ms-keyframes zoomOut { 0% { -ms-transform: scale(2); } 100% { -ms-transform: none; } } @-o-keyframes zoomOut { 0% { -o-transform: scale(2); } 100% { -o-transform: none; } } @keyframes zoomOut { 0% { transform: scale(2); } 100% { transform: none; } } /*背景图像旋转出现动画效果*/ /* Rotate */ @-webkit-keyframes rotate { 0% { -webkit-transform: rotate(-360deg) scale(0.1); } 100% { -webkit-transform: none; } } @-moz-keyframes rotate { 0% { -moz-transform: rotate(-360deg) scale(0.1); } 100% { -moz-transform: none; } } @-ms-keyframes rotate { 0% { -ms-transform: rotate(-360deg) scale(0.1); } 100% { -ms-transform: none; } } @-o-keyframes rotate { 0% { -o-transform: rotate(-360deg) scale(0.1); } 100% { -o-transform: none; } } @keyframes rotate { 0% { transform: rotate(-360deg) scale(0.1); } 100% { transform: none; } } /*设置背景图像不显示动画效果*/ @-webkit-keyframes notTarget { 0% { z-index: 75; } 100% { z-index: 75; } } @-moz-keyframes notTarget { 0% { z-index: 75; } 100% { z-index: 75; } } @-ms-keyframes notTarget { 0% { z-index: 75; } 100% { z-index: 75; } } @-o-keyframes notTarget { 0% { z-index: 75; } 100% { z-index: 75; } } @keyframes notTarget { 0% { z-index: 75; } 100% { z-index: 75; } } .slider { position: absolute; width: 100%; text-align: center; z-index: 9999; bottom: 100px; } .slider li { display: inline-block; width: 170px; height: 130px; margin-right: 15px; } .slider a { display: inline-block; width: 170px; padding-top: 70px; padding-bottom: 20px; position: relative; cursor: pointer; border: 2px solid #fff; border-radius: 5px; vertical-align: top; color: #fff; text-decoration: none; font-size: 22px; font-family: 'Yesteryear', cursive; text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.8),-2px -2px 1px rgba(0, 0, 0, 0.3),-3px -3px 1px rgba(0, 0, 0, 0.3); } /*任务一、设置不同列表的背景色*/ .slider li:nth-of-type(1) a{ background-color: #02646e; } .slider li:nth-of-type(2) a{ background-color: #eb0837; } .slider li:nth-of-type(3) a{ background-color: #67b374; } .slider li:nth-of-type(4) a{ background-color: #e6674a; } .slider li:nth-of-type(5) a{ background-color: #e61061; } /*任务二、设置缩略图形状*/ .slider li a:after{ content:""; display: block; height: 120px; width: 120px; border: 5px solid #fff; border-radius: 50%; position: absolute; left: 50%; margin-left: -60px; z-index: 9999; top: -80px; } /*任务三、设置缩略图背景图像*/ .slider li:nth-of-type(1) a:after{ background: url(images/13163193_145819676170_2.jpg) no-repeat center; background-size: 120px 120px; } .slider li:nth-of-type(2) a:after{ background: url(images/200812308231244_2.jpg) no-repeat center; background-size: 120px 120px; } .slider li:nth-of-type(3) a:after{ background: url(images/2013062320262198.jpg) no-repeat center; background-size: 120px 120px; } .slider li:nth-of-type(4) a:after{ background: url(images/2014021221061938.jpg) no-repeat center; background-size: 120px 120px; } .slider li:nth-of-type(5) a:after{ background: url(images/f03220aa5cc066bea0d4d2d355365f18.jpg) no-repeat center; background-size: 120px 120px; } /*任务四、给缩略图添加蒙板效果*/ .slider li a:before{ content:""; display: block; height: 120px; width: 120px; border: 5px solid #fff; border-radius: 50%; position: absolute; left: 50%; margin-left: -60px; z-index: 99999; top: -80px; background: rgba(0,0,0,0.3); } /*任务五、鼠标悬浮时,修改缩略图蒙板透明度*/ .slider li a:hover:before{ opacity:0; } /*任务六、点击综略图,切换背景图*/ /*背景图从左向右出现*/ #bg1:target{ z-index: 100; -webkit-animation-name: slideLeft; -webkit-animation-duration: 2s; -webkit-animation-iteration-count: 1; -webkit-animation-timing-function:ease-in-out; -moz-animation-name: slideLeft; -moz-animation-duration: 2s; -moz-animation-iteration-count: 1; -ms-animation-name: slideLeft; -ms-animation-duration: 2s; -ms-animation-iteration-count: 1; -o-animation-name: slideLeft; -o-animation-duration: 2s; -o-animation-iteration-count: 1; animation-name: slideLeft; animation-duration: 2s; animation-iteration-count: 1; animation-timing-function:ease-in-out; } /*背景图从下向上出现*/ #bg2:target{ z-index: 100; -webkit-animation-name: slideBottom; -webkit-animation-duration: 1s; -webkit-animation-iteration-count: 1; -moz-animation-name: slideBottom; -moz-animation-duration: 1s; -moz-animation-iteration-count: 1; -ms-animation-name: slideBottom; -ms-animation-duration: 1s; -ms-animation-iteration-count: 1; -o-animation-name: slideBottom; -o-animation-duration: 1s; -o-animation-iteration-count: 1; animation-name: slideBottom; animation-duration: 1s; animation-iteration-count: 1; } /*背景图由小到大出现*/ #bg3:target{ z-index: 100; -webkit-animation-name: zoomIn; -webkit-animation-duration: 1s; -webkit-animation-iteration-count: 1; -moz-animation-name: zoomIn; -moz-animation-duration: 1s; -moz-animation-iteration-count: 1; -ms-animation-name: zoomIn; -ms-animation-duration: 1s; -ms-animation-iteration-count: 1; -o-animation-name: zoomIn; -o-animation-duration: 1s; -o-animation-iteration-count: 1; animation-name: zoomIn; animation-duration: 1s; animation-iteration-count: 1; } /*背景图由大到小出现*/ #bg4:target{ z-index: 100; -webkit-animation-name: zoomOut; -webkit-animation-duration: 1s; -webkit-animation-iteration-count: 1; -moz-animation-name: zoomOut; -moz-animation-duration: 1s; -moz-animation-iteration-count: 1; -ms-animation-name: zoomOut; -ms-animation-duration: 1s; -ms-animation-iteration-count: 1; -o-animation-name: zoomOut; -o-animation-duration: 1s; -o-animation-iteration-count: 1; animation-name: zoomOut; animation-duration: 1s; animation-iteration-count: 1; } /*背景图旋转出现*/ #bg5:target{ z-index: 100; -webkit-animation-name: rotate; -webkit-animation-duration: 1s; -webkit-animation-iteration-count: 1; -moz-animation-name: rotate; -moz-animation-duration: 1s; -moz-animation-iteration-count: 1; -ms-animation-name: rotate; -ms-animation-duration: 1s; -ms-animation-iteration-count: 1; -o-animation-name: rotate; -o-animation-duration: 1s; -o-animation-iteration-count: 1; animation-name: rotate; animation-duration: 1s; animation-iteration-count: 1; } /*任务七、设置不显示的背景图层级*/ /* Not Target */ img:not(:target){ -webkit-animation-name: notTarget; -webkit-animation-duration: 1s; -webkit-animation-iteration-count: 1; -moz-animation-name: notTarget; -moz-animation-duration: 1s; -moz-animation-iteration-count: 1; -ms-animation-name: notTarget; -ms-animation-duration: 1s; -ms-animation-iteration-count: 1; -o-animation-name: notTarget; -o-animation-duration: 1s; -o-animation-iteration-count: 1; animation-name: notTarget; animation-duration: 1s; animation-iteration-count: 1; } </style> </head> <body> <div class="slider"> <ul class="clearfix"> <li><a href="#bg1">Hipster Fashion Haircut </a></li> <li><a href="#bg2">Cloud Computing Services & Consulting</a></li> <li><a href="#bg3">My haire is sooo fantastic!</a></li> <li><a href="#bg4">Eat healthy & excersice!</a></li> <li><a href="#bg5">Lips so kissable I could die ...</a></li> </ul> </div> <img src="images/13163193_145819676170_2.jpg" alt="" class="bg slideLeft" id="bg1" /> <img src="images/200812308231244_2.jpg" alt="" class="bg slideBottom" id="bg2" /> <img src="images/2013062320262198.jpg" alt="" class="bg zoomIn" id="bg3" /> <img src="images/2014021221061938.jpg" alt="" class="bg zoomOut" id="bg4" /> <img src="images/f03220aa5cc066bea0d4d2d355365f18.jpg" alt="" class="bg rotate" id="bg5" /> </body> </html>
应该给动画在100%的时候设置他的right和bottom,使得动画向左移动最后的位置是右边距和第边距为零,设置动画结束时的位置比较好理解
十天精通CSS3
242553 学习 · 2623 问题
相似问题