CSS转换仅适用于mouseout

时间:2015-07-30 15:02:18

标签: html css

我正在努力制作仅限CSS的下拉列表。我有一些CSS,当一个导航项目悬停时,它的背景颜色会发生变化。



.horiz-nav {
  background: linear-gradient(#EEE, #900) no-repeat fixed;
  border: none;
  outline: none;
}
.horiz-nav ul {
  list-style: none;
}
.horiz-nav ul li {
  display: inline-block;
  padding: 1.2em;
  clear: none;
  float: left;
  margin: 0 0;
  background: #000;
  width: 10em;
  transition: all .5s ease-in;
}
.horiz-nav ul ul {
  display: none;
  position: absolute;
  top: 73px;
  height: 0;
  transition: all .5s ease-in;
}
.horiz-nav ul ul li {
  background: linear-gradient(#000, #F50) no-repeat fixed;
  padding: 7px;
  margin: 0 3px;
  color: #FFF;
}
.horiz-nav ul li:hover {
  background: linear-gradient(to bottom, #808080, #80108F);
}
.horiz-nav ul li:hover > ul {
  display: block;
  height: auto;
}
.horiz-nav ul li:hover > ul li {
  display: list-item;
  position: relative;
  float: none;
  left: -62px;
}

<nav class="horiz-nav">
  <ul>
    <li class="title"><a href="#">Example.com</a>
    </li>
    <li><a href="#">About</a>
    </li>
    <li><a href="#">Contact</a>
    </li>
    <li><a href="#">Programming <span class="caret"></span></a>

      <ul>
        <li>HTML</li>
        <li>PHP</li>
      </ul>
    </li>
  </ul>
</nav>
&#13;
&#13;
&#13;

使用此CSS,背景会更改为新颜色,但在转换时它不会褪色。然而,它确实会在mouseout上淡出旧颜色。为什么转换仅适用于mouseout?如何通过mouseover和mouseout使背景消失? FIDDLE

1 个答案:

答案 0 :(得分:0)

你不能,渐变不支持过渡

你可以做什么?

在li下添加另一个具有相同宽度,高度和位置的元素,此元素具有渐变背景,并在悬停li时使用其不透明度。

li .background-holder{
    position   : absolute;
    width      : 100%;
    height     : 100%;
    top        : 0;
    left       : 0;
    background : linear-gradient(to bottom, #808080, #80108F);
    opacity    : 0;
    transition : all 0.5;
}
li:hover .background-holder{
    opacity  : 1;
}

JSFiddle:http://jsfiddle.net/qrky8yyp/1/