Note that there are some explanatory texts on larger screens.

plurals
  1. POBackground color and scrolling problems with floating layout with fixed header and fixed footer
    primarykey
    data
    text
    <p>I'm trying to create the layout displayed below, <strong>without using tables or Javascript</strong>: </p> <ul> <li>a fixed header on top of the page (fixed height)</li> <li>a menu on the left (fixed width)</li> <li>the content on the right</li> <li>a fixed footer at the bottom (fixed height)</li> </ul> <pre> ______________________________________ | FIXED HEADER ON TOP | |____________________________________| -------------------------------------- | | | | MENU | | | | | | | | | | CONTENT | | | | | | | | | | | | | | | | |______|_____________________________| ______________________________________ | FIXED FOOTER AT BOTTOM | |____________________________________| </pre> <pre><code>&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;CSS test&lt;/title&gt; &lt;link rel="stylesheet" href="style.css" type="text/css"&gt; &lt;/head&gt; &lt;body&gt; &lt;div id="header"&gt; HEADER HEADER HEADER HEADER HEADER HEADER HEADER HEADER HEADER &lt;/div&gt; &lt;div id="container"&gt; &lt;div id="menu"&gt; &lt;br&gt;START OF MENU&lt;br&gt; MENU MENU MENU&lt;br&gt; MENU MENU MENU&lt;br&gt; MENU MENU MENU&lt;br&gt; MENU MENU MENU&lt;br&gt; MENU MENU MENU&lt;br&gt; MENU MENU MENU&lt;br&gt; MENU MENU MENU&lt;br&gt; MENU MENU MENU&lt;br&gt; MENU MENU MENU&lt;br&gt; MENU MENU MENU&lt;br&gt; END OF MENU&lt;br&gt; &lt;/div&gt; &lt;div id="content"&gt; &lt;div id="banner"&gt;BANNER&lt;br&gt;&lt;hr&gt;&lt;/div&gt; START OF CONTENT lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem &lt;a id="anchor1" href="#anchor2"&gt;go to anchor2&lt;/a&gt; ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum &lt;a id="anchor2" href="#anchor3"&gt;go to anchor3&lt;/a&gt; lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum &lt;a id="anchor3" href="#anchor1"&gt;go to anchor1&lt;/a&gt; lorem ipsum lorem ipsum lorem ipsum END OF CONTENT &lt;/div&gt; &lt;/div&gt; &lt;div id="footer"&gt; FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER FOOTER &lt;/div&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> <p>Here is the source code for "style.css": </p> <pre><code>#header { position: fixed; overflow: hidden; top: 0; left: 0; width: 100%; text-align: center; padding-top: 5px; padding-bottom: 5px; z-index: 2; border: 1px solid black; background-color: #F0F0FF; } #container { border-width: 5px; border-style: solid; border-color: blue; margin-top: 50px; border-radius: 3em; } #menu { width: 140px; height: 100%; border: 3px green solid; background: #EEE; float: left; position: relative; } #banner { text-align: center; } #content { position: relative; padding: 10px 20px; border: 3px red solid; margin-left: 150px; overflow: hidden; background: #EADADA; } #footer { position: fixed; bottom: 0px; overflow: hidden; padding-left: 0px; margin-left: -7px; margin-right: -7px; margin-top: 20px; text-align: center; font-size: 8pt; background: #FEF; border-top-style: solid; border-top-color: black; border-top-width: 1px; width: 100%; } </code></pre> <p>The content length will vary from page to page, the vertical scrollbar on the right should activate if necessary. The menu and the content must scroll together (whenever scrollbar is visible).<br> The menu and content are enclosed by a single border.<br> The menu has a background that should cover the entire height: if the content height is greater than the menu height, the menu area should vertically expand, so that it is colored with the defined background color. </p> <p>I am trying to solve 2 problems:</p> <ol> <li>when I click an anchor on the page (click "go to anchor1"), the anchor appears below the fixed header. It is necessary to scroll down a bit to make the text appear. How do you avoid that? </li> <li>I would like the entire height of the menu area to be completely painted with the background color defined in #menu, not just the part where there is some text. Do you know how to achieve that?</li> </ol> <p>In reply to the comment by @VLTII: </p> <p>Regarding your link: </p> <ul> <li>method B: it solves my first problem, but I don't like the required "display: block" that makes my content ugly. I tried with "display: inline-block" but it doesn't work anymore. </li> <li>methods C, D and E: they all solve my first problem. </li> </ul> <p>I tested all methods with Firefox, Chrome and Opera.<br> With Firefox, when I click a link in the content, it draws a gray frame that goes well above the top of the link. There's no gray frame around links in Chrome or Opera. But this is a really tiny cosmetic problem, I can live with that.<br> In method E, I changed "<code>padding: 15px</code>" to "<code>padding-top: 15px</code>".</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload