Parametrize style = "margin-top: Xem" для установки любого X

111
8

Я хочу построить с помощью plainText, который читается из файла. Этот файл имеет такой вид:

Line1

Line3

Line2 полностью пуст, даже без пробела. Файл html выглядит так:

<!DOCTYPE HTML PUBLIC><html>
<head>
<style type='text/css'>#editor { white-space: pre; }</style>
</head>
<body style="font-family: 'Segoe Print'; font-size:14pt">

<p id='editor', style=" margin-top:0px; margin-bottom:0px; margin-left:0px">Line1</p>
<p id='editor', style=" margin-top:0px; margin-bottom:0px; margin-left:0px"></p>
<p id='editor', style=" margin-top:0px; margin-bottom:0px; margin-left:0px">Line3</p>

</body></html>

Кодовые строки с "p id =..." важны. Средняя строка из них игнорируется, так что отображаются только две строки. Thats, потому что нет текста перед закрытием /p, правильно? Я мог бы, конечно, войти в "" (пробел), но это грязное решение...

Я нашел решение на полпути, вставив в нижнюю строку "margin-top: Xem" вместо "margin-top: 0px". X - "1". Теперь вопрос:

Как я могу поместить любое другое значение, например 4, для X, когда программа выяснила, что существует 4 пустых строки?

EDIT: Вот что я пробовал. Ничего не изменилось...

<!DOCTYPE HTML PUBLIC><html>
<head>
<style type='text/css'>p.editor { white-space: pre; min-height:1em; }</style>
</head>
<body style="font-family: 'Segoe Print'; font-size:14pt">

<p class='editor' style=" margin-top:0em; margin-bottom:0px;">Line1</p>
<p class='editor' style=" margin-top:0em; margin-bottom:0px;"></p>
<p class='editor' style=" margin-top:0em; margin-bottom:0px;">Line3</p>

</body></html>

спросил(а) 2021-01-19T18:16:32+03:00 9 месяцев назад
1
Решение
80

Несколько моментов:

Идентификаторы должны быть уникальными. Измените их для использования классов. Вам нужны только пробелы для разделения атрибутов элементов, а не запятых. Вы должны использовать CSS, а не встроенный стиль.

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

<p class="editor">Line 1</p>
<p class="editor"></p>
<p class="editor">Line 3</p>
p.editor {
white-space: pre;
margin:0;
min-height:16px;
}

По умолчанию p элементов по умолчанию соответствует высоте содержимого внутри. Без содержимого нет просто высоты. Указание минимальной высоты означает, что пустой элемент p всегда будет иметь некоторую высоту, независимо от того, имеет ли он контент или нет.

Пример JSFiddle.

Если вы хотите, чтобы пустая строка была способна к копированию, вам нужно изменить сам HTML, чтобы использовать неразрывное пространство ( ) вместо того, чтобы оставить ваши элементы пустыми:

<p class="editor">Line 1</p>
<p class="editor"> </p>
<p class="editor">Line 3</p>

При этом вам не понадобится дополнительная минимальная высота, так как неразрывное пространство придерживается размера шрифта элемента.

Пример JSFiddle.

ответил(а) 2021-01-19T18:16:32+03:00 9 месяцев назад
47

Решение для меня:

<!DOCTYPE HTML PUBLIC>
<html>
<head>
<style type='text/css'>h1 { white-space: pre; min-height:1em; font-family: arial;
font-size:8pt; color:green; margin-bottom:0px; margin-top:0px}
</style>
</head>
<body>

<h1>Line1</h1>
<h1></h1>
<h1>Line3</h1>

</body></html>


Вставляя это в Phase, он работает. Устанавливая это для QTextBrowser, это не так. Но этот другой вопрос

ответил(а) 2021-01-19T18:16:32+03:00 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема