javascript - CSS:如何在文本更改时向 div 宽度添加平滑移动?

标签 javascript jquery css css-transitions transition

如果有人能比我更好地表达这个问题,请提出建议,我会修改(或自行编辑)。

这是我当前的 jsfiddle:https://jsfiddle.net/5v7mzadu/

我的 HTML:

<div class="text-cycler">
    WE <div class="c-text" id="ctext-1">CARE</div>
       <div class="c-text" id="ctext-2">THINK</div>
       <div class="c-text" id="ctext-3">SEE</div>
       <div class="c-text" id="ctext-1">KNOW</div>
</div>

我的 CSS:

.text-cycler {
     text-align:center;
     font-size:25px;
}
.c-text {
    display:inline-block
}

我的 Javascript:

var divs = $('div[id^="ctext-"]').hide(),
           i = 0;

(function cycle() { 

    divs.eq(i).fadeIn(400)
        .delay(1000)
        .fadeOut(400, cycle);

    i = ++i % divs.length;

})();

如您所见,第二个词淡入/淡出。我想向 div 添加平滑过渡,以便 div 容器的宽度不会突然改变宽度大小。 (这样宽度“扣”的更顺畅)

有人能帮忙吗?

最佳答案

我相信您需要内容和文本对齐中心的动画。 事实上,这必须解决您的目的。

我添加了 span{white-space: nowrap; vertical-align: text-top; 强制其在单行中对齐,并添加了 jQuery animate 方法来设置旋转文本宽度的动画

这是 fiddle供你玩耍

var divs = $('div[id^="ctext-"]').hide(),
  i = 0;

(function cycle() {
  divs.eq(i)
    .animate(400, function() {

      $('.x').animate({
        width: $(this).innerWidth()
      });
    })
    .fadeIn(400)
    .delay(1000)
    .fadeOut(400, cycle);
  i = ++i % divs.length;
})();
.text-cycler {
  text-align: center;
  font-size: 25px;
}

span {
  white-space: nowrap;
  vertical-align: text-top;
}

.c-text {
  display: inline-block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="text-cycler">
  <span> WE </span>
  <span class="x">
    <div class="c-text" id="ctext-1">CARE</div>
    <div class="c-text" id="ctext-2">THINK</div>
    <div class="c-text" id="ctext-3">SEE</div>
    <div class="c-text" id="ctext-1">KNOW</div>
  </span>
</div>

关于javascript - CSS:如何在文本更改时向 div 宽度添加平滑移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42621122/

相关文章:

javascript - jquery mouseenter 不适用于特定 div

javascript - 我如何知道用户滑动的方向?

javascript - 如何从两个 JSON 数组获取增量?

android - Android Chrome 中的 Webkit 反射 mask

css - Wordpress 中的 inline-css 在哪里

css - Bootstrap : How can I add equal length lines between the columns?

javascript - 无法关闭 Accordion

javascript - 将我的 php 数组转换为等效的 jQuery 数组

javascript - jQuery .hover 问题

javascript - 单击动态创建的链接时删除 div