Performance: Responsive visibility toggling
This affects how quickly the page shows or hides content based on screen size, impacting initial load and layout stability.
<div class="hidden md:block">Menu content</div><div id="menu">Menu content</div> <script> function toggleMenu() { if(window.innerWidth < 768) { document.getElementById('menu').style.display = 'none'; } else { document.getElementById('menu').style.display = 'block'; } } window.addEventListener('resize', toggleMenu); toggleMenu(); </script>
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| JS toggling visibility on resize | Multiple style changes | Many reflows on resize | High paint cost due to layout shifts | [X] Bad |
| Tailwind responsive visibility classes | No DOM changes | Single style recalculation | Low paint cost, stable layout | [OK] Good |
md:hidden do to an element?md:md: applies styles starting from medium screen sizes (≥768px).hidden classhidden class hides the element by setting display: none.md:hidden means hide on medium+ screens [OK]hidden with blockhidden lg:blockblock sm:hidden shows below sm but hides from sm upwards (very small screens only). lg:hidden block hides on large screens, opposite of requirement. sm:block hidden shows on sm+ but hidden by default, which is contradictory.hidden lg:block -> Option Dhidden lg:block [OK]sm means large screen<div class="hidden md:block lg:hidden">Content</div>
hidden hides by default (small screens). md:block shows block from medium (≥768px). lg:hidden hides again from large (≥1024px).<button class="block lg:block">Click Me</button>
block by default, so it shows on all screens initially.lg:blockhidden defaulthidden and lg:block to show on large. The code is missing the default hidden.hidden class for default state -> Option Chidden [OK]lg:block [OK]lg:block hides screens below largehidden hides by default (small). md:block shows block from medium. xl:hidden hides again from extra-large.block md:hidden xl:block shows block by default, wrong. hidden sm:block lg:hidden uses sm and lg, not medium and extra-large. md:hidden block xl:block hides from medium, opposite of requirement.hidden md:block xl:hidden -> Option Bhidden md:block xl:hidden [OK]Pass the test and this pattern moves unknown