stylelint-sustainable-css
Version:
Sustainable CSS is a Stylelint plugin dedicated to following sustainable web design principles.
439 lines (340 loc) • 6.95 kB
Markdown
## shorten-properties
### Combine Multiple of the Same Property Values on a Single Line
**Guideline:** Combine multiple CSS properties on a single line to reduce redundancy and improve readability.
```css
/* Instead of this */
.image {
filter: grayscale(100%);
filter: blur(5px)
}
/* Use this */
.image {
filter: grayscale(100%) blur(5px)
}
```
### Combine Multiple of the Same Property Values with a Comma-Separated List
**Guideline:** Combine multiple CSS property values into a single line using a comma-separated list.
```css
/* Instead of this */
.element {
box-shadow: 1px 1px 2px #000;
box-shadow: inset 0 0 10px #000
}
/* Use this */
.element {
box-shadow: 1px 1px 2px #000, inset 0 0 10px #000
}
```
### Shorthand Properties
#### Margin and Padding
**Guideline:** Instead of `margin-top`, `margin-right`, `margin-bottom`, and `margin-left`, use `margin: 10px 20px 30px 40px;` or `margin: 10px 20px;` if the top/bottom and left/right values are the same.
```css
/* Instead of this */
.margin-padding {
margin-top: 10px;
margin-right: 20px;
margin-bottom: 30px;
margin-left: 40px
}
/* Use this */
.margin-padding {
margin: 10px 20px 30px 40px
}
```
#### Simplify Typography Using the `font` Shorthand Property
**Guideline:** Use the `font` shorthand to specify font style, weight, size, line-height, and family.
```css
/* Instead of this */
.font {
font-family: Arial, sans-serif;
font-size: 12px;
font-weight: 700;
line-height: 1.4
}
/* Use this */
.font {
font: 700 12px/1.6 Arial, sans-serif
}
```
#### Simplify `border`
**Guideline:** Combine border width, style, and color in one line.
```css
/* Instead of this */
.border {
border-width: 1px;
border-style: solid;
border-color: #000
}
/* Use this */
.border {
border: 1px solid #000;
}
```
#### Optimise `text-decoration`
**Guideline:** Combine `text-decoration` properties.
```css
cssCopy code
/* Instead of this */
.text-decor {
text-decoration-line: underline;
text-decoration-style: dotted
}
/* Use this */
.text-decor {
text-decoration: underline dotted
}
```
#### Simplify `background`
**Guideline:** Combine all background properties into one `background` property.
```css
/* Instead of this */
.background {
background-color: #fff;
background-image: url('image.png');
background-repeat: no-repeat
}
/* Use this */
.background {
background: #fff url('image.png') no-repeat
}
```
#### Optimise `list-style`
**Guideline:** Combine `list-style` properties.
```css
/* Instead of this */
.list {
list-style-type: disc;
list-style-position: inside
}
/* Use this */
.list {
list-style: disc inside
}
```
#### Use `overflow` Shorthand
**Guideline:** Combine `overflow` properties.
```css
/* Instead of this */
.overflow {
overflow-x: hidden;
overflow-y: scroll
}
/* Use this */
.overflow {
overflow: hidden scroll
}
```
#### Use `flex` Shorthand
**Guideline:** Use the `flex` shorthand property.
```css
/* Instead of this */
.flex {
flex-grow: 1;
flex-shrink: 1;
flex-basis: auto
}
/* Use this */
.flex {
flex: 1 1 auto
}
```
#### Use `grid` Shorthand
**Guideline:** Use the `grid` shorthand property.
```css
/* Instead of this */
.grid {
grid-template-rows: 1fr;
grid-template-columns: 1fr
}
/* Use this */
.grid {
grid: 1fr / 1fr
}
```
#### Combine `place-items`
**Guideline:** Use `place-items` in grid or flex layouts.
```css
/* Instead of this */
.place {
align-items: center;
justify-items: center
}
/* Use this */
.place {
place-items: center
}
```
#### Use `gap` in Grid and Flexbox
**Guideline:** Use the `gap` property to simplify spacing.
```css
/* Instead of this */
.gap {
grid-gap: 10px;
column-gap: 10px;
row-gap: 10px
}
/* Use this */
.gap {
gap: 10px
}
```
#### Use Shorter Animations
**Guideline:** Use shorter animation and transition syntax.
```css
/* Instead of this */
.animate {
transition-property: all;
transition-duration: 0.3s
}
/* Use this */
.animate {
transition: all 0.3s
}
```
#### Use `columns` Shorthand
**Guideline:** Combine column properties using the `columns` shorthand.
```css
/* Instead of this */
.columns {
column-width: 200px;
column-count: 3
}
/* Use this */
.columns {
columns: 200px 3
}
```
### Using Shorthand Properties for Single-Side `border`, `margin`, and `padding`
**Guideline:** Use shorthand properties for `border`, `margin`, and `padding` whenever possible to save characters, except in some situations where `left` and `top` properties, where the longhand properties might be shorter.
#### Padding Right
```css
/* Longhand character count: 18 */
.paddding-right {
padding-right: 1em
}
/* Shorthand character count: 17 = Winner */
.paddding-right {
padding: 0 1em 0 0
}
```
##### Padding Bottom
```css
/* Longhand character count: 20 */
.paddding-bottom {
padding-bottom: 1em
}
/* Shorthand character count: 17 = Winner */
.paddding-bottom {
padding: 0 0 1em 0
}
```
#### Padding Left
```css
/* Longhand character count: 17 = Draw */
.paddding-left {
padding-left: 1em
}
/* Shorthand character count: 17 = Draw */
.paddding-left {
padding: 0 0 0 1em
}
```
#### Padding Top
```css
/* Longhand character count: 16 = Winner */
.paddding-top {
padding-top: 1em
}
/* Shorthand character count: 17 */
.paddding-top {
padding: 1em 0 0 0
}
```
#### Margin-Right
```css
/* Longhand character count: 17 */
.margin-right {
margin-right: 1em
}
/* Shorthand character count: 15 = Winner */
.margin-right {
margin: 0 1em 0 0
}
```
#### Margin Bottom
```css
/* Longhand character count: 19 */
.margin-bottom {
margin-bottom: 1em
}
/* Shorthand character count: 15 = Winner */
.margin-bottom {
margin: 0 0 1em 0
}
```
#### Margin Left
```css
/* Longhand character count: 16 */
.margin-left {
margin-left: 1em
}
/* Shorthand character count: 15 = Winner */
.margin-left {
margin: 0 0 0 1em
}
```
#### Margin Top
```css
/* Longhand character count: 15 = Draw */
.margin-top {
margin-top: 1em
}
/* Shorthand character count: 15 = Draw */
.margin-top {
margin: 1em 0 0 0
}
```
#### Border Right
```css
/* Longhand character count: 24 = Draw */
.border-right {
border-right: 1px solid #000
}
/* Shorthand character count: 24 = Draw */
.border-right {
border: 0 1px 0 0 solid #000
}
```
#### Border Bottom
```css
/* Longhand character count: 26 */
.border-bottom {
border-bottom: 1px solid #000
}
/* Shorthand character count: 24 = Winner */
.border-bottom {
border: 0 0 1px 0 solid #000
}
```
#### Border Left
```css
/* Longhand character count: 23 = Winner */
.border-left {
border-left: 1px solid #000
}
/* Shorthand character count: 24 */
.border-left {
border: 0 0 0 1px solid #000
}
```
#### Border Top
```css
/* Longhand character count: 22 = Winner */
.border-top {
border-top: 1px solid #000
}
/* Shorthand character count: 24 */
.border-top {
border: 1px 0 0 0 solid #000
}
```