浮动的右边的Div导致水平滚动

时间:2013-11-29 14:38:38

标签: css html css-float width

我有一个div向左浮动,其中有一个菜单,另一个div在右边填充其余的空间,问题是,右边的div设置为100%但是要去在页面右侧并创建不需要的滚动。我认为原因是我已经设置左边距以允许左浮动div。有没有办法让正确的div填充剩余的空间而不创建水平滚动但是我也可以对齐左边的东西:0px对着浮动的边缘。
我已将该页面放在我的其他域名中,以便您可以看到:
http://aspiresupportandhousing.com/cleanserve/

HTML:

<body>
<div id="lp_bt">
    <div id="logo_container_s">
    </div>
    <div id="menu_container_s">
      <nav id="secondary_nav">
        <ul>
          <li><a href="index.html">Home</a></li>
          <li><a href="#">About Us</a></li>
          <li><a href="#">Our Services</a></li>
          <li><a href="#">Cleaning</a></li>
          <li><a href="#">Contact Us</a></li>
        </ul>
      </nav>
    </div>
</div>
<div id="left_panel">
    <div id="logo_container">
    </div>
    <div id="menu_container">
      <nav id="primary_nav">
        <ul>
          <li><a href="index.html">Home</a></li>
          <li><a href="#">About Us</a></li>
          <li><a href="#">Our Services</a></li>
          <li><a href="#">Cleaning</a></li>
          <li><a href="#">Contact Us</a></li>
        </ul>
      </nav>
    </div>
</div>
<div id="right_panel">
    <div id="main_container">
      <div id="title">
      </div>
    </div>
</div>
</body>

CSS:

html {
    height: 100%;
    min-width: 1000px;
}

* {
    margin: 0px;
    padding: 0px;
}

body {
    height: 100%;
    min-width: 1000px;
    color: #000000;
}

/* Hidden */
#lb_bt {
    height: 30px;
width: 30px;
left: 30px;
}

#logo_container_s { 
left: -150px;
width: 150px;
height: 42px;
position: absolute;
background: url(logo.jpg);
z-index: 3000;
}

#menu_container_s {
left: -150px;
height: 400px;
width: 150px;
position: absolute;
z-index: 3000;
}
/* End Hidden */

/* Left Panel */
#left_panel {
height: 100%;
width: 150px;
float: left;
background-color: #26609E;
z-index: 2000;
}

#logo_container {
width: 150px;
height: 42px;
left: 0px;
top: 0px;
position: relative;
background: url(logo.jpg);
z-index: 3000;
}

#menu_container {
height: 400px;
width: 150px;
top: 0px;
left: 0px;
position: relative;
}

ul {
list-style: none;
text-align: left;
border-top: solid 1px #002954;
}

ul li {
display: list-item; 
}

ul li a:link, ul li a:visited {
font-family: Verdana, Geneva, sans-serif;
font-size: 14px;
font-weight: normal;
width: 800;
color: #FFFFFF;
line-height: 38px;
margin: 0px 10px;
padding: 0px 5px 8px 0px;
text-align: left;
text-decoration: none;
}

ul li a:hover, ul li a:active {
color: #2593C1;
}

@media only screen and (min-width: 280px) and (max-width: 800px) {
body {
    background: none rgba(161, 220, 254, 0.4);  
}

#left_panel {
    left: -150px;
    position: absolute;
}

#lp_bt {
    top: 0px;
    left: 0px;
    background: url(menu.jpg);
    width: 30px;
    height: 30px;
}

#lp_bt:hover {
    width: 150px;
    height: 100%;
    background: none #26609E;
}

#lp_bt:hover #secondary_nav {
    display: list-item; 
}

#lp_bt:hover #logo_container_s {
    left: 0px;
    top: 0px;
    position: relative;
}

#lp_bt:hover #menu_container_s {
    top: 0px;
    left: 0px;
    position: relative;
}
}
/* End Left Panel */

/* Right Panel */
#right_panel {
height: 100%;
width: 100%;
margin-left: 150px;
background: url(bg.jpg) no-repeat top left fixed;
background-size: cover;
position: absolute;
z-index: 1;
}

#main_container {
width: 700px;
height: 50%;
margin-left: auto;
margin-right: auto;
margin-top: auto;
background: rgba(255, 255, 255, 0.8);
border-radius: 30px 30px 30px 30px;
}

#title {
width: 600px;
height: 104px;
margin-left: auto;
margin-right: auto;
top: 30px;
background: url(title.png) no-repeat center center;
position: relative;
}

@media only screen and (min-width: 280px) and (max-width: 800px) {
#right_panel {
    background: none;
}
}

3 个答案:

答案 0 :(得分:1)

你的滚动是因为你的

margin-left造成的
  

#right_panel

您有三个解决方案,可以对#right_panel

的CSS进行一些更改
  • 一种使用方法calc()来设置宽度:

    #right_panel {
       width: calc( 100% - 150px);
    }
    
  • 两次更改z-index值并删除margin-left

    #right_panel {
       width:100%;
       margin-left:0;
       z-index:-1;
    }
    
  • 三次使用box-sizingpadding代替margin

    #right_panel {
      box-sizing:border-box;
      padding-left:150px;
      width:100%;
      margin:0;
    }
    

答案 1 :(得分:0)

如果#left_panel#right_panel绝对定位,您只需删除负边距#left_panel

#left_panel {
    left: 0px;
    position: absolute;
}

...然后从#right_panel移除100%宽度并将其定位:

#right_panel {
    top:0; right:0; bottom:0; left:150px;
}

http://jsfiddle.net/Pz7PP/

答案 2 :(得分:0)

您需要使用CSS位置。

一个小例子 Codepen

CSS

*{margin:0;padding:0;}


#divleft {
 position:absolute;
 top:0;bottom:0;left:0;
 width:250px;
 background: red;
}

#divright {
 position:absolute;
 top:0;
 bottom:0;
 left:250px;
 right:0;
 background: green;
}