【问题标题】:CSS3 transform difference in Firefox and Chrome and IEFirefox 和 Chrome 和 IE 中的 CSS3 转换差异
【发布时间】:2016-06-02 05:53:38
【问题描述】:

我认为这可能与伪元素有关,但我不确定。我在使用 css3 进行转换转换的效果时遇到了困难。在 Firefox v24 中,效果如我所愿 - 请参阅此处的 CodePen http://codepen.io/patrickwc/pen/aKEec,但在 Chrome 和 IE 中,链接的边框效果会动画,然后突然切换回原位。很难描述,所以最好的方法是在 Firefox 中查看效果,然后在 Chrome 或 IE 中查看。

body {
  background: #000;
  color: #fff;
}

p {
  text-align: center;
}

nav.footer-social-links a {
  position: relative;
  margin: 0 10px;
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 1px 12px 0 8px;
  height: 32px;
  line-height: 30px;
  outline: none;
  font-size: 0.8em;
  text-shadow: 0 0 1px rgba(255, 255, 255, 0.3);
}

nav.footer-social-links a:hover,
nav.footer-social-links a:focus {
  outline: none;
}

.footer-social-links a::before,
.footer-social-links a::after {
  position: absolute;
  width: 30px;
  height: 2px;
  background: #fff;
  content: '';
  opacity: 0.2;
  -moz-transition: all 0.3s;
  -o-transition: all 0.3s;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
  pointer-events: none;
}

.footer-social-links a::before {
  top: 0;
  left: 0;
  -webkit-transform: rotate(90deg);
  -moz-transform: rotate(90deg);
  transform: rotate(90deg);
  -webkit-transform-origin: 0 0;
  -moz-transform-origin: 0 0;
  transform-origin: 0 0;
}

.footer-social-links a::after {
  right: 0;
  bottom: 0;
  -webkit-transform: rotate(90deg);
  -moz-transform: rotate(90deg);
  transform: rotate(90deg);
  -webkit-transform-origin: 100% 0;
  -moz-transform-origin: 100% 0;
  transform-origin: 100% 0;
}

.footer-social-links a:hover::before,
.footer-social-links a:hover::after,
.footer-social-links a:focus::before,
.footer-social-links a:focus::after {
  opacity: 1;
}

.footer-social-links {
  margin: 0;
  text-align: center;
}

.footer-social-links a {
  color: white;
  -webkit-transition: all 0.3s;
  -moz-transition: all 0.3s;
  -o-transition: all 0.3s;
  transition: all 0.3s;
  display: inline-block;
  text-decoration: none;
}

.footer-social-links a:hover::before,
.footer-social-links a:focus::before {
  width: 80%;
  left: 10%;
  -webkit-transform: rotate(0deg) translateX(50%);
  -moz-transform: rotate(0deg) translateX(50%);
  transform: rotate(0deg) translateX(50%);
}

.footer-social-links a:hover::after,
.footer-social-links a:focus::after {
  width: 80%;
  right: 5%;
  -webkit-transform: rotate(0deg) translateX(50%);
  -moz-transform: rotate(0deg) translateX(50%);
  transform: rotate(0deg) translateX(50%);
}
<br/>

<nav class="footer-social-links">
  <a href="google" target="_blank">
    <i class="shc icon-e-gplus"></i>Gplus </a>
  <a href="facebook" target="_blank">
    <i class="shc icon-e-facebook"></i>Facebook </a>
  <a href="twitter" target="_blank">
    <i class="shc icon-e-twitter"></i>Twitter </a>
  <a href="linkedin" target="_blank">
    <i class="shc icon-e-linkedin"></i>Linkedin </a>
  <a href="skype" target="_blank">
    <i class="shc icon-e-skype"></i>Skype </a>
  <a href="http://last.fm/user/zerodegreeburn" target="_blank">
    <i class="shc icon-e-lastfm"></i>Lastfm </a>
</nav>

<p>Fixed with help from css-tricks forum and stackoverflow <a href="http://codepen.io/patrickwc/pen/uFGlz" target="_blank">here</a>
</p>

我感觉弄乱了 transform-origin 可能会修复它,但我一直无法让它发挥作用。任何有关差异的帮助或解释将不胜感激。

【问题讨论】:

    标签: css transform transition pseudo-element css-transforms


    【解决方案1】:

    我不确定为什么 Chrome 的代码有问题,但你可以简化它,然后它会在所有浏览器中正常工作。

    你应该把你的 CSS 改成

    .footer-social-links a:hover::before,
    .footer-social-links a:focus::before {
        width: 80%; 
        left: 10%;
        -webkit-transform: rotate(0deg);
        -moz-transform: rotate(0deg);
        transform: rotate(0deg);
    }
    
    .footer-social-links a:hover::after,
    .footer-social-links a:focus::after {
        width: 80%;
        right: 10%;
        -webkit-transform: rotate(0deg);
        -moz-transform: rotate(0deg);
        transform: rotate(0deg);
    }
    

    在 X 中做一个翻译,同时修改你的左值是没有用的;更好地将变化集中在单个值(左)并消除 translateX

    【讨论】:

    • 谢谢,更有意义。我从另一个网站 (codrops) 的教程中复制了这段代码,所以我也会让作者知道。虽然他们的线条(宽度:)保持相同的大小,但没有意识到问题。
    猜你喜欢
    • 2013-03-08
    • 2010-11-24
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    相关资源
    最近更新 更多