Размер div, чтобы соответствовать дочернему промежутку - PullRequest
0 голосов
/ 07 января 2010

Извините, если все уже видели это снова и снова, я уверен, что делал это раньше, но не могу вспомнить или найти как!

У меня есть родительский тег div, содержащий серию тегов span, чтобы расположить ряд элементов в линию друг с другом - чтобы уточнить, «in line» является критическим, и это всего лишь одна строка, несколько последовательных строк являются требованием. Использование позиции: элементы относительного или блочного уровня вынуждают его перейти на новую строку, которая бесполезна. Например:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Positioning testing</title>
</head>
<body>
    <div style="position: relative; padding-top: 2px; padding-bottom: 2px;
                background-color: Fuchsia;">
        Hello world
        <span style="position:relative; left: 80px;">
            <input type="text" id="Test"/>
        </span>
        <span style="position: absolute; top: 2px; left: 350px; width:250px;
                     background-color:Lime;">
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at
          fermentum risus. Nulla facilisi. Lorem ipsum dolor sit amet, 
          consectetur adipiscing elit. Pellentesque mattis venenatis enim vitae 
          molestie. Integer in consequat metus. </span>
    </div>
</body>
</html>

Я обещаю, что эти цвета только для тестирования, чтобы показать вещи (и так же обещаю встроенный стиль): -)

К сожалению, коробка из фуксии не будет соответствовать размеру лайма. Безобразно с одной строкой, серьезная проблема, когда вам нужно два из них в последовательности.

Я попытался установить переполнение для родительского элемента div, который просто скрывает все, кроме первой строки диапазона. Я пытался установить элементы для очистки во всех местах, но ни один из них не имел видимого эффекта.

Может кто-нибудь сказать мне, что мне не хватает, пожалуйста? Спасибо.

Ответы [ 6 ]

1 голос
/ 09 января 2010

Как насчет этого?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Positioning testing</title>

        <style type="text/css" media="screen">
            #container {
                position: relative; 
                padding-top: 2px; 
                padding-bottom: 2px; 
                background-color: Fuchsia;
                float:left;
                width: 100%;
            }

            #container > span {
                float:left;
            }

            #greenbox {
                width: 250px;
                background-color:Lime;
            }

        </style>

</head>
<body>
    <div id="container">
        <span id="helloworld">Hello world</span>
        <span id="inputbox">
            <input type="text" id="Test"/>
        </span>
        <span id="greenbox">
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at
          fermentum risus. Nulla facilisi. Lorem ipsum dolor sit amet, 
          consectetur adipiscing elit. Pellentesque mattis venenatis enim vitae 
          molestie. Integer in consequat metus. </span>

    </div>
</body>
</html>
1 голос
/ 08 января 2010

Попробуйте:

<div style="overflow: hidden; background-color: Fuchsia;">
    <div style="float: left; margin-left: 10px;">Hello world,/div>
    <div style="float: left; margin-left: 10px;">
        <input type="text" id="Test"/>
    </div>
    <div style="float: left; width:250px; background-color:Lime;">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at
      fermentum risus. Nulla facilisi. Lorem ipsum dolor sit amet, 
      consectetur adipiscing elit. Pellentesque mattis venenatis enim vitae 
      molestie. Integer in consequat metus.
    </div>
</div>

При необходимости измените поля и ширину.

0 голосов
/ 08 января 2010

Я думаю, вам нужно, чтобы div fuchsia был "display: inline", чтобы обернуть внутреннее содержимое ¿Не правда ли?

0 голосов
/ 07 января 2010

Попробуйте изменить SPAN для отображения в качестве элемента блока и расположить его относительно контейнера. Это абсолютное позиционирование диапазона, которое вызывает его удаление из порядка рендеринга и предотвращает изменение размера контейнера вокруг него.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
    <title>Positioning testing</title> 
</head> 
<body> 
    <div style="position: relative; padding-top: 2px; padding-bottom: 2px; 
                background-color: Fuchsia;"> 
        Hello world 
        <span style="position:relative; left: 80px;"> 
            <input type="text" id="Test"/> 
        </span> 
        <span style="margin-top: 2px; margin-left: 350px; width:250px; 
                     background-color:Lime; display: block;"> 
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at 
          fermentum risus. Nulla facilisi. Lorem ipsum dolor sit amet,  
          consectetur adipiscing elit. Pellentesque mattis venenatis enim vitae  
          molestie. Integer in consequat metus. </span> 
    </div> 
</body> 
</html>

О, и, между прочим, я надеюсь, что вы собираетесь делать это с таблицами стилей и классами, как только вы это сделаете. Также вам может понадобиться задать отрицательное верхнее поле, чтобы переместить его вверх относительно верхней части контейнера.

0 голосов
/ 07 января 2010

ваш «Lime» SPAN абсолютно позиционирован, поэтому он выводится из потока страниц.

Попробуйте использовать float: left; вместо этого.

0 голосов
/ 07 января 2010

Поскольку блок лайма равен position: absolute, он полностью игнорируется при выполнении макета. Следовательно, коробка фуксии имеет такой размер, как будто коробка с лаймом не существует.

Вам необходимо изменить поле фуксии на position: relative, чтобы включить его в логику компоновки, и добавить display: block, чтобы увеличить его ширину. (Хотя было бы лучше изменить его на <div>, который уже равен display: block)

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