【问题标题】:How to make a smooth hover:after content transition?如何平滑悬停:内容转换后?
【发布时间】:2018-09-24 05:21:42
【问题描述】:

这是我的代码:

HTML:

<button class="btn btn-primary btn-icon" title="Next">>></button>

CSS:

.btn-icon:hover::after{
        content: " "  attr(title);
        transition:width 1s ease;
}

我现在只是在学习css,我正在努力实现一个仅在悬停时显示其文本的按钮,不一定需要通过title属性,我只是觉得这种方式更简单,对 ARIA 更友好。

但是过渡不起作用,我怎样才能使它顺利显示 :after 内容?

JsFiddle:https://jsfiddle.net/xpvt214o/121984/

我尝试跟踪链接的副本,但老实说我无法复制它。

.btn-icon:after{
  content: " "  attr(title);
  max-width: 0;
}

.btn-icon:hover:after{
    max-width: inherit;
    transition: 2s ease;
}

小提琴:https://jsfiddle.net/xpvt214o/122123/

【问题讨论】:

标签: html css bootstrap-4


【解决方案1】:

我会使用类似以下解决方案:

.btn-icon::after{
    content: " "  attr(title);
    text-indent: -9999px;
    letter-spacing: -10px;
    opacity: 0;
    transition: letter-spacing 0.3s ease-out, opacity 0.3s ease-out;
}
.btn-icon:hover::after{
    text-indent: 0px;
    letter-spacing: normal;
    opacity: 1;
}

https://jsfiddle.net/xpvt214o/124097/

【讨论】:

  • 好聪明
  • 你能解释一下为什么过渡没有悬停吗?
  • @Mojimi 将transition 视为一种两态动画。当您声明 transition 时,您声明了哪些 CSS 属性将在其值更改时动画。在这种情况下,我为letter-spacingopacity 声明了一个值,然后在transition 中声明这两个属性都应该有动画。所以当我在伪类:hover中重新声明letter-spacingopacity的值时,它们会从我在初始状态中声明的值过渡到我在悬停状态中声明的新值。跨度>
  • @Mojimi 在 jsfiddle 中,尝试将转换从初始状态切换到 :hover 状态 - 您会看到动画在悬停时发生,但当您将光标移离按钮时不会.这是因为在初始状态下没有为按钮声明transition,而是动画仅在您将鼠标悬停在其上时发生。这可能是您在某些情况下可能需要的行为
猜你喜欢
  • 2015-12-10
  • 2016-05-23
  • 2015-12-26
  • 2015-02-14
  • 2018-05-30
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多