Абсолютно расположенный родитель и float:right дочерние фрагменты

Renderer - это только временная «резиновая печать», поэтому добавление входного прослушивателя в этом случае не будет особенно полезным. Редактор, как вы указали, появляется только после того, как вы сделали жест для редактирования. Итак, вы хотите добавить слушатель к JTree (при условии, что он не реализован как составной компонент).

12
задан Spooky 20 June 2015 в 18:21
поделиться

10 ответов

Вам нужно это, чтобы он не выходил за край страницы:

body {margin:0;padding:0}

Однако он все равно будет занимать всю ширину страницы, он просто не будет переполняться

0
ответ дан 3 December 2019 в 00:00
поделиться

float должен иметь ширину в этом случае и с другой точки зрения у вас должно быть top: 0; left: 0; для позиционированного элемента они не должны сохраняться в таком виде. примечание: это логика только для дизайна, если вам не нужен код, спросите:)

0
ответ дан 3 December 2019 в 00:00
поделиться

Установите sys.stdout на стороне Python (предположительно, на open ('CONOUT $', 'wt') ), чтобы сделать Python print и аналогично для sys.stderr и sys.stdin . (Есть более быстрые способы сделать это из расширения C, но самый простой способ - просто выполнить операторы Python с import sys впереди; -).

Почему: потому что среда выполнения Python , при запуске обнаружил, что стандартные FD закрыты, установил sys.stdout и друзей соответственно, и не собирался снова проверять и устанавливать их по-другому - поэтому вы просто установите их сами, явно, и это будет отлично.

Если вы хотите сделать все на уровне C-API, это займет несколько строк, но, конечно, это можно сделать ... .outer {переполнение: скрыто; ясно: правильно; позиция: абсолютная; граница: сплошной красный 1px; } .outer .floater {float: right; } Lorem ipsum Это действительно просто, вам нужно только установить свойства overflow и clear для каждого объекта, который имеет плавающие дочерние элементы.

Если родительский объект также является плавающим, вам нужно только установить свой объект

<!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>
  <style>
  .outer { overflow:hidden; clear:right; position:absolute; border:1px solid red; }
  .outer .floater { float:right; }
  .outer .floater .child { float:right; }
  </style>
</head>
<body>
  <div class="outer">
      <div class="floater">Lorem ipsum 
                <span class="child">HI!</span>
      </div>
  </div>
</body>

Если есть вопросы, просто задавайте!

С уважением, GL. ;)

0
ответ дан 3 December 2019 в 00:00
поделиться

Если вы измените float: right на clear: right , вы получите запрошенный вывод в своем примере, но он не будет работать должным образом если у вас действительно есть контент за пределами div с плавающей запятой.

0
ответ дан 3 December 2019 в 00:00
поделиться

В спецификации css2 есть некоторая информация о том, как пользовательский агент «должен» вычислять ширину, но реальность не является спецификацией: http://www.w3.org/TR/CSS2 /visudet.html#Computing_widths_and_margins[1140168 visible.

Я определенно рекомендую использовать строгий DOCTYPE вместо переходного , http: //www.w3. org / QA / 2002/04 / valid-dtd-list.html # DTD .

Без указания поля для вашего .outer div пользовательский агент определит ширину, используя width: auto , который, похоже, зависит от пользовательского агента.

Почему вы не хотите указывать ширину для родительского div?

Если можете, укажите ширину для родительского div, даже если она ширина: 100% . Вы можете также разместить * {margin: 0; отступ: 0; } в таблице стилей, чтобы избежать различий между пользовательскими агентами в этих атрибутах, особенно если вы укажете ширину как 100% для .outer.

Это может быть тривиально, но вы сможете сократить оператор .outer .floater до просто .floater.

Если вам нужен эффект «усадки до посадки» вокруг внутреннего плавающего элемента и нужно поддерживать правильное положение смещения, добавьте direction: rtl; в класс .floater; в противном случае вы сможете использовать float-left;

0
ответ дан 3 December 2019 в 00:00
поделиться

Да, для элементов с абсолютным позиционированием, ширина не определена (как и вверху и слева ). Некоторые браузеры в этом случае используют эластичную ширину в стиле таблицы, а некоторые - 100%, но это зависит от браузера. В этом случае лучше всего быть явным.

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

<table cellspacing=0 cellpadding=0 style="position:absolute;top:0;right:0">
    <tr><td>Lorem ipsum</td></tr>
</table>
0
ответ дан 3 December 2019 в 00:00
поделиться

Ваш div .outer пуст, поэтому мы получаем разные результаты. Как только вы добавляете в него контент, по крайней мере, в моем тесте он работает точно так же (моим тестом был Chrome 3.0 как «работающий по назначению» и IE7 как сломанный).


<div class="outer">
  <div class="floater">Lorem ipsum</div>
Lorem ipsum dolor sit amet consequetur elit ipsum dolor sit amet consequetur elit ipsum dolor sit amet consequetur elit ipsum dolor sit amet consequetur elit ipsum dolor sit amet consequetur elit ipsum dolor sit amet consequetur elit ipsum dolor sit amet consequetur elit 
</div>

Поскольку вы упомянули. Внешний div имеет содержимое, попробуйте удалить из него div с плавающей запятой, и он все равно получит очень похожий результат.

Изменить

Чтобы воспроизвести ваш код без растягивания (поймите здесь, что у вас будут разные проблемы после того, как вы это заработаете в равной степени, как поля / отступы / вертикальное растяжение) вы можете ввести относительную «оболочку».


<!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>
  <style>

  body { margin: 0; }
  #outer { position: absolute; border:1px solid red; }
  #wrapper { position: relative; }
  #floater { position: absolute; right:0; border: 1px blue solid;  }

  </style>
</head>
<body>

  <div id="outer">

    <div id="wrapper"> 
        <div id="floater">Lorem ipsumX</div> 
    </div>

    Lorem ipsum dolor sit amet consequetur elitipsum dolor sit amet consequetur elit
  </div>
</body>
0
ответ дан 3 December 2019 в 00:00
поделиться

Прошу прощения за отрицательный ответ, но я не думаю, что есть способ обойти это. Реализация CSS для этих старых браузеров просто неверна, когда дело доходит до описанного вами случая, и я не верю, что есть какой-либо способ обойти это с помощью других свойств CSS в рамках ограничений, которые вы нам дали. В качестве ограниченного исправления теоретически вы можете установить max-width на внешнем div, чтобы ограничить степень его растяжения ... но, к сожалению, max-width не поддерживается в все «старые» браузеры все равно упоминались.

Я знаю, что это не то, что вы хотите услышать, но я думаю, вам придется укусить пулю и либо изменить разметку, либо ослабить требования к стилю (например, сдаться на плаву).

2
ответ дан 3 December 2019 в 00:00
поделиться

У меня нет IE6, IE7 или FF2 для тестирования, поэтому я собираюсь нанести удар в темноте на этом. Если мне не изменяет память, вам понадобится float: left на .outer . Это минимизирует ширину .outer , сохраняя при этом пропорции вашего внутреннего div .

0
ответ дан 3 December 2019 в 00:00
поделиться

Поскольку я в вашем рабочем примере вы используете jquery, вы можете сначала вычислить ширину контейнера, прежде чем перемещать плавающий объект следующим образом:

<!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>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
  <style>
  .outer { position:absolute; border:1px solid red;}
  </style>
</head>
<body>
  <div class="outer">
    <div class="floater">Lorem ipsum</div>
  </div>

  <script type="text/javascript">
    $(".outer")
      .css("width", $(".outer").width());
    $(".floater")
      .css("float", "right");
  </script>

</body>

Установка ширины во внешний div заставляет его вести себя во всех других браузерах

0
ответ дан 3 December 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: