当前位置:  开发笔记 > 后端 > 正文

悬停动画上的文字无法正常使用空间

如何解决《悬停动画上的文字无法正常使用空间》经验,为你挑选了1个好方法。

我在这里关注了一些教程http://tympanus.net/codrops/2013/08/06/creative-link-effects/

并在悬停导航列表项时制作了一个漂亮的动画.

这是HTML:


这是CSS:

#navbar {
     list-style: none;
}

#navbar li {
    display: inline-block;
    padding: 15px;
}

#navbar li a {
    position: relative;
    display: inline-block;
    margin: 15px 25px;
    text-decoration: none;
    letter-spacing: 1px;
    font-weight: bold;
    text-shadow: 0 0 1px rgba(255, 255, 255, 0.3);
    font-size: 24px;
    padding: 10px 0;
    border-top: 1.5px solid #0972b4;
    color: #0972b4;
}

#navbar li a:after {
    position: absolute;
    top: 0;
    left: 0;
    overflow: hidden;
    padding: 10px 0;
    max-width: 0;
    border-bottom: 1.5px solid #000;
    color: #000;
    content: attr(data-hover);
    -webkit-transition: max-width 0.5s;
    -moz-transition: max-width 0.5s;
    transition: max-width 0.5s;
}

#navbar li a:hover:after,
#navbar li a:focus:after {
    max-width: 100%;
}

它适用于"家庭","关于"和"联系",但不适用于"注册"; 显然是因为空间!

我理解代码是如何工作的,但我不知道为什么会存在这样的错误!

伪类after将相同的文本放在原始文本的顶部,然后根据转换规则对其进行着色并在悬停时扩展底部边框.

这是一个JSFiddle:https://jsfiddle.net/rnw00/3dhcz84b/1/



1> Josh Crozier..:

它发生的原因是因为你正在将伪元素宽度从转换0100%.当宽度小于时100%,文本将换行到新行,从而导致您看到的问题.

您可以通过添加white-space: pre到后代锚元素来防止这种情况.

更新的示例

#navbar li a {
    position: relative;
    display: inline-block;
    /* ... */
    white-space: pre;
}

#navbar {
  list-style: none;
}
#navbar li {
  display: inline-block;
  padding: 15px;
}
#navbar li a {
  position: relative;
  display: inline-block;
  margin: 15px 25px;
  text-decoration: none;
  letter-spacing: 1px;
  font-weight: bold;
  text-shadow: 0 0 1px rgba(255, 255, 255, 0.3);
  font-size: 24px;
  padding: 10px 0;
  border-top: 1.5px solid #0972b4;
  color: #0972b4;
  white-space: pre;
}
#navbar li a:after {
  position: absolute;
  top: 0;
  left: 0;
  overflow: hidden;
  padding: 10px 0;
  width: 0;
  border-bottom: 1.5px solid #000;
  color: #000;
  content: attr(data-hover);
  -webkit-transition: width 0.5s linear;
  -moz-transition: width 0.5s linear;
  transition: width 0.5s linear;
}
#navbar li a:hover:after,
#navbar li a:focus:after {
  width: 100%;
}
推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有