Що означає усміхнене обличчя ":)" у CSS?


321

Я помітив цей CSS-код у проекті:

html, body { :)width: 640px;}

Я давно працюю з CSS, але раніше не бачив цього ":)" коду. Це щось означає чи це просто друкарська помилка?


17
Мені це схоже на помилку друку. Розробник, який намагається розважитися, чи, можливо, спосіб для нього позначити області коду, які він або вона шукатиме?
Лі

2
У @stijn все ще може бути якийсь дивний специфічний для продавця код
Марк

22
@ series0ne Я вважаю, ви ніколи не бачили злому зірочки Internet Explorer.
Ніт

11
Якщо це дійсно злом браузера, ви хочете додати коментар у файл CSS, що пояснює це.
user247702

32
Моя здогадка: автор коду набрав :), думаючи, що акцент був приділений клієнту чату. Коли це не те, вони натискали на клієнт чату і продовжували звідти, ніколи не розуміючи, що вони набрали смайлик в останньому місці, на якому сидів курсор, - це файл CSS.
Натан

Відповіді:


279

З статті на javascriptkit.com , що застосовується для IE 7 та більш ранніх версій:

якщо ви додасте не алфавітно-цифрові символи, такі як зірочка ( *) безпосередньо перед назвою властивості, властивість буде застосовано в IE, а не в інших браузерах.

Також є злом для <= IE 8 :

div {
  color: blue;      /* All browsers */
  color: purple\9;  /* IE8 and earlier */
 *color: pink;      /* IE7 and earlier */
}

Однак це не гарна ідея, вони не підтверджують. Ви завжди можете працювати з умовними коментарями для націлювання на конкретні версії IE :

<!--[if lte IE 8]><link rel="stylesheet" href="ie-8.css"><![endif]-->
<!--[if lte IE 7]><link rel="stylesheet" href="ie-7.css"><![endif]-->
<!--[if lte IE 6]><link rel="stylesheet" href="ie-6.css"><![endif]-->

Але для тих, хто хоче побачити хак по-справжньому, відкрийте цю сторінку в останній версії IE у вас. Потім перейдіть до режиму розробника, виконавши F12. У розділі Емуляція ( ctrl+ 8) змініть режим документа 7і подивіться, що відбувається.

введіть тут опис зображення

Властивість, яка використовується на сторінці, є :)font-size: 50px;.


2
Я знав про "_" і "*" перед селектором, але не цей, про який ти сказав.
valerio0999

2
@vlrprbttst Це звичайні символи, які використовуються для зручності. Однак він робить висновок про всі не буквено-цифрові значення.
revo

1
Я відзначаю цю відповідь правильною, хоча і salman-a був правильним, але крихітним трохи повільніше. Я знав про цей злом, але завжди використовував "*". Той, хто робив цю сторінку, - жартівник;).
Марк

1
Я можу бути дурним, щоб щось тут пропустити, але чому він може це зробити, використовуючи 2 символи? Там написано "додати не алфавітно-цифрові", а не "додати одне чи більше ...". Або :означає щось інше? Інакше я не можу поставити *********************font-size: "150%";тощо?
Макс

1
Просто кинути зайву частину на цю відповідь. Відповідь чудова і правильна, але пропускає це той факт, що це не найкраща практика. Як правило, ви повинні зробити все можливе, щоб забезпечити найкращий досвід у всіх браузерах, якими користується ваша база користувачів. Не кажучи вже про те, на мою думку, ви не повинні підтримувати браузери, які компанія, яка їх зробила, вже не підтримує.
AlienDev

171

Схоже, хакер CSS орієнтується на браузери IE7 та попередні версії. У той час як це є недійсним CSS і браузери повинні ігнорувати це, IE7 і раніше буде аналізувати і виконувати це правило. Ось приклад цього злому в дії:

CSS

body {
    background: url(background.png);
    :)background: url(why-you-little.png);
}

IE8 (ігнорує правило)

Приклад 1 - IE8

IE7 (застосовує правило)

Приклад 1 - IE7

Зауважте, що це не повинно бути смайликом; BrowserHacks згадує:

Будь-яка комбінація цих символів: [перед тим, як ім'я властивості буде працювати на] Internet Explorer ≤ 7
! $ & * ( ) = % + @ , . / ` [ ] # ~ ? : < > |


Приклад підставки для хот-догів GAH є тут .



Так, від IE8 і вище IE вважає себе сумісним з CSS і поступово порушує всі свої специфічні виправлення css для IE. (отже, нам потрібно вдатися до рішення javascript)
Переверніть Верноой

39
Усі сайти повинні використовувати тему хот-догів для всіх користувачів <IE10. +1
Піт ТНТ

6
@ikkuh Справедливо кажучи, IE11 - це досить пристойний і сумісний браузер. З цієї причини вони відмовилися від підтримки умовних коментарів IE в ньому.
ajp15243

2
@ apj15243 Так, вони пройшли довгий шлях і сподіваємось, що вони продовжуватимуться, правда, мені все одно потрібна умовна підтримка, і це не тільки IE11, але також 10,9 і 8. Тож давайте побажаємо автоматичного- оновлення також, немає ніяких причин не запускати IE11 на XP, крім комерційних причин. Але це інша дискусія.
Flip Vernooij
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.