向右浮动是向左浮动?

Posted

技术标签:

【中文标题】向右浮动是向左浮动?【英文标题】: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 元素设为绝对是没有意义的。所以我现在有了。 【参考方案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,这意味着它将浮动在右侧。

【讨论】:

以上是关于向右浮动是向左浮动?的主要内容,如果未能解决你的问题,请参考以下文章

如何让特定段落向左浮动,图像向右浮动

html 中的float属性 只能向左或向右浮动吗,能向左浮动100px吗

在容器中居中 2 个 div(向左、向右浮动)

float 浮动

Bootstrap nav 子菜单根据页面限制向左或向右浮动

float浮动属性的基本常识