Почему странные вещи в атрибуте цвет шрифта производят реальные цвета?

Возможный дубликат:
Почему HTML считает, что "chucknorris" - это цвет?

Я преподаю младший. высокий/средний класс веб-программирования, и мы начинаем с простых элементов и атрибутов, таких как шрифт и цвет, прежде чем перейти к CSS. Я знаю, что цвет устарел, а шрифт не включен в HTML5, но для целей обучения мне удобно начинать с простых тегов HTML и работать до CSS. Студенты получают много радости от возможности изменять цвета на странице в течение первой недели занятий. (Я также преподаю им шатер и мигание на 1-й неделе, но сообщаю им, что, если они когда-нибудь будут использовать их снова, они потеряют очки).

Один из учеников начал подавать домашнее задание с необычными вещами в значениях атрибутов цвета, таких как "Skittles" или "Spiderman". Я начал экспериментировать с этим и обнаружил, что почти все, что вы помещаете в атрибут color = "" в теге font, производит какой-то цвет. И кажется, что цвет согласован в самых последних версиях IE, Firefox, Chrome, Opera и Safari.

Я обнаружил, что включение "LuckyCharms" в качестве цвета CSS НЕ РАБОТАЕТ. Кажется, что работает только там, где цвета ожидаются в атрибутах HTML, например font color = "LuckyCharms" , или body bgcolor = "LuckyCharms" .

Я пытаюсь объяснить моему классу, почему это происходит, и до сих пор я не мог понять это, или Google - хороший ответ. Похоже, что это интерпретируется как цветовой код, но я не могу понять, как это сделать.

ОБНОВЛЕНИЕ: После некоторых проб и ошибок, я определил пятиэтапный алгоритм (используя предоставленную ссылку) для преобразования почти любой строки в соответствующий гексаговый цвет. Я предоставлю здесь алгоритм для назидания будущих посетителей:

  • Измените каждый не-шестнадцатеричный символ на 0.
  • Добавьте 0 в строку до тех пор, пока ее длина не будет кратной 3.
  • Разделите строку на 3 равные части.
  • Пока длина подстроки больше 2, а все три подстроки начинаются с 0, удаляем ведущие 0 из каждой строки.
  • Если длина подстроки еще больше 2, то обрезайте каждую подстроку на 2 символа.

Чтобы это, поместите подстроки вместе, и у вас есть шестнадцатеричный цветовой код. Я проверил этот алгоритм примерно с 20 различными образцами и сравнил результаты с помощью дополнительного набора цветов Firefox ColorZilla.

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

Ответ 1

Спецификация HTML 5 включает правила для анализа устаревших цветов.

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

Ответ 2

Очень интересно. Кажется, что браузер будет интерпретировать любой символ, который он может (a-f), и оставить остальное равным 0, если он не может совпадать. Например:

Spiderman
 00DE0 A

Тем не менее нужно больше экспериментировать.

Ответ 3

Это интригующий вопрос.

С помощью коротких экспериментов я обнаружил, что "Luck" производит одинаковый цвет (на мой взгляд, так или иначе) как "LuckyCharms" , но "LuckBeALady" дает вам более темный оттенок, а "LuckBeALadyTonight" - более синее.

Кстати, моя первая мысль заключалась в том, что она воздействовала на распознаваемые шестнадцатеричные символы, но это превращает "LuckyCharms" в cca, что делает черным. Комбинации 0 и шестнадцатеричных символов, как предполагает Мадара Учима, не смогли сделать те же зеленые травы, что и "LuckyCharms"

У вас нет ответа.

Ответ 4

Основной ответ на то, что ожидается, - "это зависит от браузера". Одна из проблем с предыдущими версиями HTML до 5 заключается в том, что неуказано, что происходит, когда браузер использует нестандартный HTML. Интерпретация от @Madara Uchiha является одним из примеров того, как браузер может интерпретировать спецификацию цвета, но он настолько же допустим, насколько это необходимо для браузера, чтобы сбой или извлечения лотка для компакт-дисков или изменение разрешения вашего монитора до 400x300 гарнизонная лавка Конечно, это не идеально, поэтому то, что вы видите, - это одна идея программиста, когда-то, что должно произойти, если встречается нестандартная спецификация цвета HTML.

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

Я бы сказал, что сейчас самое подходящее время поговорить с классом о соблюдении стандартов, поскольку это очень важная область понимания для студентов - и у некоторых профессионалов у меня есть несчастье узнать. Когда они говорят: "Но цвет Skittles работает отлично", вы можете сказать им, что он отлично работает, когда они смотрят на него, но вполне возможно, что он разрушит браузер своих инструкторов, заработав их большой жир F. Это как близко к реальному сценарию, как вы можете получить, когда некоторые из нас должны отказаться от наших выходных, потому что во время демонстрации кто-то еще дерьмовый код работает неправильно.

Я не горький. В основном:)