2009-11-09 9 views
181

У меня есть div с фиксированной шириной с двумя кнопками в нем. Если наклейки кнопок слишком длинны, они завертываются - одна кнопка остается на первой строке, а следующая рядом ниже, а не рядом с ней.CSS: Не обертывайте содержимое div

Как я могу заставить div развернуть, чтобы обе кнопки были на одной линии?

+0

Я даже не могу войти с моим OpenID в doctype, поэтому вопрос, который лучше всего подходит, здесь. –

+2

@nicholaides Я согласен, что это будет работать на doctype, но я думаю, что это полностью законно и в отношении SO. –

+0

@Flimzy Я стою исправлено. – nicholaides

ответ

344

Попробуйте white-space:nowrap;

+5

FYI: В соответствии с [документами MDN на 'white-space'] (https://developer.mozilla.org/en-US/docs/Web/CSS/white-space#Browser_compatibility) поддерживается значение' nowrap' в IE 6+, хотя другие значения - это только IE 8+ –

0

Если DIV имеет фиксированную ширину она не должна расширяться, потому что вы исправили его ширину. Однако современные браузеры поддерживают свойство CSS min-width.

Вы можете эмулировать свойство min-width в старых браузерах IE с помощью выражений CSS или с использованием автоматической ширины и с пространственным объектом в контейнере. Это решение не элегантно, но может сделать трюк:

<div id="container" style="float: left"> 
    <div id="spacer" style="height: 1px; width: 300px"></div> 
    <button>Button 1 text</button> 
    <button>Button 2 text</button> 
</div> 
4

Если вы не заботитесь о минимальных ширинах для DIV и действительно просто не хочет, чтобы ДИВ расширить по всему контейнеру, вы можете плавающий слева - плавали дивы по умолчанию расширения для поддержки их содержание, например, так:

<form> 
    <div style="float: left; background-color: blue"> 
     <input type="button" name="blah" value="lots and lots of characters"/> 
     <input type="button" name="blah2" value="some characters"/> 
    </div> 
</form> 
63

сочетание обоих float: left;white-space: nowrap; работал для меня.

Каждый из них независимо не добился желаемого результата.

-2

Принуждение кнопок в одной строке приведет к тому, что они выйдут за пределы фиксированной ширины div, в котором они находятся. Если вы в порядке с этим, вы можете сделать еще один div внутри div, который у вас уже есть. Новый div, в свою очередь, будет удерживать кнопки и иметь фиксированную ширину любого пространства, причем обе кнопки должны оставаться в одной строке.

Вот пример:

<div id="parentDiv" style="width: [less-than-what-buttons-need]px;"> 
    <div id="holdsButtons" style="width: [>=-than-buttons-need]px;"> 
     <button id="button1">1</button> 
     <button id="button2">2</button> 
    </div> 
</div> 

Вы можете рассмотреть overflow свойство для фрагмента содержания за пределами parentDiv границы.

Удачи вам!

2

Я не знаю причины этого, но я установил свой родительский контейнер в display:flex, а дочерние контейнеры - display:inline-block, а оставшаяся встроенная строка, несмотря на общую ширину детей, превышающих родительский.

Не нужно было играть с максимальной шириной, максимальной высотой, пробелом или чем-либо еще.

Надеюсь, что кто-то поможет.

+0

. Это работало для меня, когда других подходов, перечисленных выше, не было. Все, что мне нужно, это «display: flex». Больше ничего не нужно. – HerrimanCoder

Смежные вопросы