2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								id: 587d7dbd367417b2b2512bb6
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								title: Create Reusable CSS with Mixins
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								challengeType: 0
							 
						 
					
						
							
								
									
										
										
										
											2020-05-21 17:31:25 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								isHidden: false
							 
						 
					
						
							
								
									
										
										
										
											2019-08-05 09:17:33 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								forumTopicId: 301455
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								## Description
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< section  id = 'description' > 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 15:45:37 -01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								In Sass, a < dfn > mixin< / dfn >  is a group of CSS declarations that can be reused throughout the style sheet.
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								Newer CSS features take time before they are fully adopted and ready to use in all browsers. As features are added to browsers, CSS rules using them may need vendor prefixes. Consider "box-shadow":
							 
						 
					
						
							
								
									
										
										
										
											2019-05-14 05:01:32 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```scss
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								div {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  -webkit-box-shadow: 0px 0px 4px #fff ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  -moz-box-shadow: 0px 0px 4px #fff ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  -ms-box-shadow: 0px 0px 4px #fff ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  box-shadow: 0px 0px 4px #fff ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								It's a lot of typing to re-write this rule for all the elements that have a < code > box-shadow< / code > , or to change each value to test different effects.
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 15:45:37 -01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Mixins are like functions for CSS. Here is how to write one:
							 
						 
					
						
							
								
									
										
										
										
											2019-05-14 05:01:32 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```scss
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								@mixin  box-shadow($x, $y, $blur, $c){ 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 05:52:54 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  -webkit-box-shadow: $x $y $blur $c;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  -moz-box-shadow: $x $y $blur $c;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  -ms-box-shadow: $x $y $blur $c;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  box-shadow: $x $y $blur $c;
							 
						 
					
						
							
								
									
										
										
										
											2019-05-14 05:01:32 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								The definition starts with < code > @mixin </ code >  followed by a custom name. The parameters (the < code > $x</ code > , < code > $y</ code > , < code > $blur</ code > , and < code > $c</ code >  in the example above) are optional.
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 15:45:37 -01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Now any time a < code > box-shadow</ code >  rule is needed, only a single line calling the mixin replaces having to type all the vendor prefixes. A mixin is called with the < code > @include </ code >  directive:
							 
						 
					
						
							
								
									
										
										
										
											2019-05-14 05:01:32 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```scss
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								div {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  @include  box-shadow(0px, 0px, 4px, #fff );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< / section > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								## Instructions
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< section  id = 'instructions' > 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 15:45:37 -01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Write a mixin for < code > border-radius</ code >  and give it a < code > $radius</ code >  parameter. It should use all the vendor prefixes from the example. Then use the < code > border-radius</ code >  mixin to give the < code > #awesome </ code >  element a border radius of 15px.
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< / section > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								## Tests
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< section  id = 'tests' > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```yml
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tests:
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 15:45:37 -01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  -  text: Your code should declare a mixin named < code > border-radius</ code >  which has a parameter named < code > $radius</ code > .
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:53:37 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    testString: assert(code.match(/@mixin \s+?border-radius\s*?\(\s*?\$radius\s*?\)\s*?{/gi));
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  -  text: Your code should include the < code > -webkit-border-radius</ code >  vender prefix that uses the < code > $radius</ code >  parameter.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:53:37 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    testString: assert(code.match(/-webkit-border-radius:\s*?\$radius;/gi));
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  -  text: Your code should include the < code > -moz-border-radius</ code >  vender prefix that uses the < code > $radius</ code >  parameter.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:53:37 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    testString: assert(code.match(/-moz-border-radius:\s*?\$radius;/gi));
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  -  text: Your code should include the < code > -ms-border-radius</ code >  vender prefix that uses the < code > $radius</ code >  parameter.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:53:37 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    testString: assert(code.match(/-ms-border-radius:\s*?\$radius;/gi));
							 
						 
					
						
							
								
									
										
										
										
											2018-10-04 14:37:37 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  -  text: Your code should include the general < code > border-radius</ code >  rule that uses the < code > $radius</ code >  parameter.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:53:37 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    testString: assert(code.match(/border-radius:\s*?\$radius;/gi).length == 4);
							 
						 
					
						
							
								
									
										
										
										
											2018-10-20 21:02:47 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  -  text: Your code should call the < code > border-radius mixin</ code >  using the < code > @include </ code >  keyword, setting it to 15px.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-24 23:53:37 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    testString: assert(code.match(/@include \s+?border-radius\(\s*?15px\s*?\);/gi));
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / section > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								## Challenge Seed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< section  id = 'challengeSeed' > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  id = 'html-seed' > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```html
							 
						 
					
						
							
								
									
										
										
										
											2020-05-09 16:31:18 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< style  type = 'text/scss' > 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-08 01:01:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  #awesome  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    width: 150px;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    height: 150px;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    background-color: green;
							 
						 
					
						
							
								
									
										
										
										
											2018-10-08 01:01:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / style > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  id = "awesome" > < / div > 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-08 01:01:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / section > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								## Solution
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< section  id = 'solution' > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-05-01 01:55:22 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```html
							 
						 
					
						
							
								
									
										
										
										
											2020-05-09 16:31:18 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< style  type = 'text/scss' > 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-01 01:55:22 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  @mixin  border-radius($radius) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    -webkit-border-radius: $radius;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    -moz-border-radius: $radius;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    -ms-border-radius: $radius;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    border-radius: $radius;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  #awesome  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    width: 150px;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    height: 150px;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    background-color: green;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    @include  border-radius(15px);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / style > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  id = "awesome" > < / div > 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2019-07-18 08:24:12 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< / section >