Що означає властивість із зіркою у CSS?


85

Сьогодні я переглядав файл css і знайшов такий набір правил:

div.with-some-class {
    display:block;                   
    margin:0;
    padding:2px 0 0 0;
    *padding:1px 0 0 0;
    font-size:11px;   
    font-weight:normal;
    *line-height:13px;
    color:#3D9AD0;
}

Що означає зірка в * заповнення і * висота лінії?

Дякую.

Відповіді:


98

Це "злом власності зірки" за тим самим принципом, що і "підкреслення зламу". Він включає сміття перед властивістю, яку IE ігнорує (* працює до IE 7, _ до IE 6).


7
Дякую! І я подивився на "зоряний злом власності" і знайшов цей чіткий і вичерпний допис Еда Еліота: "Порада CSS: Орієнтація на IE 5.x, 6 та 7 Окремо" над ejeliot.com/blog/63
Маджид Фуладпур

1
замість того, щоб використовувати хакери css, ви також можете спробувати умовні коментарі для, тобто, перевірити quirksmode.org/css/condcom.html форму більше інформації.
Capi Etheriel

Слід зазначити, що Safari (7.0.1) та версії до нього (не вдається перевірити) видаватимуть попередження консолі, якщо ви використовуєте хакерство зірки.
Jim

RIP IE7 та подібні «виправлення».
ChristoKiwi

примітка: "Оскільки умовні коментарі використовують структуру коментарів HTML, їх можна включати лише у файли HTML, а не у файли CSS" quirksmode.org/css/condcom.html
Джордж Бірбіліс

32

У CSS? Нічого; це помилка.

Через помилки в деяких версіях Internet Explorer вони не будуть правильно ігнорувати недійсне ім’я властивості, тому це один із способів надання CSS, характерний для цих браузерів.

Однак використання умовних коментарів є зрозумілішим та безпечнішим.


2
Справді. Слід уникати злому CSS, що не є дійсним CSS; Ви ніколи не знаєте, що може зробити з ними майбутній браузер.
bobince

@bobince Я усвідомлюю, що ви зробили цей коментар ще в минулому, але тепер ми можемо бути абсолютно впевненими, як кожен майбутній браузер буде інтерпретувати це як алгоритм синтаксичного аналізу CSS дуже суворий і говорить браузеру мовчки ігнорувати такі правила.
mgol

1
@m_gol - Ні, ми не можемо. Ми не знаємо, що скаже майбутня специфікація CSS про значення а *перед властивістю. Якщо це отримає значення, то поточні браузери ігноруватимуть його, дозволяючи безпечно додавати розширення. У цьому полягає сенс правила "потрібно ігнорувати".
Квентін

8

Символ зірочок є дійсним символом підстановки в CSS. Поодинкове використання означає, що наступні властивості CSS будуть використані для всіх вузлів елементів у DOM. Приклад:

*{color:#000;}

Вищевказане властивість буде застосовано до всіх елементів DOM, тим самим перемагаючи природний каскад у CSS. Це можна замінити лише спеціальним націлюванням елементів DOM там, де це націлювання починає унікальний посилальний ідентифікатор. Приклад:

#uniqueValue div strong{color:#f00;}

Вищевказана властивість замінить підстановочний знак і зробить текст усіх сильних елементів, що трапляються в div всередині елемента зі значенням атрибута id "uniqueValue".

Використання універсально застосованих символів підстановки, таких як перший приклад, може бути швидким і брудним методом написання таблиці стилів скидання. Це швидко і брудно, тому що детальне визначення презентації після шаблону, ймовірно, створить надзвичайно роздутий аркуш стилів. Якщо ви збираєтеся використовувати підстановочний знак, я б запропонував використовувати його більш конкретно, наприклад:

* strong{color:#f00;}

Наведений вище приклад зробить текст усіх сильних елементів червоним кольором, незалежно від інших властивостей CSS, не вказаних з унікальним ідентифікатором. Це вважається набагато безпечнішим, ніж використання декларації "!

Астерики у вашому прикладі знаходяться не в тому місці, оскільки вони, здається, трапляються всередині оголошень властивостей, коду, який входить у фігурні дужки, і це, ймовірно, призведе до помилки.


4
Відповідає, на що я погуглив, навіть якщо це не правильна відповідь
Стів

4

Це хак для IE7.

Якщо ви напишете це:

.test {
    z-index: 1;
    *z-index: 2;
}

на всіх навігаторах, які відповідають стандарту W3C <div class="test"></div>HTMLElement, є, z-index: 1але для IE7 цей елемент має z-index: 2.

Це не є стандартним.

Щоб домогтися того ж із стандартом W3C, виконайте такі дії:

  • Додайте умовний коментар Internet Explorer (це простий HTML-коментар для всіх інших навігаторів, тож це стандартний спосіб).

    <! - [якщо IE 7]> <html lang = "fr" class = "ie7"> <! [endif] ->

    <! - [if gt IE 7]> <! -> <html lang = "fr"> <! - <! [endif] ->

І використовуйте попередні правила так:

.test {
    z-index: 1;
}
.ie7 .test {
    z-index: 2;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.