<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Tanim Mahbub</title>
    <description>The latest articles on Forem by Tanim Mahbub (@tanim_mahbub).</description>
    <link>https://forem.com/tanim_mahbub</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F587297%2Fd285c9ec-bea3-4841-989d-4f0c16c9edbf.jpeg</url>
      <title>Forem: Tanim Mahbub</title>
      <link>https://forem.com/tanim_mahbub</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tanim_mahbub"/>
    <language>en</language>
    <item>
      <title>Working with text in CSS: some issues &amp; solutions</title>
      <dc:creator>Tanim Mahbub</dc:creator>
      <pubDate>Thu, 10 Oct 2024 11:17:04 +0000</pubDate>
      <link>https://forem.com/tanim_mahbub/working-with-text-in-css-some-issues-solutions-5f4h</link>
      <guid>https://forem.com/tanim_mahbub/working-with-text-in-css-some-issues-solutions-5f4h</guid>
      <description>&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Few people haven't encountered issues with the paragraph in the hero section. To address this, many developers create a separate div and assign it a specific &lt;code&gt;width&lt;/code&gt;, or they apply &lt;code&gt;width&lt;/code&gt; or &lt;code&gt;max-width&lt;/code&gt; directly to the paragraph. I used to do the same until I discovered the &lt;code&gt;ch&lt;/code&gt; unit. This unit counts characters, allowing you to specify how many characters you want per line.&lt;/p&gt;

&lt;p&gt;In the example below, the paragraph in the hero section is given &lt;code&gt;max-width: 64ch&lt;/code&gt; (60 to 70 characters are recommended). No extra &lt;code&gt;div&lt;/code&gt; is needed.&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/Tanim_Mahbub/embed/eYqBJOQ?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Sometimes, a heading might have just one word moving to the next line, or the first line contains more text than the second, which can look unbalanced. We often use the &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt; tag or adjust the &lt;code&gt;width&lt;/code&gt; to fix this. This issue can also occur with paragraphs. For instance, in the previous example, the last line of the paragraph has less text than the other lines.&lt;/p&gt;

&lt;p&gt;A neat solution to this problem is using &lt;code&gt;text-wrap: balance;&lt;/code&gt;. In the following example, each line of the paragraph contains roughly the same amount of text.&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/Tanim_Mahbub/embed/ExqNPwx?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Similar to &lt;code&gt;balance&lt;/code&gt;, there's another value for the &lt;code&gt;text-wrap&lt;/code&gt; property called &lt;code&gt;pretty&lt;/code&gt;. When the last line of a paragraph or heading contains only one word:&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/Tanim_Mahbub/embed/oNKYbdY?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;text-wrap: pretty;&lt;/code&gt; adds another word to the lone word on the last line, so it doesn't stand alone. While browser support for &lt;code&gt;text-wrap: balance;&lt;/code&gt; is pretty good, but it's not that good for &lt;code&gt;pretty&lt;/code&gt; 😜&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/Tanim_Mahbub/embed/JjgbGZX?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; The &lt;code&gt;text-decoration&lt;/code&gt; property is often underutilized. Let's explore the various values it can accept beyond &lt;code&gt;none&lt;/code&gt;, and understand that &lt;code&gt;text-decoration&lt;/code&gt; is actually a &lt;code&gt;shorthand&lt;/code&gt; for four properties:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c"&gt;/*
    text-decoration-line: underline;
    text-decoration-style: wavy;
    text-decoration-color: red;
    text-decoration-thickness: 2px;

    /* shorthand */&lt;/span&gt;
    &lt;span class="nl"&gt;text-decoration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;underline&lt;/span&gt; &lt;span class="n"&gt;wavy&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Another interesting property related to &lt;code&gt;text-decoration&lt;/code&gt; is &lt;code&gt;text-underline-offset&lt;/code&gt;, which allows you to create space between the &lt;code&gt;text-decoration-line&lt;/code&gt; and the text.&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/Tanim_Mahbub/embed/yLmVevw?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; Sometimes, we link long pieces of text in blogs, which often wrap to the next line. Applying a background color to this linked text can look awkward when it breaks onto the next line, as shown in our previous example.&lt;/p&gt;

&lt;p&gt;Many encounter this issue when using background colors in headings as well. A neat solution is to use &lt;code&gt;box-decoration-break: clone;&lt;/code&gt;. In the following example, the linked text that looked awkward before now displays correctly.&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/Tanim_Mahbub/embed/JjgbGmK?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.&lt;/strong&gt; While some issues persist occasionally, we can now use &lt;code&gt;text-stroke&lt;/code&gt; directly in CSS. Yes, it requires a &lt;code&gt;prefix&lt;/code&gt;, but we no longer need to rely on &lt;code&gt;text-shadow&lt;/code&gt; tricks like before, which is a significant improvement!&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/Tanim_Mahbub/embed/jOgVWXJ?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.&lt;/strong&gt; The last feature for today is &lt;code&gt;line-clamp&lt;/code&gt;. It also requires a &lt;code&gt;prefix&lt;/code&gt;, yet it's now widely used. This is commonly seen in cards for various blogs or articles. There are many ways to determine how many lines of text to show on a card. I used to control this using a custom data attribute and JavaScript, specifying the number of characters to display. However, this can be done more easily with &lt;code&gt;line-clamp&lt;/code&gt;.&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/Tanim_Mahbub/embed/MWNbeyv?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The code block below compiles all the topics discussed, making it convenient to search for and research other uses, browser support, and more.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;64ch&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;text-wrap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;balance&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* or pretty */&lt;/span&gt;
    &lt;span class="c"&gt;/**********************/&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;-webkit-box&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;-webkit-line-clamp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* number of lines to show */&lt;/span&gt;
    &lt;span class="nl"&gt;-webkit-box-orient&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;vertical&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
    &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="c"&gt;/**********************/&lt;/span&gt;
    &lt;span class="c"&gt;/*
    text-decoration-line: underline;
    text-decoration-color: red;
    text-decoration-style: wavy;
    text-decoration-thickness: 2px;

    /* shorthand */&lt;/span&gt;
    &lt;span class="nl"&gt;text-decoration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;underline&lt;/span&gt; &lt;span class="n"&gt;wavy&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;box-decoration-break&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;clone&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="py"&gt;text-underline-offset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;-webkit-text-stroke-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;-webkit-text-fill-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;-webkit-text-stroke-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's all for today. Stay well, and goodbye!&lt;/p&gt;

</description>
      <category>textstyling</category>
      <category>webdesign</category>
      <category>css</category>
      <category>uiux</category>
    </item>
    <item>
      <title>PostCSS - my initial experience</title>
      <dc:creator>Tanim Mahbub</dc:creator>
      <pubDate>Thu, 11 Jan 2024 15:06:22 +0000</pubDate>
      <link>https://forem.com/tanim_mahbub/postcss-my-initial-experience-23fp</link>
      <guid>https://forem.com/tanim_mahbub/postcss-my-initial-experience-23fp</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;I was about to make the title something like this- &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;PostCSS - a real-life time machine for CSS lovers&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then I thought, it's too dramatic. Let's keep it simple. (and now you know I loved this title more 😀)&lt;/p&gt;

&lt;p&gt;I've been a CSS lover from the beginning of my career, but not like &lt;a href="https://codepen.io/ivorjetski"&gt;Ben Evans the CSS Artist&lt;/a&gt;, I mean he took CSS to another level. &lt;/p&gt;

&lt;p&gt;Anyway, when I first learned about PostCSS and what it's capable of, it was very overwhelming for me and I was shocked. Then I started to learn its limitations, pros &amp;amp; cons, which plugins are used most, and where to get the plugins and things like that.&lt;/p&gt;

&lt;p&gt;So, today I'm going to share some information that I was looking for but didn't find when I was learning. If this information had been published somewhere, my journey could have been easier and much shorter.&lt;/p&gt;

&lt;h2&gt;
  
  
  information
&lt;/h2&gt;

&lt;p&gt;I mean, if I knew that &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the plugins in the &lt;a href="https://postcss.org/"&gt;official PostCSS website&lt;/a&gt; were old like IE6 or the &lt;code&gt;marquee&lt;/code&gt; tag, and&lt;/li&gt;
&lt;li&gt;the &lt;a href="https://github.com/csstools/postcss-plugins/tree/main/plugins"&gt;updated plugins&lt;/a&gt; were in &lt;a href="https://github.com/csstools/postcss-plugins/tree/main"&gt;postcss-plugins repo&lt;/a&gt; by &lt;a href="https://github.com/csstools"&gt;csstools&lt;/a&gt;, and&lt;/li&gt;
&lt;li&gt;the author of the most popular PostCSS plugin himself &lt;a href="https://moox.io/blog/deprecating-cssnext"&gt;recommended&lt;/a&gt; the &lt;a href="https://preset-env.cssdb.org/"&gt;postcss-preset-env&lt;/a&gt; over his own creation which is &lt;a href="https://cssnext.github.io/"&gt;cssnex&lt;/a&gt;, and&lt;/li&gt;
&lt;li&gt;there was 

&lt;ul&gt;
&lt;li&gt;a &lt;a href="https://preset-env.cssdb.org/playground/"&gt;playground&lt;/a&gt;, &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://preset-env.cssdb.org/features/"&gt;a list of features&lt;/a&gt; that you can filter by stage, &lt;/li&gt;
&lt;li&gt;and &lt;a href="https://preset-env.cssdb.org/"&gt;much more for postcss-preset-env&lt;/a&gt;, &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;then it would have been easier to search &amp;amp; research and to make the native CSS much more powerful than SCSS. But anyway, we are here now, and if my experience can make any contribution to other's journey, that would be very rewarding 😎. &lt;/p&gt;

&lt;p&gt;This is a table to compare how we can reduce the number of plugins with more features &amp;amp; efficiency.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;td&gt; &lt;strong&gt;OLDER PLUGINS WITH COOL FEATURES&lt;/strong&gt; &lt;/td&gt;
&lt;td&gt; &lt;strong&gt;MUCH BETTER &amp;amp; UPDATED ALTERNATIVE&lt;/strong&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt; &lt;a href="https://cssnext.github.io/"&gt;cssnext&lt;/a&gt; || &lt;a href="https://moox.io/blog/deprecating-cssnext"&gt;about &lt;em&gt;cssnext&lt;/em&gt; to &lt;em&gt;Preset Env&lt;/em&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td rowspan="4"&gt; &lt;a href="https://github.com/csstools/postcss-plugins/tree/main/plugin-packs/postcss-preset-env"&gt;Preset Env&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;a href="https://github.com/csstools/postcss-custom-media"&gt;Postcss Custom Media&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;a href="https://github.com/postcss/postcss-media-minmax"&gt;Postcss Media Minmax&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;td&gt;Nesting &lt;a href="https://preset-env.cssdb.org/features/"&gt;and much much more...&lt;/a&gt;
&lt;/td&gt;
&lt;tr&gt;
&lt;td&gt; &lt;a href="https://github.com/postcss/postcss-simple-vars"&gt;Postcss Simple-Vars&lt;/a&gt; &lt;/td&gt;
&lt;td rowspan="6"&gt; &lt;a href="https://github.com/csstools/postcss-advanced-variables"&gt;Postcss Advanced Variables&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;a href="https://github.com/andyjansson/postcss-conditionals"&gt;Postcss Conditionals&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;a href="https://github.com/madyankin/postcss-each"&gt;Postcss Each&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;a href="https://github.com/antyakushev/postcss-for"&gt;Postcss For&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;a href="https://github.com/postcss/postcss-mixins"&gt;PostCSS Mixins&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
and more, like &lt;a href="https://github.com/andyjansson/postcss-conditionals"&gt;conditionals&lt;/a&gt; (&lt;code&gt;@if / @else&lt;/code&gt;), &lt;a href="https://github.com/madyankin/postcss-each"&gt;@each&lt;/a&gt;, &lt;a href="https://github.com/antyakushev/postcss-for"&gt;@for&lt;/a&gt; etc.
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;I encountered the PostCSS while diving into Tailwind CSS and trying to integrate SCSS with it. My goal was to achieve SCSS functionalities and other cool features within native CSS, eliminating the need for SCSS in Tailwind. And that's how my PostCSS journey began.&lt;/p&gt;

&lt;p&gt;However, it's important to note that not everyone using PostCSS shares the same purpose. The tool offers loads of possibilities beyond my initial use case.&lt;/p&gt;

&lt;p&gt;As I continue to learn, I welcome contributions from others who can share valuable PostCSS resources in the comments. Your input would be greatly appreciated!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Pure CSS Tab using :target and :has()</title>
      <dc:creator>Tanim Mahbub</dc:creator>
      <pubDate>Fri, 11 Nov 2022 01:39:02 +0000</pubDate>
      <link>https://forem.com/tanim_mahbub/pure-css-tab-using-target-and-has-1hje</link>
      <guid>https://forem.com/tanim_mahbub/pure-css-tab-using-target-and-has-1hje</guid>
      <description>&lt;p&gt;When the CSS &lt;code&gt;:target&lt;/code&gt; was introduced for the very first time, I was so excited that first I made a &lt;a href="https://tanimmahbub.github.io/css_modal/"&gt;package of modals&lt;/a&gt; with different sizes and positions, and then I made a &lt;a href="https://tanimmahbub.github.io/css-popup-slider/gallery.html"&gt;popup slider&lt;/a&gt; using the same CSS &lt;code&gt;:target&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After that, I tried to make a tab the same way, without any effect, just &lt;code&gt;display: none;&lt;/code&gt; to &lt;code&gt;display: block;&lt;/code&gt; but, the problem was- how can I display the first tab since the CSS &lt;code&gt;:target&lt;/code&gt; doesn't work until the trigger is clicked.&lt;/p&gt;

&lt;p&gt;Years passed, then a few days ago I came to learn about the &lt;code&gt;:has()&lt;/code&gt; selector and it was just crazy. After going through the basic of &lt;code&gt;:has()&lt;/code&gt; selector I found the solution for my CSS Tab that I started years ago.&lt;/p&gt;

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

&lt;p&gt;Now I have one issue left, the &lt;code&gt;active&lt;/code&gt; state for the tab-buttons. I tried to fix it using &lt;code&gt;:has()&lt;/code&gt; selector with &lt;code&gt;a:visited&lt;/code&gt; (the same way in image) but the &lt;code&gt;a:visited&lt;/code&gt; state doesn't change once its visited. So, waiting for the solution for this. &lt;/p&gt;

&lt;p&gt;The browser-support is not there yet for &lt;code&gt;:has()&lt;/code&gt; including Firefox and some other browsers. But Chrome supports it, hoppiing it'll be better soon.&lt;/p&gt;

&lt;p&gt;We know that there is a &lt;em&gt;radio-way&lt;/em&gt; (&lt;code&gt;[type="radio"]&lt;/code&gt;) to make CSS Tab, I'm just trying to make another way, and now after almost 80% to perfection I'm sharing the idea with you. Let me know your thoughts.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/Tanim_Mahbub/embed/OxzLBv?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/TanimMahbub/css-popup-slider"&gt;CSS Popup Slider&lt;/a&gt; repository&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/TanimMahbub/css_modal"&gt;CSS Modal&lt;/a&gt; repository&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>css</category>
      <category>csstarget</category>
      <category>csstrick</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
