Почему CSS не поддерживает отрицательное заполнение?


Я видел это много раз, что перспектива негативного заполнения может помочь развитию CSS некоторых элементов страницы стать лучше и проще. Тем не менее, нет никакого положения для отрицательного заполнения в W3C CSS. В чем причина этого? Есть ли какие-либо препятствия к собственности, которая предотвращает его использование как таковое? Спасибо за ваши ответы.

обновление

Как я вижу, например, в случае, если вы используете шрифт, который имеет что-то, скажем, 20px вертикального интервала, и вы хотите применить пунктирную границу к нижней части шрифта, скажем, когда появляется гиперссылка. В таких случаях вы найдете стиль слишком потрепанным, так как пунктирная граница появится на 20 пикселей ниже указанного слова. если вы используете отрицательную маржу, это не сработает, так как маржа изменяет область за пределами границ. Отрицательная прокладка может помочь в таких ситуациях.

7 112

7 ответов:

недавно ответил на другой вопрос где я обсуждал почему модель коробки такова, как она есть.

есть конкретные причины для каждой части модели. Заполнение предназначено для расширения фона за пределы его содержимого. Если вам нужно shrink фон контейнера, вы должны сделать родительский контейнер правильного размера и дать дочернему элементу некоторые отрицательные поля. В этом случае содержание не является мягкий, он переполнен.

заполнение по определению является положительным целым числом (включая 0).

отрицательное заполнение приведет к тому, что граница свернется в содержимое (см. box-model страница на w3) - это сделает область содержимого меньше, чем содержимое, что не имеет смысла.

Это может помочь, кстати:

The

Я хотел бы описать очень хороший пример того, почему negative padding было бы полезно и потрясающе.

как все мы, разработчики CSS, знаем, вертикальное выравнивание динамического размера div внутри другого-это хлопот, и по большей части, рассматривается как невозможное только с помощью CSS. Инкорпорация negative padding может это изменить.

пожалуйста, просмотрите следующий HTML:

<div style="height:600px; width:100%;">
    <div class="vertical-align" style="width:100%;height:auto;" >
        This DIV's height will change based the width of the screen.
    </div>
</div>

С помощью следующего CSS мы сможем вертикально центрировать содержимое внутренний div в наружной div:

.vertical-align {
    position: absolute;
    top:50%;
    padding-top:-50%;
    overflow: visible;
}

позвольте мне объяснить...

абсолютно позиционирование верхней части внутреннего div на 50% помещает верхний край внутреннего div в центр внешнего div. Довольно просто. Это потому что процентное позиционирование относительно внутренних размеров родительского элемента.

процентное заполнение, С другой стороны, основано на внутренних размерах целевой элемент. Итак, применив свойство padding-top: -50%; мы сдвинули содержимое внутреннего div вверх на расстояние 50% от высоты содержимого внутреннего div, поэтому центрируя содержимое внутреннего div в пределах внешнего div и по-прежнему позволяет размер высоты внутреннего div, чтобы быть динамическим!

если вы спросите меня OP, это будет лучший вариант использования, и я думаю, что он должен быть реализован только так, чтобы я мог сделать этот хак. лол. Или они должны просто исправьте функциональность vertical-align и дайте нам версию vertical-align это работает на всех элементах.

вы спросили, почему, а не как обмануть он:

обычно из-за лени программистов начальной реализации, потому что они уже приложили больше усилий в других функциях, обеспечивая более странные побочные эффекты, такие как поплавки, потому что они были больше запрошены дизайнерами тогда, и все же они не нашли времени, чтобы позволить это, поэтому мы можем использовать четыре свойства, чтобы толкать / тянуть элемент против его соседей (теперь у нас есть только четыре, чтобы толкать, и только 2, чтобы тянуть.)

когда html был разработан, журналы любили текст, отраженный вокруг изображений тогда, теперь ненавидели, потому что сегодня у нас есть сенсорные тенденции, и любят квадратные вещи с большим количеством пространства и ничего не читать. Вот почему они оказывают большее давление на поплавки, чем на центрирование, или они могли бы спроектировать что-то вроде margin-top: fill; или margin: average 0; чтобы просто выровнять содержимое в нижней части, или распределить его дополнительное пространство вокруг.

в этом случае я думаю, что это не было реализовано из-за та же причина, что делает CSS отсутствие :parent псевдо-селектор: для предотвращения зацикливания оценок.

не будучи инженером, я вижу, что CSS прямо сейчас сделан для рисования элементов один раз, помните некоторые свойства для будущих элементов, которые будут окрашены, но никогда не возвращайтесь к уже окрашенным элементам.

вот почему (я думаю) заполнение рассчитывается по ширине, потому что это значение, которое было доступно на момент начала его рисования.

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

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

Если вы видите приложения со сложным оплавлением и позиционированием, такие как InDesign, вы не можете прокручивать так быстро! Это требует больших усилий как от процессоров, так и от графической карты, чтобы перейти к следующим страницам!

Итак, рисование и расчет вперед и забывание об элементе, когда-то нарисованном, теперь это кажется обязательным.

какова была бы цель отрицательного заполнения? Заполнение используется для сжатия содержимого в его поле, оставляя пространство между границей и содержимым. Если только цель не состоит в том, чтобы вытащить содержимое из своей коробки за ее границы, которые я не вижу полезными. Может быть у кого-то может быть другое мнение.

установка Iframe внутри контейнеров не будет соответствовать размеру контейнера. Это добавляет около 20 пикселей отступа. В настоящее время нет простого способа исправить это. Вам нужен javascript (http://css-tricks.com/snippets/jquery/fit-iframe-to-content/)

отрицательные поля были бы простым решением.