CSS: изменить ширину div в соответствии с шириной родителей - PullRequest
3 голосов
/ 14 декабря 2010

Хорошо, я в основном строю текучую схему. Мой HTML такой:

<div id="container">
    <div class="box" id="left">Left</div>
    <div class="box" id="center">This text is long and can get longer</div>
    <div class="box" id="right">Right</div>
    <div class="clear"></div>
</div>

Вот CSS:

#container{
    width: 100%;
}
.box{
    float: left;
}
#left, #right{
    width: 100px;
}
#center{
    width: auto; /* ? */
    overflow: hidden;
}
.clear{
    clear:both;
}

Что мне нужно знать, так это как заставить #center изменить размер при изменении размера #container без перемещения элементов друг под другом.

Ответы [ 3 ]

2 голосов
/ 14 декабря 2010

Попробуйте эти исправления (просто простые плавающие элементы, нет необходимости устанавливать абсолютные элементы или отступы)

только что добавили новую скрипку

<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="utf-8">
<title>fluid layout</title>
<style>
    /*class to set the width of the columns */
    .floatbox{
        width:100px;
    }

    #container{
        width: 100%;
        float:left;
    }
    #left{
        float:left;
    }
    #right{
        float:right;
    }
    #center{
        overflow: hidden;
    }
    .clear{
        clear:both;
    }
</style>
</head>
<body>
    <div id="container">
        <!-- floating column to the right, it must be placed BEFORE the left one -->
        <div class="floatbox" id="right">Right</div>
        <div class="floatbox" id="left">Left</div>

        <!-- central column, it takes automatically the remaining width, no need to declare further css rules -->
        <div id="center">This text is long and can get longer</div>

        <!-- footer, beneath everything, css is ok -->
        <div class="clear"></div>
    </div>
</body>
</html>
1 голос
/ 14 декабря 2010

Самый простой способ сделать это и полностью избежать возникающих проблем float - использовать отступы на контейнере и абсолютное расположение левого / правого элементов в области заполнения.( демо на http://www.jsfiddle.net/gaby/8gKWq/1)

HTML

<div id="container">
    <div class="box" id="left">Left</div>
    <div class="box" id="right">Right</div>
    <div class="box" id="centre">This text is long and can get longer</div>
</div>

Порядок div больше не имеет значения ..

Css

#container{
    padding:0 100px;
    position:relative;
}
.box{
   /*style the boxes here*/
}
#left, #right{
    width: 100px;
    position:absolute;
}
#left{left:0;top:0;}
#right{right:0;top:0;}

#center{
   /*anything specific to the center box should go here.*/
}
1 голос
/ 14 декабря 2010

#container также должен быть плавающим (или с переполнением: авто / скрытым) для достижения этого. Я настоятельно рекомендую вам использовать некоторые из наиболее известных жидкостных растворов: http://www.noupe.com/css/9-timeless-3-column-layout-techniques.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...