Отрицательная маржа, взлом или нет?

Я сталкивался с различными сообщениями, в которых люди заявляют, что отрицательная маржа — это взлом. Таким образом, я отклонился от их использования, за исключением особых случаев, когда я могу оправданно их использовать, например, вывод текста за пределы экрана с помощью margin:-9999px

Вопрос, являются ли отрицательные поля хаком и когда правильно использовать отрицательные поля? Я видел, как они использовались в 960 Grid System с .push и .pull, а также в любых других случаях, когда их можно было бы использовать?!?!


person xandercoded    schedule 20.08.2010    source источник


Ответы (3)


Отрицательные поля разрешены в соответствии с спецификациями W3C. Я использовал их, чтобы позволить вещам нависать над контейнером.

person Dustin Laine    schedule 20.08.2010
comment
У меня нет голосов, но соответствие спецификациям W3C - один из самых важных аргументов... - person Pekka; 20.08.2010
comment
Подчеркнуто сравнением характеристик полей и границ (которые не могут быть отрицательными) - person Quentin; 20.08.2010

Я бы сказал, что это не взлом: это определенное, логичное поведение; поддерживается во всех браузерах; можно ожидать его поддержки в будущих версиях браузеров (отсутствие поддержки в будущем — самый важный аргумент против взлома).

Кроме того, как указывает @durilai, они официально санкционированы (хотя и с ограничениями) W3C.

Эта статья журнала Smashing Magazine поддерживает дело.

person Pekka    schedule 20.08.2010

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

По возможности я использую position: relative и отрицательные верхнее и левое значения, чтобы перетаскивать элементы в новые места. Это возможно не для каждого случая, но я считаю, что он ведет себя более последовательно во всех разновидностях Internet Explorer.

person Pat    schedule 20.08.2010
comment
@Tomas вот это выскакивает: haslayout.net/css/Negative-Margin-Bug . В основном я имею в виду, что для их использования вам обычно приходится применять другой хак, чтобы получить согласованное отображение в IE6/7. Это не обязательно помечает отрицательную маржу как взлом, но дало мне достаточно причин, чтобы избегать их использования, когда это возможно. Я обнаружил, что самый простой способ получить отображение в x-браузере — это положиться на надежный и простой CSS (позиция и плавающие элементы с определенной шириной). - person Pat; 21.08.2010
comment
+1 за относительное позиционирование. Положение установки: относительное; может волшебным образом исправить и другие ошибки. - person Kevin C.; 31.08.2011
comment
Проблема в том, что относительное позиционирование не влияет на последующие элементы, в отличие от отрицательных полей. Это ключевое различие между ними. - person Simon East; 15.05.2012