У меня есть унаследованный проект, и есть места, где он совершенно беспорядок. Это одна из них. Мне нужно ориентироваться только на IE (любая версия).
#nav li {
float: left;
height: 54px;
background: #4f5151;
display: table;
border-left: 1px solid grey;
}
Для ясности: внутри встроенной таблицы стилей и без добавления идентификаторов или классов к тегам в html, мне нужно применять стиль границы только в том случае, если пользователь использует IE. Как я могу это сделать?
Изменить: нашел решение для Firefox, редактирование вопроса, чтобы отразить это.
Ответы:
Internet Explorer 9 и ниже: вы можете использовать условные комментарии для загрузки таблицы стилей, специфичной для IE, для любой версии (или комбинации версий), на которую вы хотите специально ориентироваться. Как показано ниже, используя внешнюю таблицу стилей.
Однако, начиная с версии 10, условные комментарии больше не поддерживаются в IE.
Internet Explorer 10 и 11: создайте медиазапрос, используя -ms-high-контраст, в котором вы разместите свои стили CSS для IE 10 и 11. Поскольку -ms-high-контраст специфичен для Microsoft (и доступен только в IE 10+), он будет анализироваться только в Internet Explorer 10 и более поздних версиях.
Microsoft Edge 12: может использовать правило @supports. Вот ссылка со всей информацией об этом правиле.
Встроенное правило IE8 обнаружения
У меня есть еще 1 вариант, но он обнаруживает только IE8 и ниже.
Как вы указали для встраивания таблиц стилей. Я думаю, вам нужно использовать медиа-запрос и комментарий к условию для версии ниже.
источник
-ms-high-contrast:active
влияет на Edge, если система находится в режиме высокой контрастности.@supports
Решение действительно велико: обнаружение особенности является способом пойти. Я был готов нацелиться на Edge из-за отсутствия поддержкиwidth: max-content
:@supports not (width: max-content)
делает это аккуратно и будет приятно проигнорировано, когда Edge в конечном итоге поддержит его. (Это должно произойти осенью 2019 года, так как он должен переключиться на Chromium для рендеринга.)Вот коллекция медиа-запросов, которые позволят вам сделать это для любой версии Internet Explorer (от IE6 до IE11 +), Firefox, Chrome & Safari (EDIT: также добавлена Opera).
IE 6
или
IE 7
или
IE 6 и 7
или
или
IE 6, 7 и 8
IE 8
или
IE 8 Standards Mode
IE 8,9 и 10
Только IE 9
IE 9 и выше
IE 9 и 10
Только IE 10
IE 10 и выше
или
IE 11 (и выше ..)
Firefox (любая версия)
Firefox (Quantum Only / Stylo)
Firefox Legacy (предварительная версия)
Webkit (Chrome & Safari, любая версия)
Google Chrome (29+)
Сафари (7.1+)
Сафари (с 6,1 до 10,0)
Сафари (10,1+)
Опера (12+)
Опера (11 и ниже)
Для получения дополнительной информации или дополнительных медиа-запросов посетите веб-сайт browserhacks.com и / или ознакомьтесь с этой записью в блоге, которую я написал по этой теме.
источник
При использовании
SASS
я использую следующие 2@media queries
для целевой IE 6-10 и EDGE.http://keithclark.co.uk/articles/moving-ie-specific-css-into-media-blocks/
редактировать
Я также нацеливаюсь на более поздние версии EDGE, используя
@support queries
(добавьте столько, сколько вам нужно)https://jeffclayton.wordpress.com/2015/04/07/css-hacks-for-windows-10-and-spartan-browser-preview/
источник
Для таргетинга IE только в моих таблицах стилей я использую этот Sass Mixin:
источник
Другое рабочее решение для специфического стиля IE
И тогда ваш селектор
источник
После проблем с сайтами, ломающимися на Edge при использовании режима High Contrast, я наткнулся на следующую работу Джеффа Клейтона:
https://browserstrangeness.github.io/css_hacks.html
Это сумасшедший, странный медиа-запрос, но его проще использовать в Sass:
Это предназначается для версий IE ожидаемых для IE8.
Или вы можете использовать:
Который нацелен на IE8-11, но также запускает FireFox 1.x (что для моего случая использования не имеет значения).
Сейчас я тестирую с поддержкой печати, и это, кажется, работает нормально:
источник