Какая логика стоит за текущей реализацией свойства padding?
Говоря кому-то, что отступы принимают только положительные значения, я понял, что не могу выделить разумного технического объяснения этому. Итак, я посмотрел и нашел то, что нашел.
С моей точки зрения, в принятом ответе недостаточно воды. Он несколько самоуверенный и пытается найти оправдания, а не причины статус-кво (в том смысле, что он не сфокусирован на каких-либо проблемах, которые могут вызывать отрицательные значения заполнения, или на том, почему у браузеров возникают проблемы с их применением). Я попытался определить это там, но вскоре понял, что вопрос в текущей форме не приблизит меня к правильному ответу. Вместо того, чтобы преследовать это, я решил спросить, где конкретно я бы попросил ответы, взятые из официальных и / или заслуживающих доверия источников.
Что будет неправильно, бессмысленно или противоречит основным принципам CSS относительно отрицательных значений заполнения?
По общему признанию, этот метод не требуется часто, но когда это так, единственный способ достичь эффекта - это добавить дополнительную обертку вокруг содержимого и использовать отрицательные поля обертки. Как бы то ни было, вы смотрите на это, это ниже номинала по сравнению с потенциальной техникой, использующей меньше разметки.
Относительно слабое (из моего POV) объяснение состоит в том, что padding
определяет отношение между содержанием и фоном. Но фоновые ограничения можно легко прикрепить к другим ограничениям блочной модели, используя box-sizing
, я верю padding
в конечном итоге определяет отношение между содержимым и областью границы, а соотношение между содержимым и фоном является результатом отношения по умолчанию между областью границы и фоном. Почему нам разрешено сдвигать эти границы только в одном направлении, а не в другом?
Покопав официальную документацию, я не нашел ни малейшего понятия о том, почему было принято это решение или на чем оно основывалось:
Значения заполнения не могут быть отрицательными.
... на уровне CSS 1, и
В отличие от свойств полей, значения для отступов не могут быть отрицательными.
... в CSS Level 2 (Revision 1) и в модели Basic-box.
Примечательно, что один из вопросов, обсуждаемых в проекте редакции, озаглавлен: " Проблема 23 Разрешить отрицательное заполнение?".
Кто-нибудь имеет какие-либо идеи, если он все еще находится на рассмотрении / обсуждении и какие аргументы / были брошены?
Редактировать, основываясь на комментарии @MrLister. Вот какой тип ответов я ищу:
- либо предоставляя техническую причину того, почему это будет плохой идеей и как это повлияет на другие свойства / текущую реализацию блочной модели и т. д.
- кто-то, кто участвовал в этом, чтобы подойти и сказать: "Возможно, мы поспешили, но тогда это казалось правильным решением, мы не думали об этом дважды";
В идеале, если причины (ы), по которым отрицательный отступ не был разрешен, больше не применяются, спецификация должна измениться, чтобы разрешить их в какой-то момент.
Я должен указать на то, что я действительно не склонен быть сторонником причин. В том смысле, что я знаю, если принять это за дыру, мой вопрос звучит жалобно. И это не то, что я хотел. Мне не очень интересно указывать пальцем. Я хотел знать, есть ли какие-нибудь ограничители шоу, заставить других людей рассмотреть это (возможно, они видят что-то, чего я пропускаю) и, если первоначальная (-ые) причина (-ы) больше не применяются, (надеюсь) получить вопрос, рассматриваемый теми, кто отвечает за то, куда сегодня идут стандарты CSS.
Я полагаю, что отрицательные значения дополнения были бы хорошим дополнением к инструментам любого современного веб-разработчика, и пока я не вижу каких-либо серьезных недостатков.