Почему верхнее поле элемента HTML проигнорировано после пущенного в ход элемента?

Существует компонент WebKit-Sharp на Репозиторий GitHub Mono . Я не могу найти веб-просматриваемую документацию относительно него, и я даже не уверен, является ли это WinForms, или GTK# (не может захватить источник отсюда до проверки в данный момент), но это - вероятно, Ваш лучший выбор, так или иначе.

47
задан rayray 29 March 2019 в 18:39
поделиться

4 ответа

Вы правильно определили проблема. Плавающий

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

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

 
foo
Этот div не должен касаться другого div.
34
ответ дан 26 November 2019 в 19:45
поделиться

вы можете просто добавить div между ними

<div style="float: left; border: solid red 1px">foo</div>
<div style="clear:both;"></div>
<div style="margin-top: 90px; border: solid red 1px">This div should not touch the other div.</div>

, и это должно позаботиться об этом.

Многие темы WordPress (и не только) используют эту технику

22
ответ дан 26 November 2019 в 19:45
поделиться

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <title>CSS test</title>
</head>
<body>
   &nbsp;
   <div style="float: left; border: solid red 1px; height:40px;">foo</div>
   <div style="clear: both; margin-top: 90px; border: solid red 1px">This div should not touch the other div.</div>
</body>
</html>
3
ответ дан 26 November 2019 в 19:45
поделиться

Вы правильно определили проблему. Плавающий

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

Уловка для правильной работы оболочки состоит в том, чтобы белое пространство - внутреннее белое пространство. Другими словами, оболочка использует заполнение вместо поля.

4
ответ дан 26 November 2019 в 19:45
поделиться