2013-12-18 2 views
1

Иногда мне нужно ограничить раздел страницы фиксированной шириной. Но фон должен расширять все доступное пространство.Исправлена ​​ширина, но переменный фон с CSS3

С CSS2 Я использовал, чтобы сделать что-то вроде этого (jsfiddle: http://jsfiddle.net/fniwes/wwVp4/)

CSS:

#container { background-color: #ddd; } 
#content { width: 300px; margin: 0 auto; } 

HTML:

<div id="container"> 
    <div id="content">All the content inside container should be limited to 300px but the background should cover all the screen width</div> 
</div> 

Содержание здесь это обычный текст, но это обычно нечто более сложное.

Есть ли лучший способ добиться того же результата без дополнительного тега #content? Я не против использования CSS3 или чего-то, что поддерживается только Chrome или Firefox.

Только для уточнения. Я хочу удалить тег #content. Я хочу, чтобы разметка будет

<div id="container"> 
    All the content bla bla 
</div> 

(и я хочу, чтобы стиль не тега, кроме #container .. возможно это не возможно, но, возможно, есть что-то новое в CSS3 или другом предложении, что я не знаю)

ответ

2

Существует функция известково() в CSS3, вы можете использовать его как это:

#container { background-color: #ddd; padding-left: calc(50% - 150px); padding-right:calc(50% - 150px);} 
+1

Хорошее решение! И calc() поддерживается в большинстве браузеров: http://caniuse.com/#feat=calc, но иногда необходим префикс -webkit. – Willem

0

Есть ли какая-либо конкретная причина, по которой вы против использования контейнера div? Вы можете сделать:

#content { background-color: #ddd; width: 100%; margin: 0; padding: 0 50%; } 

Но я бы не рекомендовал это и лучшее решение по-прежнему использовать контейнеры

+0

Причина в том, что я хочу узнать лучшие способы делать вещи, которые иногда являются ограничениями, потому что технологические причины, а другие - простое невежество. На самом деле я использую контейнеры, но каждый раз, когда я должен добавлять тег только для целей макета, я чувствую, что делаю что-то неправильно. (особенно, когда одна и та же проблема возникает несколько раз в разных проектах). Btw. ваше решение не поддерживает ширину 300 пикселей, оно просто заставляет контент начинаться посередине контейнера. – Fernando

+0

Да, я знаю об этом, потому что, насколько мне известно, нет возможности создать div, который будет растягиваться на 100%, а также ограничивать содержимое внутри фиксированной шириной пикселя. Нет ничего плохого в использовании дополнительных divs в качестве контейнеров, это неплохая практика. – jmore009

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