【问题标题】:How can I fade out one element and fade in another without the "snapping"?如何在没有“捕捉”的情况下淡出一个元素并淡入另一个元素?
【发布时间】:2016-02-08 01:35:27
【问题描述】:

我正在尝试使用“ng-show”淡出一个元素并同时淡入另一个元素。这一切正常,花花公子,但不幸的是,当淡出的元素被隐藏时,设置display: none 时似乎有一些“捕捉”。

我尝试在我的ng-hide-add-activeng-hide-remove-active 上设置position: absolute,但这只会破坏布局。

HTML:

    <div class="container">
  <div class="row">
    <div class="col-sm-8 col-sm-offset-2">
      <div id="form-container">
        <div class="page-header text-center">
          <h1 id="wf-logo">Hello</h1>
          <hr />
          <div>
            <div class="panel panel-primary">
              <div class="panel-heading">
                <h3 class="panel-title">Stuff Box</h3>
              </div>
              <div class="sk-folding-cube animate" ng-show="!doneLoading">
                <div class="sk-cube1 sk-cube"></div>
                <div class="sk-cube2 sk-cube"></div>
                <div class="sk-cube4 sk-cube"></div>
                <div class="sk-cube3 sk-cube"></div>
              </div>
              <div id="content-well" class="well animate" ng-show="doneLoading">
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis lacinia urna vitae lectus faucibus porta. Nulla eu consequat nisl. Quisque fringilla sapien id vulputate sollicitudin. Curabitur et facilisis justo. Donec malesuada augue vitae diam maximus luctus. Nulla fermentum consectetur ipsum ut tempor. Curabitur pretium eros eget nisi bibendum fermentum. Cras fermentum egestas nunc ut vulputate. Nulla aliquam tortor ut nulla consequat faucibus. Fusce imperdiet, felis nec semper vestibulum, magna dui ultricies tortor, eget mattis mauris arcu et ipsum. Suspendisse imperdiet nec mauris eget placerat.</p>

                <p>Nulla purus augue, congue sed sollicitudin ut, volutpat sed ex. Donec lobortis sem eu risus consequat tincidunt. Nullam egestas lectus et semper gravida. Suspendisse facilisis erat a eros scelerisque euismod. Sed elementum eros ac nibh viverra condimentum eu vel mi. Ut sit amet nulla sit amet velit dignissim cursus quis ut mi. In a ultrices dolor. Proin sollicitudin sit amet lorem in fringilla. Mauris ac egestas est. Donec quis fermentum est, nec interdum nisi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin id massa pellentesque, fringilla orci id, ultrices nisl. Nam non viverra felis, ac sodales justo.</p>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

CSS:

/* Styles */

#content-well {
  margin-bottom: 0px;
}

/* Animations */

.animate.ng-hide-add,
.animate.ng-hide-remove {
  -webkit-transition:all linear 0.5s;
  -moz-transition:all linear 0.5s;
  -o-transition:all linear 0.5s;
  transition:all linear 0.5s;
}

.animate.ng-hide-add.ng-hide-add-active,
.animate.ng-hide-remove {
  opacity:0;
}

.animate.ng-hide-add,
.animate.ng-hide-remove.ng-hide-remove-active {
  opacity:1;
}

/* Folding cube spinner */

.sk-folding-cube {
  margin: 40px auto;
  width: 40px;
  height: 40px;
  position: relative;
  -webkit-transform: rotateZ(45deg);
  transform: rotateZ(45deg);
}

请看这个Plunker:

http://plnkr.co/edit/6vSRIJ8xkmn75S9FyLMJ?p=preview

当一个淡出另一个淡入时,是否可以让加载微调器和内容都保持居中并正确定位?任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 请在问题本身中包含代码;不要只是链接到它。否则,一旦外部链接失效,这个问题在未来就变得毫无意义。
  • 明白了,等我回到电脑上发帖。

标签: css angularjs ng-animate


【解决方案1】:

position: absolute 放在两个容器之一上。

例如:

.sk-folding-cube {
  position: absolute;

缺点是您必须添加更多 CSS 以根据需要定位元素并使其看起来像面板包裹它。

例如:

.panel {
  min-height: 161px;
}

.sk-folding-cube {
  position: absolute;
  left: 50%;
  margin-left: -20px;
  margin-top: 40px;
  margin-bottom: 40px;
  width: 40px;
  height: 40px;
  -webkit-transform: rotateZ(45deg);
  transform: rotateZ(45deg);
}

演示: http://plnkr.co/edit/5lYJneAkT6TwYkfg3KPJ?p=preview

另一种解决方案是完全跳过淡出动画。就个人而言,当元素重叠时,我很少发现有必要让其中一个元素淡入而另一个元素淡出。相反,只需隐藏第一个并淡入另一个。也许是品味问题。

演示: http://plnkr.co/edit/iudjWchMXzc3wILhQmsY?p=preview

【讨论】:

  • 有道理,真棒。感谢您的帮助 tasseKATT!
猜你喜欢
  • 1970-01-01
  • 2014-03-18
  • 1970-01-01
  • 2021-10-13
  • 2020-11-15
  • 2020-05-08
  • 2013-11-04
  • 2014-03-19
  • 2011-07-04
相关资源
最近更新 更多