SCSS Mastery - Harnessing the Power of @for and @each Loops for Efficient Styling
Like other programming languages, except it’s on CSS. Operators, variables, extend, function and mixins also can be use in SCSS/SASS.
Web StorySCSS being on top of CSS has made front-end developer experience becoming more productive in the world of web development. It has played a significant role in building CSS solutions for web projects. In my humble opinion, SASS / SCSS has this capability like other programming languages, except it’s on CSS.
Using variables, operators with if, else, for, each and while has become natural in a programming language. It has all that features out of the box and make all your CSS with superpowers.
Let see how we unlock and reveal our CSS with superpowers on SCSS. First of all, write the HTML :
<div class="hello-world">
<h1>H</h1>
<h1>E</h1>
<h1>L</h1>
<h1>L</h1>
<h1>O</h1>
<br />
<h2>W</h2>
<h2>O</h2>
<h2>R</h2>
<h2>L</h2>
<h2>D</h2>
</div>
Write down the SCSS base :
body {
background-color: white;
margin: 5rem 6rem;
text-align: center;
font-family: 'Poppins', 'sans-serif';
}
h1,
h2 {
margin: 0;
padding: 0;
display: inline-block;
font-size: 10rem;
}
h2 {
font-size: 8rem;
}
Now I am going to invert the whole color scheme on the CSS files and add a property of text-shadow to the H1 and H2 "Hello World" text:
@import url('https://fonts.googleapis.com/css?family=Poppins:900&display=swap');
body {
background-color: black;
margin: 5rem 6rem;
text-align: center;
font-family: 'Poppins', 'sans-serif';
}
h1,
h2 {
margin: 0;
padding: 0;
color: white;
display: inline-block;
font-size: 10rem;
text-shadow: 0 0 10px #fff, 0 0 20px #fff, 0 0 30px #e60073, 0 0 40px #e60073,
0 0 50px #e60073, 0 0 60px #e60073, 0 0 70px #e60073;
}
h2 {
font-size: 8rem;
}
Update the h1 properties using @for
and @each
in our SCSS for creating transition animation:
@for $j from 0 through 5 {
h1:nth-child(0n + #{$j}),
h2:nth-child(5n + #{$j}) {
animation-name: animateGlithcy;
animation-delay: #{$j/5}s;
animation-duration: #{$j/2}s;
animation-timing-function: linear;
animation-direction: alternate-reverse;
animation-iteration-count: infinite;
}
}
@keyframes animateGlithcy {
0% {
opacity: 0.1;
background-position: 0 0;
filter: hue-rotate(0deg);
}
10% {
background-position: 5px 0;
}
20% {
background-position: -5px 0;
}
30% {
background-position: 15px 0;
}
40% {
background-position: -5px 0;
}
50% {
background-position: -25px 0;
}
60% {
background-position: -50px 0;
}
70% {
background-position: 0 -20px;
}
80% {
background-position: -60px -20px;
}
81% {
background-position: 0 0;
}
100% {
opacity: 1;
background-position: 0 0;
filter: hue-rotate(360deg);
}
}
SCSS has other features that can leverage CSS pseudo-elements such as ::before
and ::after
. Check out our blog post here to learn more about how to utilize them in SCSS with samples.
SCSS (Sassy CSS) is a popular preprocessor that extends the capabilities of traditional CSS, empowering developers to create more efficient and maintainable styles. One of its standout features is the enhanced support for pseudo-elements ::before
and ::after
. In the upcoming sections, let's dive into the fascinating world of SCSS and discover how we can harness its potential to style and manipulate the ::before
and ::after
pseudo-elements. For more insights into SCSS functionality with CSS Pseudo elements, check out my other post here.
You can even combine SCSS with React or Vue, JavaScript frameworks, to achieve even more customized styling for your website. To learn how to use SCSS in React, check out my other blog post here. Happy coding!
References :
https://tympanus.net/codrops/css_reference/transform-origin/
Topics
Recent Blog List Content:
Most popular React.js UI Libraries - Exploring Mantine and Material-UI
How To Work With Relationship RESTful API Endpoints In React.js
Archive
Stories
Code Road’s Web Development Story List
Code Road
Material UI Administrator Dashboard with Next.js
Code Road
Nuxt.js and Chakra UI Website Template
Code Road
How To Use Apex Charts in Nuxt.js Web Application Dashboard
Code Road
Nuxt.js Dynamic Sitemap and Feed for Static Websites
Code Road
Nuxt.js SEO Head Component
Code Road
Chart.js in Nuxt.js: How To Implement
Code Road
On-page SEO List to Have in your Nuxt.js Static Website
Code Road
How To Build VueJS Geo Location Weather Application
Code Road
MySQL Docker Container with MySQL Workbench and PhpMyAdmin
Code Road