固定定位在Firefox中不起作用

时间:2013-07-19 08:17:07

标签: css firefox positioning

我的网页中有以下HTML,我希望左侧固定侧边栏。在Chrome中工作正常但Firfox没有将侧边栏显示为固定:

<div id="sidebar">
    <!-- Logo -->
        <div >
            <h1>Heading</h1>
        </div>
            <!-- Nav -->
                <nav id="nav">
                    <ul>
                        <li><a href="#target1" >About</a></li>
                        <li><a href="#target2" >Works</a></li>
                        <li><a href="#target3" >Our Team</a></li>
                        <li><a href="#target4" >Contact</a></li>

                    </ul>
                </nav>

</div>

上述代码的CSS是:


#sidebar
{
    position: fixed;
    top: 0;
    padding: 3em 1.35em 1em 1.15em;
    height: 100%;
    width: 12em; 
    background: #364050 ;
    box-shadow: inset -0.1em 0em 0.35em 0em rgba(0,0,0,0.15);
}

请建议我一些解决方案,以便侧边栏在Firefox中保持固定。

DOWNVOTERS请先评论。

6 个答案:

答案 0 :(得分:7)

检查你的身体css标签,metas以及任何可能影响该div的内容。也许有另一个css规则覆盖'位置' 此外,如果你在身体css中有css3标签或错误,例如,transform: translate3d(0px, 0px, 0px);可以在Firefox中进行固定的位置中断。

答案 1 :(得分:0)

我认为你应该尝试对你进行一些改动 试试这个css

#sidebar
{
    position: fixed;
    top: 0;
    padding: 10px;
    bottom:0;
    left:0;
    width:200px; 
    background: #364050 ;
    box-shadow: inset -0.1em 0em 0.35em 0em rgba(0,0,0,0.15);
}

我不喜欢将em用于元素尺寸,它应该是px,你可以使用em foe字体大小等。

答案 2 :(得分:0)

#sidebar
{
    position: fixed;
    top: 0;
    left:0;
    padding: 3em 1.35em 1em 1.15em;
    height: 100%;
    width: 12em; 
    background: #364050 ;
    box-shadow: inset -0.1em 0em 0.35em 0em rgba(0,0,0,0.15);
}

答案 3 :(得分:0)

如果您的问题是使用过滤器(而不是变换)导致问题,那么这将有效。

我在固定元素父级上设置了过滤器,但它随窗口宽度而变化。我注意到,当窗口宽度越过这些@media (max-width...)边界时,固定位置元素将重新定位到它应该处于的位置,而不管过滤器具有什么。

原始代码:

<style>
  .withFilter {
    filter: whatever;
  }
  #fixed {
    position: fixed;
    bottom: 0px;
    ....
  }
</style>
<body>
  <div id="a">
    <div id="fixed">
      at bottom
    </div>
  </div>
  <script>
    ... lots of stuff ...
      jQuery("#a").addClass('withFilter');
    ... lots of stuff ...
  </script>
</body>

工作代码:

.... same stuff ....
  <script>
    ... lots of stuff ...
      setTimeout(function() {
        jQuery("#a").addClass('withFilter');
      });
    ... lots of stuff ...
  </script>
</body>

只需添加足够的时间让固定位置保持不变,然后才应用过滤器/变换....

答案 4 :(得分:0)

当前元素或任何父元素上的

filter会在Firefox上导致位置固定中断。删除它或找到另一种不直接使用过滤器的方法

答案 5 :(得分:0)

您应该为固定 div 添加 Top 或 Bottom 属性 像这样

       top : 0;