如何避免在悬停时首先出现内部div的内容?

时间:2016-05-31 10:44:50

标签: html css css3 css-selectors css-transitions

我在悬停时创建了一个扩展div。这是我创建的小提琴

.outer {
  height: 100px;
  width: 200px;
  border: 1px solid #000;
  overflow: hidden;
  transition: height 0.8s;
  -webkit-transition: height 0.8s;
}

.innerone {
  height: 100px;
}

.outer:hover {
  overflow: visible;
  height: 160px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="http://getbootstrap.com/dist/css/bootstrap.css" rel="stylesheet"/>

<div class="outer">
  <div class+="innerone">

    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
  </div>
  <div class+="inner">



    <button type="button" class="btn btn-default">Default</button>
  </div>
</div>

  http://jsfiddle.net/ab4Lfdhu/35/    

但问题是扩展div中的内容首先出现在div完成其完全扩展过渡之前。怎么避免呢?

2 个答案:

答案 0 :(得分:1)

对于转换,您可以使用以下jQuery片段来检测动画是否已完成:

$(".outer").bind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){
    overflow: visible;
});

示例小提琴:http://jsfiddle.net/db3p5nrv/

答案 1 :(得分:1)

.outer:hover {
  overflow: visible;
  height: 160px;
}

删除overflow: visible; 它应该工作正常。