【问题标题】:Force divs to be on the same line强制 div 在同一行
【发布时间】:2014-04-19 12:39:20
【问题描述】:

我正在尝试制作一个带有文本的 div 和一个带有按钮的 div 并排放置。在您使屏幕真正变窄之前,它可以正常工作。有没有办法强制它们在同一行并让第一个 div 缩小以适应第二个的 min-width?

http://jsfiddle.net/C3877/9/

要明白我的意思,调整窗口大小,减小宽度,直到带有按钮的 div 被强制到第二行。这就是我想要阻止的。

注意:我只关心建议的修复是否在 Chrome 中正常工作。

【问题讨论】:

  • 正确的 div 是否必须随屏幕缩放或者可以是固定大小?
  • 我认为 Jack Pattishall Jr. 找到了正确的解决方案。

标签: html css google-chrome


【解决方案1】:

您可以使用display: inline-block,而不是浮点数。这将使所有事情都集中在一条线上,并尊重min-width。

内联块小提琴:http://jsfiddle.net/C3877/8/

另外,既然你只关心 Chrome,你可以看看flexible boxes

这里有一个(快速)flex fiddle:http://jsfiddle.net/C3877/11/

【讨论】:

  • inline-blocks 是我最初尝试的方式,所以我只需要缩小按钮的大小来完成这项工作。不过,灵活的盒子看起来很有用。
  • 通过这种方式,您将把 div 推到屏幕之外。
  • @JCBiggar 是的,这也是不可取的。但是,一个 div 覆盖另一个 div 对我来说会更成问题。我的方案的唯一解决方案是缩小按钮。
  • 我发现在我的答案中使用定位。查看jsfiddle.net/C3877/19
  • 把它缩得很远;右 div 将超过左 div。我需要左 div 垂直扩展而不是被覆盖。
【解决方案2】:

您可以对浮动右元素使用负数margin-left。请注意,此解决方案对左右 div 都使用浮点数,不使用浮点数,您有几十个解决方案(正如其他一些答案所指出的那样)。

#right_div {
...
   margin-left:-100%;
}

请注意,所有下一个内容都应包装在块元素中并使用clear:both。我还在此DEMO 中添加了带有background:green 的此类元素的示例。

【讨论】:

    【解决方案3】:

    我认为添加这个可以解决问题:

    @media (max-width:515px) {
        #left_div { width: 100%; margin-right: -100px }
    }
    

    【讨论】:

    • 这只会强制按钮覆盖部分 div。所以如果左边的 div 有圆角边缘或内容,它就会被切断。
    • 嗯...不,它没有。
    • 是的 puu.sh/8fHRH.png 按钮(右 div)在左 div 上方。左侧 div 需要垂直扩展以避免这种情况。
    • 它没有覆盖左边的div,它只是缩小它。
    • 我添加了圆角,以便您明白我的意思。如果它正确调整了左侧 div 的大小,但没有覆盖它,那么圆角应该始终可见。 jsfiddle.net/C3877/20这就是我的样子:puu.sh/8fIiz.png
    【解决方案4】:

    更新

    您可以使用边距和绝对定位:

    CSS

    #parent_div {
        width: 100%;
        height: 10%;
    
            position: relative;
            min-width: 40px;
    
    }
    
    #left_div {
        width: 80%;
        min-width: 100px;
        height: 80%;
        float: left;
        background-color: #000;
        color: #FFF;
    }
    
    #right_div {
        width: 15%;
        min-width: 100px;
        float: right;
        background-color: blue;
         position:absolute;
            right: 0px;
    }
    
    input[type=button] {
        font-size: 2rem;
    }
    

    查看演示:http://jsfiddle.net/C3877/19/

    当您在您的网站上移动它时,您必须使用一些 css 才能使其恰到好处。但这肯定是一个快速的解决方案。

    【讨论】:

    • 显然它所做的只是将min-width: 100px 替换为min-width: 15% 是什么使它起作用,但它不再尊重100px 的最小宽度。
    • 好吧,你必须去掉最小宽度,让它在更窄的屏幕上并排。除非你改变了其他 div 的宽度。
    • 我在原文中弄错了。按钮应该更大,我现在已经修复了。因此,使用您的修复程序将导致按钮离开页面的一侧。
    猜你喜欢
    • 2013-03-04
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2014-07-11
    • 2018-09-19
    • 2011-07-11
    相关资源
    最近更新 更多