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

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

UPDATE

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

Ответ 1

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

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

Ответ 2

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

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

Ответ 4

Я хотел бы описать очень хороший пример того, почему 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 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, которая работает на всех элементах.

Ответ 5

Вы спросили, ПОЧЕМУ, а не как обмануть его:

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

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

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

Не будучи инженером, я вижу, что CSS сейчас используется для красок элементов один раз, помня некоторые свойства для будущих элементов, которые нужно нарисовать, но НИКОГДА не возвращайтесь к уже окрашенным элементам.

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

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

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

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

Итак, рисуем и вычисляем вперед и забываем об элементе, когда-то рисованном, на данный момент это кажется ДОЛЖНЫ.

Ответ 6

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

Ответ 7

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

Отрицательные поля будут легким решением.