【问题标题】:Animated underline not showing once link is selected选择链接后不显示动画下划线
【发布时间】:2022-12-09 20:26:26
【问题描述】:

我正在使用 Bootstrap 和 SCSS 来自定义我的 CSS 文件。我有一个像这样的nav-link

.sidebar .nav-pills .nav-link:hover,
.sidebar .nav-pills .show > .nav-link {
    @extend %underline-link;
    background: linear-gradient(120deg, $sidebar-navitem-background-color 65%, $sidebar-navitem-background-color 65%);
}

.sidebar .nav-pills .nav-link.active,
.sidebar .nav-pills .show > .nav-link {
    @extend %underline-link;
    background: linear-gradient(120deg, darken($sidebar-navitem-background-color, 2) 65%, darken($sidebar-navitem-background-color, 2) 65%);
}

%underline-link {
    color: $underline-link-color;
    position: relative;
    text-decoration: none;
    transition: all 0.4s ease;

    &:before {
        content: "";
        position: absolute;
        width: 100%;
        height: 3px;
        bottom: 0px;
        left: 0;
        background: $underline-link-color;
        visibility: hidden;
        transform: scaleX(0);
        transform-origin: center left;
        transition: all 0.3s ease 0s;
    }

    &:hover {
        transition: all 0.4s ease;

        &:before {
            visibility: visible;
            transform: scaleX(1);
        }
    }
}

将鼠标悬停在项目上时,线条会按预期进行动画处理。但是,当该项目处于活动状态时,该行会消失。

只要该项目处于活动状态,我如何保持该行显示?

【问题讨论】:

    标签: css bootstrap-4 sass


    【解决方案1】:

    因为你想让你的活动状态与你的悬停状态相同,你需要在你的 SCSS 中添加 :active 伪类和你的 :hover 伪类。这将确保当用户单击链接(即链接处于活动状态)时,样式保持不变。 More information about active state on MDN

    我创建了a codepen with different styles for hover and active 来展示交互的发生。如果 :hover:active 具有相同的样式,那么您将看不到这两种状态之间的区别。

    &:hover,
    &:active {
        transition: all 0.4s ease;
        
        &:before {
            visibility: visible;
            transform: scaleX(1);
        }
    }
    

    【讨论】:

    • 不鼓励仅代码答案。我们应该解释挑战以及我们的解决方案如何解决它。答案也应该是独立的;我们鼓励建立联系,但它们应该是补充性的,而不是必不可少的。
    • 注意到......我已经相应地更新了答案
    • 试过了。不起作用。
    • 那么你在其他地方遇到了问题。我在上面的答案中添加了一个代码笔,它显示了两种状态的不同样式,因此您可以看到这是如何将样式添加到 :active 上的。显然,如果 :active 和 :hover 的样式相同,您不会注意到两者之间的变化。另外,不客气。
    猜你喜欢
    • 2013-05-09
    • 2014-12-15
    • 2019-03-04
    • 2016-01-08
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 2014-07-09
    相关资源
    最近更新 更多