Невозможно стилизовать новые типы ввода HTML5 в IE7 с помощью селекторов атрибутов типа - PullRequest
4 голосов
/ 10 марта 2012

Кажется, что даже при использовании shivs вы не можете сделать что-то вроде input[type="search"] для стилизации новых элементов ввода HTML5 в IE7.Вы можете увидеть пример на http://jsfiddle.net/2tmAp/ (конечно, смотрите его в режимах IE7).

Предположительно, IE7 устанавливает эти элементы на type="text", и даже если сам DOM остается прежним, это все ещекаким-то образом препятствует применению стилей.

Какой самый лучший способ исправить это?Есть ли что-то, что мы можем сделать в Javascript, чтобы заставить IE7 применять стили так же, как shivs работает с элементами?

1 Ответ

3 голосов
/ 10 марта 2012

Shiv - это просто способ принудительно создавать новые элементы независимо от того, поддерживается ли он или нет. но адресация типа и атрибутов это другое дело, а также селекторы. отступлением для новых «входов» является тип «текст» . это касается поиска, выбора даты и других (не может отслеживать новые).

Существует два ключа к пониманию того, почему автоматический резервный режим работает согласованно во всех основных браузерах:

  • Типом по умолчанию для элементов ввода является «текст» .
  • Все браузеры игнорируют неизвестные атрибуты.

Следствием этих двух моментов является то, что если вы скажете <input type="foo" bar="baz"/>, , то все браузеры будут обрабатывать это идентично <input type="text"/> (, если только "foo" не является распознанным типом ввода или "bar" - это распознанный атрибут элемента ввода).

, поскольку type="search" неизвестно IE7, оно возвращается к type="text", и вы не можете выбрать его в CSS как type="search", так как теперь оно type="text"

для решения вашей проблемы с селектором, вы можете попробовать использовать selectivizr , который использует возможности библиотек JS для сопоставления селекторов между кросс-браузерами (даже в неподдерживаемых браузерах, использующих некоторый псевдоселекторный скрипт соответствия). хотя я не знаю, подхватят ли они созданные Шив элементы.

или лучше, используйте обычный способ создания окна поиска в HTML / JS в качестве запасного варианта,


для простого ответа я бы сделал то, что прокомментировал другой парень. Просто создайте класс с именем «search» и примените это имя класса ко всем окнам поиска. стиль их так же, как тот, с которым вы использовали селектор, как:

input[type="search"],input.search{
    /*styles*/
}

<input type="search" class="search" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...