Fermer

Quelques exemples d’utilisation de SASS

Mettre en pratique SASS/SCSS pour reproduire l’équivalent des classes bootstrap pour les marges (mr-0) et padding (pr-2) ainsi que pour les largeurs (l-50) et hauteurs (h-100).

Cet article est la suite de :

Reproduire les classes pour spécifier les largeurs et hauteurs

Reproduire ce marquage HTML : <div class="w-100"> avec des valeurs comprises entre 0 et 100 :

@for $i from 0 through 10 {
	.w-#{$i * 10} {
		width: #{$i * 10%};
	}
	.h-#{$i * 10} {
		height: #{$i * 10%};
	}
}

Ce qui génèrera le code CSS suivant :

.w-0{width:0%}
.h-0{height:0%}
.w-10{width:10%}
.h-10{height:10%}
.w-20{width:20%}
.h-20{height:20%}
.w-30{width:30%}
.h-30{height:30%}
.w-40{width:40%}
.h-40{height:40%}
.w-50{width:50%}
.h-50{height:50%}
.w-60{width:60%}
.h-60{height:60%}
.w-70{width:70%}
.h-70{height:70%}
.w-80{width:80%}
.h-80{height:80%}
.w-90{width:90%}
.h-90{height:90%}
.w-100{width:100%}
.h-100{height:100%}

Reproduire le système de marges intérieures et extérieures

Refaire le système de classes pour les marges : <div class="mx-2 mt-1 pb-5"> ; l’utilisation de 2 tableaux permet d’ajouter facilement le même système pour les bordures ou pour de nouvelles tailles :

$pms: (
	p:'padding',
	m:'margin',
);
$sizes: (
	0: 0,
	1: 0.5rem,
	2: 0.75rem,
	3: 1rem,
	4: 1.5rem,
);

@each $abbrev, $pm in $pms {
	@each $i, $size in $sizes {
		.#{$abbrev}y-#{$i},
		.#{$abbrev}t-#{$i} {
			#{$pm}-top: $size;
		}
		.#{$abbrev}x-#{$i},
		.#{$abbrev}r-#{$i} {
			#{$pm}-right: $size;
		}
		.#{$abbrev}y-#{$i},
		.#{$abbrev}b-#{$i} {
			#{$pm}-bottom: $size;
		}
		.#{$abbrev}x-#{$i},
		.#{$abbrev}l-#{$i} {
			#{$pm}-left: $size;
		}
	}
}

Ce qui génèrera le code CSS suivant :

.py-0,.pt-0{padding-top:0}
.px-0,.pr-0{padding-right:0}
.py-0,.pb-0{padding-bottom:0}
.px-0,.pl-0{padding-left:0}
.py-1,.pt-1{padding-top:.5rem}
.px-1,.pr-1{padding-right:.5rem}
.py-1,.pb-1{padding-bottom:.5rem}
.px-1,.pl-1{padding-left:.5rem}
.py-2,.pt-2{padding-top:.75rem}
.px-2,.pr-2{padding-right:.75rem}
.py-2,.pb-2{padding-bottom:.75rem}
.px-2,.pl-2{padding-left:.75rem}
.py-3,.pt-3{padding-top:1rem}
.px-3,.pr-3{padding-right:1rem}
.py-3,.pb-3{padding-bottom:1rem}
.px-3,.pl-3{padding-left:1rem}
.py-4,.pt-4{padding-top:1.5rem}
.px-4,.pr-4{padding-right:1.5rem}
.py-4,.pb-4{padding-bottom:1.5rem}
.px-4,.pl-4{padding-left:1.5rem}
.my-0,.mt-0{margin-top:0}
.mx-0,.mr-0{margin-right:0}
.my-0,.mb-0{margin-bottom:0}
.mx-0,.ml-0{margin-left:0}
.my-1,.mt-1{margin-top:.5rem}
.mx-1,.mr-1{margin-right:.5rem}
.my-1,.mb-1{margin-bottom:.5rem}
.mx-1,.ml-1{margin-left:.5rem}
.my-2,.mt-2{margin-top:.75rem}
.mx-2,.mr-2{margin-right:.75rem}
.my-2,.mb-2{margin-bottom:.75rem}
.mx-2,.ml-2{margin-left:.75rem}
.my-3,.mt-3{margin-top:1rem}
.mx-3,.mr-3{margin-right:1rem}
.my-3,.mb-3{margin-bottom:1rem}
.mx-3,.ml-3{margin-left:1rem}
.my-4,.mt-4{margin-top:1.5rem}
.mx-4,.mr-4{margin-right:1.5rem}
.my-4,.mb-4{margin-bottom:1.5rem}
.mx-4,.ml-4{margin-left:1.5rem}

Laisser une réponse

Votre adresse email ne sera pas publiée. Les champs obligatoires sont indiqués par *