如何在不使用浮点的情况下左/右对齐div?

时间:2012-01-09 20:30:36

标签: html css

做这样的事情时:

<div style="float: left;">Left Div</div>
<div style="float: right;">Right Div</div>

我必须使用带有

的空div
clear: both;

对我来说感觉很脏。

那么,有没有一种方法可以在不使用浮动的情况下进行对齐?

这是我的代码:

.action_buttons_header a.green_button{
 
}
<div class="change_requests_container" style="width:950px !important">
    <div class="sidebar">
        
            
                <a href="/view/preview_unpublished_revision/422?klass=Proposal" class="preview sidebar_button_large action_button" name="preview" onclick="window.open(this.href);return false;">Preview New Version</a>
            
        
        
    </div>
    <div class="content_container">
        <div class="content">
                        
                <div class="action_buttons_header">
                    <a href="/changes/merge_changes/422" class="re_publish publish green_button" style="
    margin: 5px 0px 5px auto;
">Apply Changes</a>
                </div>
            
            


            <div id="change_list_container">    

<div class="changes_table">
    
        
            
            <style type="text/css">
                #original_492 .rl_inline_added {
                    display: none;
                }
                
                #492.change_container .actial_suggested_text_container{
                    display: none;
                }
            </style>
            <div class="content_section_header_container">
                <div class="content_section_header">
                    <a href="#" class="collapse" name="492"></a>
                    The Zerg | 
                    Overview
                    <div class="status" id="492_status">
                        <div id="492_status_placeholder">
                            
                        </div>
                    </div>
                </div>
            </div>
            <div class="change_container" id="492">
                
            </div>
        </div>
    </div>
</div>

我希望水平条右侧的绿色按钮能够以最干净的方式进入。

只是试着学习如何优雅,干净地完成CSS。

8 个答案:

答案 0 :(得分:46)

在这种情况下,如果你想右对齐那个绿色按钮,只需改变一个div以使所有东西都正确对齐:

<div class="action_buttons_header" style="text-align: right;">

div已占据该部分的整个宽度,因此只需右移绿色按钮右对齐文本。

答案 1 :(得分:45)

另一种做类似事情的方法是在包装元素上使用flexbox,即

&#13;
&#13;
 .row {
        display: flex;
        justify-content: space-between;
    }
&#13;
  <div class="row">
        <div>Left</div>
        <div>Right</div>
    </div>

   
&#13;
&#13;
&#13;

答案 2 :(得分:14)

你可以使用display: inline-block这样的东西,但我认为你需要设置另一个div来移动它,如果按钮左边没有任何东西可以使用边距将其移动到位。

或者但不是一个好的解决方案,你可以定位标签;将包含的div设为position: relative,然后将按钮的div设为position: absolute; right: 0,但就像我说这可能不是最佳解决方案

HTML

<div class="parent">
  <div>Left Div</div>
  <div class="right">Right Div</div>
</div>

CSS

.parent {
  position: relative;
}
.right {
    position: absolute;
    right: 0;
}

答案 3 :(得分:12)

更好地使用overflow: hidden; hack:

<div class="container">
  <div style="float: left;">Left Div</div>
  <div style="float: right;">Right Div</div>
</div>

.container { overflow: hidden; }

或者,如果你打算做一些奇特的CSS3阴影,你就会遇到上述解决方案的问题:

http://web.archive.org/web/20120414135722/http://fordinteractive.com/2009/12/goodbye-overflow-clearing-hack

PS

如果你想要干净,我宁愿担心内联javascript而不是overflow: hidden; hack:)

答案 4 :(得分:2)

你可以使用一个百分比的左边距。

HTML

<div class="goleft">Left Div</div>
<div class="goright">Right Div</div>

CSS

.goright{
    margin-left:20%;
}
.goleft{
    margin-right:20%;
}

(goleft与默认值相同,但如果需要可以反转)

text-align并不总是按照预期的布局选项工作,它主要用于文本。 (但通常也用于表单元素)。

执行此操作的最终结果将与具有float:right的div具有类似的效果;和宽度:80%设定。除此之外,它不会像浮子一样聚集在一起。 (保存后面元素的默认显示属性。)

答案 5 :(得分:2)

另一个解决方案可能是跟随(根据你的元素的显示属性而工作):

HTML:

<div class="left-align">Left</div>
<div class="right-align">Right</div>

CSS:

.left-align {
  margin-left: 0;
  margin-right: auto;
}
.right-align {
  margin-left: auto;
  margin-right: 0;
}

答案 6 :(得分:0)

无需添加额外元素。虽然flexbox使用非直观的属性名称,但如果你知道可以,你会发现自己经常使用它。

<div style="display: flex; justify-content: space-between;">
<span>Item Left</span>
<span>Item Right</span>
</div>

计划经常需要这个吗?

.align_between {display: flex; justify-content: space-between;}

我看到其他人在主要位置使用辅助词,这使得信息层次结构混乱。如果 align 是主要任务而正确,则和/或之间的类的次要任务> 应该.align_outer不是 .outer_align,因为在您垂直扫描代码时它会有意义:

.align_between {}
.align_left {}
.align_outer {}
.align_right {}

随着时间的推移,良好的习惯会让你早晚睡觉。

答案 7 :(得分:0)

今天在我的项目中应用了非常有用的东西。一个div必须正确对齐,并且不应用浮动。

应用代码使我的目标得以实现:

.div {
  margin-right: 0px;
  margin-left: auto;
}