'How to update individual values of the box-shadow property?
I'd like to override the distance on box-shadow without having to set the color again.
Use case here is I have a .button class with this:
.button {
  color: white;
  background: blue;
  padding: 8px 15px;
  font-size: 1.2em;
  border: 3px solid black;
  box-shadow: 0 3px 0 black;
}
Then I have a .button-small class that is effectively a child of .button that makes some minor tweaks to things. 
.button.button-small {
  padding: 4px 10px;
  font-size: 1em;
  border-width: 2px;
  box-shadow: 0 2px 0 black;
}
As you can see, I can easily change the border-width without redefining the entire border property.
Is there a way to do that with box-shadow? Some sort of box-shadow-distance property?
Solution 1:[1]
Use CSS variables:
.button {
  color: white;
  background: blue;
  padding: 8px 15px;
  font-size: 1.2em;
  border: 3px solid black;
  box-shadow: 0 var(--d, 5px) 0 black; /* 5px is the fallback/default value until you set the variable */
}
.button.button-small {
  --d: 2px;
}<span class="button">button</span>
<span class="button button-small">button</span>
<span class="button" style="--d:8px;">button</span>Solution 2:[2]
Unlike other properties, such as border, in which the parts are broken up into sub-properties, the box-shadow property stands alone. This means that it is even more important to take note of the order in which the parts are stated, particularly the length values. The box-shadow Property
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | Temani Afif | 
| Solution 2 | Alireza HI | 
