Div справа от поплавка вызывает горизонтальную прокрутку

0

У меня есть 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;
}
}
  • 1
    Яркий пример вопроса, который должен прийти с JSFiddle ;)
  • 0
    Я никогда раньше этим не пользовался, но я попробую и опубликую результаты, я также поместил ссылку на временную ссылку, где я загрузил файлы, чтобы увидеть их живую версию.
Теги:
width
css-float

3 ответа

1
Лучший ответ

Ваш свиток вызван beacuse yo имеет margin-left от вашего

#right_panel

У вас есть три решения, которые envolve внести некоторые изменения в CSS для #right_panel

  • Один из методов метода calc() для установки ширины:

    #right_panel {
       width: calc( 100% - 150px);
    }
    
  • Два измените значение z-index и удалите margin-left:

    #right_panel {
       width:100%;
       margin-left:0;
       z-index:-1;
    }
    
  • Три использования box-sizing и padding вместо margin:

    #right_panel {
      box-sizing:border-box;
      padding-left:150px;
      width:100%;
      margin:0;
    }
    
  • 0
    Это удивительно, спасибо вам большое, я давно не использую CSS и все еще учусь, но это то, что очень пригодится. Насколько хорош мой код для начинающего?
  • 0
    Выглядит хорошо, постарайтесь сделать это простым ... проверьте ответ редактирования
Показать ещё 7 комментариев
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;
}
  • 0
    Причина, по которой я не могу этого сделать, заключается в том, что мой left_panel является плавающей точкой и должен быть статичным, но right_panel должен иметь возможность прокрутки по вертикали, если мне это нужно, пожалуйста, исправьте меня, если я не прав (поскольку я продолжаю объяснять людям, я я новичок в CSS), но я не думаю, что этот способ позволил бы правой руке прокручивать вертикально при необходимости. Спасибо за ответ, хотя я вижу, что это очень полезно для других проектов.
  • 0
    просто установите переполнение: auto на #divright, если вам нужно прокрутить один div ^^. #Divleft будет статичным, но если в вашем divleft много контента, появится свиток. (извините за мой плохой английский ^^ ')
Показать ещё 3 комментария
0

Видно, что #left_panel и #right_panel расположены абсолютно, вы можете просто удалить форму отрицательного поля #left_panel:

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

... затем удалите 100% ширину с #right_panel и расположите ее так:

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

http://jsfiddle.net/Pz7PP/

  • 0
    Спасибо за ответ, мне удалось решить его с ответом Данко, но я буду помнить об этом на будущее. Одна вещь, тем не менее, левая панель является поплавком, и я видел, как вы указали, что обе панели расположены абсолютно, так что поплавки расположены абсолютно? (Я немного новичок в CSS, все еще учусь)
  • 0
    @ TristanD27 поплавки на абсолютно позиционированных элементах полностью избыточны, поскольку абсолютные элементы вынимаются из «потока» и ведут себя как совершенно отдельный слой. Плавания расположены относительно их родителя, но остаются в потоке (хотя они могут появиться иначе). Вот статья о поплавках, которые могут быть полезны.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню