У меня есть унаследованный проект, и есть места, где это полный беспорядок. Это одна из них. Мне нужно настроить только IE (любая версия).
#nav li {
float: left;
height: 54px;
background: #4f5151;
display: table;
border-left: 1px solid grey;
}
Чтобы быть ясным: внутри встроенной таблицы стилей и без добавления идентификаторов или классов в теги в html мне нужно применить стиль рамки только в том случае, если пользователь использует IE. Как я могу это сделать?
Изменить: нашел решение для Firefox, редактируя вопрос, чтобы отразить это.
Ответ 1
Internet Explorer 9 и ниже:
Вы можете использовать условные комментарии для загрузки таблицы стилей, специфичных для IE, для любой версии (или комбинации версий), которую вы хотели бы специально настроить. Ниже, используя внешнюю таблицу стилей.
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="all-ie-only.css" />
<![endif]-->
Однако, начиная с версии 10, условные комментарии больше не поддерживаются в IE.
Internet Explorer 10 и 11:
Создайте медиа-запрос с использованием -ms-high-contrast, в котором вы размещаете стили CSS для IE 10 и 11. Поскольку -ms-high-contrast является специфичным для Microsoft (и доступен только в IE 10+), он будет обрабатываться только в Internet Explorer 10 и выше.
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
/* IE10+ CSS styles go here */
}
Microsoft Edge 12: Можно использовать правило @supports
Вот ссылка со всей информацией об этом правиле
@supports (-ms-accelerator:true) {
/* IE Edge 12+ CSS styles go here */
}
Определение встроенного правила IE8
У меня есть еще один вариант, но он обнаруживает только IE8 и ниже версии.
/* For IE css hack */
margin-top: 10px\9 /* apply to all ie from 8 and below */
*margin-top:10px; /* apply to ie 7 and below */
_margin-top:10px; /* apply to ie 6 and below */
Как вы говорите о встроенной таблице стилей. Я думаю, вам нужно использовать комментарий к медиа и комментарий к состоянию для версии ниже.
Ответ 2
Здесь коллекция медиа-запросов, которые позволят вам сделать это для любой версии Internet Explorer (от IE6 до IE11+), Firefox, Chrome & Safari (EDIT: также добавлена Opera).
IE 6
* html .ie6 { property: value; }
или же
.ie6 { _property: value; }
IE 7
*+html .ie7 { property: value; }
или же
*:first-child+html .ie7 { property: value; }
IE 6 и 7
@media screen\9 {
.ie67 {
property: value;
}
}
или же
.ie67 { *property: value; }
или же
.ie67 { #property: value; }
IE 6, 7 и 8
@media \0screen\,screen\9 {
.ie678 {
property: value;
}
}
IE 8
html>/**/body .ie8 { property: value; }
или же
@media \0screen {
.ie8 {
property: value;
}
}
IE 8 Standards Mode
.ie8 { property /*\**/: value\9 }
IE 8,9 и 10
@media screen\0 {
.ie8910 {
property: value;
}
}
Только IE 9
@media screen and (min-width:0\0) and (min-resolution: .001dpcm) {
// IE9 CSS
.ie9{
property: value;
}
}
IE 9 и выше
@media screen and (min-width:0\0) and (min-resolution: +72dpi) {
// IE9+ CSS
.ie9up {
property: value;
}
}
IE 9 и 10
@media screen and (min-width:0\0) {
.ie910 {
property: value\9;
} /* backslash-9 removes ie11+ & old Safari 4 */
}
Только IE 10
_:-ms-lang(x), .ie10 { property: value\9; }
IE 10 и выше
_:-ms-lang(x), .ie10up { property: value; }
или же
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
.ie10up {
property:value;
}
}
IE 11 (и выше..)
_:-ms-fullscreen, :root .ie11up { property: value; }
Firefox (любая версия)
@-moz-document url-prefix() {
.ff {
color: red;
}
}
Firefox (Quantum Only/Stylo)
@-moz-document url-prefix() {
@supports (animation: calc(0s)) {
/* Stylo */
.ffStylo {
property: value;
}
}
}
Firefox Legacy (предварительная версия)
@-moz-document url-prefix() {
@supports not (animation: calc(0s)) {
/* Gecko */
.ffGecko {
property: value;
}
}
}
Webkit (Chrome & Safari, любая версия)
@media screen and (-webkit-min-device-pixel-ratio:0) {
property: value;
}
Google Chrome (29+)
@media screen and (-webkit-min-device-pixel-ratio:0) and (min-resolution:.001dpcm) {
.chrome {
property: value;
}
}
Сафари (7. 1+)
_::-webkit-full-page-media, _:future, :root .safari_only {
property: value;
}
Сафари (с 6,1 до 10,0)
@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0) {
@media {
.safari6 {
color:#0000FF;
background-color:#CCCCCC;
}
}
}
Сафари (10. 1+)
@media not all and (min-resolution:.001dpcm) {
@media {
.safari10 {
color:#0000FF;
background-color:#CCCCCC;
}
}
}
Опера (12+)
@media (min-resolution: .001dpcm) {
_:-o-prefocus, .selector {
.opera12 {
color:#0000FF;
background-color:#CCCCCC;
}
}
}
Опера (11 и ниже)
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {
.opera11 {
color:#0000FF;
background-color:#CCCCCC;
}
}
Для получения дополнительной информации или дополнительных медиа-запросов посетите веб-сайт browserhacks.com и/или ознакомьтесь с этой записью в блоге, которую я написал по этой теме.
Ответ 3
При использовании SASS
я использую следующие 2 @media queries
для таргетинга IE 6-10 и EDGE.
@media screen\9
@import ie_styles
@media screen\0
@import ie_styles
http://keithclark.co.uk/articles/moving-ie-specific-css-into-media-blocks/
редактировать
Я также нацеливаюсь на более поздние версии EDGE, используя @support queries
(добавьте столько, сколько вам нужно)
@supports (-ms-ime-align:auto)
@import ie_styles
@supports (-ms-accelerator:auto)
@import ie_styles
https://jeffclayton.wordpress.com/2015/04/07/css-hacks-for-windows-10-and-spartan-browser-preview/
Ответ 4
Другим рабочим решением для стилей IE является
<html data-useragent="Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)">
И затем ваш селектор
html[data-useragent*='MSIE 10.0'] body .my-class{
margin-left: -0.4em;
}
Ответ 5
После проблем с сайтами, ломающимися на Edge при использовании режима High Contrast, я наткнулся на следующую работу Джеффа Клейтона:
https://browserstrangeness.github.io/css_hacks.html
Это сумасшедший, странный медиа-запрос, но его проще использовать в Sass:
@media screen and (min-width:0\0) and (min-resolution:+72dpi), \0screen\,screen\9 {
.selector { rule: value };
}
Это предназначается для версий IE ожидаемых для IE8.
Или вы можете использовать:
@media screen\0 {
.selector { rule: value };
}
Который нацелен на IE8-11, но также запускает FireFox 1.x (что для моего случая использования не имеет значения).
Наконец, вы можете добавить поддержку печати с:
@media screen\0,print\0 {
.selector { rule: value };
}