【问题标题】:why without display:none, css3 transition not working?为什么没有显示:无,css3 转换不起作用?
【发布时间】:2017-04-30 13:05:59
【问题描述】:

代码来自 Bootstrap 轮播,我想知道为什么没有 display:none,css3 转换不起作用?它应该从右向左移动。 谢谢! https://jsfiddle.net/25d3ga9j/11/

我想删除 .item{display:none},并添加可见性:隐藏,然后让它继续工作。它适用于 Firefox(transition-property:left),但不适用于 Chrome(transition-property:transform;transform: translate3d...) https://jsfiddle.net/zjmove/r8ejf5Lk/

$('.item').addClass('next')
$('.item')[0].offsetWidth   // force reflow
$('.item').addClass('left')
.item {
  height: 100px;
  background: red;
  display: none;    //why with out display:none, transition not working?
}
.c {
  overflow: hidden;
}


.item {
  transition: transform 0.6s ease-in-out;
  backface-visibility: hidden;
  perspective: 1000px;
}

.item.next {
  display: block;
  transform: translate3d(100%, 0, 0);
  left: 0;
}

.item.next.left {
  transform: translate3d(0, 0, 0);
  left: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<div class="c">
  <div class='item'>

  </div>
</div>

【问题讨论】:

  • 但它确实从右向左移动....
  • @LGSon 嗨,在我的浏览器中(chrome 57,firefox 47),没有 .item{display: none; },它不动(0.6s),它只是快速出现。

标签: css


【解决方案1】:

这里发生了一些事情,首先是第一个脚本行是否可能在 DOM 准备好之前运行$('.item').addClass('next')

第二个,在添加第二个之前,第一个类没有时间完成转换,但延迟可能会解决这个问题。

无论哪种方式,根据是否先出现(可能因浏览器而异),您可以获得不同的结果。

下面的示例显示了在不使用display: none 时应该如何设置,顺便说一句,如果可能的话应该避免

$(window).load(function() {

  $('.item').addClass('left')
  
});
.c {
  overflow: hidden;
}

.item {
  transition: transform 0.6s ease-in-out;
  backface-visibility: hidden;
  perspective: 1000px;
  transform: translate3d(100%, 0, 0);
  height: 100px;
  background: red;
}

.item.left {
  transform: translate3d(0, 0, 0);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="c">
  <div class='item'>

  </div>
</div>

【讨论】:

  • 谢谢 LGSon,第二行“$('.item')[0].offsetWidth” 似乎立即使“第一课完成其过渡”。您的代码正在运行,但我需要“下一个”类,因为在添加类“上一个右”时,该项目还需要从左向右移动。代码来自 Bootstrap 轮播,我想删除 display:none,并添加 visibility: hidden,然后让它继续工作。
  • @zhengjie 我说明了为什么它不起作用,现在你可以添加你需要的任何类来让它左/右或右/左。
  • @zhengjie 如果我的回答对你有帮助,请问你也考虑采纳一下
猜你喜欢
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
  • 2012-09-18
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多