Рассмотрим следующий код :
#wrapper {
width: 500px;
border: 1px solid black;
}
#first {
width: 300px;
border: 1px solid red;
}
#second {
border: 1px solid green;
}
<div id="wrapper">
<div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
<div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
</div>
Я хотел бы, чтобы два div были рядом друг с другом внутри div-оболочки. В этом случае высота зеленого div должна определять высоту оболочки.
Как я могу добиться этого с помощью CSS?
#wrapper { display: flex; }
Ответы:
Плавать один или оба внутренних div.
Плавающий один div:
или если вы используете оба плавающих объекта, вам нужно будет поощрять div-обертку содержать обоих всплывающих дочерних элементов, или он будет думать, что он пуст, и не будет помещать границу вокруг них.
Плавающие оба div:
источник
overflow:auto
на #wrapper, чтобы размер по-прежнему соответствовал размеру содержимого. (Без необходимости четкого: как элемент)overflow: hidden
делает большую работу здесь! Тем не менее, это все еще отчасти волшебство для меня. Я думал, что этоoverflow: hidden
должно скрыть контент, если он не помещается в его контейнер. Но здесь поведение немного отличается. Не могли бы вы уточнить это, пожалуйста?overflow
свойство очистит плавает как по вертикали и горизонтали , которая , почему в моем первом примере,#second
не нужен левый край, свойство Переполнение работает, пока это значение неvisible
.. Я предпочитаю скрытый в авто для тех , кто только в сценариях так полоса прокрутки не генерируется случайно (что будет делать авто) .. в любом случае контент не будет скрыт в сценарии, подобном этому, поскольку он будет скрыт, только если он выходит за пределы вашей ширины 500 пикселей, но до тех пор, пока не будет содержимого высоты, будет обернуть в пределах ширины, как обычно .. не прячется;)Имея два div,
Вы также можете использовать
display
свойство:Пример jsFiddle здесь .
Если
div1
превышает определенную высоту,div2
будут размещены рядомdiv1
внизу. Чтобы решить эту проблему, используйтеvertical-align:top;
наdiv2
.Пример jsFiddle здесь .
источник
div
s сделаны,inline
вы не должны оставлять пробелы, новые строки и т.д. между ними в своем HTML. В противном случае браузеры будут отображать пространство между ними. Посмотрите на эту скрипку : вам не удастся удержать обаdiv
элемента в одной строке, если вы не поместите их теги без чего-либо промежуточного.Вы можете размещать элементы рядом друг с другом, используя свойство float CSS:
Вам нужно убедиться, что div-обертка допускает плавающие значения по ширине, а поля и т. Д. Установлены правильно.
источник
Попробуйте использовать модель flexbox. Это легко и кратко написать.
Live Jsfiddle
CSS:
направление по умолчанию - строка. Таким образом, он выравнивается рядом друг с другом внутри #wrapper. Но не поддерживается IE9 или меньше, чем те версии
источник
flex
. Спасибо!вот решение:
ваше демо обновлено;
http://jsfiddle.net/dqC8t/1/
источник
overflow: auto;
это все еще работает. Не могли бы вы привести пример, где это требуется?margin: 0 0 0 302px;
потому что это зависит отwidth: 300px;
. Но все равно спасибо!!Опция 1
Используйте
float:left
обаdiv
элемента и установите% width для обоих элементов div с общей общей шириной 100%.Используйте
box-sizing: border-box;
на плавающих элементах div. Значение border-box заставляет отступы и границы в ширину и высоту, а не расширяет их.Используйте clearfix,
<div id="wrapper">
чтобы очистить плавающие дочерние элементы, которые сделают div div масштабируемым до правильной высоты.http://jsfiddle.net/dqC8t/3381/
Вариант 2
Используйте
position:absolute
для одного элемента и фиксированной ширины для другого элемента.Добавьте позицию: относительно
<div id="wrapper">
элемента, чтобы сделать дочерние элементы абсолютно позиционными к<div id="wrapper">
элементу.http://jsfiddle.net/dqC8t/3382/
Вариант 3
Используйте
display:inline-block
обаdiv
элемента и установите% width для обоих элементов div с общей общей шириной 100%.И снова (так же, как в
float:left
примере) использоватьbox-sizing: border-box;
элементы div. Значение border-box заставляет отступы и границы в ширину и высоту, а не расширяет их.ПРИМЕЧАНИЕ: элементы inline-block могут иметь проблемы с пробелами, поскольку на них влияют пробелы в разметке HTML. Более подробная информация здесь: https://css-tricks.com/fighting-the-space-between-inline-block-elements/
http://jsfiddle.net/dqC8t/3383/
Последний вариант - использовать новую опцию отображения с именем flex, но учтите, что в игру может войти совместимость с браузером:
http://caniuse.com/#feat=flexbox
http://www.sketchingwithcss.com/samplechapter/cheatsheet.html
источник
float
не плавай мою лодку.inline-block
горные породы. (Извините.)Попробуйте использовать приведенные ниже изменения кода, чтобы поместить два элемента div друг перед другом.
Ссылка JSFiddle
источник
Это очень легко - вы можете сделать это трудным путем
или легкий путь
Там также, как миллион других способов.
Но я бы просто легким путем. Я также хотел бы сказать вам, что многие ответы здесь неверны, но оба способа, которые я показал, по крайней мере работают в HTML 5.
источник
Это правильный ответ CSS3. Надеюсь, что это вам как-то сейчас помогает: D Я действительно рекомендую вам прочитать книгу: https://www.amazon.com/Book-CSS3-Developers-Future-Design/dp/1593272863 На самом деле я решил это решение, прочитав эту книгу сейчас , : D
источник
Добавить
float:left;
свойство в обоих div.Добавить
display:inline-block;
недвижимость.Добавить
display:flex;
свойство в родительском div.источник
Мой подход:
CSS:
источник
источник
В пользовательском интерфейсе материала и response.js вы можете использовать сетку
источник