Explain Codes LogoExplain Codes Logo

Does <STYLE> have to be in the <HEAD> of an HTML document?

html
responsive-design
best-practices
performance
Nikita BarsukovbyNikita Barsukov·Jan 5, 2025
TLDR
**No**, `<style>` can operate **outside `<head>`**. It's **conventional** to place it in `<head>` for optimal loading and streamline structure, nevertheless, `<style>` in `<body>` is valid, affecting elements that follow. Example:

```html
<body>
  <p>Unstyled text.</p> <!-- Nice outfit, going somewhere? -->
  <style> p { color: red; } </style> <!-- Nah, just got a new dress, you like? -->
  <p>Styled text.</p> <!-- Much better! -->
</body>

Only the "Styled text." paragraph becomes red; styles apply surely and sequentially.

Traditional norms and standards

Traditionally from HTML 3.0 days, <style> elements fit snugly within the <head>. Including <style> in <head> aligns with HTML 4.01 specifications, which recommend defining styles above the body to avoid issues such as FOUC (Flash of Unstyled Content) and unexpected layout shifts. This conformity to HTML standards ensures code integrity and enhances cross-browser compatibility.

FOUC and shifting layouts

Placing <style> tags in the <body> may seem innocuous but can introduce substantial rendering delays. As a result, users may perceive unstyled content before styles are loaded, leading to a flickering effect, which in professional web development is considered a mark of poor craftsmanship.

HTML5's scrapped scoped styles and current standards

In HTML5, the idea of introducing scoped attributes for <style> was suggested that would have allowed its usage within <body>. However, this feature was not officially adopted and was removed. Today's living standard by WhatWG and W3C's current specifications are in harmony on not supporting <style> outside <head> or <noscript> tags.

Coding ethos and web performance

Adhering to the standards is not merely for validation purposes; it's also about optimizing load performance. Keeping <style> in <head> ensures the styles are parsed before the browser renders the content - enhancing the user experience. Placing <style> in <head> is a reflection of good coding etiquette, showing a conscious effort towards following global web standards.

The chinks in the armor

While modern browsers have been lenient enough to allow <style> tags within <body>, it's not condoned. A browser's error-correcting behavior doesn't certify that VS the same would be considered as correct standard. Keeping styles in the <head> eliminates dependencies on browser error corrections

Trustworthy references and validation tools

Sticking to up-to-date validation tools and referencing the latest specifications is a wise practice. It's of utmost importance as HTML DTDs and some other tutorials might contain outdated information that should be cross-checked with current standards.

Insurance for compatibility and avoiding pitfalls

Placing styles within the <head> also increases cross-browser uniformity. It helps keep at bay compatibility issues that might pop up due to non-standard practices. Even though some developers advocate for flexibility, adherence to correct <style> placement is considered best practice and for good reasons - it ensures your web pages behave consistently across diverse web environments.

Assurance of a seamless user experience

When users drop into your website, they anticipate a smoothly rendered user interface, devoid of any visual blunders. By placing <style> in the <head>, you fulfill this expectation by allowing the browser to parse styles before any content is displayed. This ensures FOUC is avoided, hence maintaining your site's professional appeal.

Profound understanding and a foresight

As developers, understanding the effects of our coding decisions is vital. Keeping up with the evolving HTML specifications isn't only about abiding by the current standards, it's also about forecasting future needs. Keeping styles in <head> prepares us for future advancements in web technologies and evolving best practices that prioritize performance and maintainability.

Clean HTML and hassle-free maintenance

Maintaining an HTML that conforms to specifications translates into effortless code management and upkeep in the long run. This makes the process of updating, sharing, and collaborating on codebases simpler, reinforcing the importance of a tidy and structurally sound HTML document.