Issue
I have been searching the web for a while now for an answer to my question. I would like to extend a div background-color beyond the div (and the container div as well) so it reaches the width of the browser. Like so http://vinnusal.is/ The problem with the example above is I'm using a padding/margin fix which creates an annoying scroll to the right. I have tried overflow without any luck.
I know this could be done with a container div that is 100% and nesting divs that are smaller. However I would like to use another way if possible, because this is my first shot at a fluid site with all complications that follow.
Thanks in advance, Helgi
Here is the HTML markup:
<body>
<div class="gridContainer clearfix"> <!-- Container -->
  <div class="gridContainer clearfix header" id="header"> <!--Header begins--> 
<img src="pics/hvitt.png" alt="VFI Logo" name="logo" id="logo">
<!-- Menu Horizontal -->
... irrelevant markup for menu...
  </div>
  <!-- Header ends -->
<div class="gridContainer clearfix submenu" id="submenu"> <!-- Submenu begins -->
<h1><!-- InstanceBeginEditable name="title" -->Articles<!-- InstanceEndEditable --></h1>
And the CSS:
/* Mobile Layout: 480px and below. */
.gridContainer {
    margin-left: auto;
    margin-right: auto;
    width: 88.626%;
    padding-left: 1.1869%;
    padding-right: 1.1869%;
}
#LayoutDiv1 {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#header {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#submenu {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#article {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#footer {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#leftColumn {
    clear: none;
    float: left;
    margin-left: 2.6785%;
    width: 100%;
    display: block;
}
#rightColumn {
    clear: none;
    float: left;
    margin-left: 2.6785%;
    width: 100%;
    display: block;
}
#header2 {
    clear: none;
    float: left;
    margin-left: 2.6785%;
    width: 100%;
    display: block;
}
/* Tablet Layout: 481px to 768px. Inherits styles from: Mobile Layout. */
@media only screen and (min-width: 481px) {
.gridContainer {
    width: 91.4836%;
    padding-left: 0.7581%;
    padding-right: 0.7581%;
}
#LayoutDiv1 {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#header {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#submenu {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#article {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#footer {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#leftColumn {
    clear: none;
    float: left;
    margin-left: 1.6574%;
    width: 100%;
    display: block;
}
#rightColumn {
    clear: none;
    float: left;
    margin-left: 1.6574%;
    width: 100%;
    display: block;
}
#header2 {
    clear: none;
    float: left;
    margin-left: 1.6574%;
    width: 100%;
    display: block;
}
}
/* Desktop Layout: 769px to a max of 1232px.  Inherits styles from: Mobile Layout and Tablet Layout. */
@media only screen and (min-width: 769px) {
.gridContainer {
    width: 78.9565%;
    max-width: 1232px;
    padding-left: 0.5217%;
    padding-right: 0.5217%;
    margin: auto;
}
#LayoutDiv1 {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#header {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#submenu {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#article {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#footer {
    clear: both;
    float: left;
    margin-left: 0;
    width: 100%;
    display: block;
}
#leftColumn {
    clear: none;
    float: left;
    margin-left: 1.3215%;
    width: 100%;
    display: block;
}
#rightColumn {
    clear: none;
    float: left;
    margin-left: 1.3215%;
    width: 100%;
    display: block;
}
}
                            Solution
You can use the :before pseudo element with absolute positioning and negative z-index to extend the background color of a contained div the entire way to the edge of the page.
#container {
    width: 100px;
    margin: 0 auto;
    background-color: #FFFFCC;
}
.stripe {
    background-color:#CCFFFF;
    height: 100px;
    position: relative;
}
.stripe:before {
    content:"";
    background-color:#CCFFFF;
    position: absolute;
    height: 100%;
    width: 4000px;
    left: -2000px;
    z-index: -1;
}
<div id="container">
  <div>one</div>
  <div class="stripe">two</div>
  <div>three</div>
</div>
Answered By - Stephen Ostermiller
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.