Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Am I suffering "divitis"? (CSS especialist needed) [closed]

Tags:

html

css

I've read lots of articles that condemn the excessive use of divs. I have a feeling that I might be doing that in the following mark up:

.container {    margin: 0 auto;    overflow: hidden;    width: 960px;  }    /* header */    #header {    background: #EEE;  }    #header h1 {    float: left;  }    #header h2,  #header a,  #header p {    color: #999;  }    #header h1 a {    background: url(../images/logo.png) no-repeat scroll 0 0;    float: left;    height: 30px;    text-indent: -9999px;    width: 500px;  }    #banner {    border-bottom: 1px solid #DDD;    padding: 0 0 15px 0;    margin: 30px 0 30px 0;    overflow: hidden;    width: 960px;  }    #lang {    float: right;    padding: 9px 0 0 0;  }    #lang li {    float: left;    margin: 0 0 0 20px;  }    #lang li a {    font-size: 10px;  }      /* intro */    #intro {    overflow: hidden;    padding: 0 0 30px 0;  }    #tagline {    float: left;    margin: 0 40px 0 0;    width: 540px;    /* 560 */  }    #tagline h2 {    font-size: 24px;  }    #about {    float: right;    width: 380px;  }
<div id="header">    <div class="container">      <div id="banner">        <h1><a href="http://widerdesign.co.nr/">wider design</a></h1>        <ul id="lang">          <li><a href="index.php">English</a></li>          <li><a href="es/index.php">Español</a></li>          <li><a href="tw/index.php">中文(繁體)</a></li>          <li><a href="cn/index.php">中文(简体)</a></li>        </ul>      </div>      <div id="intro">        <div id="tagline">          <h2>Nulla vitae tortor mauris</h2>          <p>Pellentesque faucibus est eu tellus varius in susc...</p>        </div>        <div id="about">          <h2>right</h2>          <p>Pellentesque faucibus est eu tellus varius in susc...</p>        </div>      </div>      <!-- #intro -->    </div>    <!-- .container -->  </div>  <!-- #header -->

Explanation of the use of those divs:

  • header: Defines the background color which expands until the end of the window (lies outside of the div .container)

  • container: centers the content (but not the background)

  • banner: to define the background or border color around ul#lang and h1

  • intro: same as above but for #tagline and #about (otherwise I have to define say padding or margin for tagline and about individually)

Am I overusing divs? Can this be simplified?

like image 969
alexchenco Avatar asked Jan 29 '10 18:01

alexchenco


2 Answers

It looks perfect. This should be taken as an example!

One symptom of "divitis" is when you see a list of <div>'s instead of using a <ul>.

like image 196
Daniel Vassallo Avatar answered Sep 24 '22 16:09

Daniel Vassallo


For the most part your markup is fine. Each site presents slightly different problems. I would argue that your code could be improved by removing #intro and just applying the CSS to the two columns.

Depending on the rest of your page, you may be able to do without the #header div.

Additionally, you can style html AND body if needed to help with multiple backgrounds/containers. Just remember that body starts acting like a div (doesn't extend to the bottom of the browser) as soon as you start applying styles to html.

Using divs or the new HTML 5 block elements, is all about making semantic sense first, and giving places to hang your CSS second.

Since each of your div elements serves a specific purpose where they provide semantic grouping of elements that go together, I would say your code is just fine.

For the record, this is divitis:

<div class='image'>   <div class='shadow'>     <div class='bottom-shadow'>        <img src="..." alt="" />     </div>   </div>   <div class="clear"></div> </div> 
like image 34
Doug Neiner Avatar answered Sep 26 '22 16:09

Doug Neiner