【问题标题】:Z-Index not working on Safari - fine on Firefox and ChromeZ-Index 在 Safari 上不起作用 - 在 Firefox 和 Chrome 上很好
【发布时间】:2017-04-15 04:34:42
【问题描述】:

Z-index 在 Safari 上无法正确呈现 - 但在 Chrome 和 Firefox 上运行良好。我无法弄清楚 Safari 特定的错误是什么。

下面是相关代码:

.flex-container{
        display: inline-flex;
        align-items: center;
        justify-content: center;
        }

        .flex-item{
        margin-left: 14%;}


        #inner-ul2{
        margin-left: 70px;}


        #inner-navbar{
        z-index: 1;
        background-color: white;
        overflow: hidden;
        margin-top: 50px;
        box-shadow: 0px 10px 10px #444444;}

        .inner-buttons{
        background-color: white;
        overflow: hidden;
        color: black;
        font-family: Roboto;
        font-weight: 300;
        font-size: large;}

        .inner-buttons-left{
        overflow: hidden;
        margin-right: 45px;}

        .inner-buttons-right{
        overflow: hidden;
        margin-left: 40px;}


        #inner-logo{
        position:fixed;
        z-index: 2;
        display: inline-block;
        float: none;
        height: 100px;
        width: 120px;
        margin-top: -20px;
        margin-left: -25px;
        margin-right: auto;
        border-bottom-right-radius: 10px;
        border-bottom-left-radius: 10px;
        box-shadow: 0px 20px 10px -10px #444444;
        }

        .navbar .navbar-nav{
        display: inline-block;
        float: none;
        vertical-align: middle;}


        #slider{
        z-index: -1;
        padding: 0;
        overflow: hidden;
        border-style: none;
        margin-top: 30px;
        margin-bottom: 0px;}
<div class="row-fluid">
                            <div class="navbar subnav navbar-fixed-top" id="inner-navbar">
                                <div class="navbar-inner">
                                <div class="flex-container">
                               <span class="flex-item"><ul class="nav navbar-nav" id="inner-ul"> 
                             <li><a class="inner-buttons inner-buttons-left" href="/home/">HOME</a></li>
                                 <li><a class="inner-buttons inner-buttons-left" href="#">SHOP</a></li>
                                 <li><a class="inner-buttons inner-buttons-left" href="#">OPPORTUNITY</a></li>
                            </ul>
                                <ul class="nav navbar-nav">
                                <li href="#"><img id="inner-logo" src="http://placehold.it/120x100"></li></ul>
                                <ul class=" nav navbar-nav" id="inner-ul2">
                                <li><a class="inner-buttons inner-buttons-right" href="#">ABOUT US</a></li>
                                <li><a class="inner-buttons inner-buttons-right" href="#">HAPPENINGS</a></li>
                                <li><a class="inner-buttons inner-buttons-right" href="#">CONTACT</a></li></ul>
                                </span></div>       
    </div>
    </div>
    </div>

            <div class="row-fluid">
                <div id="slider" class="flexslider">
                    <ul class="slides">
                        <li>
                        <img src="{{ url_for('static', filename='images/ProductsSlider.jpg') }}">
                        </li>
                        <li>
                        <img src="{{ url_for('static', filename='images/NaturalSlider.jpg') }}">
                        </li>
                        <li>
                        <img src="{{ url_for('static',         filename='images/ExcellSlider.jpg') }}">
                        </li>
                    </ul>
                </div>
                <!--/div-->
            </div>

以下是一些显示浏览器外观差异的图片:

Chrome Safari

我同时使用 Bootstrap 和 JQuery。

感谢您的帮助!

【问题讨论】:

标签: html css twitter-bootstrap safari z-index


【解决方案1】:

这应该可以解决您在 Safari 上的问题 -webkit-transform:translate3d(0,0,0);

【讨论】:

  • 了解应该应用到哪个元素以及为什么这样可以解决问题会很有帮助。
【解决方案2】:

如果您在网站上的另一个元素上使用translateZtranslate3d,您可能会发现将translate3d 归零对您没有任何好处。事实证明,Safari 在确定绘制对象时会考虑已转换对象的 Z 轴位置,而不是使用z-index

因此,这将导致第一个 div 显示在第二个上方:

<div style="position: fixed; transform: translateZ(100px); z-index: 1;" />
<div style="position: fixed; transform: translate3d(0, 0, 0); z-index: 2;" />

解决方案是对要在最顶层绘制的元素应用较大值的 z 轴变换:

.on-top {
  transform: translate3d(0, 0, 200px);
}

为其他浏览器保留z-index 声明仍然是个好主意。

【讨论】:

    【解决方案3】:

    请注意,z-index 仅适用于定位元素(position:absoluteposition:relativeposition:fixed)。一个适用的小提琴会有所帮助,但我建议在 #inner-navbar#slider 上尝试一些 position 调整。

    【讨论】:

    • 我已经尝试添加位置元素,它仍然不起作用。问题实际上不在于导航栏——它位于 Safari 的滑块上方。问题是#inner-logo 叶子没有放在导航栏上方以获得悬垂效果。由于某种原因,它被导航栏吞噬了。
    • 很难说,但我想说你的z-index:1z-index:-1 没有被识别,即使某些浏览器可能。一个简单的例子:jsfiddle.net/9ygwo9yj/1 - 你可以在absolute div 上取消注释z-index:-1;,它会低于relative
    • 作为替代方案,您可以尝试在#inner-logo 上使用!important 或更高的z-index 值,例如9999,但如果其他不影响它可能也不起作用。跨度>
    【解决方案4】:

    我的下拉菜单 z-index 不起作用,我花了几个小时尝试不同的东西,但都不起作用。 在我将它添加到我的 CSS 类的第一行后,Jayesh 的回答给了我提示

    它像魅力一样固定。

    {
       -webkit-transform: translate3d(0, 0, 0);
        transform: translate3d(0, 0, 0);
        position: absolute;
        z-index: 1000;
    }
    

    【讨论】:

      【解决方案5】:

      问题是inner-navbarclass 上的overflow:hidden 元素。我不确定为什么它可以在 Chrome 和 Firefox 上运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-07
        • 2011-01-22
        • 2014-01-11
        • 1970-01-01
        • 2010-11-06
        • 1970-01-01
        • 2014-08-07
        相关资源
        最近更新 更多