<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[WaQui'S bLoG]]></title><description><![CDATA[WaQui'S bLoG]]></description><link>https://blog.waquitechie.com</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 14:04:25 GMT</lastBuildDate><atom:link href="https://blog.waquitechie.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Supercharge Your JavaScript Skills with These Object Methods: A Beginner's Guide]]></title><description><![CDATA[JavaScript is a programming language that has become an integral part of modern web development. One of its fundamental data types is the object. Objects are collections of properties and methods that can be accessed and manipulated in various ways. ...]]></description><link>https://blog.waquitechie.com/supercharge-your-javascript-skills-with-these-object-methods-a-beginners-guide</link><guid isPermaLink="true">https://blog.waquitechie.com/supercharge-your-javascript-skills-with-these-object-methods-a-beginners-guide</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[javascript objects]]></category><category><![CDATA[Objects]]></category><category><![CDATA[iwritecode]]></category><dc:creator><![CDATA[MD]]></dc:creator><pubDate>Mon, 06 Mar 2023 08:19:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1678090557107/1665b427-aca2-41d5-8fcc-e50464170c3c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>JavaScript is a programming language that has become an integral part of modern web development. One of its fundamental data types is the object. Objects are collections of properties and methods that can be accessed and manipulated in various ways. In this article, we will explore JavaScript objects and their methods in more detail.</p>
<h1 id="heading-creating-objects-in-javascript">Creating Objects in JavaScript</h1>
<p>In JavaScript, objects can be created using the object literal syntax, constructor functions, or the ES6 class syntax. Let's take a look at each of these methods.</p>
<h2 id="heading-object-literal-syntax">Object Literal Syntax</h2>
<p>The simplest way to create an object in JavaScript is to use the object literal syntax. An object literal is a comma-separated list of name-value pairs enclosed in curly braces. Here's an example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> person = {
  <span class="hljs-attr">name</span>: <span class="hljs-string">'John'</span>,
  <span class="hljs-attr">age</span>: <span class="hljs-number">30</span>,
  <span class="hljs-attr">address</span>: {
    <span class="hljs-attr">street</span>: <span class="hljs-string">'123 Main St'</span>,
    <span class="hljs-attr">city</span>: <span class="hljs-string">'Anytown'</span>,
    <span class="hljs-attr">state</span>: <span class="hljs-string">'CA'</span>
  }
};
</code></pre>
<p>In this example, we've created an object called <code>person</code> that has three properties: <code>name</code>, <code>age</code>, and <code>address</code>. The <code>address</code> property is itself an object with its own properties.</p>
<h2 id="heading-constructor-functions">Constructor Functions</h2>
<p>Constructor functions are another way to create objects in JavaScript. These functions are used to create multiple instances of the same type of object. Here's an example:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Person</span>(<span class="hljs-params">name, age</span>) </span>{
  <span class="hljs-built_in">this</span>.name = name;
  <span class="hljs-built_in">this</span>.age = age;
}

<span class="hljs-keyword">const</span> person1 = <span class="hljs-keyword">new</span> Person(<span class="hljs-string">'John'</span>, <span class="hljs-number">30</span>);
<span class="hljs-keyword">const</span> person2 = <span class="hljs-keyword">new</span> Person(<span class="hljs-string">'Jane'</span>, <span class="hljs-number">25</span>);
</code></pre>
<p>In this example, we've created a constructor function called <code>Person</code> that takes two parameters: <code>name</code> and <code>age</code>. We then create two instances of the <code>Person</code> object using the <code>new</code> keyword.</p>
<h2 id="heading-es6-class-syntax">ES6 Class Syntax</h2>
<p>The ES6 class syntax provides a more concise way to create constructor functions. Here's an example:</p>
<pre><code class="lang-javascript"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Person</span> </span>{
  <span class="hljs-keyword">constructor</span>(name, age) {
    <span class="hljs-built_in">this</span>.name = name;
    <span class="hljs-built_in">this</span>.age = age;
  }
}

<span class="hljs-keyword">const</span> person = <span class="hljs-keyword">new</span> Person(<span class="hljs-string">'John'</span>, <span class="hljs-number">30</span>);
</code></pre>
<p>In this example, we've created a <code>Person</code> class with a constructor that takes two parameters: <code>name</code> and <code>age</code>. We then create an instance of the <code>Person</code> object using the <code>new</code> keyword.</p>
<h1 id="heading-object-methods-in-javascript">Object Methods in JavaScript</h1>
<p>In addition to properties, objects in JavaScript can also have methods. Methods are functions that are associated with an object and can be called using dot notation. Let's take a look at some common methods that are available on JavaScript objects.</p>
<h2 id="heading-objectkeys">Object.keys()</h2>
<p>The <code>Object.keys()</code> method is used to return an array of the object's property names. Here's an example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> person = {
  <span class="hljs-attr">name</span>: <span class="hljs-string">'John'</span>,
  <span class="hljs-attr">age</span>: <span class="hljs-number">30</span>,
  <span class="hljs-attr">address</span>: {
    <span class="hljs-attr">street</span>: <span class="hljs-string">'123 Main St'</span>,
    <span class="hljs-attr">city</span>: <span class="hljs-string">'Anytown'</span>,
    <span class="hljs-attr">state</span>: <span class="hljs-string">'CA'</span>
  }
};

<span class="hljs-keyword">const</span> keys = <span class="hljs-built_in">Object</span>.keys(person);
<span class="hljs-built_in">console</span>.log(keys); <span class="hljs-comment">// ['name', 'age', 'address']</span>
</code></pre>
<p>In this example, we use the <code>Object.keys()</code> method to get an array of the <code>person</code> object's property names.</p>
<h2 id="heading-objectvalues">Object.values()</h2>
<p>The <code>Object.values()</code> method is used to return an array of the object's property values. Here's an example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> person = {
  <span class="hljs-attr">name</span>: <span class="hljs-string">'John'</span>,
  <span class="hljs-attr">age</span>: <span class="hljs-number">30</span>,
  <span class="hljs-attr">address</span>: {
    <span class="hljs-attr">street</span>: <span class="hljs-string">'123 Main St'</span>,
    <span class="hljs-attr">city</span>: <span class="hljs-string">'Anytown'</span>,
    <span class="hljs-attr">state</span>: <span class="hljs-string">'CA'</span>
  }
};

<span class="hljs-keyword">const</span> values = <span class="hljs-built_in">Object</span>.values(person);
<span class="hljs-built_in">console</span>.log(values); <span class="hljs-comment">// ['John', 30, { street: '123 Main St', city: 'Anytown', state: 'CA' }]</span>
</code></pre>
<p>In this example, we use the <code>Object.values()</code> method to get an array of the <code>person</code> object's property values.</p>
<h2 id="heading-objectentries">Object.entries()</h2>
<p>The <code>Object.entries()</code> method is used to return an array of the object's property names and values. Here's an example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> person = {
  <span class="hljs-attr">name</span>: <span class="hljs-string">'John'</span>,
  <span class="hljs-attr">age</span>: <span class="hljs-number">30</span>,
  <span class="hljs-attr">address</span>: {
    <span class="hljs-attr">street</span>: <span class="hljs-string">'123 Main St'</span>,
    <span class="hljs-attr">city</span>: <span class="hljs-string">'Anytown'</span>,
    <span class="hljs-attr">state</span>: <span class="hljs-string">'CA'</span>
  }
};

<span class="hljs-keyword">const</span> entries = <span class="hljs-built_in">Object</span>.entries(person);
<span class="hljs-built_in">console</span>.log(entries); <span class="hljs-comment">// [['name', 'John'], ['age', 30], ['address', { street: '123 Main St', city: 'Anytown', state: 'CA' }]]</span>
</code></pre>
<p>In this example, we use the <code>Object.entries()</code> method to get an array of arrays, where each subarray contains a property name and its corresponding value.</p>
<h2 id="heading-objectassign">Object.assign()</h2>
<p>The <code>Object.assign()</code> method is used to copy the values of all enumerable own properties from one or more source objects to a target object. Here's an example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> target = { <span class="hljs-attr">a</span>: <span class="hljs-number">1</span>, <span class="hljs-attr">b</span>: <span class="hljs-number">2</span> };
<span class="hljs-keyword">const</span> source = { <span class="hljs-attr">b</span>: <span class="hljs-number">4</span>, <span class="hljs-attr">c</span>: <span class="hljs-number">5</span> };

<span class="hljs-keyword">const</span> result = <span class="hljs-built_in">Object</span>.assign(target, source);
<span class="hljs-built_in">console</span>.log(result); <span class="hljs-comment">// { a: 1, b: 4, c: 5 }</span>
</code></pre>
<p>In this example, we use the <code>Object.assign()</code> method to copy the properties from the <code>source</code> object to the <code>target</code> object. If a property already exists on the target object, its value is overwritten by the corresponding property value in the source object.</p>
<h2 id="heading-objectfreeze">Object.freeze()</h2>
<p>The <code>Object.freeze()</code> method is used to freeze an object, preventing any properties from being added, removed, or modified. Here's an example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> person = {
  <span class="hljs-attr">name</span>: <span class="hljs-string">'John'</span>,
  <span class="hljs-attr">age</span>: <span class="hljs-number">30</span>
};

<span class="hljs-built_in">Object</span>.freeze(person);

person.age = <span class="hljs-number">31</span>; <span class="hljs-comment">// This has no effect, because the object is frozen</span>
<span class="hljs-built_in">console</span>.log(person); <span class="hljs-comment">// { name: 'John', age: 30 }</span>
</code></pre>
<p>In this example, we use the <code>Object.freeze()</code> method to freeze the <code>person</code> object. When we attempt to modify the <code>age</code> property of the object, it has no effect because the object is frozen.</p>
<h1 id="heading-conclusion">Conclusion</h1>
<p>JavaScript objects and their methods are essential components of modern web development. They allow developers to create complex data structures and manipulate them in various ways. By understanding the different methods available on JavaScript objects, developers can write more efficient and effective code.</p>
]]></content:encoded></item><item><title><![CDATA[Mastering Media Queries: How to Create Responsive Designs for Mobile, Tablet, and Desktop Devices]]></title><description><![CDATA[Media queries are an essential aspect of modern web design. They allow developers to create responsive layouts that adjust based on the screen size and orientation of the device on which the website is being viewed. In this article, we will explore w...]]></description><link>https://blog.waquitechie.com/mastering-media-queries-how-to-create-responsive-designs-for-mobile-tablet-and-desktop-devices</link><guid isPermaLink="true">https://blog.waquitechie.com/mastering-media-queries-how-to-create-responsive-designs-for-mobile-tablet-and-desktop-devices</guid><category><![CDATA[CSS]]></category><category><![CDATA[CSS3]]></category><category><![CDATA[media queries]]></category><category><![CDATA[Responsive Web Design]]></category><dc:creator><![CDATA[MD]]></dc:creator><pubDate>Fri, 03 Mar 2023 15:30:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1677753075114/16a4587d-97fe-4f5b-bf47-2d8af8dd266d.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Media queries are an essential aspect of modern web design. They allow developers to create responsive layouts that adjust based on the screen size and orientation of the device on which the website is being viewed. In this article, we will explore what media queries are, how they work, and why they are important for creating effective and user-friendly web designs.</p>
<h2 id="heading-what-are-media-queries">What are Media Queries?</h2>
<p>Media queries are a CSS technique used to apply different styles based on various attributes of the device, such as screen size, resolution, and orientation. This means that a website can look different on a desktop computer than it does on a mobile device, for example, without having to create separate websites for each device. Media queries allow developers to create a single website that can adapt to different devices, which is known as responsive design.</p>
<h2 id="heading-how-do-media-queries-work">How do Media Queries Work?</h2>
<p>Media queries use the <code>@media</code> rule in CSS to apply styles to different devices based on their attributes. For example, the following media query applies styles to devices with a maximum screen width of <strong>600</strong> pixels:</p>
<pre><code class="lang-css"><span class="hljs-keyword">@media</span> screen <span class="hljs-keyword">and</span> (<span class="hljs-attribute">max-width:</span> <span class="hljs-number">600px</span>) { 
    <span class="hljs-comment">/* styles applied here */</span> 
}
</code></pre>
<h2 id="heading-why-are-media-queries-important">Why are Media Queries Important?</h2>
<p>Media queries are essential for creating effective and user-friendly web designs for several reasons. First, they allow developers to create responsive designs that adapt to different devices, which is crucial in an era where more and more people are accessing the internet on mobile devices. Second, they can help improve the performance of websites by reducing the amount of data that needs to be loaded. For example, if a website has a large image that is only necessary for larger screens, a media query can be used to load a smaller image on smaller screens, reducing the amount of data that needs to be downloaded. Finally, media queries can help improve accessibility by allowing developers to create designs that are easier to read and navigate for people with different abilities.</p>
<h2 id="heading-media-queries-for-mobile-tablet-and-desktop">Media Queries for Mobile, Tablet, and Desktop</h2>
<p>When using media queries, it's important to understand how to use the <code>min-width</code> and <code>max-width</code> properties effectively. These properties are used to set conditions for when certain styles should apply based on the width of the device's screen.</p>
<p><code>min-width</code>: This property sets a minimum width for the screen size, and the styles inside the media query will only apply if the screen width is greater than or equal to the specified value.</p>
<p><code>max-width</code>: This property sets a maximum width for the screen size, and the styles inside the media query will only apply if the screen width is less than or equal to the specified value.</p>
<p>By using both <code>min-width</code> and <code>max-width</code>, developers can create a range of screen sizes for which specific styles will apply. Here's an example of how this can be used to create effective and responsive designs for mobile, tablet, and desktop devices:</p>
<p><strong>Mobile</strong>: For mobile devices, it's recommended to use a <code>min-width</code> of <strong>320px</strong> and a <code>max-width</code> of <strong>767px</strong>. This will ensure that the styles applied to the website are optimized for smaller screens and touch-based interfaces. Styles for mobile devices may include larger font sizes, simplified layouts, and larger touch targets for buttons and links.</p>
<pre><code class="lang-css"><span class="hljs-keyword">@media</span> <span class="hljs-keyword">only</span> screen <span class="hljs-keyword">and</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">320px</span>) <span class="hljs-keyword">and</span> (<span class="hljs-attribute">max-width:</span> <span class="hljs-number">767px</span>) {
    <span class="hljs-comment">/* Styles for mobile devices */</span>
}
</code></pre>
<p><strong>Tablet</strong>*: For tablet devices, it's recommended to use a* <code>min-width</code> <em>of</em> <strong><em>768px</em></strong> <em>and a</em> <code>max-width</code> <em>of</em> <strong><em>1023px</em></strong>*. This will ensure that the styles applied to the website are optimized for larger screens but still provide a touch-based interface. Styles for tablet devices may include a more complex layout with more elements on the screen, smaller font sizes, and more detailed navigation menus.*</p>
<pre><code class="lang-css"><span class="hljs-keyword">@media</span> <span class="hljs-keyword">only</span> screen <span class="hljs-keyword">and</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">768px</span>) <span class="hljs-keyword">and</span> (<span class="hljs-attribute">max-width:</span> <span class="hljs-number">1023px</span>) {
    <span class="hljs-comment">/* Styles for tablet devices */</span> 
}
</code></pre>
<p><strong>Desktop</strong>*: For desktop devices, it's recommended to use a* <code>min-width</code> <em>of</em> <strong><em>1024px</em></strong>*. This will ensure that the styles applied to the website are optimized for larger screens and a traditional mouse and keyboard interface. Styles for desktop devices may include a more complex layout with multiple columns, smaller font sizes, and more detailed navigation menus.*</p>
<pre><code class="lang-css"><span class="hljs-keyword">@media</span> <span class="hljs-keyword">only</span> screen <span class="hljs-keyword">and</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1024px</span>) {
    <span class="hljs-comment">/* Styles for desktop devices */</span> 
}
</code></pre>
<p>In summary, by using media queries <code>min-width</code> and <code>max-width</code> properties, developers can create effective and responsive designs for mobile, tablet, and desktop devices. By optimizing the design for each screen size, users will have a better experience on the website, which can lead to higher engagement and increased conversions.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Media queries are an essential tool for modern web design, allowing developers to create responsive layouts that adapt to different devices. They work by applying different styles based on various attributes of the device, such as screen size, resolution, and orientation. Media queries are important for creating effective and user-friendly web designs because they allow for responsive layouts, can help improve website performance, and can improve accessibility for people with different abilities. If you are a web developer or designer, it is essential to understand how media queries work and how to use them effectively to create effective and engaging web designs.</p>
]]></content:encoded></item><item><title><![CDATA[Mastering JavaScript Arrays: A Guide to Understanding and Utilizing Array Methods]]></title><description><![CDATA[JavaScript is a powerful and versatile language that allows developers to create dynamic and interactive web pages. One of the most important data structures in JavaScript is the Array. Arrays are collections of values that can be stored and manipula...]]></description><link>https://blog.waquitechie.com/mastering-javascript-arrays-a-guide-to-understanding-and-utilizing-array-methods</link><guid isPermaLink="true">https://blog.waquitechie.com/mastering-javascript-arrays-a-guide-to-understanding-and-utilizing-array-methods</guid><category><![CDATA[iwritecode]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[array]]></category><category><![CDATA[array methods]]></category><dc:creator><![CDATA[MD]]></dc:creator><pubDate>Thu, 02 Mar 2023 00:22:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1677716237183/c510fa69-5732-40ed-b8da-9c860e449035.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>JavaScript is a powerful and versatile language that allows developers to create dynamic and interactive web pages. One of the most important data structures in JavaScript is the Array. Arrays are collections of values that can be stored and manipulated in various ways. In this article, we will explore the various methods available in JavaScript for manipulating Arrays.</p>
<h1 id="heading-creating-arrays-in-javascript"><strong>Creating Arrays in JavaScript</strong></h1>
<p>An array can be created in JavaScript using square brackets and the values can be separated by commas. For example, the following code creates an array with three elements:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> fruits = [<span class="hljs-string">'apple'</span>, <span class="hljs-string">'banana'</span>, <span class="hljs-string">'orange'</span>];
</code></pre>
<h1 id="heading-different-javascript-array-methods">Different JavaScript Array Methods</h1>
<p>In JavaScript, arrays are a fundamental data structure that stores collections of data in a single variable. Arrays can hold any type of data, including numbers, strings, objects, and even other arrays.</p>
<p>JavaScript Arrays have many built-in methods that can be used to manipulate and work with arrays. Here are some of the most common methods.</p>
<h2 id="heading-push">push()</h2>
<p>The <code>push()</code> method adds one or more elements to the end of an array and returns the new length of the array.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> fruits = [<span class="hljs-string">'apple'</span>, <span class="hljs-string">'banana'</span>];
fruits.push(<span class="hljs-string">'orange'</span>);
<span class="hljs-built_in">console</span>.log(fruits); <span class="hljs-comment">// Output: ["apple", "banana", "orange"]</span>
</code></pre>
<h2 id="heading-pop">pop()</h2>
<p>The <code>pop()</code> method removes the last element from an array and returns that element.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> fruits = [<span class="hljs-string">'apple'</span>, <span class="hljs-string">'banana'</span>, <span class="hljs-string">'orange'</span>];
fruits.pop();
<span class="hljs-built_in">console</span>.log(fruits); <span class="hljs-comment">// Output: ["apple", "banana"]</span>
</code></pre>
<h2 id="heading-shift">shift()</h2>
<p>The <code>shift()</code> method removes the first element from an array and returns that element.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> fruits = [<span class="hljs-string">'apple'</span>, <span class="hljs-string">'banana'</span>, <span class="hljs-string">'orange'</span>];
fruits.shift();
<span class="hljs-built_in">console</span>.log(fruits); <span class="hljs-comment">// Output: ["banana", "orange"]</span>
</code></pre>
<h2 id="heading-unshift">unshift()</h2>
<p>The unshift() method adds one or more elements to the beginning of an array and returns the new length of the array.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> fruits = [<span class="hljs-string">'banana'</span>, <span class="hljs-string">'orange'</span>];
fruits.unshift(<span class="hljs-string">'apple'</span>);
<span class="hljs-built_in">console</span>.log(fruits); <span class="hljs-comment">// Output: ["apple", "banana", "orange"]</span>
</code></pre>
<h2 id="heading-splice">splice()</h2>
<p>The <code>splice()</code> method changes the contents of an array by removing or replacing existing elements and/or adding new elements.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> fruits = [<span class="hljs-string">'apple'</span>, <span class="hljs-string">'banana'</span>, <span class="hljs-string">'orange'</span>];
fruits.splice(<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-string">'kiwi'</span>);
<span class="hljs-built_in">console</span>.log(fruits); <span class="hljs-comment">// Output: ["apple", "kiwi", "orange"]</span>
</code></pre>
<p>In the above example, the <code>splice()</code> method removes one element from index 1 and replaces it with 'kiwi'.</p>
<h2 id="heading-concat">concat()</h2>
<p>The <code>concat()</code> method is used to merge two or more arrays. This method does not change the existing arrays but instead returns a new array.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> fruits = [<span class="hljs-string">'apple'</span>, <span class="hljs-string">'banana'</span>];
<span class="hljs-keyword">const</span> vegetables = [<span class="hljs-string">'carrot'</span>, <span class="hljs-string">'potato'</span>];
<span class="hljs-keyword">const</span> food = fruits.concat(vegetables);
<span class="hljs-built_in">console</span>.log(food); <span class="hljs-comment">// Output: ["apple", "banana", "carrot", "potato"]</span>
</code></pre>
<h2 id="heading-slice">slice()</h2>
<p>The <code>slice()</code> method returns a copy of a portion of an array into a new array object selected from start to end (end not included). The original array will not be changed.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> fruits = [<span class="hljs-string">'apple'</span>, <span class="hljs-string">'banana'</span>, <span class="hljs-string">'orange'</span>];
<span class="hljs-keyword">const</span> citrusFruits = fruits.slice(<span class="hljs-number">1</span>, <span class="hljs-number">3</span>);
<span class="hljs-built_in">console</span>.log(citrusFruits); <span class="hljs-comment">// Output: ["banana", "orange"]</span>
</code></pre>
<p>In the above example, the slice() method creates a new array containing elements from the original array starting from index 1 and ending at index 3 (not inclusive).</p>
<h2 id="heading-reverse">reverse()</h2>
<p>The <code>reverse()</code> method reverses the order of the elements in an array.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> fruits = [<span class="hljs-string">'apple'</span>, <span class="hljs-string">'banana'</span>, <span class="hljs-string">'orange'</span>];
fruits.reverse();
<span class="hljs-built_in">console</span>.log(fruits); <span class="hljs-comment">// Output: ["orange", "banana", "apple"]</span>
</code></pre>
<h2 id="heading-sort">sort()</h2>
<p>The <code>sort()</code> method sorts the elements of an array in place and returns the sorted array. By default, the <code>sort()</code> method sorts the elements alphabetically.</p>
<pre><code class="lang-javascript"> <span class="hljs-keyword">const</span> fruits = [<span class="hljs-string">'banana'</span>, <span class="hljs-string">'apple'</span>, <span class="hljs-string">'orange'</span>];
fruits.sort();
<span class="hljs-built_in">console</span>.log(fruits); <span class="hljs-comment">// Output: ["apple", "banana", "orange"]</span>
</code></pre>
<p>However, it is important to note that the <code>sort()</code> method sorts the elements as strings, which can lead to unexpected results when sorting numbers. To sort numbers, you can pass a compare function as an argument to the <code>sort()</code> method.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> numbers = [<span class="hljs-number">4</span>, <span class="hljs-number">2</span>, <span class="hljs-number">8</span>, <span class="hljs-number">1</span>, <span class="hljs-number">5</span>];
numbers.sort(<span class="hljs-function">(<span class="hljs-params">a, b</span>) =&gt;</span> a - b);
<span class="hljs-built_in">console</span>.log(numbers); <span class="hljs-comment">// Output: [1, 2, 4, 5, 8]</span>
</code></pre>
<p>In the above example, the compare function subtracts the second number from the first number, which sorts the array in ascending order.</p>
<h2 id="heading-indexof">indexOf()</h2>
<p>The <code>indexOf()</code> method returns the index of the first occurrence of a specified value in an array, or -1 if the value is not found.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> fruits = [<span class="hljs-string">'apple'</span>, <span class="hljs-string">'banana'</span>, <span class="hljs-string">'orange'</span>];
<span class="hljs-keyword">const</span> index = fruits.indexOf(<span class="hljs-string">'banana'</span>);
<span class="hljs-built_in">console</span>.log(index); <span class="hljs-comment">// Output: 1</span>
</code></pre>
<h2 id="heading-includes">includes()</h2>
<p>The includes() method returns true if an array contains a specified value, otherwise, it returns false.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> fruits = [<span class="hljs-string">'apple'</span>, <span class="hljs-string">'banana'</span>, <span class="hljs-string">'orange'</span>];
<span class="hljs-keyword">const</span> includesApple = fruits.includes(<span class="hljs-string">'apple'</span>);
<span class="hljs-built_in">console</span>.log(includesApple); <span class="hljs-comment">// Output: true</span>

<span class="hljs-keyword">const</span> includesGrapes = fruits.includes(<span class="hljs-string">'grapes'</span>);
<span class="hljs-built_in">console</span>.log(includesGrapes); <span class="hljs-comment">// Output: false</span>
</code></pre>
<h2 id="heading-reduce">reduce()</h2>
<p>The reduce() method executes a provided function on each element of an array, resulting in a single output value. The method reduces the array to a single value by iterating over each element and accumulating the result.</p>
<p>The reduce() method takes two parameters: a callback function and an optional initial value. The callback function takes four arguments: the accumulator, the current value, the current index, and the array.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> numbers = [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>];
<span class="hljs-keyword">const</span> sum = numbers.reduce(<span class="hljs-function">(<span class="hljs-params">accumulator, currentValue</span>) =&gt;</span> accumulator + currentValue);
<span class="hljs-built_in">console</span>.log(sum); <span class="hljs-comment">// Output: 15</span>
</code></pre>
<p>In the above example, the reduce() method adds up all the numbers in the array by accumulating the result in the accumulator variable. The initial value of the accumulator is not provided, so it defaults to the first element in the array.</p>
<p>If an initial value is provided, the reduce() method will start with that value instead of the first element in the array.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> numbers = [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>];
<span class="hljs-keyword">const</span> sum = numbers.reduce(<span class="hljs-function">(<span class="hljs-params">accumulator, currentValue</span>) =&gt;</span> accumulator + currentValue, <span class="hljs-number">10</span>);
<span class="hljs-built_in">console</span>.log(sum); <span class="hljs-comment">// Output: 25</span>
</code></pre>
<p>In this example, the reduce() method starts with an initial value of 10 and adds up all the numbers in the array, resulting in a final sum of 25.</p>
<h2 id="heading-foreach">forEach()</h2>
<p>The <code>forEach()</code> method is used to iterate over an array and perform some operation on each of its elements. The method takes a callback function as its argument, which is executed on each element in the array.</p>
<p>The callback function takes three parameters: the current element, the index of the current element, and the entire array. You can use any or all of these parameters inside the callback function to perform the desired operation on each element.</p>
<p>Here's an example of using the <code>forEach()</code> method to log each element in an array to the console:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> fruits = [<span class="hljs-string">'apple'</span>, <span class="hljs-string">'banana'</span>, <span class="hljs-string">'orange'</span>];

fruits.forEach(<span class="hljs-function">(<span class="hljs-params">fruit, index</span>) =&gt;</span> {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">`<span class="hljs-subst">${index + <span class="hljs-number">1</span>}</span>. <span class="hljs-subst">${fruit}</span>`</span>);
});

<span class="hljs-comment">// Output:</span>
<span class="hljs-comment">// 1. apple</span>
<span class="hljs-comment">// 2. banana</span>
<span class="hljs-comment">// 3. orange</span>
</code></pre>
<p>In this example, the <code>forEach()</code> method is used to iterate over the <code>fruits</code> array and log each element to the console along with its index. The callback function takes two parameters: <code>fruit</code> and <code>index</code>. The <code>fruit</code> parameter is the current element being processed in the array and the <code>index</code> parameter is the index of the current element.</p>
<p>The <code>forEach()</code> method is a useful tool for working with arrays when you want to perform a simple operation on each element, without the need to create a new array or modify the existing one</p>
<h2 id="heading-filter">filter()</h2>
<p>The <code>filter()</code> method creates a new array with all elements that pass the test implemented by the provided function.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> numbers = [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>];
<span class="hljs-keyword">const</span> evenNumbers = numbers.filter(<span class="hljs-function"><span class="hljs-params">num</span> =&gt;</span> num % <span class="hljs-number">2</span> === <span class="hljs-number">0</span>);
<span class="hljs-built_in">console</span>.log(evenNumbers); <span class="hljs-comment">// Output: [2, 4]</span>
</code></pre>
<p>In the above example, the filter() method creates a new array containing only the even numbers.</p>
<h2 id="heading-map">map()</h2>
<p>The map() method creates a new array with the results of calling a provided function on every element in the calling array.</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> numbers = [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>];
<span class="hljs-keyword">const</span> doubledNumbers = numbers.map(<span class="hljs-function"><span class="hljs-params">num</span> =&gt;</span> num * <span class="hljs-number">2</span>);
<span class="hljs-built_in">console</span>.log(doubledNumbers); <span class="hljs-comment">// Output: [2, 4, 6, 8, 10]</span>
</code></pre>
<p>In the above example, the map() method creates a new array containing the doubled numbers.</p>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>JavaScript Arrays are an essential data structure in the language, providing developers with powerful tools for managing collections of data. The built-in methods provided by JavaScript allow for efficient manipulation of arrays, making it easy to add, remove, and modify elements within them. By understanding the various methods available for working with arrays, developers can write cleaner, more concise code and create more robust applications.</p>
]]></content:encoded></item><item><title><![CDATA[Mastering JavaScript Functions]]></title><description><![CDATA[JavaScript is one of the most popular programming languages in the world, and one of its most important features is functions. Functions in JavaScript are incredibly powerful and versatile, and they play a vital role in creating complex and dynamic w...]]></description><link>https://blog.waquitechie.com/mastering-javascript-functions</link><guid isPermaLink="true">https://blog.waquitechie.com/mastering-javascript-functions</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[javascript functions]]></category><category><![CDATA[functions]]></category><category><![CDATA[#arrowfunction]]></category><dc:creator><![CDATA[MD]]></dc:creator><pubDate>Sat, 11 Feb 2023 18:53:36 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1679770268410/66a600d0-ca4f-42a2-b2d7-3d1f456bdd14.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>JavaScript is one of the most popular programming languages in the world, and one of its most important features is functions. Functions in JavaScript are incredibly powerful and versatile, and they play a vital role in creating complex and dynamic web applications. In this article, we will explore some of the unique and interesting aspects of JavaScript functions that you may not find on other websites along with some code examples.</p>
<h1 id="heading-lets-first-discuss-how-functions-can-be-created-in-javascript">Let's first discuss how functions can be created in JavaScript.</h1>
<p>There are several ways to create functions in JavaScript. The most common way is to use the function declaration syntax, which uses the <code>function</code> keyword followed by the function name, arguments enclosed in parentheses, and the function body enclosed in curly braces. Here is an example:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">addNumbers</span>(<span class="hljs-params">a, b</span>) </span>{
  <span class="hljs-keyword">return</span> a + b;
}
</code></pre>
<p>In the above example, the <code>addNumbers()</code> function takes two arguments <code>a</code> and <code>b</code>, and returns their sum.</p>
<p>Another way to create functions in JavaScript is to use function expressions, which involve assigning a function to a variable or property. Here is an example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> addNumbers = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">a, b</span>) </span>{
  <span class="hljs-keyword">return</span> a + b;
};
</code></pre>
<p>In the above example, the <code>addNumbers</code> variable is assigned to a function that takes two arguments <code>a</code> and <code>b</code>, and returns their sum.</p>
<p>A third way to create functions in JavaScript is to use arrow functions, which provide a more concise syntax for creating functions. Arrow functions use the <code>=&gt;</code> symbol instead of the <code>function</code> keyword, and do not have their own <code>this</code> or <code>arguments</code> bindings. Here is an example:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> addNumbers = <span class="hljs-function">(<span class="hljs-params">a, b</span>) =&gt;</span> a + b;
</code></pre>
<p>In the above example, the <code>addNumbers</code> variable is assigned to an arrow function that takes two arguments <code>a</code> and <code>b</code>, and returns their sum.</p>
<p>Regardless of how you create a function in JavaScript, you can call it by using the function name followed by parentheses, with any necessary arguments enclosed in the parentheses. Here is an example of calling the <code>addNumbers()</code> function:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> result = addNumbers(<span class="hljs-number">2</span>, <span class="hljs-number">3</span>);
<span class="hljs-built_in">console</span>.log(result); <span class="hljs-comment">// 5</span>
</code></pre>
<p>In the above example, the <code>addNumbers()</code> function is called with the arguments 2 and 3, and the result is assigned to the <code>result</code> variable and logged to the console.</p>
<p>Functions are an essential part of JavaScript programming, and understanding how to create and use them effectively is crucial for building robust and maintainable applications.</p>
<p>Now let's explore some unique and powerful features of JavaScript Functions, along with some code examples.</p>
<h2 id="heading-first-class-citizens">First-Class Citizens</h2>
<p>In JavaScript, functions are first-class citizens. This means that functions are treated like any other value in the language, and they can be assigned to variables, passed as arguments to other functions, and returned as values from functions. This feature makes JavaScript incredibly flexible and allows developers to write code more concisely and expressively.</p>
<h2 id="heading-default-parameters">Default Parameters</h2>
<p>JavaScript functions can have default parameters, which are used when an argument is not passed to a function or is undefined. This is useful when you want to provide a default value for an argument or when you want to prevent errors in the case of missing arguments. Here is an example of a function with default parameters:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">addNumbers</span>(<span class="hljs-params">a = <span class="hljs-number">0</span>, b = <span class="hljs-number">0</span></span>) </span>{
  <span class="hljs-keyword">return</span> a + b;
}

<span class="hljs-built_in">console</span>.log(addNumbers()); <span class="hljs-comment">// 0</span>
<span class="hljs-built_in">console</span>.log(addNumbers(<span class="hljs-number">2</span>, <span class="hljs-number">3</span>)); <span class="hljs-comment">// 5</span>
<span class="hljs-built_in">console</span>.log(addNumbers(<span class="hljs-number">2</span>)); <span class="hljs-comment">// 2</span>
</code></pre>
<p>In the above example, if no arguments are passed to the <code>addNumbers()</code> function, it will return 0, as both <code>a</code> and <code>b</code> are set to 0 by default. If one argument is passed, the other argument will be set to 0 by default.</p>
<h2 id="heading-rest-parameters">Rest Parameters</h2>
<p>JavaScript functions can also have rest parameters, which allow a function to accept an indefinite number of arguments as an array. This is useful when you want to create a function that can handle multiple arguments of different types. Here is an example of a function with rest parameters:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">addNumbers</span>(<span class="hljs-params">...numbers</span>) </span>{
  <span class="hljs-keyword">return</span> numbers.reduce(<span class="hljs-function">(<span class="hljs-params">acc, curr</span>) =&gt;</span> acc + curr, <span class="hljs-number">0</span>);
}

<span class="hljs-built_in">console</span>.log(addNumbers(<span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>)); <span class="hljs-comment">// 9</span>
<span class="hljs-built_in">console</span>.log(addNumbers(<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>)); <span class="hljs-comment">// 15</span>
</code></pre>
<p>In the above example, the <code>addNumbers()</code> function accepts an indefinite number of arguments using the rest parameter <code>...numbers</code>. The function then uses the <code>reduce()</code> method to sum up all the numbers in the array.</p>
<h2 id="heading-named-parameters">Named Parameters</h2>
<p>JavaScript functions can also have named parameters, which allow a function to accept arguments as named properties of an object. This is useful when you want to make function arguments more self-documenting and easier to read. Here is an example of a function with named parameters:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">createUser</span>(<span class="hljs-params">{ name, email, age }</span>) </span>{
  <span class="hljs-keyword">return</span> { name, email, age };
}

<span class="hljs-built_in">console</span>.log(createUser({ <span class="hljs-attr">name</span>: <span class="hljs-string">'John'</span>, <span class="hljs-attr">email</span>: <span class="hljs-string">'john@example.com'</span>, <span class="hljs-attr">age</span>: <span class="hljs-number">30</span> }));
<span class="hljs-comment">// { name: 'John', email: 'john@example.com', age: 30 }</span>
</code></pre>
<p>In the above example, the <code>createUser()</code> function accepts an object with named properties <code>name</code>, <code>email</code>, and <code>age</code>. The function then returns an object with these properties.</p>
<h2 id="heading-currying">Currying</h2>
<p>JavaScript functions can also be curried, which means that they can be partially applied to create a new function with some of its arguments already set. This is useful when you want to reuse a function with different sets of arguments or when you want to create a specialized version of a function for a specific use case. Here is an example of a curried function:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">add</span>(<span class="hljs-params">a</span>) </span>{
  <span class="hljs-keyword">return</span> <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">b</span>) </span>{
    <span class="hljs-keyword">return</span> a + b;
  };
}

<span class="hljs-keyword">const</span> add5 = add(<span class="hljs-number">5</span>);

<span class="hljs-built_in">console</span>.log(add5(<span class="hljs-number">3</span>)); <span class="hljs-comment">// 8</span>
<span class="hljs-built_in">console</span>.log(add5(<span class="hljs-number">7</span>)); <span class="hljs-comment">// 12</span>
</code></pre>
<p>In the above example, the <code>add()</code> function returns another function that adds its argument to the original argument <code>a</code>. The <code>add5</code> variable is created by partially applying <code>add()</code> with the value 5. <code>add5()</code> then adds 5 to its argument, returning a new value. This allows you to reuse the <code>add()</code> function with different values of <code>a</code> by creating new functions with <code>add()</code> as a factory.</p>
<h2 id="heading-higher-order-functions">Higher-Order Functions</h2>
<p>JavaScript functions can also be higher-order functions, which means that they can take other functions as arguments or return functions as their result. This is useful when you want to create functions that can work with a wide range of inputs or when you want to abstract away specific behaviors of a function. Here is an example of a higher-order function:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> numbers = [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>];

<span class="hljs-keyword">const</span> doubledNumbers = numbers.map(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">number</span>) </span>{
  <span class="hljs-keyword">return</span> number * <span class="hljs-number">2</span>;
});

<span class="hljs-built_in">console</span>.log(doubledNumbers); <span class="hljs-comment">// Output: [2, 4, 6, 8, 10]</span>
</code></pre>
<p>In this example, we have an array of numbers <code>[1, 2, 3, 4, 5]</code>. We then use the <code>map</code> function to create a new array <code>doubledNumbers</code> where each number in the original array is doubled.</p>
<p>The <code>map</code> function takes a function as its argument that will be applied to each element of the original array. In this case, the function takes a <code>number</code> parameter and returns the result of multiplying that number by 2. The <code>map</code> function applies this function to each element of the <code>numbers</code> array and returns a new array with the results.</p>
<p>Finally, we log the <code>doubledNumbers</code> array to the console, which outputs <code>[2, 4, 6, 8, 10]</code>.</p>
<h2 id="heading-functions-can-be-memoized">Functions Can Be Memoized</h2>
<p>Memoization is a technique where the results of a function call are cached so that future calls with the same arguments can be returned from the cache instead of being recalculated. JavaScript functions can be memoized using closures or by using third-party libraries such as Lodash or Underscore. This feature is useful when dealing with computationally expensive functions or when you want to optimize performance.</p>
<h2 id="heading-functions-can-be-used-as-constructors">Functions Can Be Used as Constructors</h2>
<p>In JavaScript, functions can also be used as constructors to create new objects. When a function is called with the new keyword, a new object is created and the function's prototype is set as the prototype of the new object. This feature is useful when you want to create new objects with shared properties and methods.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Person</span>(<span class="hljs-params">name, age</span>) </span>{
  <span class="hljs-built_in">this</span>.name = name;
  <span class="hljs-built_in">this</span>.age = age;
}

Person.prototype.greet = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">`Hello, my name is <span class="hljs-subst">${<span class="hljs-built_in">this</span>.name}</span> and I'm <span class="hljs-subst">${<span class="hljs-built_in">this</span>.age}</span> years old.`</span>);
}

<span class="hljs-keyword">const</span> alice = <span class="hljs-keyword">new</span> Person(<span class="hljs-string">'Alice'</span>, <span class="hljs-number">30</span>);
<span class="hljs-keyword">const</span> bob = <span class="hljs-keyword">new</span> Person(<span class="hljs-string">'Bob'</span>, <span class="hljs-number">25</span>);

alice.greet(); <span class="hljs-comment">// logs "Hello, my name is Alice and I'm 30 years old."</span>
bob.greet(); <span class="hljs-comment">// logs "Hello, my name is Bob and I'm 25 years old."</span>
</code></pre>
<p>In this example, the <code>Person</code> function is used as a constructor to create new objects with properties <code>name</code> and <code>age</code>. The <code>this</code> keyword is used inside the function to set these properties for each new object that is created.</p>
<p>The <code>Person.prototype</code> property is used to add a new method <code>greet()</code> to the <code>Person</code> function. This method is shared by all objects created with the <code>Person</code> constructor since it is added to the constructor's prototype.</p>
<p>Finally, two new objects <code>alice</code> and <code>bob</code> are created using the <code>Person</code> constructor, and the <code>greet()</code> method is called on each object to display a greeting message.</p>
<p>Using functions as constructors in JavaScript can be a powerful way to create new objects with shared properties and methods, and to create modular and reusable code.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>JavaScript functions are a powerful tool for developers, providing a wide range of functionality and flexibility. By using default parameters, rest parameters, named parameters, currying, and higher-order functions, you can create functions that are reusable, adaptable, and easy to read. These features are unique to JavaScript and can help you write more efficient and maintainable code.</p>
]]></content:encoded></item><item><title><![CDATA[A Simple Guide to TailwindCSS for Beginners]]></title><description><![CDATA[TailwindCSS is not a new framework but rather a CSS utility library that assists coders in creating websites and apps faster. It helps you manage the appearance of your elements and iterate on changes with ease. It is easy to use, intuitive and acces...]]></description><link>https://blog.waquitechie.com/a-simple-guide-to-tailwindcss-for-beginners</link><guid isPermaLink="true">https://blog.waquitechie.com/a-simple-guide-to-tailwindcss-for-beginners</guid><category><![CDATA[Tailwind CSS Tutorial]]></category><category><![CDATA[Tailwind CSS]]></category><category><![CDATA[iwritecode]]></category><category><![CDATA[Tailwind CSS]]></category><dc:creator><![CDATA[MD]]></dc:creator><pubDate>Sat, 13 Aug 2022 19:29:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1660418833784/BJelvuHZ5.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>TailwindCSS is not a new framework but rather a CSS utility library that assists coders in creating websites and apps faster. It helps you manage the appearance of your elements and iterate on changes with ease. It is easy to use, intuitive and accessible to beginners. Tailwind comes with pre-built components that can be used right away or as an inspiration for your own implementation. You can use it on any existing project, and it will not add any additional load time. This article covers everything you need to know about TailwindCSS so you can start using it right away.</p>
<h1 id="heading-what-is-tailwindcss">What is TailwindCSS?</h1>
<p>Tailwind is a utility-first CSS framework that uses the concept of utility classes to accelerate your workflow. The framework is lightweight, has a small footprint, and loads very quickly, making it the perfect option for your projects. It is an ideal solution for websites of all types, from blogs to eCommerce stores.
Unlike other CSS frameworks with a massive library of styles, Tailwind is a focused toolkit. It is created for developers with a focus on simplicity and ease of use, and it doesn’t require any predefined structure within your project.</p>
<h1 id="heading-how-to-install-tailwind">How to Install Tailwind?</h1>
<p>Before you start using Tailwind, you first need to install it in your project. Or you can use the Play CDN to try Tailwind right in the browser without any build step, and You can do this by adding the Play CDN script tag to the <code>&lt;head&gt;</code> of your HTML file and start using Tailwind’s utility classes to style your content.</p>
<h2 id="heading-add-the-play-cdn-script-to-your-html">Add the Play CDN script to your HTML</h2>
<p><code>&lt;script src="https://cdn.tailwindcss.com"&gt;&lt;/script&gt;</code></p>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!doctype <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://cdn.tailwindcss.com"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">h1</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"text-3xl font-bold underline"</span>&gt;</span>
    Hello world!
  <span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<h2 id="heading-try-customizing-your-config">Try customizing your config</h2>
<p>You can also edit the tailwind.config object to <a target="_blank" href="https://tailwindcss.com/docs/configuration">customize your configuration</a> with your design tokens.</p>
<pre><code><span class="hljs-operator">&lt;</span>script<span class="hljs-operator">&gt;</span>
    tailwind.config <span class="hljs-operator">=</span> {
      theme: {
        extend: {
          colors: {
            myBlue: <span class="hljs-string">'#2827CC'</span>,
          }
        }
      }
    }
  <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>script<span class="hljs-operator">&gt;</span>
</code></pre><pre><code class="lang-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://cdn.tailwindcss.com"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript">
    tailwind.config = {
      <span class="hljs-attr">theme</span>: {
        <span class="hljs-attr">extend</span>: {
          <span class="hljs-attr">colors</span>: {
            <span class="hljs-attr">myBlue</span>: <span class="hljs-string">'#2827CC'</span>,
          }
        }
      }
    }
  </span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">h1</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"text-3xl font-bold underline text-myBlue"</span>&gt;</span>
    Hello world!
  <span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<h1 id="heading-how-to-use-css-flexbox-in-tailwindcss">How to use CSS flexbox in tailwindcss?</h1>
<p>The flex feature enables you to create a responsive layout for various screen sizes. This means that different screen sizes will display your content differently. This feature is helpful for situations where you want to create a layout that adapts to different screen sizes. For example, if you create a layout for your website’s article section, you can use the flex feature to create a layout that fits the article’s content.</p>
<h2 id="heading-for-flex-direction-it-uses-the-below-class">For flex-direction, it uses the below class:</h2>
<p><code>flex-row</code> class in tailwindcss used for <code>flex-direction: row;</code><br /><code>flex-row-reverse</code> class in tailwindcss used for <code>flex-direction: row-reverse;</code><br /><code>flex-col</code> class in tailwindcss used for <code>flex-direction: column;</code><br /><code>flex-col-reverse</code> class in tailwindcss used for <code>flex-direction: column-reverse;</code>  </p>
<h2 id="heading-for-flex-wrap-it-uses-the-below-class">For flex-wrap, it uses the below class:</h2>
<p><code>flex-wrap</code> for the property <code>flex-wrap: wrap;</code><br /><code>flex-wrap-reverse</code> for the property <code>flex-wrap: wrap-reverse;</code><br /><code>flex-nowrap</code> for the property <code>flex-wrap: nowrap;</code>  </p>
<h2 id="heading-flex">Flex</h2>
<p>Utilities for controlling how flex items both grow and shrink.<br /><code>flex-1</code> can have property <code>flex: 1 1 0%;</code> in tailwind.<br /><code>flex-auto</code> can have property <code>flex: 1 1 auto;</code> in tailwind.<br /><code>flex-initial</code> can have property <code>flex: 0 1 auto;</code> in tailwind.<br /><code>flex-none</code> can have property <code>flex: none;</code> in tailwind.</p>
<h1 id="heading-how-to-use-hover-focus-in-tailwindcss">How to use Hover, Focus in tailwindcss?</h1>
<p>The hover and focus features allow you to create a hover-based action that appears when a user hovers over an element. This feature is helpful for situations where you want to add an action to an element that is not clickable. For example, if you want to create a hover-based effect on your website’s logo, you can use the hover feature. You can use it anywhere as per your choice.  </p>
<p>Each utility class in Tailwind can be applied conditionally by adding a modifier to the start of the class name that defines the condition you want to target.  </p>
<p>For example, if you want to apply the <code>bg-red-400</code> class on hover, use the <code>hover:bg-red-400</code> class:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"bg-red-800 hover:bg-red-400"</span>&gt;</span>
  Save changes
<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
</code></pre>
<p>Before hover:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660420294129/SGIEgvM-w.png" alt="screenshot-127.0.0.1_5500-2022.08.14-01_19_40.png" /></p>
<p>After Hover:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660420891706/5HeMFTaM7.png" alt="screenshot-127.png" /></p>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!doctype <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://cdn.tailwindcss.com"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"flex items-center justify-center h-screen"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"bg-red-800 hover:bg-red-400 p-3 text-white rounded-md"</span>&gt;</span>
      Save changes
    <span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>

<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>Some of the modifiers that Tailwind includes:<br />Pseudo-classes, like <code>:hover</code>, <code>:focus</code>, <code>:first-child</code>, and <code>:required</code><br />Pseudo-elements, like <code>::before</code>, <code>::after</code>, <code>::placeholder</code>, and <code>::selection</code></p>
<p>There are many more in Tailwindcss; you can explore the <a target="_blank" href="https://tailwindcss.com/docs/installation">Tailwind Docs</a> for more classes.</p>
]]></content:encoded></item><item><title><![CDATA[The Basics of Git and GitHub - A Simple Cheatsheet]]></title><description><![CDATA[A developer's workflow can be greatly enhanced with a version control system like git. A version control system provides a detailed history of file changes and, more importantly, makes it possible to revert to previous versions if necessary. Many dev...]]></description><link>https://blog.waquitechie.com/the-basics-of-git-and-github-a-simple-cheatsheet</link><guid isPermaLink="true">https://blog.waquitechie.com/the-basics-of-git-and-github-a-simple-cheatsheet</guid><category><![CDATA[Git]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[Gitcommands]]></category><category><![CDATA[Learn Code Online]]></category><category><![CDATA[iwritecode]]></category><dc:creator><![CDATA[MD]]></dc:creator><pubDate>Sun, 24 Jul 2022 20:24:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/842ofHC6MaI/upload/v1658694059109/L-OTAowZ2.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A developer's workflow can be greatly enhanced with a version control system like git. A version control system provides a detailed history of file changes and, more importantly, makes it possible to revert to previous versions if necessary. Many developers opt to use third-party web services like GitHub to host their Git repositories.
To initialize a repo, you first need to create a directory for where your project will live. Once you've done that, you can open up your terminal and change into that directory. Then, you can run the command <code>git init</code>, which will initialize an empty repo. You can then start adding files to this repo and committing changes.</p>
<h1 id="heading-setting-up-user-and-email-on-git">Setting up user and email on Git</h1>
<p>You can setup the username and email by running these codes: 
<code>git config --global user.name “Username”</code> then press enter.
Again type <code>git config --global user.email “user@usermail.com”</code> and press enter again.
Now type <code>git config --list</code> to show the configuration and verify that you have entered the correct name and email</p>
<pre><code>git config <span class="hljs-operator">-</span><span class="hljs-operator">-</span>global user.<span class="hljs-built_in">name</span> “Username”
</code></pre><pre><code>git config <span class="hljs-operator">-</span><span class="hljs-operator">-</span>global user.email “user@usermail.com”
</code></pre><pre><code>git config <span class="hljs-operator">-</span><span class="hljs-operator">-</span>list
</code></pre><h1 id="heading-initialize-an-empty-repository-repo">Initialize an empty repository (repo)</h1>
<p>To initialize a repo, you must create a directory where your project will live. Once you've done that, you can open up your terminal and change into that directory. Then, you can run the command <code>git init</code>, which will initialize an empty repo. You can then start adding files to this repo and committing changes.</p>
<pre><code>git <span class="hljs-keyword">init</span>
</code></pre><h1 id="heading-adding-or-staging-file-on-your-repo-with-git-add-filenameextension">Adding or staging file on your repo with Git add filename.extension</h1>
<p>To add a file to your repository, you first need to tell git which files you want to track. This is done with the git add command. Simply type git add followed by the file name you wish to track. For example, if you wanted to track a file named test.js, you would type <code>git add test.js</code>. If this is the only file in your repo, then git will now track it. If you have more than one file in your repo, then git will prompt you to select which files to track, or you can use <code>git add .</code> to stage all the files.</p>
<pre><code>git <span class="hljs-keyword">add</span> test.js
</code></pre><pre><code>git <span class="hljs-keyword">add</span> .
</code></pre><h1 id="heading-commit-your-changes-into-a-repo">Commit your changes into a repo</h1>
<p>To commit your changes, you'll need to stage them by running <code>git add .</code> Once your changes are staged, you can commit them by running <code>git commit -m "Your commit message here"</code>. If you forget to add a message, you can always run <code>git commit --amend</code> to add one. To make an interactive commit with the ability to edit the message, run <code>git commit -a</code> instead.</p>
<pre><code>git <span class="hljs-keyword">commit</span> -m "Your commit message here"
</code></pre><pre><code>git <span class="hljs-keyword">commit</span> <span class="hljs-comment">--amend</span>
</code></pre><pre><code>git <span class="hljs-keyword">commit</span> -a
</code></pre><h1 id="heading-list-changes-using-git-status">List changes using git status</h1>
<p>If you want to check the status of your repository and see which files have changed, you can use the <code>git status</code> command. This will give you a list of all the files that have been modified since the last commit.
You can also use the <code>git diff</code> command to see what changes have been made to a file since the last commit. You can also use the <code>git diff --staged</code> command to see what changes have been made to a file in staging.</p>
<pre><code><span class="hljs-attribute">git</span> status
</code></pre><pre><code><span class="hljs-attribute">git</span> diff
</code></pre><pre><code>git diff <span class="hljs-operator">-</span><span class="hljs-operator">-</span>staged
</code></pre><h1 id="heading-push-change-from-local-directory-to-github-using-git-push-origin-master-section">Push change from local directory to GitHub using git push origin master Section:</h1>
<p>To push changes from your local directory to GitHub, you first need to initialize a git repository. This can be done by running the git init command. Once you have initialized a repository, you can add files to it using the git add command. Finally, you can push your changes to GitHub using the <code>git push origin master</code> command. Note: you must connect your local git to GitHub using the ssh key or token method.</p>
<pre><code>git <span class="hljs-keyword">push</span> origin master
</code></pre><pre><code>git <span class="hljs-keyword">push</span> -u origin master
</code></pre><h1 id="heading-get-changes-from-github-into-the-local-directory-using-git-pull-origin-master">Get changes from GitHub into the local directory using git pull origin master</h1>
<p>If there are any changes on the remote repository that you don't have locally, git pull will fetch them and merge them into your local copy. For example, if someone commits a change to a project branch on GitHub before you've updated your local branch with a commit from that branch, when you run <code>git pull origin master</code>, it will tell you what is different between your two branches. Once this is done, it'll tell you if anything was done since the last time you ran git pull.</p>
<pre><code><span class="hljs-attribute">git</span> pull origin master
</code></pre><h1 id="heading-deleting-files-in-git">Deleting Files In Git</h1>
<p>we use the command: <code>git rm filename.extension</code> To delete files using git </p>
<pre><code>git rm filename.<span class="hljs-keyword">extension</span>
</code></pre><h1 id="heading-renaming-files-in-git">Renaming Files In Git</h1>
<p>we use the command: <code>git mv filename.extension</code> To rename the files using git</p>
<pre><code>git mv filename.<span class="hljs-keyword">extension</span>
</code></pre><h1 id="heading-untracking-tracked-files">Untracking Tracked Files:</h1>
<p>we use the <code>git rm --cached file.extension</code> command. it will become an untracked file.</p>
<pre><code>git rm <span class="hljs-operator">-</span><span class="hljs-operator">-</span>cached file.extension
</code></pre><h1 id="heading-git-log">Git Log</h1>
<p>we need to type <code>git log</code>. After typing this, you can see the commits made on the repo. To exit, we need to type <code>q</code> on our keyboard and press enter.</p>
<pre><code>git <span class="hljs-keyword">log</span>
</code></pre><h1 id="heading-unstaging">Unstaging</h1>
<p>To unstage a file, use <code>git restore --staged file.ext</code>. It will unstage the file, and you can verify it using <code>git status</code>. </p>
<pre><code>git <span class="hljs-keyword">restore</span> <span class="hljs-comment">--staged file.ext</span>
</code></pre><h1 id="heading-creating-andamp-switching-branches-in-git">Creating &amp; Switching Branches In Git</h1>
<p>create a branch by typing <code>git checkout -b branchname</code>.
<code>git checkout branchname</code> we will switch from the master branch to your newly created branch.
<code>git checkout master</code> then you will see that the files on your repo will revert to the master branch.</p>
<pre><code><span class="hljs-attribute">git</span> checkout -b branchname
</code></pre><pre><code><span class="hljs-attribute">git</span> checkout branchname
</code></pre><pre><code><span class="hljs-attribute">git</span> checkout master
</code></pre>]]></content:encoded></item><item><title><![CDATA[Markdown 101!
A Beginner's Guide to the Most Popular Language for Document Formatting]]></title><description><![CDATA[What is Markdown? In short, it's an easy-to-learn syntax designed to make creating and editing documents easier, quicker, and more accessible to everyone. Markdown has evolved into one of the most popular languages for formatting text documents in pl...]]></description><link>https://blog.waquitechie.com/markdown-101-a-beginners-guide-to-the-most-popular-language-for-document-formatting</link><guid isPermaLink="true">https://blog.waquitechie.com/markdown-101-a-beginners-guide-to-the-most-popular-language-for-document-formatting</guid><category><![CDATA[markdown]]></category><category><![CDATA[markdown cheat sheet]]></category><category><![CDATA[Markdown, How to write markdown file, ]]></category><category><![CDATA[Learn Code Online]]></category><category><![CDATA[iwritecode]]></category><dc:creator><![CDATA[MD]]></dc:creator><pubDate>Sat, 23 Jul 2022 19:53:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/zIwAchjDirM/upload/v1658605802005/Ygm1p4LtI.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>What is Markdown? In short, it's an easy-to-learn syntax designed to make creating and editing documents easier, quicker, and more accessible to everyone. Markdown has evolved into one of the most popular languages for formatting text documents in plain text format. It has become widely used by many software developers and web designers who use this language as the foundation of their content creation and editing processes.</p>
<p>Markdown is a lightweight markup language created by John Gruber. It is regarded as one of the most popular languages used to add formatting elements to text documents easily. Markdown doesn't have tags to define the structure, and the syntaxes are special characters with plain texts. In this guide, we'll cover everything you need to know about Markdown so that you can start using it yourself!</p>
<p>Markdown is easy to learn and use, making it a popular choice for document formatting. Markdown doesn't have tags to define the structure, and syntaxes are made up of these special characters with plain texts.</p>
<h1 id="heading-headers-paragraphs-and-line-breaks">Headers, Paragraphs, and Line Breaks</h1>
<p>Markdown is a language used to add formatting elements to text documents. The syntaxes are special characters with plain texts.
Headers are created by adding one or more # symbols before a line of text. To create headings, follow this format: ## Title and text can be customized as you like. 
Paragraphs are created by leaving a blank line between lines of text.
Line breaks are created by adding two spaces at the end of a line.</p>
<pre><code><span class="hljs-comment"># Heading 1</span>
<span class="hljs-comment">## Heading 2</span>
<span class="hljs-comment">### Heading 3</span>
</code></pre><p>Output:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658605564221/U7wC3FNlc.png" alt="screenshot-hashnode.com-2022.07.24-01_15_36.png" /></p>
<h1 id="heading-bold-italic-and-strikethrough">Bold, Italic, and Strikethrough</h1>
<p>Markdown is a simple way to add formatting to your text documents. To make text bold, surround it with asterisks or underscores. For example, <code>**this text would be bold**</code>. You can also make text italic by surrounding it with asterisks or underscores, like this: <code>*this text would be italic*</code>. Finally, you can strikethrough text by surrounding it with tildes. For example, <code>~~this text would be struck through~~</code>.</p>
<h1 id="heading-blockquotes">Blockquotes</h1>
<p>The &gt; symbol is used as a prefix for blockquotes. It is also used to create nested blockquotes. You can also use the &gt; symbol with space as a list prefix.</p>
<pre><code><span class="hljs-operator">&gt;</span> Dorothy followed her through many of the beautiful rooms in her castle.
&gt;
<span class="hljs-operator">&gt;</span><span class="hljs-operator">&gt;</span> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
</code></pre><p>Output:</p>
<blockquote>
<p>Dorothy followed her through many of the beautiful rooms in her castle.</p>
<blockquote>
<p>The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.</p>
</blockquote>
</blockquote>
<h1 id="heading-horizontal-rules">Horizontal Rules</h1>
<p>Horizontal rules can be used to separate sections of content in a document.
In Markdown, a horizontal rule is created by using three asterisks <code>(***)</code>,</p>
<p>three dashes <code>(---)</code>,
or three underscores <code>(___)</code> in a row.
These symbols create a line that spans the width of the document.</p>
<hr />
<h1 id="heading-link">Link</h1>
<p>Adding links in Markdown is pretty simple. You just need to use the following syntax: <code>[Brave Browser](https://brave.com/)</code>.
My favorite browser is <a target="_blank" href="https://brave.com/">Brave Browser</a>.</p>
<h1 id="heading-image">Image</h1>
<p>You can add images in Markdown by using the exclamation point (!) followed by the square brackets ([]) and then the parentheses ( ). In the square brackets, you will add the alt text for your image, and in the parentheses, you will add the URL of your image's location. The! Syntax defines an image with a title on top and a hyperlink below it.</p>
<pre><code>![<span class="hljs-string">The San Juan Mountains are beautiful!</span>](<span class="hljs-link">https://mdg.imgix.net/assets/images/shiprock.jpg?auto=format&amp;fit=clip&amp;q=40&amp;w=300</span>)
</code></pre><p>Output:</p>
<p><img src="https://mdg.imgix.net/assets/images/shiprock.jpg?auto=format&amp;fit=clip&amp;q=40&amp;w=300" alt="The San Juan Mountains are beautiful!" /></p>
<h1 id="heading-codefenced-block-code">Code/Fenced Block Code</h1>
<p>To denote a word or phrase as code, enclose it in backticks (`).</p>
<pre><code>`<span class="hljs-built_in">let</span> site = <span class="hljs-string">"Hashnode"</span>`
</code></pre><p>Output:</p>
<p><code>let site = "Hashnode"</code></p>
<p>In fenced block code, use three backticks ("`) or three tildes (~~~) on the lines before and after the code block. This tells the markdown parser to treat everything inside the backticks as code. You can specify the language of the code block after the opening backticks.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658602739943/r1eNwi8LU.png" alt="screenshot-hashnode.com-2022.07.24-00_28_13.png" /></p>
<p>Output:</p>
<pre><code><span class="hljs-operator">&lt;</span><span class="hljs-operator">!</span>DOCTYPE html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>HTML<span class="hljs-operator">&gt;</span>
   <span class="hljs-operator">&lt;</span>head<span class="hljs-operator">&gt;</span>
    <span class="hljs-operator">&lt;</span>style<span class="hljs-operator">&gt;</span>
    <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>style<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>head<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>body<span class="hljs-operator">&gt;</span>

  <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>body<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>html<span class="hljs-operator">&gt;</span>
</code></pre><h1 id="heading-ordered-list">Ordered List</h1>
<pre><code>1. To <span class="hljs-keyword">create</span> an ordered <span class="hljs-keyword">list</span> <span class="hljs-keyword">in</span> Markdown, <span class="hljs-keyword">start</span> <span class="hljs-keyword">each</span> line <span class="hljs-keyword">with</span> a <span class="hljs-built_in">number</span> followed <span class="hljs-keyword">by</span> a period.
<span class="hljs-number">2.</span> Make sure there <span class="hljs-keyword">is</span> a <span class="hljs-keyword">space</span> <span class="hljs-keyword">between</span> the <span class="hljs-built_in">number</span> <span class="hljs-keyword">and</span> the period.
<span class="hljs-number">4.</span> You can <span class="hljs-keyword">use</span> <span class="hljs-keyword">any</span> <span class="hljs-built_in">number</span> you want, but <span class="hljs-keyword">all</span> items <span class="hljs-keyword">in</span> the <span class="hljs-keyword">list</span> must <span class="hljs-keyword">start</span> <span class="hljs-keyword">with</span> the same number.
<span class="hljs-number">7.</span> <span class="hljs-keyword">If</span> you want <span class="hljs-keyword">to</span> <span class="hljs-keyword">add</span> <span class="hljs-keyword">nested</span> items, indent <span class="hljs-keyword">each</span> item <span class="hljs-keyword">in</span> two spaces.
<span class="hljs-number">5.</span> <span class="hljs-keyword">To</span> <span class="hljs-keyword">create</span> a sub-<span class="hljs-keyword">list</span>, you indent <span class="hljs-keyword">each</span> item <span class="hljs-keyword">in</span> the <span class="hljs-keyword">list</span> <span class="hljs-keyword">with</span> two spaces <span class="hljs-keyword">like</span> this,
  <span class="hljs-number">1.</span> <span class="hljs-keyword">First</span> Item
  <span class="hljs-number">2.</span> <span class="hljs-keyword">Second</span> Item
</code></pre><p>Output:</p>
<ol>
<li>To create an ordered list in Markdown, start each line with a number followed by a period.</li>
<li>Make sure there is a space between the number and the period.</li>
<li>You can use any number you want, but all items in the list must start with the same number.</li>
<li>If you want to add nested items, indent each item in two spaces.</li>
<li>To create a sub-list, you indent each item in the list with two spaces like this,<ol>
<li>First Item</li>
<li>Second Item</li>
</ol>
</li>
</ol>
<h1 id="heading-unordered-list">Unordered list</h1>
<pre><code>- To <span class="hljs-keyword">create</span> an unordered <span class="hljs-keyword">list</span> <span class="hljs-keyword">in</span> Markdown, you <span class="hljs-keyword">use</span> the dash <span class="hljs-built_in">character</span> (-) followed <span class="hljs-keyword">by</span> a space.
- You can also <span class="hljs-keyword">use</span> the asterisk <span class="hljs-built_in">character</span> (*) instead <span class="hljs-keyword">of</span> the dash.
- <span class="hljs-keyword">To</span> <span class="hljs-keyword">create</span> a <span class="hljs-keyword">nested</span> <span class="hljs-keyword">list</span>, you indent <span class="hljs-keyword">each</span> item <span class="hljs-keyword">in</span> the <span class="hljs-keyword">list</span> <span class="hljs-keyword">with</span> two spaces <span class="hljs-keyword">like</span> this,
  - <span class="hljs-keyword">First</span> Item
  - <span class="hljs-keyword">Second</span> Item
- You can also <span class="hljs-keyword">create</span> a <span class="hljs-keyword">nested</span> <span class="hljs-keyword">list</span> <span class="hljs-keyword">using</span> the dash <span class="hljs-keyword">or</span> asterisk characters.
</code></pre><p>Output:</p>
<ul>
<li>To create an unordered list in Markdown, you use the dash character (-) followed by a space.</li>
<li>You can also use the asterisk character (*) instead of the dash.</li>
<li>To create a nested list, you indent each item in the list with two spaces like this,<ul>
<li>First Item</li>
<li>Second Item</li>
</ul>
</li>
<li>You can also create a nested list using the dash or asterisk characters.</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Confused about CSS positions? Read this and find out!]]></title><description><![CDATA[If you've done any web development before, you're probably familiar with HTML elements having positioning values like absolute and relative. These tell the browser how to display an element on the page, for example, by moving it around from the docum...]]></description><link>https://blog.waquitechie.com/confused-about-css-positions-read-this-and-find-out</link><guid isPermaLink="true">https://blog.waquitechie.com/confused-about-css-positions-read-this-and-find-out</guid><category><![CDATA[CSS]]></category><category><![CDATA[Learn Code Online]]></category><category><![CDATA[iwritecode]]></category><dc:creator><![CDATA[MD]]></dc:creator><pubDate>Fri, 22 Jul 2022 23:33:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658532531254/Yf4ftLNnI.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you've done any web development before, you're probably familiar with HTML elements having positioning values like absolute and relative. These tell the browser how to display an element on the page, for example, by moving it around from the document flow or hiding it from view entirely. But what do these positioning values mean? How do CSS positions work? And how do they interact with each other to achieve specific desired effects? Let's explore!</p>
<h1 id="heading-static-position">Static Position</h1>
<p>All the elements in HTML are positioned static by default. A static positioned element is an element that has no special positioning applied to it, and it is the default position for every element. <strong>It is always positioned according to the normal flow of the page</strong>.</p>
<h1 id="heading-fixed-position">Fixed Position</h1>
<p>A fixed position element is positioned relative to the viewport or the browser window itself. The viewport doesn't change when the window is scrolled, so a fixed positioned element will stay right where it is when the page is scrolled.
Position fixed takes the element out of the screen, and <strong>the coordinate system is bound to the screen, and the element sticks to it</strong>.
It is often used for navigation elements and can also be good for things like a logo or advertisement that you want to stay in one spot on a page no matter how far someone scrolls.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://codepen.io/waqui27/pen/rNdwYEY">https://codepen.io/waqui27/pen/rNdwYEY</a></div>
<h1 id="heading-relative-position">Relative Position</h1>
<p>If you use the position property in CSS with a relative value, you tell the element to move relative to where it would generally be on the page. This element is positioned relative to its normal position.</p>
<h1 id="heading-absolute-position">Absolute Position</h1>
<p>Absolute positioning takes an element out of the flow of the page so that other elements are positioned as if that element didn't exist; Absolute positioned elements are removed from the normal flow and can overlap elements.
<strong>Usecase occurs when the element has absolute value and has a relative parent</strong>. The element position absolute uses the relative position element as a coordinate system.
Position absolute takes the element out of the regular Html coordinate system and puts it to the <strong>nearest relative parent</strong>.
However, if an absolute positioned element has <strong>no positioned ancestors</strong>, it moves with the document body and changes when you scroll.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://codepen.io/waqui27/pen/GRxEyqg">https://codepen.io/waqui27/pen/GRxEyqg</a></div>
<h1 id="heading-sticky-position">Sticky Position</h1>
<p>Sticky positioning is a hybrid of relative and fixed positioning. <strong>An element with a sticky position is positioned based on the user's scroll position</strong>. An element with a sticky position is positioned like a relative element until it reaches a specified point, which becomes fixed. The top, right, bottom, and left properties to specify the distance from its containing block.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://codepen.io/waqui27/pen/gOeRorb">https://codepen.io/waqui27/pen/gOeRorb</a></div>
]]></content:encoded></item><item><title><![CDATA[CSS Selectors]]></title><description><![CDATA[There are more than seventy-five different CSS selectors available to us. This article will discuss the most common and useful ones and explore when you might want to use them in your projects. We'll start with the basic ones and move up to the more ...]]></description><link>https://blog.waquitechie.com/css-selectors</link><guid isPermaLink="true">https://blog.waquitechie.com/css-selectors</guid><category><![CDATA[CSS]]></category><category><![CDATA[Learn Code Online]]></category><category><![CDATA[iwritecode]]></category><category><![CDATA[HTML5]]></category><category><![CDATA[UI Design]]></category><dc:creator><![CDATA[MD]]></dc:creator><pubDate>Mon, 18 Jul 2022 20:15:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658163089505/-1xVPah0Z.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There are more than seventy-five different CSS selectors available to us. This article will discuss the most common and useful ones and explore when you might want to use them in your projects. We'll start with the basic ones and move up to the more complex ones, so if you have no experience with CSS selectors, this is a great place to start!</p>
<p>Using CSS selectors effectively will help you write cleaner and more maintainable code.
CSS selectors point to an HTML element so that CSS rules can be applied to that element and its children. This tutorial will teach different CSS selectors to help you better organize your code and manage your stylesheets. Let's get started!</p>
<h1 id="heading-universal-selector">Universal selector🐱‍💻</h1>
<p>The universal selector, represented by an asterisk \( (*)\), is used to select any element on a page. So, if you wanted to make all the text on your page bold, you could use the universal selector like this: * { font-weight: bold; }. The main downside to using the universal selector is that it can adversely affect performance because it's very broad.
Basic Syntax:</p>
<pre><code>* {
  <span class="hljs-attribute">text-align</span>: center;
  <span class="hljs-attribute">color</span>: blue;
}
</code></pre><p>The following example can select all the elements:</p>
<pre><code><span class="hljs-operator">&lt;</span><span class="hljs-operator">!</span>DOCTYPE html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>style<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">*</span> {
  text<span class="hljs-operator">-</span>align: center;
  color: blue;
}
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>style<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>body<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>h1<span class="hljs-operator">&gt;</span>Hello world<span class="hljs-operator">!</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>h1<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Every element on the page will be affected by the style.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p id<span class="hljs-operator">=</span><span class="hljs-string">"para1"</span><span class="hljs-operator">&gt;</span>Me too<span class="hljs-operator">!</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>And me<span class="hljs-operator">!</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>body<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>html<span class="hljs-operator">&gt;</span>
</code></pre><p>Output:
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658160868100/axy100JSc.png" alt="universsal-selector.png" /></p>
<h1 id="heading-class-selector">Class Selector🐱‍👤</h1>
<p>In CSS, a class selector is a name preceded by a full stop (.) representing an HTML element's class attribute. The class attribute can be used on any HTML element. You can also use multiple class names on the same element, separating each class name with a space. The style rule will affect all HTML elements in the document that have the same class attribute value.</p>
<p>Basic Syntax:</p>
<pre><code><span class="hljs-selector-class">.center</span> {
  <span class="hljs-attribute">text-align</span>: center;
  <span class="hljs-attribute">color</span>: blue;
}
</code></pre><p>The example is given below:</p>
<pre><code><span class="hljs-operator">&lt;</span><span class="hljs-operator">!</span>DOCTYPE html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>style<span class="hljs-operator">&gt;</span>
.center {
  text<span class="hljs-operator">-</span>align: center;
  color: blue;
}
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>style<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>body<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>h1 class<span class="hljs-operator">=</span><span class="hljs-string">"center"</span><span class="hljs-operator">&gt;</span>Blue and center<span class="hljs-operator">-</span>aligned heading<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>h1<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p class<span class="hljs-operator">=</span><span class="hljs-string">"center"</span><span class="hljs-operator">&gt;</span>Blue and center<span class="hljs-operator">-</span>aligned paragraph.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span> 

<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>body<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>html<span class="hljs-operator">&gt;</span>
</code></pre><p>Output:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658163692816/hOOYJH4Ldt.png" alt="css-class.png" /></p>
<h1 id="heading-id-selector">Id Selector🐱‍🏍</h1>
<p>The ID selector selects an element based on its unique id attribute value. We use the id selector followed by the id value to select an element with a specific id. The id value must be unique within the document. We can only use one id selector per page.</p>
<p>Basic Syntax:</p>
<pre><code><span class="hljs-selector-id">#parag1</span> {
  <span class="hljs-attribute">text-align</span>: center;
  <span class="hljs-attribute">color</span>: blue;
}
</code></pre><p>The example is given below:</p>
<pre><code><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">style</span>&gt;</span><span class="css">
<span class="hljs-selector-id">#parag1</span> {
  <span class="hljs-attribute">text-align</span>: center;
  <span class="hljs-attribute">color</span>: blue;
}
</span><span class="hljs-tag">&lt;/<span class="hljs-name">style</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"parag1"</span>&gt;</span>Hello World!<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>This paragraph is not affected by the style.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>

<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre><p>Output:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658171635169/4ZgIaRcKE.png" alt="css-id.png" /></p>
<h1 id="heading-type-selector">Type Selector🐱‍💻</h1>
<p>A type selector is the most basic type of CSS selector. It is used to select an element based on its name. For example, if we wanted to select all p elements on a page, we would use the type selector p.</p>
<p>Basic Syntax:</p>
<pre><code><span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">text-align</span>: center;
  <span class="hljs-attribute">color</span>: blue;
}
</code></pre><p>The example is given below:</p>
<pre><code><span class="hljs-operator">&lt;</span><span class="hljs-operator">!</span>DOCTYPE html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>style<span class="hljs-operator">&gt;</span>
p {
  text<span class="hljs-operator">-</span>align: center;
  color: blue;
} 
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>style<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>body<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Every paragraph will be affected by the style.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p id<span class="hljs-operator">=</span><span class="hljs-string">"para1"</span><span class="hljs-operator">&gt;</span>Me too<span class="hljs-operator">!</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>And me<span class="hljs-operator">!</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>body<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>html<span class="hljs-operator">&gt;</span>
</code></pre><p>Output:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658173396918/jm82OU5Zx.png" alt="type-selector.png" /></p>
<h1 id="heading-grouping-selector">Grouping Selector🐱‍🏍</h1>
<p>A grouping selector is used to select multiple elements and style them together. To do this, list the element selectors you want to group, separated by commas. For example, if we wanted to style all h1 headings and paragraphs on a page, we could use the following grouping selector:
h1, p { }</p>
<p>Basic Syntax:</p>
<pre><code><span class="hljs-selector-tag">h1</span>, <span class="hljs-selector-tag">h2</span>, <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">text-align</span>: center;
  <span class="hljs-attribute">color</span>: blue;
}
</code></pre><p>The example is given below:</p>
<pre><code><span class="hljs-operator">&lt;</span><span class="hljs-operator">!</span>DOCTYPE html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>style<span class="hljs-operator">&gt;</span>
h1, h2, p {
  text<span class="hljs-operator">-</span>align: center;
  color: blue;
}
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>style<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>body<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>h1<span class="hljs-operator">&gt;</span>Hello World<span class="hljs-operator">!</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>h1<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>h2<span class="hljs-operator">&gt;</span>Smaller heading<span class="hljs-operator">!</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>h2<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>This <span class="hljs-keyword">is</span> a paragraph.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>body<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>html<span class="hljs-operator">&gt;</span>
</code></pre><p>Output:
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658171874880/MvDKJ48Py.png" alt="css-grouping.png" /></p>
<h1 id="heading-pseudo-selectors">Pseudo-Selectors🐱‍👤</h1>
<p>These are generally two types of pseudo-selectors:-</p>
<h2 id="heading-1-pseudo-element-selctors">1. Pseudo-Element selctors</h2>
<p>These selectors are used to style specific parts of the document tree that can't be selected using regular element selectors. For example, the::first-letter pseudo-element selector can be used to add a special effect to the first letter of a paragraph. Similarly, the ::before and ::after pseudo-elements are often used to create content before or after an element's content.</p>
<p>Basic Syntax:</p>
<pre><code><span class="hljs-selector-tag">p</span><span class="hljs-selector-pseudo">::first-line</span> {
  <span class="hljs-attribute">color</span>: <span class="hljs-number">#ff0f00</span>;
  <span class="hljs-attribute">font-variant</span>: small-caps;
}
</code></pre><p>The example is given below:</p>
<pre><code><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">style</span>&gt;</span><span class="css">
<span class="hljs-selector-tag">p</span><span class="hljs-selector-pseudo">::first-line</span> {
  <span class="hljs-attribute">color</span>: <span class="hljs-number">#ff0f00</span>;
  <span class="hljs-attribute">font-variant</span>: small-caps;
}
</span><span class="hljs-tag">&lt;/<span class="hljs-name">style</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>You can use the ::first-line pseudo-element to add a special effect to the first line of a text. Some more text. And even more, and more, and more, and more like lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>

<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre><p>Output:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658217227802/V8-rtrTQn.png" alt="pseudo-elements.png" /></p>
<h2 id="heading-2-pseudo-classes-selectors">2. Pseudo-Classes Selectors</h2>
<p>A pseudo-class is a keyword added to a selector that specifies a special state of the selected element(s). For example, :hover can change the color of a button when the user's mouse hovers over it. Several different pseudo-classes are available, each with its specific use case.</p>
<p>Basic Syntax:</p>
<pre><code><span class="hljs-selector-tag">a</span><span class="hljs-selector-pseudo">:hover</span> {
  <span class="hljs-attribute">background-color</span>: red;
}
</code></pre><p>The example is given below:</p>
<pre><code><span class="hljs-operator">&lt;</span><span class="hljs-operator">!</span>DOCTYPE html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>style<span class="hljs-operator">&gt;</span>
a:hover {
  background<span class="hljs-operator">-</span>color: red;
}
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>style<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>body<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>h1<span class="hljs-operator">&gt;</span>This <span class="hljs-keyword">is</span> a header.&lt;<span class="hljs-operator">/</span>h1<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>This <span class="hljs-keyword">is</span> a paragraph.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>a href<span class="hljs-operator">=</span><span class="hljs-string">"https://example.com"</span><span class="hljs-operator">&gt;</span>This <span class="hljs-keyword">is</span> a link.&lt;<span class="hljs-operator">/</span>a<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>body<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>html<span class="hljs-operator">&gt;</span>
</code></pre><p>Output:
Before Hover-
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658172160202/esqlsCXpg.png" alt="pseudo-class.png" />
While Hover-</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658217660247/NHxRe18W9.png" alt="Annotation 2022-07-19 132848.png" /></p>
<h1 id="heading-combinator-selector">Combinator selector🐱‍💻</h1>
<p>A combinator selector is a compound selector that combines two or more selectors. There are four combinators in CSS:</p>
<ol>
<li>The descendant combinator</li>
<li>The child combinator</li>
<li>The adjacent sibling combinator</li>
<li>The general sibling combinator
Each of these has a different meaning and use case.<h2 id="heading-1-descendant-combinator">1. Descendant Combinator</h2>
The descendant selector matches all elements descendants of a specified element or any element that is a direct child of another element.</li>
</ol>
<p>Basic Syntax:</p>
<pre><code><span class="hljs-selector-tag">div</span> <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">background</span>: violet;
}
</code></pre><p>The following example selects all p elements inside div elements:</p>
<pre><code><span class="hljs-operator">&lt;</span><span class="hljs-operator">!</span>DOCTYPE html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>style<span class="hljs-operator">&gt;</span>
div p {
  background: violet;
}
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>style<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>body<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>h1<span class="hljs-operator">&gt;</span>Descendant Selector<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>h1<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>The descendant selector matches all elements that are descendants of a specified element.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>div<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">1</span> in the div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">2</span> in the div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>section<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">3</span> in the div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>section<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>div<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">4.</span> Not in a div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">5.</span> Not in a div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>body<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>html<span class="hljs-operator">&gt;</span>
</code></pre><p>Output:
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658172428871/ygb294F5h.png" alt="Descendent_selector.png" /></p>
<h2 id="heading-2-child-combinator">2. Child combinator</h2>
<p>The child selector is used to select elements that are direct children of a specific element. For example, if we wanted to select all p elements that were direct children of a div, we would use the child selector like this: div &gt; p.</p>
<p>Basic Syntax:</p>
<pre><code><span class="hljs-selector-tag">div</span> &gt; <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">background</span>: yellow;
}
</code></pre><p>The following example selects all p elements that are children of a div element:</p>
<pre><code><span class="hljs-operator">&lt;</span><span class="hljs-operator">!</span>DOCTYPE html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>style<span class="hljs-operator">&gt;</span>
div <span class="hljs-operator">&gt;</span> p {
  background: yellow;
}
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>style<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>body<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>h1<span class="hljs-operator">&gt;</span>Child Selector<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>h1<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>The child selector (<span class="hljs-operator">&gt;</span>) selects all elements that are the children of a specified element.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>div<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">1</span> in the div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">2</span> in the div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>section<span class="hljs-operator">&gt;</span>
    <span class="hljs-operator">&lt;</span><span class="hljs-operator">!</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span> not Child but Descendant <span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">&gt;</span>
    <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">3</span> in the div (inside a section element).&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>section<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">4</span> in the div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>div<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>div<span class="hljs-operator">&gt;</span>
    <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">5.</span> in other div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
    <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">6.</span> in other div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
    <span class="hljs-operator">&lt;</span>footer<span class="hljs-operator">&gt;</span>
        <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">7.</span> in the footer element of the other div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
    <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>footer<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>div<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">8.</span> Not in a div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>body<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>html<span class="hljs-operator">&gt;</span>
</code></pre><p>Output:
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658172523144/mtk21Bnaq.png" alt="child_selector.png" /></p>
<h2 id="heading-3-adjacent-sibling-combinator">3. Adjacent sibling combinator</h2>
<p>The sibling selector is very similar to the child selector, but instead of selecting direct children, it selects elements that are siblings of a specific element.
The adjacent sibling combinator selects elements next to each other on the same level, which could be either children or siblings.</p>
<p>Basic Syntax:</p>
<pre><code><span class="hljs-selector-tag">div</span> + <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">background</span>: violet;
}
</code></pre><p>The following example selects the first p element that is placed immediately after div elements:</p>
<pre><code><span class="hljs-operator">&lt;</span><span class="hljs-operator">!</span>DOCTYPE html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>style<span class="hljs-operator">&gt;</span>
div <span class="hljs-operator">+</span> p {
  background: violet;
}
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>style<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>body<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>h1<span class="hljs-operator">&gt;</span>Adjacent Sibling Selector<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>h1<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>The <span class="hljs-operator">+</span> selector <span class="hljs-keyword">is</span> used to select an element that <span class="hljs-keyword">is</span> directly after another specific element.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>The following example selects the first p element that are placed immediately after div elements:<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>div<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">1</span> in the div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">2</span> in the div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>div<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">3.</span> After a div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">4.</span> After a div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>div<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">5</span> in the div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">6</span> in the div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>div<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">7.</span> After a div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">8.</span> After a div.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>body<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>html<span class="hljs-operator">&gt;</span>
</code></pre><p>Output:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658172628189/gXfrxv_QR.png" alt="adj-selector.png" /></p>
<h2 id="heading-4-general-sibling-selector">4. General Sibling Selector</h2>
<p>The general sibling selector selects all elements that are subsequent siblings of a specified element.</p>
<p>Basic Syntax:</p>
<pre><code><span class="hljs-selector-tag">div</span> ~ <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">background</span>: yellow;
}
</code></pre><p>The following example selects all p elements that are next siblings of div elements:</p>
<pre><code><span class="hljs-operator">&lt;</span><span class="hljs-operator">!</span>DOCTYPE html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>html<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>style<span class="hljs-operator">&gt;</span>
div <span class="hljs-operator">~</span> p {
  background: yellow;
}
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>style<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>head<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>body<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>h1<span class="hljs-operator">&gt;</span>General Sibling Selector<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>h1<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>The general sibling selector (<span class="hljs-operator">~</span>) selects all elements that are next siblings of a specified element.&lt;<span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">1.</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>div<span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">2.</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>div<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">3.</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>code<span class="hljs-operator">&gt;</span>Some text or code.&lt;<span class="hljs-operator">/</span>code<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">4.</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">5.</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>p<span class="hljs-operator">&gt;</span>Para <span class="hljs-number">6.</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>p<span class="hljs-operator">&gt;</span>

<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>body<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>html<span class="hljs-operator">&gt;</span>
</code></pre><p>Output:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658172771648/Y5fMnWZ9R.png" alt="general-sibling-selector.png" /></p>
<p>So these are the most common and essential CSS selectors; there are more CSS selectors that you can explore while learning to code.</p>
]]></content:encoded></item></channel></rss>