Experimental CSS properties are typically implemented using vendor prefixes until the final behavior has been established and agreed upon. Most CSS3 properties have vendor-prefixed equivalents for multiple vendors, including Firefox (-moz-), Safari/Chrome (-webkit-) and Internet Explorer (-ms-). It's easy to forget to include the vendor prefixed version of a property when there are so many to keep track of.

This rule is intended to raise an issue when a vendor-prefixed property is missing. Note that only the following main vendors are checked by this rule:

Opera (-o-) for example is not.

The following properties have multiple vendor-prefixed versions:

Property Vendor Prefixes
accelerator -ms-  
background-position-x -ms-  
background-position-y -ms-  
block-progression -ms-  
column-count  #2 -moz-  
column-fill  #2 -moz-  
column-gap  #2 -moz-  
column-rule  #2 -moz-  
column-rule-color  #2 -moz-  
column-rule-style  #2 -moz-  
column-rule-width  #2 -moz-  
column-span  #2 -ms-  
column-width  #2  #3 -moz-  
columns  #2 -ms-  
content-zoom-chaining -ms-  
content-zoom-limit -ms-  
content-zoom-limit-max -ms-  
content-zoom-limit-min -ms-  
content-zoom-snap -ms-  
content-zoom-snap-points -ms-  
content-zoom-snap-type -ms-  
content-zooming -ms-  
device-pixel-ratio  #2 -webkit-  
filter -ms-  -webkit-  
flow-from -ms-  
flow-into -ms-  
grid-column -ms-  
grid-row -ms-  
high-contrast -ms-  
high-contrast-adjust -ms-  
hyphenate-limit-chars  #2 -ms-  
hyphenate-limit-lines  #2 -ms-  
hyphenate-limit-zone  #2 -ms-  
hyphens  #2 -ms-  -webkit-  
layout-flow -ms-  
layout-grid -ms-  
layout-grid-char -ms-  
layout-grid-line -ms-  
layout-grid-mode -ms-  
layout-grid-type -ms-  
mask -webkit-  
mask-image -webkit-  
mask-position -webkit-  
mask-repeat -webkit-  
mask-size -webkit-  
max-device-pixel-ratio  #2 -webkit-  
min-device-pixel-ratio  #2 -webkit-  
overflow-style -ms-  
overflow-x  #2 -ms-  
overflow-y  #2 -ms-  
perspective-origin -webkit-  
scroll-chaining -ms-  
scroll-limit -ms-  
scroll-limit-x-max -ms-  
scroll-limit-x-min -ms-  
scroll-limit-y-max -ms-  
scroll-limit-y-min -ms-  
scroll-rails -ms-  
scroll-snap-points-x -ms-  
scroll-snap-points-y -ms-  
scroll-snap-type -ms-  
scroll-snap-x -ms-  
scroll-snap-y -ms-  
scroll-translation -ms-  
scrollbar-3dlight-color -ms-  
scrollbar-darkshadow-color -ms-  
scrollbar-highlight-color -ms-  
scrollbar-shadow-color -ms-  
scrollbar-track-color -ms-  
tab-size -moz-  
text-align-last -ms-  
text-auto-space -ms-  
text-combine-horizontal -ms-  
text-combine-upright -ms-  
text-emphasis -webkit-  
text-emphasis-color -webkit-  
text-emphasis-position -webkit-  
text-emphasis-style -webkit-  
text-justify -ms-  
text-overflow -ms-  
text-size-adjust -ms-  
text-underline-position -ms-  
transform-origin -webkit-  
transform-style -webkit-  
transition-property -webkit-  
user-select  #2 -moz-  -ms-  -webkit-  
wrap-flow -ms-  
wrap-margin -ms-  
wrap-through -ms-  
writing-mode -ms-  
zoom -ms-  

Noncompliant Code Example

/* Noncompliant: Missing -ms- vendor-prefix */
.mybox {
  -webkit-hyphens: none;
  hyphens: none;
}

Compliant Solution

.mybox {
  -ms-hyphens: none;
  -webkit-hyphens: none;
  hyphens: none;
}