动画出现一半的问题

来源:7-8 切换背景图像综合练习题

臭大大3560892

2018-05-10 14:20

看到楼下有个哥们说动画有问题,按照他这种方式去修改动画是回复了,我就很奇怪,看了下初始化图片的位置css,position后,left了50%,然后左移了50%,造成了动画一半的效果,将left改为0,并且左移的动画删掉,动画就正常了,希望能够帮到耐心看评论的朋友。。。

写回答 关注

3回答

  • 一pan花生
    2018-06-12 16:16:03
    已采纳

    问题及答案。

    臭大大356...

    非常感谢!

    2018-07-20 15:25:47

    共 1 条回复 >

  • 江太浪
    2019-03-16 22:52:19

    给您参考下我修改后的代码,经测试动画比较流畅:

    <!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 &amp; Consulting</a></li>
            <li><a href="#bg3">My haire is sooo fantastic!</a></li>
            <li><a href="#bg4">Eat healthy &amp; 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>


  • 慕粉3684157
    2018-05-23 14:29:35

    应该给动画在100%的时候设置他的right和bottom,使得动画向左移动最后的位置是右边距和第边距为零,设置动画结束时的位置比较好理解

十天精通CSS3

本课程为CSS3入门教程,深刻详解CSS3知识让网页穿上绚丽装备

242553 学习 · 2623 问题

查看课程

相似问题