Html 如何在另一个div内对齐3个div(左/中/右)?

Html 如何在另一个div内对齐3个div(左/中/右)?,html,css,flexbox,alignment,css-float,Html,Css,Flexbox,Alignment,Css Float,我想在一个容器div中对齐3个div,如下所示: [[LEFT] [CENTER] [RIGHT]] <div id="container"> <div id="left"></div> <div id="right"></div> <div id="center"></div> </div> #container{width:100%;} #left{flo

我想在一个容器div中对齐3个div,如下所示:

[[LEFT]       [CENTER]        [RIGHT]]
<div id="container">
  <div id="left"></div>
  <div id="right"></div>
  <div id="center"></div>
</div>
#container{width:100%;}
#left{float:left;width:100px;}
#right{float:right;width:100px;}
#center{margin:0 auto;width:100px;}
[[LEFT]       [CENTER]        [RIGHT]]
容器div为100%宽(无设置宽度),调整容器大小后,中心div应保持在中心

所以我设定:

#容器{宽度:100%;}
#左{浮点:左;宽度:100px;}
#右{浮点:右;宽度:100px;}
#中心{边距:0自动;宽度:100px;}
但它变成了:

[[LEFT]       [CENTER]              ]
                              [RIGHT]

有什么建议吗?

使用CSS,将div按如下方式放置(先浮动):


另外,你也可以先向右浮动,然后向左浮动,然后居中浮动。重要的是,浮动位于“主”中心部分之前


p.p.S.您通常希望最后一个在
#容器中
此片段:
将垂直扩展
#容器
以包含两侧浮动,而不是仅从
#中心
获取其高度,并可能允许侧面从底部伸出。

浮动属性实际上不用于对齐容器文本

#warpcontainer  {width:800px; height:auto; border: 1px solid #000; float:left; }
#warpcontainer2 {width:260px; height:auto; border: 1px solid #000; float:left; clear:both; margin-top:10px }
此属性用于将元素添加到右侧、左侧或中心

div>div{边框:1px纯黑色;}

弗斯特
第二
第三
弗斯特
第二
第三

如果您不想更改HTML结构,也可以通过添加
文本对齐:居中到包装器元素和
显示:内联块到居中元素

#container {
    width:100%;
    text-align:center;
}

#left {
    float:left;
    width:100px;
}

#center {
    display: inline-block;
    margin:0 auto;
    width:100px;
}

#right {
    float:right;
    width:100px;
}

现场演示:

以下是我在使用图像作为中心元素时对公认答案所做的更改:

  • 确保图像包含在div中(
    #在本例中为中心)。如果不是,则必须将
    display
    设置为
    block
    ,并且它似乎相对于浮动元素之间的空间居中
  • 确保设置图像及其容器的大小:

    #center {
        margin: 0 auto;
    }
    
    #center, #center > img {
        width: 100px;
        height: auto;
    }
    

  • 我喜欢我的铁条紧而有活力。这是针对css3和html5的

  • 首先,将宽度设置为100px是一种限制。不要这样做

  • 第二,将容器的宽度设置为100%可以正常工作,直到我们谈论它是整个应用程序的页眉/页脚栏,如导航栏或信用/版权栏。使用
    右键:0而不是针对该场景

  • 您使用的是id(散列
    #容器
    #左
    ,等等),而不是类(
    .container
    .left
    ,等等),这很好,除非您想在代码的其他地方重复您的样式模式。我会考虑使用类。

  • 对于HTML,无需交换顺序:左、中、右<代码>显示:内联块修复了这一问题,将代码返回到更干净、逻辑有序的地方

  • 最后,您需要清除所有浮动,以便它不会影响未来的
    。您可以使用
    clear:both

  • 总结如下:

    HTML:

    如果使用HAML和SASS,可获得加分;)

    哈默:

    SASS:


    你做对了,你只需要清除你的浮动。 简单地加上

    overflow: auto; 
    

    到您的容器类。

    最简单的解决方案是将一个包含3列的表装入板条箱,并将该表居中

    html:

     <div id="cont">
            <table class="aa">
                <tr>
                    <td>
                        <div id="left">
                            <h3 class="hh">Content1</h3>
                            </div>
                        </td>
                    <td>
                        <div id="center">
                            <h3 class="hh">Content2</h3>
                            </div>
                     </td>
                    <td>
                        <div id="right"><h3 class="hh">Content3</h3>
                            </div>
                    </td>
                </tr>
            </table>
        </div>
    
    #cont 
    {
      margin: 0px auto;    
      padding: 10px 10px;
    }
    
    #left
    {    
      width: 200px;
      height: 160px;
      border: 5px solid #fff;
    }
    
    #center
    {
      width: 200px;
      height: 160px;
      border: 5px solid #fff;
    }
    
    #right
    {
      width: 200px;
      height: 160px;
      border: 5px solid #fff;
    }
    
    <div id="container" class="blog-pager">
       <div id="left">Left</div>
       <div id="right">Right</div>
       <div id="center">Center</div>    
    </div>
    
     #container{width:98%; }
     #left{float:left;}
     #center{text-align:center;}
     #right{float:right;}
    

    使用twitter引导:

    <p class="pull-left">Left aligned text.</p>
    <p class="pull-right">Right aligned text.</p>
    <p class="text-center">Center aligned text.</p>
    

    左对齐文本

    右对齐文本

    居中对齐的文本


    这可以使用CSS3 Flexbox轻松完成,这是一项将在将来使用的功能(当
    div{
    背景:#5F85DB;
    填充物:5px;
    颜色:#fff;
    字体大小:粗体;
    字体系列:Tahoma;
    }
    
    左边
    居中
    赖特
    
    HTML:

     <div id="cont">
            <table class="aa">
                <tr>
                    <td>
                        <div id="left">
                            <h3 class="hh">Content1</h3>
                            </div>
                        </td>
                    <td>
                        <div id="center">
                            <h3 class="hh">Content2</h3>
                            </div>
                     </td>
                    <td>
                        <div id="right"><h3 class="hh">Content3</h3>
                            </div>
                    </td>
                </tr>
            </table>
        </div>
    
    #cont 
    {
      margin: 0px auto;    
      padding: 10px 10px;
    }
    
    #left
    {    
      width: 200px;
      height: 160px;
      border: 5px solid #fff;
    }
    
    #center
    {
      width: 200px;
      height: 160px;
      border: 5px solid #fff;
    }
    
    #right
    {
      width: 200px;
      height: 160px;
      border: 5px solid #fff;
    }
    
    <div id="container" class="blog-pager">
       <div id="left">Left</div>
       <div id="right">Right</div>
       <div id="center">Center</div>    
    </div>
    
     #container{width:98%; }
     #left{float:left;}
     #center{text-align:center;}
     #right{float:right;}
    
    文本对齐:居中;
    提供完美的居中对齐

    使用Flexbox水平对齐三个div 下面是一个CSS3方法,用于在另一个div内水平对齐div

    #容器{
    显示:flex;/*建立flex容器*/
    弹性方向:行;/*默认值;可省略*/
    柔性包裹:nowrap;/*默认值;可以省略*/
    对齐内容:之间的空格;/*从默认值切换(flex start,见下文)*/
    背景颜色:浅黄色;
    }
    #容器>分区{
    宽度:100px;
    高度:100px;
    边框:2个红色虚线;
    }
    
    
    您可以尝试以下方法:

    您的html代码如下所示:

    [[LEFT]       [CENTER]        [RIGHT]]
    
    <div id="container">
      <div id="left"></div>
      <div id="right"></div>
      <div id="center"></div>
    </div>
    
    #container{width:100%;}
    #left{float:left;width:100px;}
    #right{float:right;width:100px;}
    #center{margin:0 auto;width:100px;}
    
    [[LEFT]       [CENTER]        [RIGHT]]
    
    所以,它的输出应该是这样的:

    [[LEFT]       [CENTER]        [RIGHT]]
    
    <div id="container">
      <div id="left"></div>
      <div id="right"></div>
      <div id="center"></div>
    </div>
    
    #container{width:100%;}
    #left{float:left;width:100px;}
    #right{float:right;width:100px;}
    #center{margin:0 auto;width:100px;}
    
    [[LEFT]       [CENTER]        [RIGHT]]
    

    我做了另一次尝试来简化这个过程,并在不需要容器的情况下实现它

    HTML


    如果希望保持html的顺序而不使用flex,您可以在

    的可能答案处看到它

    HTML


    有几种技巧可用于对齐元素

    01.使用桌面技巧

    .container{
    显示:表格;
    }
    .左{
    背景:绿色;
    显示:表格单元格;
    宽度:33.33vw;
    }
    .中心{
    背景:金;
    显示:表格单元格;
    宽度:33.33vw;
    }
    .对{
    背景:灰色;
    显示:表格单元格;
    宽度:33.33vw;
    }
    
    左边
    居中
    赖特
    
    使用我创建了3个等宽的div(在12列布局中,每个div有4列)。 这样,即使左/右部分的宽度不同(如果它们不会溢出列空间),也可以使中心区域居中

    HTML:

    为了创建没有库的结构,我从引导CSS复制了一些规则

    HTML:


    CSS网格可以轻松完成这项工作:

    #容器{
    显示:网格;/*(1)网格容器*/
    网格自动流动:列;/*(2)列布局*/
    对齐内容:间距;/*(3)对齐列*/
    背景颜色:浅黄色;
    }
    #容器>分区{
    宽度:100px;
    高度:100px;
    边框:2个虚线r
    
    <div id="container">
      <div id="left" class="col col-xs-4 text-left">Left</div>
      <div id="center" class="col col-xs-4 text-center">Center</div>
      <div id="right" class="col col-xs-4 text-right">Right</div>
    </div>
    
    #container {
      border: 1px solid #aaa;
      margin: 10px;
      padding: 10px;
      height: 100px;
    }
    .col {
      border: 1px solid #07f;
      padding: 0;
    }
    
    <div id="container">
      <div id="left" class="col">Left</div>
      <div id="center" class="col">Center</div>
      <div id="right" class="col">Right</div>
    </div>
    
    * {
      box-sizing: border-box;
    }
    #container {
      border: 1px solid #aaa;
      margin: 10px;
      padding: 10px;
      height: 100px;
    }
    .col {
      float: left;
      width: 33.33333333%;
      border: 1px solid #07f;
      padding: 0;
    }
    #left {
      text-align: left;
    }
    #center {
      text-align: center;
    }
    #right {
      text-align: right;
    }