2014-10-28 2 views
0

Я пытаюсь иметь два DIV бок о бок внутри меньшего DIV с переполнением: hidden; Я бы ожидал, что оба DIV будут рядом друг с другом, а некоторые из них будут скрыты из-за их родительского DIV, который меньше по ширине. Вместо этого последний DIV движется под другим DIV, даже если у них обоих есть float: left ;.Два DIV бок о бок в меньшем DIV

HTML:

<div id="wrapper"> <!-- wrapper --> 
    <div id="nav"> <!-- nav --> 

    </div> <!-- /nav --> 
    <div id="container"> <!-- container --> 

    </div> <!-- /container --> 
</div> <!-- /wrapper --> 

CSS:

#wrapper { 
    float:left; 
    height:960px; 
    width:540px; 
    background-color:#eeeeee; 
    overflow:hidden; 
} 

#nav { 
    float:left; 
    width:460px; 
    height:960px; 
    background-color:red; 
} 

#container { 
    float:left; 
    width:540px; 
    height:960px; 
    background-color:green; 
} 

Это эффект я хочу:

Mobile UI example

+0

ли всегда есть # нав-ДИВ ту же ширину? – RMo

+0

Нет, он будет иметь ту же ширину, что и #wrapper -60px –

+0

Я разместил изображение с результатом, который я хочу. –

ответ

1

Если вы хотите два элемента бок о бок, я думаю, вы должны добавить дополнительный элемент «обертку» какой-то, чтобы окружить ваш #nav и #container элементов. (Переполнение в автоматический режим, так что вы можете увидеть элементы находятся рядом друг с другом.)

Пример:

#wrapper { 
 
    float: left; 
 
    height: 960px; 
 
    width: 540px; 
 
    background-color: #eeeeee; 
 
    overflow: auto; 
 
} 
 
#wrap { 
 
    width: 1000px; 
 
} 
 
#nav { 
 
    float: left; 
 
    width: 460px; 
 
    height: 960px; 
 
    background-color: red; 
 
    clear: 
 
} 
 
#container { 
 
    float: left; 
 
    width: 540px; 
 
    height: 960px; 
 
    background-color: green; 
 
}
<div id="wrapper"> 
 
    <!-- wrapper --> 
 
    <div id="wrap"> 
 
    <!-- some new wrapping element --> 
 
    <div id="nav"> 
 
     <!-- nav --> 
 

 
    </div> 
 
    <!-- /nav --> 
 
    <div id="container"> 
 
     <!-- container --> 
 

 
    </div> 
 
    <!-- /container --> 
 
    </div> 
 
</div> 
 
<!-- /wrapper -->

+0

Kinda, теперь #container перемещается полностью влево и находится за #nav ..:/ –

+0

Я разместил изображение с результатом, который я хочу. –

+0

Я обновил свой ответ на основе того, что, как я думаю, вы ищете - Надеюсь, это поможет! – wahwahwah

1

я предлагаю предотвращение обертку, используя display: inline-block на ребенка <div>, используя white-space: nowrap; на контейнере:

#wrapper { 
 
    float: left; 
 
    height: 300px; 
 
    width: 300px; 
 
    background-color: #eeeeee; 
 
    overflow: hidden; 
 
    /* prevents content wrapping to a new line */ 
 
    white-space: nowrap; 
 
} 
 
#nav { 
 
    display: inline-block; 
 
    width: 400px; 
 
    height: 960px; 
 
    background-color: red; 
 
    /* purely to move the first element to the left, 
 
    to show that both elements are on the same line: */ 
 
    margin-left: -200px; 
 
} 
 
#container { 
 
    display: inline-block; 
 
    width: 400px; 
 
    height: 960px; 
 
    background-color: green; 
 
}
<div id="wrapper"> 
 
    <!-- wrapper --> 
 
    <div id="nav"> 
 
    <!-- nav --> 
 

 
    </div> 
 
    <!-- /nav --> 
 
    <div id="container"> 
 
    <!-- container --> 
 

 
    </div> 
 
    <!-- /container --> 
 
</div> 
 
<!-- /wrapper -->

+0

Спасибо, но это, похоже, не исправляет мою проблему, о чем я не упоминал, я хочу, чтобы это работало в любом браузере телефона, поэтому ширина и высота контейнера настраиваются с помощью javascript на основе размера экрана и когда когда-либо отображается #nav, он хочет, чтобы он нажимал #container DIV в сторону. –

+0

Да; если вы ставите две вещи рядом друг с другом, это произойдет. Итак, просто используйте «margin-left», чтобы переместить элемент '# nav' влево в сторону? –

+0

Я разместил изображение с результатом, который я хочу. –

Смежные вопросы