2013-12-23 9 views
0

Я пытаюсь преобразовать мой сайт из макета таблицы в сНу макета, в то время как с сервировкой стола все было более intuaitive, я застреваю каждую минуту с этим макетом сНа, вот моя текущей проблема -Каков наилучший способ заполнить этот div?

Я хочу текст в левом div, который будет дополняться слева и сверху. Если я положу левый DIV, весь div будет расширен (хотя контейнер div имеет определенную для него ширину 700 пикселей); Если я попытаюсь пометить текст сам по себе, он почему-то работает только для создания левого поля, но он не влияет на верхний край, который остается на 0px.

вот мой код:

<div id="container"> 
    <div id="left">I want some padding here 
     <div id="image">image</div> 
    </div> 
    <div id="middle"></div> 
    <div id="right"> 
     <div id="text">Text</div> 
    </div> 
    <br style="clear: left;" /> 
</div> 

CSS:

#container { 
border: 1px solid #DCD7D4; 
width: 700px; 
min-height: 680px; 
position: relative; 
margin-left: auto; 
margin-right: auto; 
} 
#left { 
float:left; 
width: 500px; 
min-height: 680px; 
background-color: #F6F1ED; 
} 
#left #image { 
position: absolute; 
left: 27px; 
bottom: 40px; 
background: green; 
width: 375px; 
height: 48px; 
} 
#right { 
float: left; 
width: 194px; 
min-height: 680px; 
background-color: #F2EEEF; 
} 
#right #text { 
position: absolute; 
left: 523px; 
top: 154px; 
background: yellow; 
width: 150px; 
height: 70px; 
} 
#middle { 
    float:left; 
    background: #0C9; 
background-image:url(midbg.png); 
    width: 6px; 
    min-height: 680px; 
} 
+0

Простейшее исправление звуков похоже на уменьшение ширины в соответствии с добавлением, которое вы добавляете. Увеличение ширины при добавлении отступов является нормальным для каждой модели CSS-блока, как указано фиршибарами (за исключением ie6 ... или когда вы используете предложение box-sizing danield). – JAL

ответ

4

Вы можете добавить отступы к вашему #left DIV вместе с box-sizing: border-box и макет должен оставаться в такте

#left 
{ 
    padding: x px; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box 
} 
+0

+1: избили меня до этого :) – NoobEditor

+0

, похоже, не работает для меня: /, divs все еще растягиваются, может быть, потому что у меня есть 3 divs бок о бок, нужно другое решение? – jayjay

+0

Кто-нибудь знает, почему он не работает? Я интересуюсь этим решением – jayjay

1

Как насчет любого из этих решений. Они работают в моем браузере:

<div id="container"> 
    <div id="left"><span style="padding-left: 10px; padding-top: 10px">I want some padding here</span> 
     <div id="image">image</div> 
    </div> 
    <div id="middle"></div> 
    <div id="right"> 
     <div id="text">Text</div> 
    </div> 
    <br style="clear: left;" /> 
</div> 

ИЛИ

<div id="container"> 
    <div id="left"><div style="padding-left: 10px; padding-top: 10px">I want some padding here</div> 
     <div id="image">image</div> 
    </div> 
    <div id="middle"></div> 
    <div id="right"> 
     <div id="text">Text</div> 
    </div> 
    <br style="clear: left;" /> 
</div> 
+0

дополнительный DIV, похоже, работает, но я не уверен, что добавление дополнительный div является оптимальным решением, я не уверен, какие другие аспекты следует учитывать здесь; span не работает для верхнего заполнения, только для левой прокладки по какой-то причине (как я упоминал в своем посте) – jayjay

+0

Я переделал много страниц других людей и обнаружил, что большинство людей используют много слоев вложенных элементов, часто вложенные div. Они являются строительными блоками страницы, основанной на div. –

+0

ok, верхняя прокладка будет работать только с добавлением также - position: absolute; – jayjay

1

если border-box не работает, то продолжительность должно работать для вас, проверить это demo

CSS

#left > span { 
    padding:100px; 
    position:absolute; 
    height:100%; 
    border:1px solid #000; 

} 

HTML

<div id="left"> 

    <span>I want some padding here</span> 
    <!-- rest of html --> 

`

EDIT

Поскольку ваш #left имеет ребенок divs внутри, вы не можете применить опцию дополнени к нему.

padding требуется на тексте непосредственно под #left Ид и не ребенок сНу, поэтому, span предлагается в качестве <span> является встроенным элементом и <div> является элементом уровня блока.

+0

спасибо, что похоже на мое имя пользователя, было уволено решение, не уверен, что это оптимальный вариант; высота: 100% не требуется, хотя – jayjay

+0

да ... видел, что поздно, подтвердите свой ответ, пожалуйста ..... btw, это единственный вариант, который у вас есть bcoz '# left', уже содержит другие' class'es в нем. ... так что либо предоставляйте вам '' '' '' '' '' '' '' '' '' '' заполнение '.... но если 'span' решает вашу проблему, я бы не предложил создать другой класс! :) – NoobEditor

+0

Мне любопытно узнать почему нет? не лучше ли иметь меньше встроенного кода дизайна, так что лучше включить дизайн в класс в .css-файле, чтобы очистить html? – jayjay

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