How do I target only Internet Explorer 10 for certain situations like Internet Explorer-specific CSS or Internet Explorer-specific JavaScript code?
Perhaps you can try some jQuery like this:
if ($.browser.msie && $.browser.version === 10) {
$("html").addClass("ie10");
}
To use this method you must include the jQuery Migrate library because this function was removed from the main jQuery library.
Worked out quite fine for me. But surely no replacement for conditional comments!
Conditional CSS for Internet Explorer 10 only
Seeing as you're already relying on JavaScript for your menu, you could add a class to the <body>
using JavaScript code based on the userAgent string:
JavaScript
if (navigator.userAgent.indexOf("MSIE 10") > -1) {
document.body.classList.add("ie10");
}
..and then target Internet Explorer 10 in your CSS
CSS
/*IE 10 only */
.ie10 .myClass {
margin-top: 1px;
}
How to add CSS Hack specifically for IE10?
You can easily track the latest versions of IE (mostly IE 10 and IE 11) using
1. CSS media query hack:
/*
#ie10,11 will only be red in MSIE 10,
both in high contrast (display setting) and default mode
*/
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
//-- Put your IE specific css class here
}
OR
@media screen and (min-width:0\0) {
/* IE9 and IE10 rule sets go here */
}
Read this
Working Example
2. Browser Detection:
if ($.browser.msie && $.browser.version == 10) {
$("html").addClass("ie10");
}
3. Using script (NOT Tested):
<script>
/*@cc_on
@if (@_jscript_version == 10)
document.write('<link type= "text/css" rel="stylesheet" href="your-ie10-styles.css" />');
@end
@*/
</script >
Note : I know document.write
is considered bad practice.
Conditional comments (ie10 dropped conditional comments):
if you want to load external css file for IE, you can use conditional comments. But as you mentioned in question you wants for IE 10 and ie10 dropped conditional comments.
microsoft drop conditional comments in ie10.
How to target only IE (any version) within a stylesheet?
Internet Explorer 9 and lower :
You could use conditional comments to load an IE-specific stylesheet for any version (or combination of versions) that you wanted to specifically target.like below using external stylesheet.
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="all-ie-only.css" />
<![endif]-->
However, beginning in version 10, conditional comments are no longer supported in IE.
Internet Explorer 10 & 11 :
Create a media query using -ms-high-contrast, in which you place your IE 10 and 11-specific CSS styles. Because -ms-high-contrast is Microsoft-specific (and only available in IE 10+), it will only be parsed in Internet Explorer 10 and greater.
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
/* IE10+ CSS styles go here */
}
Microsoft Edge 12 : Can use the @supports rule
Here is a link with all the info about this rule
@supports (-ms-accelerator:true) {
/* IE Edge 12+ CSS styles go here */
}
Inline rule IE8 detection
I have 1 more option but it is only detect IE8 and below version.
/* 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 */
As you specefied for embeded stylesheet. I think you need to use media query and condition comment for below version.
Apply style ONLY on IE
Update 2017
Depending on the environment, conditional comments have been officially deprecated and removed in IE10+.
Original
The simplest way is probably to use an Internet Explorer conditional comment in your HTML:
<!--[if IE]>
<style>
.actual-form table {
width: 100%;
}
</style>
<![endif]-->
There are numerous hacks (e.g. the underscore hack) you can use that will allow you to target only IE within your stylesheet, but it gets very messy if you want to target all versions of IE on all platforms.
!--[if IE] Not working even though I'm sure I wrote it in correctly
As of IE10 conditional comments are not supported by standards mode
Check for IE 10
The real way to detect this, without conditional comments and without User Agent sniffing is with conditional compilation:
<script type="text/javascript">
var isIE10 = false;
/*@cc_on
if (/^10/.test(@_jscript_version)) {
isIE10 = true;
}
@*/
console.log(isIE10);
</script>
After running this code, you can use following anytime after:
if (isIE10) {
// Using Internet Explorer 10
}
Reference: How can I detect IE10 from JS when browser mode is IE9?
UPDATE:
To avoid minification of comments, you can use something like:
var IE = (function () {
"use strict";
var ret, isTheBrowser,
actualVersion,
jscriptMap, jscriptVersion;
isTheBrowser = false;
jscriptMap = {
"5.5": "5.5",
"5.6": "6",
"5.7": "7",
"5.8": "8",
"9": "9",
"10": "10"
};
jscriptVersion = new Function("/*@cc_on return @_jscript_version; @*/")();
if (jscriptVersion !== undefined) {
isTheBrowser = true;
actualVersion = jscriptMap[jscriptVersion];
}
ret = {
isTheBrowser: isTheBrowser,
actualVersion: actualVersion
};
return ret;
}());
And access the properties like IE.isTheBrowser
and IE.actualVersion
(which is translated from internal values of JScript versions).
make specific css code for IE10
I would suggest you look into a webfont generator. It will give you the font types you need to also support IE10 and will make css code which ensures best support cross-platform.
Font Squirrel is the most used/popular out there but there are more
http://www.fontsquirrel.com/tools/webfont-generator
Related Topics
Rendering HTML Inside Textarea
Jquery Document.Createelement Equivalent
Disabling Browser Print Options (Headers, Footers, Margins) from Page
Detect All Changes to a ≪Input Type="Text"≫ (Immediately) Using Jquery
Disable Pasting Text into HTML Form
How to Open a Pdf File in an ≪Iframe≫
How to Disable All Div Content
Get Page Generated With JavaScript in Python
Return HTML Content as a String, Given Url. JavaScript Function
Pass a String Parameter in an Onclick Function
Adjust Width and Height of Iframe to Fit With Content in It
Twitter Bootstrap Tabs: Go to Specific Tab on Page Reload or Hyperlink
How to Check If a Specific Pixel of an Image Is Transparent
Get Div Height With Plain JavaScript
When Should I Use Inline Vs. External JavaScript
Passing Variable Through JavaScript from One HTML Page to Another Page
How to Store Arbitrary Data For Some HTML Tags
How to Pick Element Inside Iframe Using Document.Getelementbyid