Як змінити заповнення DIV, не впливаючи на ширину / висоту?


93

У мене є div, для якого я хочу вказати ФІКСОВАНУ ширину та висоту, а також відступ, який можна змінити, не зменшуючи вихідну ширину / висоту DIV або не збільшуючи його, чи є для цього трюк CSS або альтернатива за допомогою відступів?

Відповіді:


72

Рішенням є обгортання вашого заповненого div з фіксованою шириною зовнішнього div

HTML

<div class="outer">
    <div class="inner">

        <!-- your content -->

    </div><!-- end .inner -->
</div><!-- end .outer -->

CSS

.outer, .inner {
    display: block;
}

.outer {
    /* specify fixed width */
    width: 300px;
    padding: 0;
}

.inner {
    /* specify padding, can be changed while remaining fixed width of .outer */
    padding: 5px;
}

Просто не хочу очищати, я не впевнений, але це буде працювати лише для горизонтального заповнення, чи не так? Як і висота: auto не заповнює батьківську, як ширина: auto.
Джонатан Азулай

200

Заявіть це у своєму CSS, і ви повинні бути добре:

* { 
    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box; 
     box-sizing: border-box; 
}

Це рішення можна реалізувати без використання додаткових обгортки.

Це змусить браузер обчислити ширину відповідно до "зовнішньої" ширини div, це означає, що відступ буде відніматися від ширини.


це працює як шарм, я новачок, просто пошукайте цю властивість, і це працює, чудова людина .....
ніда,

1
Чи є якісь побічні ефекти, про які я повинен пам’ятати, використовуючи це?
Раді

16
Це рішення краще прийнятого, і безпечно більше не використовувати префікси: shouldiprefix.com/#box-sizing
fgblomqvist

@adswebwork Ви заощадили мій великий обсяг мого часу. Дякую.
Хардік Чаудхарі,

17

Здається, ви хочете імітувати модель коробки IE6. Для цього ви можете використовувати властивість CSS 3 box-sizing: border-box . Це підтримується IE8, але для Firefox вам потрібно буде використовувати, -moz-box-sizingа для Safari / Chrome - використовувати -webkit-box-sizing.

IE6 вже обчислює висоту неправильно, тому ви добре працюєте в цьому браузері, але я не впевнений у IE7, я думаю, він буде обчислювати висоту однакову в режимах химерності.


css3 все ще дуже новий, як iPad :)
Райан,

10

спробуйте цей фокус

div{
 -webkit-box-sizing: border-box; 
 -moz-box-sizing: border-box;    
 box-sizing: border-box;      
}

це змусить браузер обчислити ширину відповідно до "зовнішньої" ширини div, це означає, що відступ буде відніматися від ширини.


5
це те саме, що відповідь @ adswebwork, правда? Я ціную пояснення того, як це працює, але це, мабуть, краще як коментар
craq

1
навіщо публікувати однакову відповідь
Ендрю

4

Для досягнення узгодженого результату крос - браузер, ви, як правило , додати ще divвсередині divі не дати , що немає явного вказівки ширини, а margin. Симуляція marginволі paddingдля зовнішнього div.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.