悬停效果之前和之后

时间:2016-10-24 20:10:27

标签: css css-selectors

我一直在网上搜索前后效果,我只是没有找到任何有用的东西。这就像CSS的灰色区域。我想知道如何在twitter的主页上做一个效果:这是悬停效果。 http://imgur.com/a/jBikq。它也有转换,但我不确定如何实现它。我甚至不确定这是否在使用之前和之后,我想它会悬停,但任何帮助都会非常感激。

这是我的导航代码:

<div id="navbar3" class="navbar-collapse collapse">
                <ul class="nav navbar-nav navbar-right">
                  <li class="active"><a href="#">Home</a></li>
                  <li><a href="#">About</a></li>
                  <li><a href="#">Contact</a></li>
                  <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Dropdown <span class="caret"></span></a>
                    <ul class="dropdown-menu" role="menu">
                      <li><a href="#">Action</a></li>
                      <li><a href="#">Another action</a></li>
                      <li><a href="#">Something else here</a></li>
                      <li class="divider"></li>
                      <li class="dropdown-header">Nav header</li>
                      <li><a href="#">Separated link</a></li>
                      <li><a href="#">One more separated link</a></li>
                    </ul>
                  </li>
                </ul>
              </div>

3 个答案:

答案 0 :(得分:2)

您可以使用:after:before pseudo selector来完成此操作。 我基于你的图像创建了一个例子,它看起来像这样:

@import url('https://fonts.googleapis.com/css?family=Roboto');

body{
  padding: 5%;
}

.exemple {
  font-family: 'Roboto', sans-serif;
  position: relative;
  padding: 2.5% 3.5%;
  text-decoration: none;
  font-size: 0.9em;
  color: #333333;
  transition: ease .1s;
  -webkit-transition: ease .1s;
}

.exemple:before {
  font-family: 'FontAwesome';
  content: '\f0e7';
  font-size: 1.1em;
  margin-right: 10px;
}

.exemple:after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 0px;
  background: #20abe1;
  transition: ease .1s;
  -webkit-transition: ease .1s;
}

.exemple:hover {
  color: #20abe1;
}

.exemple:hover:after{
  height: 4px;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet"/>

<a href="#" class="exemple">Moments</a>

Working Fiddle

答案 1 :(得分:0)

你绝对可以使用::before或者你可以为边框/填充设置动画,它会产生相同的增长效果。在这里工作小提琴:FIDDLE

答案 2 :(得分:0)

您没有提供有关您尝试复制的确切内容的详细信息。我将假设它是从导航项底部动画的下划线。

为此,您需要使用CSS转换。

Twitter正在做的简化版本如下。他们在<a><li>上设置了一个高度,并为<a>添加了边框。由于他们已overflow:hidden;应用于<li>边框,因此最初会隐藏他们应用于<a>的边框。

<li>悬停时,<a>的高度会降低。他们使用高度上的过渡来将边框设置为视图。

ul,
li {
  margin: 0;
  padding: 0;
  list-style: none;
}
li {
  float: left;
  height: 40px;
  overflow: hidden;
}
a {
  display: block;
  height: 40px;
  padding: 0 10px;
  line-height: 40px;
  text-decoration: none;
  overflow: hidden;
  border-bottom: 3px solid #0c0;
  transition: height 250ms ease-in-out;
}
li:hover a {
  height: 37px;
}
<ul>
  <li><a href="#">One</a></li>
  <li><a href="#">Two</a></li>
  <li><a href="#">Three</a></li>
</ul>

这是使用伪元素在下划线中制作动画的另一种方法。

ul,
li {
  margin: 0;
  padding: 0;
  list-style: none;
}
li {
  position: relative;
  float: left;
}
a {
  display: block;
  padding: 0 10px;
  line-height: 40px;
  text-decoration: none;
}
a:after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  display: block;
  height: 0;
  width: 100%;
  text-align: center;
  background-color: #0c0;
  transition: height 250ms ease-in-out;
}
li:hover a:after {
  height: 3px;
}
<ul>
  <li><a href="#">One</a></li>
  <li><a href="#">Two</a></li>
  <li><a href="#">Three</a></li>
</ul>