We are trying to get our HTML much more semantic and the one thing that seems to linger in our HTML that has to do with presentation is
<div class="clear"></div>
For example, if we have the following semantic html:
<div class="widgetRow">
<div class="headerInfo">My header info</div>
<div class="widgetPricing">$20 to $30</div>
<div class="footerInfo">My footer info</div>
</div>
And I have headerInfo and footerInfo both floated left in the CSS and widgetPricing floated right (just as an example).
The Question:
My widgetRow div doesn't have any height or width. Is it wrong to add <div class="clear"></div>
right after .footerInfo ? It seems that I'm not being semantic at that point.
The More Generic Question
When writing semantic HTML, is it ok to put a div in your HTML whose only job is to clear the floats?
One of the most important features of HTML5 is its semantics. Semantic HTML refers to syntax that makes the HTML more comprehensible by better defining the different sections and layout of web pages. It makes web pages more informative and adaptable, allowing browsers and search engines to better interpret content.
Semantic tags: <form>, <header>, <table>, and <article> -- these clearly define their content. Non-semantic tags: <div> and <span> -- these tell nothing about their content.
Why Do You Need to Use Semantic Tags in HTML? The are several advantages of using semantics tags in HTML: The semantic HTML tags help the search engines and other user devices to determine the importance and context of web pages. The pages made with semantic elements are much easier to read.
Why does Semantic HTML matter? Writing semantic HTML makes your code easier to understand, making the source code more readable for other developers. Screen readers and browsers can interpret Semantic HTML better, which makes it more accessible.
There are several ways to clear floats:
1 . Use CSS pseudo :after class
.container:after { clear:both; content:"."; display:block; height:0; visibility:hidden; }
Apply the container class to your "widgetRow" div. This approach is probably the most semantic, but it is not supported on all browsers, specifically IE7 and below. browser support for :after
2 . Use overflow:auto or overflow:hidden
.container { overflow:auto; }
.container { overflow:hidden; }
Again, apply the container class to your "widgetRow" div. This approach may be a little more semantic, but it could also come back to bite you especially when viewed on smaller displays. overflow:auto could trigger a horizontal scrollbar while overflow:hidden could hide the element all together. problems using oveflow to clear floats
3 . Use clear:both
.clear { clear:both; }
This is the approach you are using assuming your clear class is like the one above. This is the only approach I know of that is compatible in all browsers and won't give you undesirable side effects. So, depending on what browsers you support, I would probably stick with what you have.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With