<label><input class="turnCheck" type="checkbox">
  <span>Compression</span>
</label>
<br />
<label><input class="turnPM" checked type="checkbox">
  <span>Auto alignment</span>
</label>
* {
  font-family: sans-serif  
}
label > input[type="checkbox"] + * {
  display: block; 
  margin: 0.5em;
  font-size: 2em;
}
/* Turn Checkbox */
label > .turnCheck {
  display: none;
}
label > .turnCheck + *::before {
  content: "\f057";
  font-family: "Font Awesome 5 Free";
  font-weight: 900;
  display: inline-block;
  vertical-align: bottom;
  margin-right: 1rem;
  border-radius: 10%;
  border-style: solid;
  border-width: 0.1rem;
  border-color: transparent;
  flex-shrink: 0;
  transition: all 0.5s ease-in-out;  
  transform-origin: center center;
}
label > .turnCheck + * {
  transition: all 0.5s ease-in-out;  
  color: red;
  cursor: pointer;
}
label > .turnCheck:checked + * {
  color: green;
}
label > .turnCheck:checked + *::before {
  content: "\f058";
  text-align: center;
  transform: rotate(1turn);
  -webkit-transform:  rotate(1turn);  
  transform-origin: center center;
}
/* Turn Plus/Minus */
label > .turnPM {
  display: none;
}
label > .turnPM + *::before {
  content: "\f055";
  font-family: "Font Awesome 5 Free";
  font-weight: 900;
  display: inline-block;
  vertical-align: bottom;
  margin-right: 1rem;
  border-radius: 10%;
  border-style: solid;
  border-width: 0.1rem;
  border-color: transparent;
  flex-shrink: 0;
  transition: all 0.5s ease-in-out;  
  transform-origin: center center;
}
label > .turnPM + * {
  transition: all 0.5s ease-in-out;  
  color: black;
  cursor: pointer;
  font-size: 2em;  
}
label > .turnPM:checked + * {
  color: blue;
}
label > .turnPM:checked + *::before {
  content: "\f056";
  text-align: center;
  transform: rotate(1turn);
  -webkit-transform:  rotate(1turn);  
  transform-origin: center center;
}

External CSS

  1. https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css

External JavaScript

This Pen doesn't use any external JavaScript resources.