Я работаю над всплывающим окном. Его структура очень проста и выглядит следующим образом:
<div class = "popup">
<div class = "upper">
<img src = "http://www.tapeta-mis-galazki-koala.na-pulpit.com/pokaz_obrazek.php?adres=mis-galazki-koala&rozdzielczosc=128x128" />
</div>
<div class = "description">This is a very interesting description of what you can see above.</div>
</div>
со стилями
.popup
{
position: fixed;
left: 50px;
top: 50px;
border: 1px solid;
background: #fff;
padding: 10px;
box-shadow: 0 0 5px #000;
}
.popup .upper {
min-width: 100px;
min-height: 100px;
border: 1px solid;
padding: 5px;
display: inline-block;
}
.popup .upper img {
display: block;
}
и вот скрипка с применяемым кодом.
Как вы можете видеть, div.popup
позиционируется как фиксированный для body
.
Я хочу добиться того, чтобы div.description
НЕ расширял свою родительскую ширину div.popup
когда он содержит много текста, вместо этого он должен обертывать текст, который должен быть многострочным, и иметь ширину div.popup
. Ширина div.popup
должна определяться шириной div.upper
и ее содержимым. Другими словами, я хочу иметь ширину div.description
AT MOST ширины div.upper
, независимо от ее (текстового содержимого div.description
).
Там эта небольшая проблема: содержимое изображения не является статическим и может быть динамически изменено, поэтому ширина не является постоянной.
Можно ли даже добиться этого с помощью CSS?
http://jsfiddle.net/de6fr/1/ - базовый пример того, как исправить
Вы в основном используете всплывающее окно в качестве контейнера, а это означает, что если вы хотите сохранить его ширину, то на что вы должны работать. Я использовал свойство max-width
с .popup
следующим образом:
.popup {
position: fixed;
left: 50px;
top: 50px;
border: 1px solid;
background: #fff;
padding: 10px;
box-shadow: 0 0 5px #000;
display: table;
width: 1px;
}
.popup > div {
display: table-row;
}
.popup .upper {
min-width: 100px;
min-height: 100px;
border: 1px solid;
padding: 5px;
}
.popup .upper img {
display: block;
}
Обновление - гибкий
Исправление для гибкости заключается в использовании CSS-хака, который в основном изменяет характер элемента на table
Характер CSS (каскадные таблицы стилей) означает, что довольно сложно получить родительский DIV, чтобы взять размер дочернего div без каких-либо сумасшедших идей. Однако ничего не мешает "таблице" с действительно малой шириной делать это, как в этом коде:
.popup
{
position: fixed;
left: 50px;
top: 50px;
border: 1px solid;
background: #fff;
padding: 10px;
box-shadow: 0 0 5px #000;
display: table;
width: 1px;
}
.popup .upper {
min-width: 100px;
min-height: 100px;
border: 1px solid;
padding: 5px;
display: table-row;
}
.popup .upper img {
display: block;
}
.popup .description {
display: table-row;
}
Вы не определили ширину для фиксированного элемента, поэтому добавьте некоторую ширину к вашему фиексированному элементу
.popup
{
position: fixed;
left: 50px;
top: 50px;
border: 1px solid;
background: #fff;
padding: 10px;
box-shadow: 0 0 5px #000;
width: 100%;
}
Добавьте свойство CSS в свой всплывающий класс и укажите его ширину
.popup
{
position: fixed;
left: 50px;
top: 50px;
border: 1px solid;
background: #fff;
padding: 10px;
box-shadow: 0 0 5px #000;
overflow:scroll;
width:400px;
}
image
затем добавить эту ширину к фиксированному элементу.popup