【问题标题】:Background image transition when switching classes切换类时的背景图像过渡
【发布时间】:2013-08-14 13:46:18
【问题描述】:

我有一个带有背景图片的 div。使用 js 我切换该 div 上的类以更改背景。我想要一个平滑的切换——不像切换那么突然。我在 CSS 过渡方面遇到了困难。不确定在这种情况下我是否正确使用它们。我可以使用 :hover 进行更改,但这似乎不起作用。作为旁注,我正在使用 Angular ngClass 来切换这些类,我发现 ngAnimate 可能有一些用途......

.waiting {
  background-image: url("/images/waiting.png");
  -webkit-transition: opacity 10s ease-in-out;
  -moz-transition: opacity 10s ease-in-out;
  -o-transition: opacity 10s ease-in-out;
  transition: opacity 10s ease-in-out;
}

.uploading {
  background-image: url("/images/uploading.png");
  -webkit-transition: opacity 10s ease-in-out;
  -moz-transition: opacity 10s ease-in-out;
  -o-transition: opacity 10s ease-in-out;
  transition: opacity 10s ease-in-out;
}

【问题讨论】:

    标签: css angularjs css-transitions


    【解决方案1】:
    div{position:relative;}
    div:after,
    div:before{
        content:'';
      position:absolute;
      top:0;
      left:0;
      width:100%;
      height:100%;
      opacity: 0;
      background-image: url("/images/waiting.png");
      -webkit-transition: opacity 10s ease-in-out;
      -moz-transition: opacity 10s ease-in-out;
      -o-transition: opacity 10s ease-in-out;
      transition: opacity 10s ease-in-out;
    }
    div:before{background-image: url("/images/uploading.png");}
    div.waiting:after{opacity:1;}
    div.uploading:before{opacity: 1;}
    

    【讨论】:

    • 哦,这真是又好又聪明!我的实际问题是 3 张图片。 (等待,上传,完成)。你可以在 3 个状态下使用它吗?我的实验几乎完成了,但还没有完成。
    • 使用两个块
      div>div{ position:absolute;顶部:0;左:0;宽度:100%;高度:100%;不透明度:0;不透明度:0;背景图像:url(“/images/waiting.png”); -webkit-transition: opacity 10s ease-in-out; -moz-transition: opacity 10s ease-in-out; -o-transition: opacity 10s ease-in-out; transition: opacity 10s ease-in-out } div.complite>div{opacity:1;}
    【解决方案2】:

    像这样? jsFiddle

    div {
        width:300px;
        height:300px;
    }
    .waiting, .waiting > span {
        background-image: url("http://static3.fjcdn.com/thumbnails/comments/feels+man+_96209287ce84931447c2d1b56fd3ef29.jpg");
        -webkit-transition: opacity 200ms linear;
        -moz-transition: opacity 200ms linear;
        -o-transition: opacity 200ms linear;
        -ms-transition: opacity 200ms linear;
        transition: opacity 200ms linear;
        display:block;
    }
    .waiting > span {
        cursor:pointer;
        opacity:0;
        width:300px;
        height:300px;
        background-size:contain;
    }
    .waiting span:hover {
        opacity:1;
        background-image: url("http://media.tumblr.com/tumblr_m1wo3uPxfH1qzfo1i.png");
    }
    

    【讨论】:

    • 我没有使用 :hover 所以我不知道它是否可以工作。适用于 :hover 很好。但是当我只是使用 JS 切换类时没有。可能是我需要使用 javscript 处理动画(在我的情况下是 angular)
    • 这种情况下为什么要用js呢? :hover 似乎工作正常吧?
    • 因为是JS改的。这不是人类互动的事情。这是一个根据代码中发生的事情而改变的图像——在这种情况下,它是一个图像上传器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2011-11-10
    • 1970-01-01
    相关资源
    最近更新 更多