Создание div float слева, но не "падение", если текст слишком длинный
Прошу прощения за ужасный титул.
По существу, у меня есть div
, содержащий два div
с position: relative;
и float: left;
. Первый div
установлен на 200px
(в силу его содержимого), потому что все, что он будет содержать, не предназначен для увеличения ширины.
Однако второй div
я хочу расти только в стороне от содержащего div
. Содержащая div
не имеет ширины набора, так как у меня есть вертикальные экраны, и я знаю, что большинство людей имеют горизонтальную ориентацию. Я тестирую его на нескольких компьютерах, поэтому я знаю, как он выглядит в обеих версиях.
Однако, вернемся к точке, во второй div
, если я добавлю фразу дольше, чем остальная часть содержащего div
, то второй div
опустится ниже первого div
. Я не хочу, чтобы этот второй div
имел заданную ширину, так что есть способ установить максимальную ширину? И если да, то есть ли способ установить его на то, что осталось с содержащим div
? Мне бы очень хотелось, чтобы мне не пришлось снимать разрешение экрана, а что нет, так что, надеюсь, есть другой путь.
Спасибо за помощь.
Вырезать код и CSS на jsFiddle.net
Ответы
Ответ 1
overflow
- это волшебное слово.
Вы можете использовать его как для избавления от этого уродливого очищающего div, так и для того, чтобы второй div занял все свободное место рядом с поплавком.
Кроме того, правило .content div:last-child
, которое у вас есть в вашем CSS, применяется к пустому очищающему div вместо второго столбца, поэтому он фактически ничего не делает.
Вот как это будет выглядеть (и обновленная скрипка):
<!doctype html>
<style>
.content {
margin: 10px;
padding: 0;
border: 1px solid black;
overflow: hidden; /* replaces <div class="clear"/> */
}
.columns {
position: relative;
float: left;
padding-right: 20px;
margin-bottom: 10px;
}
.c2 {
float: none; /* Don't float this column... */
overflow: hidden; /* ... Create a new block formatting context instead */
padding-right: 10px;
word-wrap: break-word;
}
</style>
<div class="content">
<div class="columns">
<img src="#" height="200px" width="200px" />
</div>
<div class="columns c2">
TestingTestingTestingTesting
</div>
</div>
Ответ 2
Я не уверен, нужен ли вам второй div, который будет плавать, но вот пример, который, кажется, делает то, что вы хотите, когда второй div имеет поплавок, но с добавлением маржи 200px.
http://jsfiddle.net/chrisvenus/ZdFwD/1/
Я также поменял изображения для DIV с фиксированной шириной, так как на моем браузере сломанное изображение просто удалялось.
Если содержимое справа становится слишком большим и нерушимым, то переполнение гарантирует, что полосы прокрутки создаются для этого div вместо того, чтобы увеличивать размер div, а затем отбрасывать его или другое нежелательное поведение.
это может быть не идеально для ваших нужд, но если это не должно быть хорошим началом.:)
Ответ 3
Вопрос был немного расплывчатым, но я думаю, что max-width
- это то, что вам нужно - здесь образец HTML:
<html>
<head>
<style type="text/css">
#wrap {
position: relative;
}
.inner {
position: relative;
display: inline-block;
float: left;
max-width: 300px;
}
#one {
border: 1px solid red;
width: 200px;
}
#two {
border: 1px solid blue;
}
</style>
</head>
<body>
<div id="wrap">
<div id="one" class="inner">Insert long text...</div>
<div id="two" class="inner">Insert more long text...</div>
</div>
</body>
</html>
Надеюсь, я понял, что вы имели в виду правильно.