Как объясняется в связанном вопросе, медиа-запросы - это медиа-запросы , а не запросы браузера, и поэтому вам просто не следует даже пытаться это .Потому что вы ищете сложные хаки .Их сложно протестировать, и они затруднят сопровождение вашего проекта.
Кроме того, что мне очень жаль, что вы все еще поддерживаете IE9, я бы порекомендовал одно из следующих решений:
1) Используйте условные обозначения
<!--[if lte IE 9]>
<link rel="stylesheet" type="text/css" href="ie-only.css">
<![endif]-->
Возможно, это лучший способ.Microsoft знает, что IE - это плохо, и поэтому они представили их.Важный бонус: всем другим браузерам не нужно загружать хреновый IE9 CSS.
2) Использовать класс на HTML-теле (с JavaScript)
var browser = {
isIe: function () {
return navigator.appVersion.indexOf("MSIE") != -1;
},
navigator: navigator.appVersion,
getVersion: function() {
var version = 999; // we assume a sane browser
if (navigator.appVersion.indexOf("MSIE") != -1)
// bah, IE again, lets downgrade version number
version = parseFloat(navigator.appVersion.split("MSIE")[1]);
return version;
}
};
if (browser.isIe() && browser.getVersion() == 9) {
document.body.className += ' ' + 'ie9';
}
В своем CSS вы просто делаете:
.ie9 #my-elem-to-style {
}
Простые правила специфичности CSS решат вашу проблему.
3) Используйте библиотеку, если она применима (например, Modernizr)