Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign upRequire properties appropriate for display
Even though you can define any group of properties together in a CSS rule, some of them will be ignored due to the display of the element. This leads to extra cruft in your CSS and misunderstandings around how a rule should work.
For display: inline, the width, height, margin-top, margin-bottom, and float properties have no effect because inline elements don't have a formal box with which to apply the styles. The margin-left and margin-right properties still work reliably for indentation purposes but the other margin settings do not. The float property is sometimes used as a fix for the IE6 double-margin bug.
Other general rules based on display are:
-
display: inline-blockshould not usefloat. -
display: blockshould not usevertical-align. -
display: table-*should not usemargin(and all variants) orfloat.
Removing the ignored or problematic properties decreases file size thereby improving performance.
Rule Details
Rule ID: display-property-grouping
This rule is aimed at flagging properties that don't work based with the display property being used. The ultimate goal is to produce a smaller, clearer CSS file without unnecessary code. As such, the rule warns when it finds:
-
display: inlineused withwidth,height,margin,margin-top,margin-bottom, andfloat. -
display: inline-blockused withfloat. -
display: blockused withvertical-align. -
display: table-*used withmargin(and all variants) orfloat.
The following patterns are considered warnings:
/* inline with height */
.mybox {
display: inline;
height: 25px;
}
/* inline-block with float */
.mybox {
display: inline-block;
float: left;
}
/* table-cell and margin */
.mybox {
display: table-cell;
margin: 10px;
}The following patterns are considered okay and do not cause warnings:
/* inline with margin-left */
.mybox {
display: inline;
margin-left: 10px;
}
/* table and margin */
.mybox {
display: table;
margin-bottom: 10px;
}