【问题标题】:Why :before cannot be seen in safari?为什么 :before 在 safari 中看不到?
【发布时间】:2013-08-02 02:57:25
【问题描述】:

我有一个在 Chrome 中运行良好的代码:

#menu ul {
list-style-position: inside;
list-style-type: none;
display: block;
margin: 0 auto;
padding: 0;
}
#menu li {
font-size: 11px;
width: 95px;
display: inline-block;
vertical-align: top;
position: relative;
}
#menu li a {
color: black;
text-decoration: none;
}
#menu li a img {
opacity: 0;
filter: alpha(opacity=0);
-moz-opacity: 0;
position: absolute;
top: 0;
left: 22px;
margin: 0 auto;
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
-o-transition: opacity 0.2s linear;
-ms-transition: opacity 0.2s linear;
}
#menu li a:hover img {
opacity: 1.0;
filter: alpha(opacity=100);
-moz-opacity: 1.0;
}
#menu li a:before {
content: "";
display: block;
background: url('../images/greece.gif') no-repeat center;
width: 50px;
height: 50px;
margin: 0 auto;
opacity: 1.0;
filter: alpha(opacity=100);
-moz-opacity: 1.0;
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
-o-transition: opacity 0.2s linear;
-ms-transition: opacity 0.2s linear;
}
#menu li.news a:before {
background: url('/images/menu/4.gif') no-repeat center;
}
#menu li a:hover:before {
opacity: 0;
filter: alpha(opacity=0);
-moz-opacity: 0
}
#menu li a span.image-title {
display: block;
padding: 5px;
}
#menu li:hover a, #menu li.current.active a {
color: red;
}

我不想使用这种疯狂的代码,但我没有其他办法,因为我正在使用 joomla 2.5

所以我得到的结果...... 在 Firefox 中,不透明度转换不起作用。不,它有效,但以一种奇怪的方式......可以忍受。

在 Safari 中:之前根本不显示!

Web-site with this problem(不是广告)。

【问题讨论】:

    标签: css safari css-selectors


    【解决方案1】:

    检查一下:http://caniuse.com/#feat=css-gencontent 并检查“已知问题”选项卡。 Safari 浏览器不支持伪元素的过渡。我昨天遇到了同样的问题。

    【讨论】:

      【解决方案2】:

      只需添加 position:absolute

      a:before{
      position:absolute;
      content:"";
      top: 0px;
      left: 0px;
      .....
      

      并确保您在 a

      上具有相对位置
      #menu li a{
      position:relative;
      }
      

      例如这很好用

      #menu li a:before {
      content: "";
      display: block;
      background: url('../images/greece.gif') no-repeat center;
      width: 50px;
      height: 50px;
      position: absolute;
      opacity: 1.0;
      filter: alpha(opacity=100);
      -moz-opacity: 1.0;
      -webkit-transition: opacity 0.2s linear;
      -moz-transition: opacity 0.2s linear;
      -o-transition: opacity 0.2s linear;
      -ms-transition: opacity 0.2s linear;
      }
      

      对于 css3 开发非常重要box-sizing

      *, *:after, *:before  {
      outline: none;
      -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
      box-sizing: border-box;
      padding:0;
      margin:0;
      }
      

      :before:after 总是 position:absolute 并且主要元素应该是 position relative

      【讨论】:

        猜你喜欢
        • 2012-05-13
        • 2021-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-20
        • 2015-08-27
        • 2011-10-21
        相关资源
        最近更新 更多