【问题标题】:CSS transition is jumpy on opacity fade outCSS 过渡在不透明度淡出时跳跃
【发布时间】:2021-10-12 18:19:03
【问题描述】:

我正在开发一个面包屑菜单,一旦菜单变得粘滞,该菜单就会一直显示在右侧,以便用户滚动回页面顶部。面包屑<nav> 具有position:sticky,并且事件侦听器用于检测它何时“卡住”。然后,我使用 CSS 来定位 breadcrumb-arrow <div>,然后对其进行转换,以便在用户向上滚动或单击它时,它的不透明度会再次淡入淡出。

代码可以正常工作,但是让它淡出的 CSS 动画有点跳动。具体来说,边框刚刚消失,没有过渡,<a> 标签开始淡出,然后在过渡结束前消失。

HTML:

<nav class="breadcrumbs noselect">
    <div class="bread-bag">
        <ul class="l-breadcrumb">
            <li><a>Link 1</a> &gt; </li>
            <li><a>Link 2</a> &gt; </li>
            <li><a>Link 3</a></li>
        </ul>
        <!-- This is what fades in and out -->
        <div class="breadcrumb-arrow">
            <a class="toTop">&uuarr;</a>
        </div>
    </div>
</nav>

CSS:

.breadcrumbs {
    position: relative;
    position: -webkit-sticky;
    position: -moz-sticky;
    position: -ms-sticky;
    position: -o-sticky;
    position: sticky;
    width: 100%;
    min-height: 50px;
    max-height: 50px;
    height: 50px;
    border-bottom: 1px solid #252524;
    background: #101112;
    overflow: hidden;
    z-index: 20;
    top: -1px;
    padding-top: calc(0em + 1px);
}
.breadcrumb-arrow {
    position: absolute;
    top: 0;
    right: 0;
    height: 100%;
    width: 48px;
    text-align: right;
    background: #101112;
    border-left: 1px solid #101112;
    text-align: center;
    line-height: 48px;
    overflow: hidden;
    opacity: 0;
    visibility: hidden;
    transition: all 1s linear, visibility 0s;
    z-index: 30;
}
.is-pinned .breadcrumb-arrow {
    opacity: 1;
    visibility: visible;
    border-left: 1px solid #232425
}

【问题讨论】:

    标签: animation css-animations transition visibility opacity


    【解决方案1】:

    问题是我在 Stackoverflow 和其他网站的其他地方看到过代码,人们建议将可见性设置为 0s 转换,同时还对其他所有内容使用 transition: all 1s linear(或其他一些持续时间)。这就是破坏它的原因。

    只需删除visibility 0s,CSS 动画就可以正常工作了。

    我不确定旧版浏览器是否需要这个,或者它可能只是 Firefox 的故障,但是一旦我删除了那个 CSS,所有元素都会淡入淡出而没有错误。我只在 macOS 上的 Firefox 中进行了测试,但希望这对将来的某人有所帮助。

    .breadcrumb-arrow {transition: all 1s linear}
    

    【讨论】:

      猜你喜欢
      • 2014-02-04
      • 2019-03-26
      • 2013-12-17
      • 1970-01-01
      • 2017-06-27
      • 2021-07-26
      • 2018-04-25
      • 2012-05-20
      • 2017-03-20
      相关资源
      最近更新 更多