57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: CSS Custom Properties | ||
|  | --- | ||
|  | ## CSS Custom Properties
 | ||
|  | 
 | ||
|  | CSS custom properties are also referred to as CSS variables. As of October 2018, CSS custom properties are still an experimental technology. Consider [browser support](https://developer.mozilla.org/en-US/docs/Web/CSS/--*#Browser_compatibility) before using the feature in production.  | ||
|  | 
 | ||
|  | ### Declaring Custom Properties
 | ||
|  | Within a selector, custom properties are declared using two hyphens (--) and the name, followed by the value. The value can be simple, such as a color (RGB, hexcode, etc.) or size (using pixel, em, rem, etc.), or it can be more complex, like a dropshadow definition. See the examples below. | ||
|  | ```css | ||
|  | :root { | ||
|  |   --firstVariable: red; | ||
|  |   --headerSize: 16px; | ||
|  |   --dropShadow: 1px 1px 2px 2px rgba(100,100,100,0.2); | ||
|  | ``` | ||
|  | 
 | ||
|  | Declaring custom properties in the `:root` selector make those properties globally available. The `:root` selector can be considered the same as the `html` selector. | ||
|  | 
 | ||
|  | ### Using Custom Properties
 | ||
|  | To use a custom property, the `var()` function is used, which takes a single argument of the custom property name. | ||
|  | ```css  | ||
|  | h1 { | ||
|  |   font-size: var(--headerSize); | ||
|  | } | ||
|  |   | ||
|  | .card { | ||
|  |   box-shadow: var(--dropShadow); | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | ### Cascading Custom Properties
 | ||
|  | When custom properties are declared in the `:root` selector, those properties are globally available; any style rules can use the properties. If a custom property needs to be different for specific element, class, or id, a property of the same can be declared in that selector. The compiler will first look for a property name within the immediate enclosing selector, then move to the `:root`.  | ||
|  | 
 | ||
|  | ```css | ||
|  | :root { | ||
|  |   --font-color: red; | ||
|  | } | ||
|  | 
 | ||
|  | h1 { | ||
|  |   --font-color: blue; | ||
|  | } | ||
|  | 
 | ||
|  | h1 { | ||
|  |   font-color: var(--font-color); /* blue */ | ||
|  | } | ||
|  | 
 | ||
|  | h2 { | ||
|  |   font-color: var(--font-color); /* red */ | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | #### More Information:
 | ||
|  | For more information visit:  | ||
|  | - [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/--*) | ||
|  | - [W3C Candidate Recommendation Document](https://www.w3.org/TR/css-variables/) | ||
|  | - [Browser Support](https://caniuse.com/#feat=css-variables) |