59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: Use @for to Create a Sass Loop
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								## Use @for to Create a Sass Loop
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								1. The basic syntax of `@for` loop in SASS:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								* For - through loop:
							 | 
						|||
| 
								 | 
							
								```sass
							 | 
						|||
| 
								 | 
							
								@for $i from <start number> through <end number> {
							 | 
						|||
| 
								 | 
							
								  // some CSS
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								* For - to loop:
							 | 
						|||
| 
								 | 
							
								```sass
							 | 
						|||
| 
								 | 
							
								@for $i from <start number> to <end number> {
							 | 
						|||
| 
								 | 
							
								  // some CSS
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Notice that the main difference is that "start to end" **excludes** the end number, and "start through end" **includes** the end number.
							 | 
						|||
| 
								 | 
							
								2. For example:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								* For - through loop:
							 | 
						|||
| 
								 | 
							
								```sass
							 | 
						|||
| 
								 | 
							
								@for $i from 1 through 3 {
							 | 
						|||
| 
								 | 
							
								  // some CSS
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 1 2
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								* For - to loop:
							 | 
						|||
| 
								 | 
							
								```sass
							 | 
						|||
| 
								 | 
							
								@for $i from 1 to 3 {
							 | 
						|||
| 
								 | 
							
								  // some CSS
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 1 2 3
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								3. Guideline from [SASS Guideline](https://sass-guidelin.es/#loops)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								The `@for` loop might be useful when combined with CSS’ `:nth-*` pseudo-classes. Except for these scenarios, prefer an `@each` loop if you have to iterate over something.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```sass
							 | 
						|||
| 
								 | 
							
								@for $i from 1 through 10 {
							 | 
						|||
| 
								 | 
							
								  .foo:nth-of-type(#{$i}) {
							 | 
						|||
| 
								 | 
							
								    border-color: hsl($i * 36, 50%, 50%);
							 | 
						|||
| 
								 | 
							
								  }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								Always use `$i` as a variable name to stick to the usual convention and unless you have a really good reason to, never use the to keyword: always use through. Many developers do not even know Sass offers this variation; using it might lead to confusion.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Also be sure to respect those guidelines to preserve readability:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								* Always an empty new line before `@for`;
							 | 
						|||
| 
								 | 
							
								* Always an empty new line after the closing brace (}) unless the next line is a closing brace (}).
							 |