<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Eren</title>
    <description>The latest articles on DEV Community by Eren (@worldoftheweb).</description>
    <link>https://dev.to/worldoftheweb</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1377485%2Fc5a3e2e8-5eb6-4604-aeca-b46ba1c998f9.jpg</url>
      <title>DEV Community: Eren</title>
      <link>https://dev.to/worldoftheweb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/worldoftheweb"/>
    <language>en</language>
    <item>
      <title>is CSS the New Sass? Here’s What You Need to Know in 2025</title>
      <dc:creator>Eren</dc:creator>
      <pubDate>Fri, 14 Feb 2025 22:04:05 +0000</pubDate>
      <link>https://dev.to/worldoftheweb/is-css-the-new-sass-heres-what-you-need-to-know-in-2025-4254</link>
      <guid>https://dev.to/worldoftheweb/is-css-the-new-sass-heres-what-you-need-to-know-in-2025-4254</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjt5s08i7yhhyvfr53hvn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjt5s08i7yhhyvfr53hvn.jpg" alt="scss vs native css" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the start of 2024, &lt;a href="https://dev.to/worldoftheweb/sass-is-dead-css-vs-sass-2024-44hp"&gt;I wrote about how Native CSS&lt;/a&gt; had evolved significantly, reducing the need for Sass dependency and showing how class naming conventions — used meaningfully and reusable — could maximize our CSS efficiency.&lt;/p&gt;

&lt;p&gt;I’ve been a longtime Sass user, but in 2024 I decided to stop using Sass entirely, and none of my projects that year included Sass.&lt;/p&gt;

&lt;p&gt;So, do I regret it?&lt;/p&gt;

&lt;p&gt;Before answering, let’s take a look at what changed in the CSS world by 2025.&lt;/p&gt;

&lt;h2&gt;
  
  
  Variables (CSS Custom Properties)
&lt;/h2&gt;

&lt;p&gt;Sass variables are resolved at compile-time, while CSS custom properties can be updated at runtime in the browser. That makes them far more flexible for scenarios like theming or dark mode, where you need values to change dynamically.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2024&lt;/strong&gt; : %95+ browser support&lt;br&gt;
&lt;strong&gt;2025&lt;/strong&gt;: %99+ browser support&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// ------------ SCSS ----------- //
$primary-color: #3888ff;
.button {
  background-color: $primary-color;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* ------------ CSS ------------ */
:root {
  --primary-color: #3888ff;
}
.button {
  background-color: var(--primary-color);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Nesting
&lt;/h2&gt;

&lt;p&gt;One of Sass’s most famous advantages — nesting — is now almost fully supported in CSS as well, which significantly reduces the need for Sass. That said, Firefox may require a few phased updates, so we might only see near-complete support by the latter half of 2025.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2024&lt;/strong&gt; : %88+ browser support&lt;br&gt;
&lt;strong&gt;2025&lt;/strong&gt;: %92+ browser support&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// ------------ SCSS ----------- //
nav {
  ul {
    list-style: none;

    li {
      display: inline-block;
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* ------------ CSS ------------ */
nav {
  &amp;amp; ul {
    list-style: none;

    &amp;amp; li {
      display: inline-block;
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Partials — Modules
&lt;/h2&gt;

&lt;p&gt;In SCSS, you can create separate .scss files for specific areas (e.g., _input.scss for form elements) and import them into a main file, such as _form.scss. This modular approach helps you manage styles in one place.&lt;/p&gt;

&lt;p&gt;On the CSS side, it’s also possible to split a project into multiple files. We used to rely on &lt;a class="mentioned-user" href="https://dev.to/import"&gt;@import&lt;/a&gt;, though that’s not recommended anymore because it triggers extra HTTP requests. Modern bundlers (Webpack, Vite, etc.) typically combine all CSS into one final output. So effectively, “splitting files and reassembling them” is just as feasible with CSS.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2024&lt;/strong&gt; : %97+ browser support&lt;br&gt;
&lt;strong&gt;2025&lt;/strong&gt;: %99+ browser support (basic &lt;a class="mentioned-user" href="https://dev.to/import"&gt;@import&lt;/a&gt; usage)&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// ------------ SCSS ----------- //
// _buttons.scss
.button {
  padding: 1rem;
  border-radius: 4px;
}
// main.scss
@import 'buttons';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* ------------ CSS ------------ */
/* main.css */
@import url('buttons.css');

/* buttons.css */
.button {
  padding: 1rem;
  border-radius: 4px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Operators (Calculation Functions)
&lt;/h2&gt;

&lt;p&gt;In SCSS, you can perform basic arithmetic operations. Native CSS offers a variety of calculation functions, such as calc(), var(), clamp(), min(), and max(). For layout, we even have fit-content() and repeat().&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2024&lt;/strong&gt; : %96+ tarayıcı desteği&lt;br&gt;
&lt;strong&gt;2025&lt;/strong&gt;: %98+ tarayıcı desteği&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* ------------ CSS ------------ */
.container {
  width: calc((100% - 20px) / 2);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  New Native CSS Features
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Container queries&lt;/strong&gt;&lt;br&gt;
Also called “CSS Container,” container queries let you style elements based on the dimensions of their parent container, which is a huge step forward for modular, reusable components.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2025&lt;/strong&gt;: %94+ browser support&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* ------------ CSS ------------ */
.container {
  container-type: inline-size;
  container-name: card;
}

@container card (max-width: 400px) {
  .text {
    font-size: 1rem;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;a class="mentioned-user" href="https://dev.to/scope"&gt;@scope&lt;/a&gt; (CSS Scope)&lt;/strong&gt;&lt;br&gt;
&lt;a class="mentioned-user" href="https://dev.to/scope"&gt;@scope&lt;/a&gt; is aimed at ensuring that your styles only affect specific elements or a subsection of the DOM. It’s still quite new; even by 2025, full support hasn’t been reached. In the near future, though, &lt;a class="mentioned-user" href="https://dev.to/scope"&gt;@scope&lt;/a&gt; will make component-level styling a breeze.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2025&lt;/strong&gt;: %88+ browser support&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* ------------ CSS ------------ */
@scope (.card) {
  .title {
    color: blue;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;:is() , :where() , :has()&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We already covered this in a &lt;a href="https://youtu.be/VxevEQjXZ9w?si=plXVg-6G9xsr6N75" rel="noopener noreferrer"&gt;previous video&lt;/a&gt;. :is() and :where() were widely supported even back in 2023. :has() gained traction after Safari’s early adoption and other browsers followed by the end of 2024. By 2025, it’s comfortable to use in nearly all modern browsers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2025&lt;/strong&gt;: %98+ browser support&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* ------------ CSS ------------ */
.card:has(img) {
  border: 2px solid green;
}

nav :is(ul, ol) {
  list-style: none;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;@layer (Layered CSS)&lt;/strong&gt;&lt;br&gt;
This feature allows you to define layers in your style sheets, specifying which rules should load first and which later. It helps maintain order in large codebases by giving you more controlled overrides. By 2025, most modern browsers support it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2025&lt;/strong&gt;: %96+ browser support&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* ------------ CSS ------------ */
@layer base {
  h1 {
    font-family: sans-serif;
  }
}
@layer theme {
  h1 {
    color: red;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Features Sass Has That CSS Doesn’t (Yet)
&lt;/h2&gt;

&lt;p&gt;Sass’s most popular features — Mixins, Extends/Inheritance, Loops, and Conditional Logic — don’t have direct equivalents in Native CSS. However, &lt;a href="https://dev.to/worldoftheweb/how-should-class-naming-be-in-html-clean-code-4ggf"&gt;reusable class naming&lt;/a&gt; and modern CSS properties can remove much of that need. Plus, we can handle more complex scenarios with certain emerging tools or approaches.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:root {
  --primary-color: #3888ff;
  --gradient: linear-gradient(
    color-mix(in srgb, var(--primary-color) 20%, white)
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;As I mentioned in the piece I wrote at the beginning of 2024, Sass is no longer the indispensable tool it once was. With new CSS features, you rarely need a separate preprocessor. By 2025, the CSS ecosystem has basically caught up to (and partially surpassed) Sass’s core benefits, thanks to direct browser support.&lt;/p&gt;

&lt;p&gt;Still, Sass won’t disappear overnight. Legacy codebases, advanced plugins, and community habits mean Sass will remain around for quite a while.&lt;/p&gt;

&lt;p&gt;Do I regret dropping Sass? Absolutely not.&lt;/p&gt;

&lt;p&gt;By moving away from Sass, I avoided the extra setup and compile overhead. This reduced both the performance and management load on my projects. I also saw solid PageSpeed scores and W3C validator results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus — AI-Assisted Development (2025)
&lt;/h2&gt;

&lt;p&gt;By 2025, AI has become an integral part of our daily routines. In web development, tools like ChatGPT, Claude 3.5, Copilot, and Cursor can automate many routine tasks in CSS and Sass projects, from code conversion and cleanup to optimization and documentation. That said, as of the date of this article, fully handing over a project to AI might not be the healthiest approach. The best strategy is to collaborate with these tools in a controlled way!&lt;/p&gt;

&lt;p&gt;I also share content about general web technologies and the wider web ecosystem on &lt;a href="https://www.youtube.com/@worldoftheweb" rel="noopener noreferrer"&gt;my YouTube channel&lt;/a&gt; — hope to see you there!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://x.com/aktaseren_" rel="noopener noreferrer"&gt;X&lt;/a&gt; — &lt;a href="https://www.linkedin.com/in/erenaktas/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt; — &lt;a href="https://www.youtube.com/@worldoftheweb" rel="noopener noreferrer"&gt;Youtube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sources&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sass-lang.com/" rel="noopener noreferrer"&gt;SASS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/@worldoftheweb" rel="noopener noreferrer"&gt;Worldoftheweb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://caniuse.com/" rel="noopener noreferrer"&gt;Caniuse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.w3.org/TR/css-contain-3/" rel="noopener noreferrer"&gt;W3C&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Basic Building Blocks of Programming</title>
      <dc:creator>Eren</dc:creator>
      <pubDate>Sun, 14 Apr 2024 15:27:28 +0000</pubDate>
      <link>https://dev.to/worldoftheweb/basic-building-blocks-of-programming-24i2</link>
      <guid>https://dev.to/worldoftheweb/basic-building-blocks-of-programming-24i2</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw1qgd4frv6rpjt33o717.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw1qgd4frv6rpjt33o717.jpg" alt="Basic Building Blocks" width="800" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are basic building blocks of programming. Learning and understanding these building blocks and their relationships are of great importance in the process of learning and making software.&lt;/p&gt;

&lt;p&gt;In all programming languages, these basic elements are the same or very similar to each other. Their basic logic of operation is common. For this reason, if you learn a programming language by understanding its foundation, you will not have difficulty in learning other languages.&lt;/p&gt;

&lt;p&gt;In this article, we will examine the basic building blocks of programming through JavaScript. When we understand through JavaScript, we will also have understood in every language.&lt;/p&gt;

&lt;p&gt;What are the basic elements of programming languages?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Variables,&lt;/li&gt;
&lt;li&gt;Data types,&lt;/li&gt;
&lt;li&gt;Operators,&lt;/li&gt;
&lt;li&gt;Expressions,&lt;/li&gt;
&lt;li&gt;Control structures,&lt;/li&gt;
&lt;li&gt;Functions,&lt;/li&gt;
&lt;li&gt;Data structures,&lt;/li&gt;
&lt;li&gt;Classes and objects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now let's break down what these elements mean:&lt;/p&gt;

&lt;h2&gt;
  
  
  Variables
&lt;/h2&gt;

&lt;p&gt;Variables are named memory locations used to store data. Each variable has a data type and its value can be changed within the program. &lt;/p&gt;

&lt;p&gt;In JavaScript, variables can be declared in the following ways:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5z90mf270tg9yvz7uvyy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5z90mf270tg9yvz7uvyy.png" alt="Variables" width="800" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we examine each element here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;var, let, const&lt;/strong&gt; are predefined keywords. Each has predefined functions. They have different use cases, but their main function is to declare a variable. So we can call them &lt;strong&gt;Declaration keywords&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a, b, c&lt;/strong&gt; are the names we give to what we declare. We are making a declaration and we need to give a name to these declarations. We call them &lt;strong&gt;name&lt;/strong&gt; or &lt;strong&gt;reference&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;= is an &lt;strong&gt;operator&lt;/strong&gt;. The function of this operator is to perform an operation. The operation it performs is to assign a value to the variable we defined. Therefore, = is an &lt;strong&gt;assignment operator&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;29, "text", "surname"&lt;/strong&gt; are the values that these variables take. They consist of data. They can take many data types. We call them &lt;strong&gt;Data types / Value&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The symbol indicating the end of the line is ; &lt;strong&gt;Terminator&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw1qgd4frv6rpjt33o717.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw1qgd4frv6rpjt33o717.jpg" alt="Basic Building Blocks" width="800" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What have we done here?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We defined a value named a using a predefined keyword and assigned the value 29 to this variable using the = operator, thus performing an operation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As I mentioned at the beginning of the article, every language has its own way of writing. In JavaScript/TypeScript languages, we perform operations using these operators and data types.&lt;/p&gt;

&lt;p&gt;Let's briefly look at the other basic elements of programming below:&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Types
&lt;/h2&gt;

&lt;p&gt;Programming languages typically support different data types such as numbers, strings (text), and boolean values (true/false)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0flrlf674l009if49tth.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0flrlf674l009if49tth.png" alt="Data types" width="800" height="282"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Operators
&lt;/h2&gt;

&lt;p&gt;Operators are used to perform operations on variables and values. For example, mathematical operators (+, -, *, /), comparison operators (==, !=, &amp;lt;, &amp;gt;), and logical operators (&amp;amp;&amp;amp;, ||) can be used.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo3aibunapg3jek5tn9zk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo3aibunapg3jek5tn9zk.png" alt="Operators" width="800" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The combination of multiple operators is also called an expression. In this example, the line (a + b - 5) * 5 is an expression.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsf3bbroi9dtwbgl31wef.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsf3bbroi9dtwbgl31wef.png" alt="Expressions" width="800" height="282"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Control Structures
&lt;/h2&gt;

&lt;p&gt;Control structures are used to control the flow of a program. These structures include if-else statements, loops (for, while), switch-case statements, and functions.&lt;/p&gt;

&lt;p&gt;By reading line by line from top to bottom in a code block, we can determine the direction of the code's execution by controlling the flow using these control structures.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7cvsqsqiowpqioi2dlz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7cvsqsqiowpqioi2dlz.png" alt="Control Structures" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Functions
&lt;/h2&gt;

&lt;p&gt;Functions are reusable code blocks that perform a specific task. There are many ways to define functions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsfqmty73kpuqx76faz24.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsfqmty73kpuqx76faz24.png" alt="Funcitons" width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Arrays and Lists
&lt;/h2&gt;

&lt;p&gt;Diziler ve listeler, birden çok değeri saklamak için kullanılan veri yapılarıdır.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdtz2xqiwy8vrcollxrc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdtz2xqiwy8vrcollxrc.png" alt="Arrays" width="800" height="230"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Objects and Classes
&lt;/h2&gt;

&lt;p&gt;In object-oriented programming languages, objects and classes are fundamental elements. Objects are instances with properties and behaviors. Classes define the templates of objects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftdeq08u0uptrkb2ocjk3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftdeq08u0uptrkb2ocjk3.png" alt="Objects and Classes" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;We've only delved into the basics using the JavaScript language. Remember, there are different types of these definitions in every language. The important thing is to understand the logic.&lt;/p&gt;

&lt;p&gt;When we know and understand all of this, we can program. Because almost everything else is made up of these structures.&lt;/p&gt;

&lt;p&gt;For example, when we examine the frequently used console.log() statement, we can see that it consists of the Basic Building Blocks we defined above.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1n13cjtoh014k97xckpw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1n13cjtoh014k97xckpw.gif" alt="Console log " width="600" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;console.log() function can be understood by breaking it down into simple components:&lt;/p&gt;

&lt;p&gt;( &lt;strong&gt;console&lt;/strong&gt; ): The console object in JavaScript allows us to perform operations on the console. This object can be used in the browser or in the Node.js environment.&lt;/p&gt;

&lt;p&gt;( &lt;strong&gt;.&lt;/strong&gt; ) : The dot operator is used to access a property or method of an object. It is used to access the log method of the console object.&lt;/p&gt;

&lt;p&gt;( &lt;strong&gt;log&lt;/strong&gt; ) : log is a method of the console object, and this method allows us to write a message to the console. The log method is used to print the given values to the console.&lt;/p&gt;

&lt;p&gt;Therefore, the console.log() function prints a message to the console by calling the log method of the console object.&lt;br&gt;
For example, the code &lt;strong&gt;console.log("World of the Web")&lt;/strong&gt; prints "World of the Web" to the console by passing it to the log method of the console object.&lt;/p&gt;

&lt;p&gt;These basic components make up the logic of the console.log() function, and through this function, we can get information about the state of our code and debug it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4mbwmn5gl0iclshakbeu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4mbwmn5gl0iclshakbeu.jpg" alt="Console log" width="800" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After understanding these structures, our software learning process will be easier. &lt;/p&gt;

&lt;p&gt;I hope I have explained it.&lt;/p&gt;




&lt;p&gt;I warmly invite you all to &lt;a href="https://www.youtube.com/@worldoftheweb"&gt;my YouTube channel&lt;/a&gt;, where I not only share insightful content on web development but also explore the fascinating dynamics and technologies of the ever-evolving web world.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/aktaseren_"&gt;Twitter&lt;/a&gt; - &lt;a href="https://www.linkedin.com/in/erenaktas/"&gt;Linkedin&lt;/a&gt; - &lt;a href="https://www.youtube.com/@worldoftheweb"&gt;Youtube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The sources referenced in our article are:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/tuncay-baylan-43ab207?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAAFpWG4BC8iPLInhEBpkNdb79HwLmhTNID8&amp;amp;lipi=urn%3Ali%3Apage%3Ad_flagship3_profile_view_base%3BdRLLTHHQQcuauvzCWefOng%3D%3D"&gt;Tuncay Baylan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/@worldoftheweb"&gt;Worldoftheweb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How should class naming be in HTML? — Clean Code.</title>
      <dc:creator>Eren</dc:creator>
      <pubDate>Sat, 23 Mar 2024 14:34:26 +0000</pubDate>
      <link>https://dev.to/worldoftheweb/how-should-class-naming-be-in-html-clean-code-4ggf</link>
      <guid>https://dev.to/worldoftheweb/how-should-class-naming-be-in-html-clean-code-4ggf</guid>
      <description>&lt;p&gt;Many developers can spend a significant amount of time on naming during the development phase. In fact, for some, it can become a situation where more time is spent on naming than on the coding itself. This is because when naming elements such as classes, ids, functions, variables, and files, it is crucial to use descriptive, meaningful, concise, and consistent names that accurately reflect their purpose within the project.&lt;/p&gt;

&lt;p&gt;But why should we name things this way?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The written code becomes more readable and understandable. Our team members or developers from other teams can easily comprehend code blocks, improving collaboration and maintenance processes.&lt;/li&gt;
&lt;li&gt;Proper naming ensures consistency in our projects, making naming processes easier as the project grows.&lt;/li&gt;
&lt;li&gt;Our CSS files become more organized. Managing and finding a meaningfully named class is always more comfortable.&lt;/li&gt;
&lt;li&gt;It prevents naming conflicts when using external libraries.&lt;/li&gt;
&lt;li&gt;It benefits SEO (search engine optimization) and accessibility.&lt;/li&gt;
&lt;li&gt;It adheres to the DRY (don’t repeat yourself) principle, preventing code repetition.&lt;/li&gt;
&lt;li&gt;In large projects, new areas, features, and design revisions are constantly added. Proper naming facilitates better adaptation to these changes, ensuring smooth progress in code updates.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In software development, there is a crucial concept known as Clean Code, emphasizing code readability, understandability, sustainability, and organization. Proper naming is a significant part of Clean Code, and adherence to Clean Code principles begins with accurate naming.&lt;/p&gt;

&lt;p&gt;So, how should we name classes in HTML that allow us to build the framework of our websites?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Class names should be written in lowercase letters and separated by either a hyphen (-) or an underscore (_).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class=”header-block”&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div class="header_block"&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;!-- In cases where they are not separated by a hyphen (-), 
they are defined as two separate class names.--&amp;gt;

&amp;lt;div class="header block"&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;!-- These three divs are entirely distinct from each other. --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Apart from English, other languages should not be used, and camelCase naming conventions should be avoided. CamelCase is a naming convention where the first letter of a word is lowercase, and the initial letters of subsequent words are uppercase.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class=”başlık-alanı”&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div class="headerBlock"&amp;gt;&amp;lt;/div&amp;gt; 
&amp;lt;div class="başlıkAlanı"&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;!-- Absolutely should not be used like these examples. --&amp;gt;

&amp;lt;!-- The correct usage is as follows: --&amp;gt;

&amp;lt;div class="header-block"&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;CamelCase naming conventions are used when assigning IDs to HTML elements that require them.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div id=”sendButton”&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;It should be specific and descriptive, clearly defining the purpose of the area to which it is applied.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;article class=”article-content”&amp;gt;&amp;lt;/article&amp;gt;
&amp;lt;nav class="menu-block"&amp;gt;&amp;lt;/nav&amp;gt;
&amp;lt;div class="post-date"&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;It should be kept short and concise, avoiding excessively long naming conventions.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class=”authentication-block-container-area”&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div class="frequently-asked-questions-area"&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;!-- It is more appropriate to use as follows:  --&amp;gt;

&amp;lt;div class="authentication-block"&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div class="auth-block"&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div class="faq-area"&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Avoid naming conventions that are so short that developers outside of your context would find it challenging to understand.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class=”lg-cn”&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div class="ar-co"&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;!-- Can be used in the following forms: --&amp;gt;

&amp;lt;div class="login-content"&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div class="article-content"&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Generic names that could be used in many places should not be used on their own.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class=”blue”&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div class="right"&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div class="back"&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;!-- It is more appropriate to use in the following manner:--&amp;gt;

&amp;lt;div class="blue-btn"&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div class="content-right"&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div class="back-item"&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, what is the foundation of these recommendations? Why should we name our elements in this way?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In some browsers or platforms, there may be differences in case sensitivity. Therefore, consistently using lowercase letters for class names will prevent potential, unforeseen issues.&lt;/li&gt;
&lt;li&gt;We do not use Turkish names in naming because the language of software is universal and is English. Using a language other than English can create problems related to character differences based on language and case sensitivity, similar to the issues mentioned before.&lt;/li&gt;
&lt;li&gt;CamelCase is a widely accepted naming convention, preferred not only in class names but also in IDs, variables, and function names.&lt;/li&gt;
&lt;li&gt;Long naming conventions, especially when used with CSS in large projects, will increase file size, negatively impacting performance. Additionally, long names make the code less understandable and slow down the development process.&lt;/li&gt;
&lt;li&gt;Very short names can cause confusion and have limited usability due to their low character count, leading to inconsistent use in the development process.&lt;/li&gt;
&lt;li&gt;Naming conventions like “.left .red” are insufficient when used alone, as they lack clarity in meaning. Moreover, they can be used in different contexts, making the CSS code complex.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All the situations mentioned above are rules established according to the habits of the web development community, specific library expectations, and in compliance with HTML and CSS standards. General usage aligns with these conventions, but they are not mandatory.&lt;/p&gt;

&lt;p&gt;Naming standards are established to enhance code readability, maintain consistency in the project, provide organization, reduce the likelihood of errors, and facilitate effective collaboration within the team.&lt;/p&gt;

&lt;p&gt;You can access the &lt;a href="https://www.w3.org/TR/2011/WD-html5-20110405/"&gt;W3C document related to HTML&lt;/a&gt;, which defines the standards of the web world, &lt;a href="https://www.w3.org/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After explaining all of these, let’s conclude our article with a brief example code block.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;header class="header-container"&amp;gt;
    &amp;lt;div class="logo-block"&amp;gt;
        &amp;lt;h1&amp;gt;World of the Web&amp;lt;/h1&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;nav class="menu-block"&amp;gt;
        &amp;lt;ul&amp;gt;
            &amp;lt;li&amp;gt;&amp;lt;a href="/"&amp;gt;Subscribe&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
            &amp;lt;li&amp;gt;&amp;lt;a href="/"&amp;gt;My&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
            &amp;lt;li&amp;gt;&amp;lt;a href="youtube.com/@worldoftheweb"&amp;gt;Youtube&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
            &amp;lt;li&amp;gt;&amp;lt;a href="/"&amp;gt;Channel&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
        &amp;lt;/ul&amp;gt;
    &amp;lt;/nav&amp;gt;
    &amp;lt;div class="login-btn"&amp;gt;
        &amp;lt;span&amp;gt;Subscribe&amp;lt;/span&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/header&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I warmly invite you all to &lt;a href="https://www.youtube.com/@worldoftheweb"&gt;my YouTube channel&lt;/a&gt;, where I not only share insightful content on web development but also explore the fascinating dynamics and technologies of the ever-evolving web world.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/aktaseren_"&gt;Twitter&lt;/a&gt; — &lt;a href="https://www.linkedin.com/in/erenaktas/"&gt;Linkedin&lt;/a&gt; — &lt;a href="https://www.youtube.com/@worldoftheweb"&gt;Youtube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The sources referenced in our article are:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.w3.org/TR/2011/WD-html5-20110405/"&gt;W3C&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/reducing-css-bundle-size-70-by-cutting-the-class-names-and-using-scope-isolation-625440de600b"&gt;Freecodecamp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/@worldoftheweb"&gt;Worldoftheweb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://caniuse.com/"&gt;Caniuse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Originally published at &lt;a href="https://medium.com/@erennaktas/how-should-class-naming-be-in-html-clean-code-8703425a1c3e"&gt;medium&lt;/a&gt; on Jan 18, 2024.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>programming</category>
      <category>frontend</category>
    </item>
    <item>
      <title>SASS is dead? CSS vs SASS 2024</title>
      <dc:creator>Eren</dc:creator>
      <pubDate>Sat, 23 Mar 2024 14:23:18 +0000</pubDate>
      <link>https://dev.to/worldoftheweb/sass-is-dead-css-vs-sass-2024-44hp</link>
      <guid>https://dev.to/worldoftheweb/sass-is-dead-css-vs-sass-2024-44hp</guid>
      <description>&lt;p&gt;Originally published at &lt;a href="https://medium.com/@erennaktas/sass-is-dead-css-vs-sass-2024-a78c65c47a4d"&gt;medium&lt;/a&gt; on Jan 17, 2024.&lt;/p&gt;

&lt;p&gt;SASS is a CSS preprocessor that emerged years ago to simplify the process of writing CSS. To use SASS, we need to install it on our device, and since browsers cannot read SASS but can read CSS, we need to compile our SASS files to CSS.&lt;/p&gt;

&lt;p&gt;Thanks to SASS, we can write more organized and effective CSS with features not present in standard CSS.&lt;/p&gt;

&lt;p&gt;Now, let’s ascertain whether this situation persists into 2024.&lt;/p&gt;

&lt;p&gt;As of today, Native CSS has become much more powerful, and with the support of browsers, we can comfortably utilize the features that strengthen CSS. Let’s together explore the commonly used powerful features of SCSS and their counterparts in Native CSS:&lt;/p&gt;

&lt;h2&gt;
  
  
  Variables
&lt;/h2&gt;

&lt;p&gt;Defining variables, a key feature of SCSS, was not present in CSS. Variable declaration allows us to manage many properties from a single source. However, now we can also define variables in CSS in a similar manner. Browser support is over 97%.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:root{
    --black:#000;
    --fsize:20px;
    --bshadow:  0 5px 10px var(--black);
}
.content{
    box-shadow: var(--bshadow);
}
h1{
    color: var(--white);
    font-size: var(--fsize);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Nesting
&lt;/h2&gt;

&lt;p&gt;Nested writing in CSS is a syntax used to target a specific area. Thanks to SCSS, we can intervene with elements inside the main class by using it only once without repeatedly writing the main class.&lt;/p&gt;

&lt;p&gt;Now, in CSS as well, we can nest by using the main class only once. Let’s take a look at an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.container {
    padding: 32px;
    .content {
      margin: 16px;
        .btn {
            padding: 12px 32px;
            border-radius: 16px;
            &amp;amp; span {
                font-size: 18px;
            }

        }

    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above example used to be accomplished in CSS as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.container {padding: 32px;}
.container .content {margin: 16px;}
.container .content .btn {padding: 12px 32px; border-radius: 16px;}
.container .content .btn span {font-size: 18px;}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CSS nesting feature works in all major up-to-date browsers. However, browser support is still below 90%. In its statement, SASS mentioned that it would continue to use the nesting feature until the browser support reaches 98%.&lt;/p&gt;

&lt;h2&gt;
  
  
  Partials — Modules
&lt;/h2&gt;

&lt;p&gt;In SCSS, separate SCSS files can be created and used for specific areas. For example, we can create a _input.scss file for form elements and control these elements from a single location. Alternatively, we can import the _input.scss file into another SCSS file, such as _form.scss, and use it in the respective file.&lt;/p&gt;

&lt;p&gt;In CSS, we can call and use another CSS file in the desired CSS file as follows. By calling mobile.css in our CSS file, all the properties, including the variables defined in mobile.css, become functional. The browser support for @import is above 97%.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@import “mobile.css”;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Mixins
&lt;/h2&gt;

&lt;p&gt;In SCSS, mixins are an important feature that helps create reusable blocks that can take parameters. Let’s promptly examine an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@mixin rtl($property, $ltr-value, $rtl-value) {
  #{$property}: $ltr-value;

  [dir=rtl] &amp;amp; {
    #{$property}: $rtl-value;
  }
}

.sidebar {
  @include rtl(float, left, right);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This SCSS file produces the following output in CSS.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.sidebar {
  float: left;
}
[dir=rtl] .sidebar {
  float: right;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;check for more detail &lt;a href="https://sass-lang.com/documentation/at-rules/mixin/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In CSS, something similar to mixins can be achieved with variable declarations, but there is no direct equivalent to mixins in CSS. By using reusable CSS naming conventions as described in this article, you can eliminate the need for mixins.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extends/Inheritance
&lt;/h2&gt;

&lt;p&gt;In SCSS, the @extend feature allows us to call properties defined in one selector within another selector. It helps us avoid repeating the same properties multiple times. Let's see an example right away:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.error {
  border: 1px #f00;
  background-color: #fdd;

  &amp;amp;--serious {
    @extend .error;
    border-width: 3px;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CSS output of this code is as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.error, .error--serious {
  border: 1px #f00;
  background-color: #fdd;
}
.error--serious {
  border-width: 3px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This feature doesn’t have an equivalent in CSS, but it is not necessary when following the naming conventions as described in &lt;a href="https://medium.com/@erennaktas/html-class-isimlendirmeleri-nas%C4%B1l-olmal%C4%B1-clean-code-00de3465b349"&gt;this article&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operators
&lt;/h2&gt;

&lt;p&gt;In SCSS, calculations can be performed using basic arithmetic operations. However, in CSS, mathematical functions like min(), max(), calc(), and clamp() can be used. Browser support for these functions is over 96%.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.block{width: calc(100vh - 100px);}
.content{width: clamp(200px, 50%, 500px);}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to explore many other features of SASS, you can take a look &lt;a href="https://sass-lang.com/documentation/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As someone who has been using SASS for years, I believe that as of 2024, the benefits of SASS, including the hassles of installation, usage, and compilation, no longer justify its use. Particularly as projects grow, the compilation times become significantly burdensome.&lt;/p&gt;

&lt;p&gt;With CSS gaining strength day by day, especially in 2024, as the use of older technologies/browsers decreases, the prevalence of modern browsers increases, and CSS continues to improve, it will become even more powerful.&lt;/p&gt;

&lt;p&gt;In addition, by meaningfully reusing class naming conventions, we can maintain CSS efficiency at the highest level.&lt;/p&gt;

&lt;p&gt;Goodbye SASS! Thanks for everything…&lt;/p&gt;

&lt;p&gt;I warmly invite you all to &lt;a href="https://www.youtube.com/@worldoftheweb"&gt;my YouTube channel&lt;/a&gt;, where I not only share insightful content on web development but also explore the fascinating dynamics and technologies of the ever-evolving web world.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/aktaseren_"&gt;Twitter&lt;/a&gt; — &lt;a href="https://www.linkedin.com/in/erenaktas/"&gt;Linkedin&lt;/a&gt; — &lt;a href="https://www.youtube.com/@worldoftheweb"&gt;Youtube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The sources referenced in our article are:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sass-lang.com/"&gt;SASS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/@worldoftheweb"&gt;Worldoftheweb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://caniuse.com/"&gt;Caniuse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Originally published at &lt;a href="https://medium.com/@erennaktas/sass-is-dead-css-vs-sass-2024-a78c65c47a4d"&gt;medium&lt;/a&gt; on Jan 17, 2024.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>webdev</category>
      <category>css</category>
      <category>html</category>
    </item>
  </channel>
</rss>
