【问题标题】:css3 height transition not workingcss3高度过渡不起作用
【发布时间】:2011-08-30 16:18:23
【问题描述】:

我在使用 css3 过渡时遇到问题 我怎样才能使过渡平滑它立即出现
我希望 div 框在我将鼠标悬停在它上面时慢慢改变它的高度


html代码

<div id="imgs">

<img src="http://chat.ecobytes.net/img/emoticons/smile.png" alt=":)" title=":)" />
<img src="http://chat.ecobytes.net/img/emoticons/sad.png" alt=":(" title=":(" />
<img src="http://chat.ecobytes.net/img/emoticons/wink.png" alt=";)" title=";)" />
<img src="http://chat.ecobytes.net/img/emoticons/razz.png" alt=":P" title=":P" />
<img src="http://chat.ecobytes.net/img/emoticons/grin.png" alt=":D" title=":D" />
<img src="http://chat.ecobytes.net/img/emoticons/plain.png" alt=":|" title=":|" />
<img src="http://chat.ecobytes.net/img/emoticons/surprise.png" alt=":O" title=":O" />
<img src="http://chat.ecobytes.net/img/emoticons/confused.png" alt=":?" title=":?" />
<img src="http://chat.ecobytes.net/img/emoticons/glasses.png" alt="8)" title="8)" />
<img src="http://chat.ecobytes.net/img/emoticons/eek.png" alt="8o" title="8o" />
<img src="http://chat.ecobytes.net/img/emoticons/cool.png" alt="B)" title="B)" />
<img src="http://chat.ecobytes.net/img/emoticons/smile-big.png" alt=":-)" title=":-)" />

</div>

jsfiddle

【问题讨论】:

标签: html css css-transitions


【解决方案1】:

我相信你需要设置一个指定的高度而不是自动。 http://jsfiddle.net/BN4Ny/ 这是一个平滑的扩展。不确定您是否想要那种小的关闭打开效果。我刚刚分叉了你的 jsfiddle 并添加了一个指定的高度。

【讨论】:

  • 会有一个问题如果元素(表情)的数量是动态的,因为高度必须更新。
  • 是否可以仅使用 css3 实现关闭打开效果
  • 如果你添加更多,那将是一个问题,但请记住它仍然是 webkit ;)。也许您可以尝试使用 jquery 来帮助提高动态高度。
  • @nick,我自己刚开始玩 css3,但您可以考虑缩放转换。
  • 遗憾的是,2015 年仍然如此。但是,有一个使用 max-height 的解决方法。更多信息:stackoverflow.com/questions/3508605/…
【解决方案2】:

此方案不需要javascript,或者存在需要事先为容器设置一个固定高度的问题。

这可以通过使用max-height 属性并将其值设置为高值来实现。

#imgs {
    border:1px solid #000;
    border-radius:3px;
    max-height:20px;
    width:100%;
    overflow:hidden;
    transition: 2s ease;
}
#imgs:hover {
    max-height:15em;
}
<div id="imgs">

  <img src="https://sslb.ulximg.com/image/405x405/artist/1346353449_4159240d68a922ee4ecdfd8e85d179c6.jpg/e96a72d63f272127d0b6d70c76fd3f61/1346353449_eminem.jpg" />
</div>

【讨论】:

    【解决方案3】:

    而不是在容器上使用设置高度或使用 JS(这两个都是尴尬的解决方案)...您可以将图像放在列表项中并在 li 上进行转换。

    如果所有图像都达到相似的高度,则意味着容器内的内容仍然可以是动态的。比如……

    /*
    CLOSED
    */
    
    div.container li 
    
    {  height:0px;
    
    -webkit-transition: all 0.5s ease;
    -moz-transition: all 0.5s ease;
    -ms-transition: all 0.5s ease;
    -o-transition: all 0.5s ease;
    transition: all 0.5s ease;}
    
    /*
    OPEN
    */
    
    div.container:hover li 
    
    {  height:30px;
    
    -webkit-transition: all 0.5s ease;
    -moz-transition: all 0.5s ease;
    -ms-transition: all 0.5s ease;
    -o-transition: all 0.5s ease;
    transition: all 0.5s ease;}
    

    【讨论】:

      【解决方案4】:

      您可以这样做:http://jsfiddle.net/minitech/hTzt4/

      不幸的是,为了保持灵活的高度,JavaScript 是必需的。

      【讨论】:

        【解决方案5】:

        我正在使用这种方法: 使用最大高度来过渡高度而不是直接使用高度... 例如:

        div {
             height: auto;
             max-height:0;
         }
        
           .toggle-above-div:hover div {
            max-height:0;
          }
        

        【讨论】:

          猜你喜欢
          • 2013-10-20
          • 2013-10-20
          • 2015-01-16
          • 1970-01-01
          • 2012-02-17
          • 1970-01-01
          • 1970-01-01
          • 2017-09-27
          相关资源
          最近更新 更多