Страницы

Поиск по вопросам

суббота, 13 октября 2018 г.

Почему блок при применении `padding` увеличивает свои размеры?

В заглавии блоки multi-accordion-title и находящийся в нём catalog-title почему-то увеличивают с размер, когда применяется padding хотя их родительский блок шириной 240px. Как это исправить?
$('.multi-accordion li > a').next().parent().addClass('has-children') $('.multi-accordion .has-children > a').click(function(e) { var li = $(this).parent(); li.parent('ul').find('.open').add(li).toggleClass('has-children open').children('ul'); e.preventDefault(); }); .body { } .col-left-first { display: block; position: relative; width: 240px; margin-left: 240px; box-sizing: border-box; } .multi-accordion-catalog { display: block; position: relative; width: 100%; } .multi-accordion { line-height: 40px; margin: 0; color: #646464; padding: 0; font-family: "Helvetica Neue", Arial, sans-serif; font-weight: normal; font-size: 16px; text-transform: none; } .multi-accordion ul { display: none; list-style: none; padding: 0px; } .multi-accordion li { list-style: none; } .multi-accordion > li > a{ } .multi-accordion > li > ul { padding-left: 8px; } .multi-accordion > li > ul > li > ul { padding-left: 8px; } .multi-accordion a, .multi-accordion a:link, .multi-accordion a:visited { display: block; text-decoration: none; padding: 0 24px 0 10px; color: #646464; position: relative; } .multi-accordion a:hover { } .multi-accordion > a:only-child:link, .multi-accordion > a:only-child:visited { color: blue; } .multi-accordion > a:only-child:hover { text-decoration: underline; background: transparent; } .multi-accordion-title { display: inline-block; position: relative; width: 100%; padding-right: 40px; margin-bottom: 12px; } .multi-accordion-title:after { content: ''; position: absolute; width: 0; height: 0; border-style: solid; top: 100%; left: -12px; border-width: 0 12px 12px 0; border-color: transparent #cccccc transparent transparent; } .catalog-title { display: inline-block; position: relative; height: 40px; width: 100%; font-family: "Helvetica Neue", Arial, sans-serif; font-weight: 600; font-size: 16px; text-transform: uppercase; background-color: #e1e1e1; padding: 9px 0 0 10px; box-shadow: -4px 4px 4px rgba(0, 0, 0, 0.2); } .catalog-title:before { content: ''; position: absolute; top: 0; left: -12px; height: 100%; width: 12px; background-color: #e1e1e1; } .catalog-title:after { content: ''; position: absolute; top: 0; left: 100%; border-style: solid; border-width: 0 0 40px 40px; border-color: transparent transparent transparent #e1e1e1; } .has-children, .open { position: relative; } .has-children > a:before , .open > a:before { content: ''; position: absolute; height: 24px; width: 24px; top: 8px; right: 4px; } .has-children > a:before { background: url(https://cdn2.iconfinder.com/data/icons/ios-7-icons/50/down4-16.png) no-repeat; } .open > a:before { background: url(https://cdn1.iconfinder.com/data/icons/mayssam/512/Top_2-16.png) no-repeat; } .multi-accordion .open > ul { display: block; }



Ответ

По умолчанию значение padding не включается в высоту и ширину блока. Либо отнимайте от размеров высоты и ширины значения padding, либо задавайте целевому блоку свойство box-sizing:border-box;, которое включит внутренние отступы и границы в значения ширины и высоты элемента
.multi-accordion-title { box-sizing: border-box; ... }

Комментариев нет:

Отправить комментарий