First of all, what we discuss here is our commonly used fixed-width centered layout, which should be the most commonly used in actual combat.
Then from the perspective of whether to apply a large background, we can divide it into two types. One is to allow the whole to have a large background, and the other is to allow a full-screen large background to be tiled in the middle and bottom of the head. Next, we discuss three situations with or without sidebars, one is with left or right sidebars, one is without sidebars, and the last one is the situation where both left and right sidebars exist.
The layout scheme we discuss here draws on the theme of drupal, so friends who have learned the cms of drupal should be familiar with it.
We use html5 tags, so it is necessary to import html5.js for ie6-8. Then we set all the structures to be included in a div with the class page. Here in the div we also need to add the layout class, aside-left, aside-right, two-sides, and no-side corresponding to the left column respectively. , right column, left and right columns, no sidebar layout. Here we take the two-column layout as an example. It includes a total of five areas, namely header, left, content, right, and footer areas. We add a layer of class in each area. It is an inner div. This inner is mainly used to assist us in layout. By default, our inner has a margin of 10px, which can be overridden according to actual needs.
We said that this is used to assist us in layout. Many times when we layout, we have to consider the border and left and right margins, padding, etc. Now we Completely forget about all this and leave it to our inner to do the work. For example, the entire width is 1000px, the left and right sidebars are 200px each, and the content is 600px. Our previous thinking should be that the left and right sides should be 200px, and then the middle content should be 580px (margin is 10px) or 560px (margin is 20px). In this way, if we need to change it to 980px, we have to change several values. Then if we want the left and right sidebars to Add a border and it becomes 202px, or set the left and right width to 198px. This is so confusing. Now that we introduce inner, we can directly calculate the width during layout without considering border, margin, padding, etc., and then re-overwrite the inner in each area, isn't it done? The html codes of the left and right columns are posted here for reference. For details, please see the demo below
1 <!DOCTYPE HTML> 2 <html lang="en-US"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>aside left & right demo</title> 6 <link rel="stylesheet" type="text/css" href="css/style.css" media="all" /> 7 <!--[if lt IE 9]> 8 <script src="js/html5.js" type="text/javascript"></script> 9 <![endif]-->10 </head>11 <body>12 <div class="page two-asides">13 <header id="header" class="clearfix">14 <div class="inner">15 </div>16 </header>17 18 <section id="container" class="clearfix"> 19 <aside id="aside_left" class="aside">20 <div class="inner">21 </div>22 </aside><!--aside_left-->23 24 <section id="main">25 <div class="inner">26 </div> 27 </section><!--main-->28 29 <aside id="aside_right" class="aside">30 <div class="inner">31 </div>32 </aside><!--aside_right--> 33 </section><!--container-->34 35 <footer id="footer" class="clearfix">36 <div class="inner">37 </div>38 </footer>39 </div>40 </body>41 </html>
If you need to design a full-screen background for the header, container and footer parts, the above method will definitely not work. We can do this Add a layer of wrap outside the three divs, and this wrap will be full screen.
demo: left column layout, right column layout, left and right column layout, no sidebar layout
ps: original text from www.w3cplus.com