当前位置: 首页 > 面试题库 >

在同一行上左右对齐两个内联块

唐俊爽
2023-03-14
问题内容

如何对齐两个内联块,以便一个在左边,另一个在同一行?为什么这么难?是否有类似LaTeX的\ hfill这样的东西可以占用它们之间的空间来实现这一目标?

我不想使用浮点数,因为有了内联块,我可以将基线对齐。当窗口对于两个窗口都太小时,可以使用内联块将文本对齐方式更改为居中,并且它们将居中放置在另一个之上。相对(父)+绝对(元素)定位与浮点数存在相同的问题。

The HTML5:

<header>
    <h1>Title</h1>
    <nav>
        <a>A Link</a>
        <a>Another Link</a>
        <a>A Third Link</a>
    </nav>
</header>

The css:

header {
    //text-align: center; // will set in js when the nav overflows (i think)
}

h1 {
    display: inline-block;
    margin-top: 0.321em;
}

nav {
    display: inline-block;
    vertical-align: baseline;
}

Thery彼此相邻,但我希望nav右侧。


问题答案:

编辑:自从我回答这个问题以来已经过去了3年,我想还需要一种更现代的解决方案,尽管当前的解决方案是可行的:)

  1. Flexbox

到目前为止,它是最短且最灵活的。适用display: flex;于父容器,并通过调整其对儿童的安置justify-content: space-between;是这样的:

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

但是请注意,flexbox支持是IE10及更高版本。如果需要支持IE 9或更早版本,请使用以下解决方案:

2.您可以在text-align: justify此处使用该技术。

.header {
    background: #ccc; 
    text-align: justify;

    /* ie 7*/  
    *width: 100%;  
    *-ms-text-justify: distribute-all-lines;
    *text-justify: distribute-all-lines;
}
 .header:after{
    content: '';
    display: inline-block;
    width: 100%;
    height: 0;
    font-size:0;
    line-height:0;
}

h1 {
    display: inline-block;
    margin-top: 0.321em;

    /* ie 7*/ 
    *display: inline;
    *zoom: 1;
    *text-align: left; 
}

.nav {
    display: inline-block;
    vertical-align: baseline;

    /* ie 7*/
    *display: inline;
    *zoom:1;
    *text-align: right;
}


 类似资料:
  • 我试图在一个div中放两个跨度,每边一个,都与div的底部对齐,而不使用绝对定位(因为这忽略了填充等,我总是在使用它后感觉不好)。右跨度中的文本比左跨度中的文本高。如果我使用垂直对齐来定位它们,如果它们都是浮动的,就不会受到影响,但是如果它们都没有浮动,它们就不会正确地水平对齐。我不能保证两个跨度中的哪一个会有更多的文本。 http://jsfiddle.net/gsvfn07f/

  • 在Java中,如何使用printf()对同一行的输出进行一致的左对齐和右对齐?这是所有left aligned的代码: 这是所有东西都保持对齐的输出: 相反,如果第三个元素(0.20,1.00,9.00)是正确的,那么我想要的是什么。我在上面的输出中指出“l”是左对齐的,但我希望变量在“r”所在的位置是右对齐的。如何使右边的输出(0.20,1.00,9.00)右对齐,同时使左边的输出(苹果,派,奶

  • 问题内容: 我想在容器div中对齐3个div,如下所示: 容器div的宽度为100%(未设置宽度),调整容器大小后,居中div应保持居中。 所以我设置: 但它变成: 有小费吗? 问题答案: 使用该CSS,将您的div放置为这样(浮点数优先): PS 您也可以向右浮动,然后向左浮动,然后居中。重要的是浮子位于“主”中心部分之前。 PPS 您通常希望在此代码片段的最后:该代码片段将垂直延伸以包含两个侧

  • 问题内容: 使用典型的CSS,我可以在两列之间向左浮动另一列,并在两者之间留出一定的间距。我该如何使用flexbox? 问题答案: 您可以添加到父元素。这样做时,子级flexbox项将与相对侧对齐,并在它们之间留有空间。 您也可以添加到第二个元素以使其向右对齐。

  • 问题内容: 我正在使用flexbox对齐我的子元素。我想做的是将一个元素居中,而另一个保持最左对齐。通常我会使用来设置left元素。问题是将中心元素推离中心。这是可能的 ,而不 使用绝对定位? HTML和CSS 问题答案: 编辑: 请参阅下面的[Solo答案,这是更好的解决方案。 flexbox背后的想法是提供一个框架,可以轻松地将容器中尺寸可变的元素对齐。这样,提供一个布局而完全忽略一个元素的宽

  • 我想在中间对齐和。 如何使完全向右移动? 以前: 之后: https://jsfiddle.net/z44p7bsx/