【问题标题】:CSS element reveal from left to rightCSS 元素从左到右显示
【发布时间】:2016-06-03 23:07:20
【问题描述】:

我的网站上有两个菜单栏。第一个(黑色)固定在页面顶部。第二个(橙色)会变粘,一旦黑条碰到它。在同一时刻,出现了一个小的徽标图像,它通过使用名为“inactve”的类和“display:none”来隐藏,并通过删除类“inactive”并添加类“active”和“display:inline-block”来显示”。

这里是动画 gif: https://abload.de/img/animation1lujbu.gif

这里是现场版: http://mydivision.net/

但是从 "display: none" 到 "display: inline-block" 的变化是相当突然的。请任何人都可以通过从左到右显示徽标来实现一个很好的过渡,以便将社交图标轻轻推到右侧?

这是我的代码:

HTML

<div class="topbar-container">
    <div id="slc" class="notonmobile scroll-logo inactive">
        <a href="http://mydivision.net/" title="MYDIVISION.NET | Home">
            <img src="http://mydivision.net/wp-content/themes/v1/img/scroll-logo-small.png" alt="Logo" />
        </a>
    </div>
    <div id="social_container">
        ...
    </div>
    ...
</div>
</div>

CSS

#topbar {display: inline-block; width: 100%; padding: 0; height: 40px; background: #000; position: fixed; top: 0; z-index: 9999;}
.topbar-container {margin: 6px 20px; line-height: 24px;}
.scroll-logo.inactive {display: none;}
.scroll-logo.active {display: inline-block; float: left; margin-right: 20px;}
.scroll-logo img {height: 24px; padding: 3px 0;}
#social_container {float: left; width: 192px;}

jQuery

jQuery(document).ready(function($) {
    $(window).scroll(function() {
        if ($(this).scrollTop() >= $('.sticky-element-active').offset().top - 40) {
            $("#slc").addClass("active");
            $("#slc").removeClass("inactive");
        } else {
            $("#slc").removeClass("active");
            $("#slc").addClass("inactive");
        }
    });
});

【问题讨论】:

    标签: jquery html css


    【解决方案1】:

    我很幸运地修改了您的实时 CSS。您可以调整过渡时间并进一步调整它,但希望这会为您指明正确的方向。

    .scroll-logo.inactive {
      transition: 0.8s;
      transform: translateX(-100%);
      opacity: 0;
      height: 0;
    }
    
    .scroll-logo.active {
      transition: 0.6s;
      transform: translateX(0);
      opacity: 1;
      float: left;
      margin-right: 20px;
    }
    

    【讨论】:

    • 这是一个有趣的方法。谢谢你,安迪,我会玩一下这个。
    • 知道如何使徽标再次消失更平滑吗?社交图标只是弹回初始位置。所以从不透明度 0 到 1 是平滑的,但不是从 1 到 0。
    • 我从头开始的方法是创建自定义 CSS 动画,每个元素一个,并使用单个父类触发它们。你可以打开一个类,比如body,动画会响应那个类的存在。它被称为委托模式。 jQuery 解决方案很简单,但您无法控制动画样式。
    【解决方案2】:

    从 CSS 中移除 activeinactive 并使用下面的代码。 Jquery show()hide() 在为元素设置持续时间时会导致元素的扩展和收缩。

    但在你的 html 中保持 inactive 作为类名,以确保每次滚动条件发生时扩展只发生一次:

    jQuery(document).ready(function($) {
        $(window).scroll(function() {
            if ($(this).scrollTop() >= $('.sticky-element-active').offset().top - 40 && $("#slc").hasClass("inactive")) {
                $("#slc").show(1000);
                $("#slc").removeClass("inactive");
            } else {
                $("#slc").hide(1000);
                $("#slc").addClass("inactive");
            }
        });
    });
    

    【讨论】:

    • 对我不起作用。结果是动画的无限循环将其他所有内容向下推,而不仅仅是将社交图标推到右侧。
    • 请不要从徽标中删除 float:left。
    • 谢谢,但我仍然有一个无限循环的动画。必须从脚本中删除“ && $("#slc").hasClass("inactive")" 并且循环消失了。
    • 还有一件事:我如何编辑脚本以仅在窗口宽度为 768 像素或更大时执行此操作?它还应该检测屏幕大小的调整。
    猜你喜欢
    • 2014-03-21
    • 2019-02-12
    • 2017-05-21
    • 2013-06-21
    • 2015-10-22
    • 2022-11-20
    • 1970-01-01
    • 2021-01-24
    • 2011-10-07
    相关资源
    最近更新 更多