【问题标题】:CSS Transition with a table cell width具有表格单元格宽度的 CSS 过渡
【发布时间】:2015-09-01 14:00:25
【问题描述】:

我试图制作一个水平手风琴,但我不知道如何让“细胞”顺利展开。这是小提琴:https://jsfiddle.net/vf1z1ebp/4/

过渡在悬停时显然适用于背景和字体颜色,但宽度只是立即跳跃。我认为这可能是因为其他三个单元格具有自动宽度,但这似乎不是问题,因为这个也不起作用:https://jsfiddle.net/vf1z1ebp/5/

这是 HTML:

<table id="matrix"> 
    <tr>

        <td class = "item">
            One
        </td> 

        <td class = "item">
            Two
        </td> 

        <td class = "item">
            Three
        </td> 

        <td class = "item">
            Four
        </td>

    </tr>
</table>

还有 CSS:

#matrix {
    width: 100%;
    height: 100px;   
}

.item {
    vertical-align: middle;
    text-align: center;  
    border: 2px solid black;
    font-size: 35px;

    -webkit-transition: all 3s;
    -moz-transition: all 3s;
    -o-transition: all 3s;
    transition: all 3s;
}

.item:hover {
    width: 50%;
    background-color: black;
    color: white;
}

我做错了什么?感谢您的回答! Malej Pštros.

【问题讨论】:

    标签: css


    【解决方案1】:

    要过渡到工作,您必须向这样的元素提供width。过渡只能跨数值进行动画处理

    #matrix {
      width: 100%;
      height: 100px;
    }
    .item {
      vertical-align: middle;
      text-align: center;
      border: 2px solid black;
      font-size: 35px;
      width: 10%;
      -webkit-transition: all 1s;
      -moz-transition: all 1s;
      -o-transition: all 1s;
      transition: all 1s;
      transition-timing-function: ease-in-out;
      -moz-transition-timing-function: ease-in-out;
      -webkit-transition-timing-function: ease-in-out;
      -o-transition-timing-function: ease-in-out;
    }
    .item:hover {
      width: 50%;
      background-color: black;
      color: white;
    }
    <table id="matrix">
      <tr>
    
        <td class="item">
          One
        </td>
    
        <td class="item">
          Two
        </td>
    
        <td class="item">
          Three
        </td>
    
        <td class="item">
          Four
        </td>
    
      </tr>
    </table>

    【讨论】:

    • 有效:jsfiddle.net/vf1z1ebp/14!所以为了正确过渡,不仅要指定目标值,还要指定起始值,对吧?感谢您的回答!难道就不能摆脱抽搐吗?
    • @MalejPštros 最好的选择是减少时间并使用计时功能,如果需要,您可以将其更改为线性
    • 您的 td 宽度是硬编码的。它不是动态的。你的方法没有什么特别之处,很常见。
    • @Green 你说的硬核是什么意思,我刚刚更新了他的代码,让它按照他想要的方式动画
    猜你喜欢
    • 2017-12-17
    • 2014-04-17
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 2014-07-13
    相关资源
    最近更新 更多