【问题标题】:Float right is floating left?向右浮动是向左浮动?
【发布时间】:2013-08-20 16:39:04
【问题描述】:

我有两个箭头导航项,我想左右浮动,它们绝对定位并且比页面上的所有内容都具有更高的 z-index。但我遇到了问题。

<div id="slider-nav">
<a href="#" id="next"></a>
<a href="#" id="prev"></a>
</div>

然后我有我希望这两个项目向左或向右浮动的 CSS。

#next {
    display: block;
    width: 8px;
    height: 12px;
    background-image:url(images/next.png);
    z-index: 999;
    position: absolute;
    float: right;
}

#prev {
    display: block;
    width: 8px;
    height: 12px;
    background-image:url(images/prev.png);
    z-index: 999;
    position: absolute;
    float: left;
}

#slider-nav {
    width: 100%;
    height: 12px;
    position: absolute;
    z-index: 100;
}

发生的情况是应该向右浮动的块最终在左侧浮动块的顶部向左浮动。我尝试在浮动元素之后和容器 div 内添加清除修复无济于事。

【问题讨论】:

  • 你不能使用float 来浮动绝对定位的元素。要么使用不带position:absolute 的float,要么将left:Xpx; / right:Xpx; 添加到您的CSS。
  • 是的,你是对的,而且容器是绝对的这一事实意味着将 a 元素设为绝对是没有意义的。所以我现在有了。

标签: html css css-float


【解决方案1】:

元素只有在中才能浮动。绝对定位的元素不在流中,因此不能浮动。尝试改用left & right 定位。

#next {
    display: block;
    width: 8px;
    height: 12px;
    background-image:url(images/next.png);
    z-index: 999;
    position: absolute;
    right: 0;
}

#prev {
    display: block;
    width: 8px;
    height: 12px;
    background-image:url(images/prev.png);
    z-index: 999;
    position: absolute;
    left: 0;
}

【讨论】:

    【解决方案2】:

    您可以通过定位或左/右属性来解决此问题。在您的 CSS 代码中,将位置修改为相对而不是绝对。这应该可以解决您的问题。我还更改了 inline-block 旁边的显示。

    #next {
            display:inline-block;
            width: 8px;
            height: 12px;
            background-image:url(images/next.png);
            z-index: 999;
            position: relative;
            float: right;
        }
        #prev {
            display: block;
            width: 8px;
            height: 12px;
            background-image:url(images/prev.png);
            z-index: 999;
            position: relative;
            float: left;
        }
                   #slider-nav {
                    border:1px solid red;
                        height: 12px;
                        width:100%;
                        position: absolute;
                        z-index: 100;
                    }
    

    【讨论】:

      【解决方案3】:

      我会用 left:0px 和 right:0px css 参数设置它

      并设置一个合适的宽度,例如 80px http://jsfiddle.net/Hfc5r/3/

      #next {
          display: block;
          width: 80px;
          height: 12px;
          background-image:url(images/next.png);
          z-index: 999;
          position: absolute;
          right: 0px;
      }
      #prev {
          display: block;
          width: 80px;
          height: 12px;
          background-image:url(images/prev.png);
          z-index: 999;
          position: absolute;
          left: 0px;
      }
      #slider-nav {
          width: 100%;
          height: 12px;
          position: absolute;
          z-index: 100;
      }
      

      【讨论】:

      • Position: absolute 和 floats 不能很好地发挥作用,所以就像 Edorka 说的,使用 left 和 right 以及 position absolute。
      【解决方案4】:

      一旦将元素定位为绝对位置,就不需要浮动它们:

        #next {
                  display: block;
                  width: 8px;
                  height: 12px;
                  background-image:url(images/next.png);
                  z-index: 999;
                  position: absolute;
                  right: 0;
              }
              #prev {
                  display: block;
                  width: 8px;
                  height: 12px;
                  background-image:url(images/prev.png);
                  z-index: 999;
                  position: absolute;
                  left: 0;
              }
      

      【讨论】:

        【解决方案5】:

        right:0;left:0; 用于绝对定位元素

        【讨论】:

          【解决方案6】:

          您的#prev 和#next 中不需要position: absolute;,除非您希望它们相互叠加。

          【讨论】:

            【解决方案7】:

            我已经测试了您的代码,但问题是 position: absolute; 使它漂浮在整个文档中。您可能会考虑使用类似left: 10px 的东西,这将创建类似margin-left: 10px 的东西。使用此代码:

                #next {
                    display: block;
                    width: 8px;
                    height: 12px;
                    background-image:url(images/next.png);
                    z-index: 999;
                    position: absolute;
                    float: right;
                }
                #prev {
                    display: block;
                    width: 8px;
                    height: 12px;
                    background-image:url(images/prev.png);
                    z-index: 999;
                    position: absolute;
                    right: 30px;
                    float: left;
                }
                           #slider-nav {
                                width: 100%;
                                height: 12px;
                                position: absolute;
                                z-index: 100;
                            }
            

            如果你想让它向右浮动,你可以使用这个:right: 10px 这将使它在右侧浮动,只有 10px 的边距。

            编辑:我的代码使用right: 10px,这意味着它将浮动在右侧。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-04-16
              • 1970-01-01
              • 2014-01-24
              • 1970-01-01
              • 1970-01-01
              • 2022-08-13
              • 1970-01-01
              • 2015-01-14
              相关资源
              最近更新 更多