【问题标题】:IE causes css width animation to be reversedIE导致css宽度动画反转
【发布时间】:2014-05-19 01:48:25
【问题描述】:

相关部分:

#inline-navigation ul {
    display: table;
    text-transform: uppercase;
    text-align: center;
    list-style-type: none;
    margin: 0 auto;
    padding: 24px 0px;
}

#inline-navigation ul li {
    display: table-cell;
}

#inline-navigation ul li a {
    text-decoration: none;
    color: #777;
    padding: 0 4px;
    font-family: Monaco, Consolas, "Lucida Console", monospace;
    font-size: 15px;
    transition: 0.3s;
    height: 20px;
    line-height: 20px;
    margin: 0 4px;
    position: relative;
}

#inline-navigation ul li a:after,
#inline-navigation ul li a:before {
    content: '';
    border-bottom: 1px solid #ff6600;
    box-shadow: 0 2px 2px -2px #777;
    display: block;
    position: absolute;
    transition: 0.1s;
    width: 0;
}

#inline-navigation ul li:nth-child(1) a:before,
#inline-navigation ul li:nth-child(2) a:before {
    right: 0;
    top: -4px;
}

#inline-navigation ul li:nth-child(1) a:after,
#inline-navigation ul li:nth-child(2) a:after {
    bottom: -4px;
    left: 0;
}

#inline-navigation ul li:nth-child(3) a:before,
#inline-navigation ul li:nth-child(4) a:before {
    left: 0;
    top: -4px;
}

#inline-navigation ul li:nth-child(3) a:after,
#inline-navigation ul li:nth-child(4) a:after {
    bottom: -4px;
    right: 0;
}

#inline-navigation ul li a:hover {
    color: #ff6600;
}

#inline-navigation ul li a:hover:before,
#inline-navigation ul li a:hover:after {
    width: 75%;
}

在 Internet Explorer 11 中,动画会产生非常奇怪的边框闪烁,其中 :after:before 元素的边框似乎逃脱了父元素(?)。我认为这是因为与其他浏览器相比,动画是反向播放的。

小提琴; http://jsfiddle.net/NfE87/

在 Chrome 和 Firefox 上运行良好。想法?

【问题讨论】:

  • <a> 元素默认是内联的,并且您的样式将它们阻止在 :before:after 样式中。看起来 IE 在默认内联和块样式之间切换锚点时遇到问题。当我将a{display:block;} 添加到样式表的底部时,它似乎解决了这个问题。
  • 请注意,我评论而不是回答,因为 a) 我真的不知道到底发生了什么 b) 据我所知,制作锚块可能会破坏您的布局
  • 有效!谢谢。我为导航中的a 元素制定了一个非常具体的规则,因此它不会搞砸页面。
  • 太棒了!很高兴我能帮上忙。

标签: html css css-animations


【解决方案1】:

<a> 元素默认是内联的,并且您的样式将它们阻止在 :before:after 样式中。看起来 IE 在默认内联和块样式之间切换锚点时遇到问题。不确定到底是什么问题,但是...

如果您在样式表中设置锚块,则不会发生“切换”并且可以解决问题,因此只需添加

a{display:block;} 到样式表的底部。请记住,将锚点更改为块元素可能会影响布局,因此请进行相应调整。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    相关资源
    最近更新 更多