Як змінити висоту крапки?


263

У мене великий абзац тексту, який розділений на підпункти з <br>'s:

<p>
  Blah blah blah.
  <br/>
  Blah blah blah. Blah blah blah. Blah blah blah.
  <br/>
  Blah blah blah.
</p>

Я хочу розширити розрив між цими підпунктами, начебто два <br>чи щось подібне. Я знаю, що правильний спосіб зробити це - використовувати <p></p>, але зараз я не можу змінити цей макет, тому я шукаю рішення, яке стосується лише CSS.

Я спробував налаштувати <br>'s line-heightand heightwith display: block, я також коротко зіткнув Google і Stack Overflow-ed, але не знайшов рішення. Це можливо навіть без зміни плану?


Ваше форматування може додати плутанину, вважаючи, що теги br мають значення висоти. Як зазначено нижче, це просто розриви ліній. Ви намагалися зробити щось подібне у своєму текстовому процесорі?
Йорг

Зміна висоти <br> семантично неправильно. Що означає, що ви просто додали ще один рядок до тексту, а окремий абзац повинен мати фіксовану висоту рядка. Якщо якийсь текст відокремлений, це повинен бути окремий абзац.
Robo Robok


1
@JohnHenckel Трохи вводить в оману, оскільки <p>теги не можуть містити <div>теги див. Цю публікацію
deseosuho

1
Іноді код, який нам надають у форматі, - це не те, над чим ми маємо контроль. Саме в цей час ви починаєте говорити собі: "Я не можу додати <p> теги ... можливо, якщо я просто зміню висоту зображень, які замість цього використовуються як проставки.
Брайан

Відповіді:


275

Css:

br {
   display: block;
   margin: 10px 0;
}

Рішення, ймовірно, не сумісне між браузерами, але принаймні щось є. Також врахуйте налаштування line-height:

line-height:22px;

Для Google Chrome врахуйте налаштування content:

content: " ";

Крім цього, я думаю, що ви застрягли з рішенням JavaScript.


31
Це НЕ працює в: IE7, Opera10, Chrome2. У Firefox він створює маржу подвійного розміру. Потрібно вказатиmargin-top: 10px;
страх

8
Додайте content:" "атрибут до цього стилю, і він прекрасно працює в Chrome
anushr

8
Це рішення працює у Firefox. Для веб-переглядачів, які базуються на веб-програмах, ви можете додати line-height. Зрештою, це щось на кшталт br { display:block; margin-top:10px; line-height:22px; }.
Cthulhu

2
@awe: Кращим рішенням буде margin:10px 0 0для тих, хто не хоче його подвійного розміру.
Кайла

1
Не працює для мене ... Я також спробував код @ awe margin-top: 10px;, все ще не спрацював ....
Кардинал - Відновити Моніку

67

Ось правильне рішення, яке насправді має підтримку крос-браузера:

  br {
        line-height: 150%;
     }

1
Наскільки я не можу сказати, не IE7.
Сергій

30
Це працює для збільшення висоти розриву лінії, але не зменшення її.
Плутон

2
@htmldrum Якщо у вас немає шансів змінити HTML, а лише CSS, це чудово працює. Дякую! Це слід схвалювати і вважати правильною відповіддю. Я думаю.
флешб’єр

@Pluto: відповідь Найджела нижче працює для мене, щоб зменшити висоту!
Анупам

2
На жаль, більше не працює в Chrome v.76. Для Edge та IE вам потрібно також додати вертикальне вирівнювання: top. Я розмістив рішення тут: stackoverflow.com/a/29674365/562862
Дейв Бертон

48

Отже, заглянувши вище, в основному є аналогічна відповідь, але тут це дуже коротко. Працює в Opera, Chrome, Safari та Firefox, імовірно, IE теж?

br {
            display: block; /* makes it have a width */
            content: ""; /* clears default height */
            margin-top: 0; /* change this to whatever height you want it */
}

3
Це. Це правильно, по відношенню до заявленого питання. І це також єдина відповідь на сторінці, яка насправді зробила те, що мені потрібно було зробити.
Xodarap777

Жодна з інших відповідей не працювала для мене, поки я не змінив зміст. Це правильна відповідь, ІМО.
Ксандор

39

Інший спосіб - це використання HR . Але, і ось ось хитра частина, зроби його невидимим.

Таким чином:

<hr style="height:30pt; visibility:hidden;" />

Щоб зробити більш чистий перерва BR, змодельований за допомогою HR: Btw працює у всіх браузерах !!

{ height:2px; visibility:hidden; margin-bottom:-1px; }

1
Мені довелося додати маржу: 0px для IE8
IvanH

34
Це жахливе зловживання HTML-тегами, краще використовувати <p></p>з полями, а потім знищити<hr />
Serj Sagan

Цей трюк хороший, але щоб отримати більш точний результат, вам потрібно використовувати маржу: 0 і межу: 0.
MAChitgarha

25

Наскільки я знаю , <br>НЕ має висоту, вона просто змушує розрив рядка. У вас є текст з деякими розривами рядків на додаток до автоматичного обгортання, а не підпунктів. Ви можете змінити міжрядковий інтервал, але це вплине на всі рядки.


1
Здається, що справді немає способу. Я навіть спробував грати з: до та: після властивостей, але ... :(
n1313

1
Я знаю, що це дуже давно, але @Isaac Minogue має дійсний спосіб зробити це. Змінення contentвластивості робить трюк.
Ксандор

22

У мене просто була ця проблема, і я її вирішив, використовуючи

<div style="line-height:150%;">
    <br>
</div>

Це чудово працює, а також обходить обмеження відповіді @ htmldrum
Анупам

11

Ви можете застосувати висоту лінії до цього <p>елемента, щоб лінії стали більшими.


4
Так, звичайно, але я цього не хочу.
n1313

1
Чим би це відрізнялося від того, що ви хочете? Це збільшить простір між лініями.
Йорг

У мене в тексті трохи більше дев'яти благ. Уявіть кілька кілобайт тексту, розділеного на три блоки з трьома символами.
n1313

Якщо ви застосуєте висоту рядка до <br>тегу, то вимушені розриви рядків будуть більшими, ніж обриви
обертової

1
Звучить більше, ніж потрібно три абзаци, а не використовувати <br/>
Кріс Чілверс

7

Я раніше не пробував псевдоелемент :before/ :afterCSS2, в основному тому, що він підтримується лише в IE8 (це стосується браузерів IE) . Це може бути єдине можливе рішення CSS:

br:before {
    display: block;
    margin-top: 10px;
    content: "";
}

Ось приклад на QuirksMode .


Так, я покладав великі надії на: раніше {content}; теж, але це мене провалило.
n1313

Внесіть його кудись, воно має спрацювати. На жаль, це не працює в IE6 / 7.
Філіп Дупанович

5

У мене була думка, яку ви можете використовувати:

br:after {
    content: ".";
    visibility: hidden;
    display: block;
}

Але це не працювало на хромі або firefox.

Просто подумав, що згадаю, що, якщо трапиться хто-небудь інший, я врятую їм неприємності.


5
br {   
    content: "";
    margin: 2em;
    display: block;
    margin-bottom: -20px; 
 }

Працює у Firefox, Chrome та Safari. Не перевірений у Провіднику. (Планшет Windows не має сили.)

У Firefox & Safari розмір шрифту працює по-різному.


Не могли б ви бути більш конкретними щодо того, яка частина вашого css вирішила проблему? Це допоможе іншим зрозуміти відповідь.
Френк Брайс

Працюйте досить добре для мене, дякую! Але бракує якоїсь інформації.
Vinícius Moraes

4

Цікаво, що якщо тег перерви записаний у повному вигляді так:

<br></br>

то висота рядка CSS: 145% працює. Якщо тег перерви записується так:

<br> or 
<br/> 

то це не працює, принаймні в Chrome, IE та firefox. Дивно!


4

Що для мене працює - це додавання цього рядка між тегами абзацу ... хоча не найкраще рішення.

<br style="line-height:32px">

-------- Редагувати ---------

Я зіткнувся з проблемами з PC / Mac з цим ... Це надає тексту нову висоту рядка, але не робить розрив рядків ... Можливо, ви хочете зробити кілька тестів самостійно. Вибачте!


працював у мене для управління вертикальним розміром на рівні пікселів всередині UIWebView на ios.
Діван

Я зіткнувся з проблемами з PC / Mac з цим ... Це надає тексту нову висоту рядка, але не робить розрив рядків ... Можливо, ви хочете зробити кілька тестів самостійно. Вибачте!
robinwkurtz

4

І пам’ятайте, що (неправильно) використання <hr>тегу, як запропоновано десь, закінчиться <p>тегом, тому забудьте про це рішення.
Якщо f.ex. щось стилюється на оточуючих <p>, цей стиль пішов для решти вмісту після <hr>вставки.


Це не дає відповіді на запитання. Щоб критикувати або вимагати роз'яснення у автора, залиште коментар під їх публікацією - ви завжди можете коментувати свої власні публікації, і як тільки у вас буде достатня репутація, ви зможете коментувати будь-яку публікацію .
Glitch Desire

Не критика і не прохання. Просто намагаюся сказати, що станеться, якщо помістити тег hr всередину тегу ap, як було запропоновано. І як новачок у мене недостатньо репутації, щоб коментувати відповідне повідомлення. Тож, будь ласка, порада, як інакше я повинен зробити такий коментар (який ІМХО дуже актуальний стосовно питання).
niels

4

Ось рішення, яке працює в IE, Firefox та Chrome. Ідея полягає в тому, щоб збільшити розмір шрифту елемента br з розміру тіла 14 пікселів до 18 пікселів і зменшити елемент на 4 пікселя, щоб додатковий розмір був нижче рядка тексту. Результат - 4 пікселя додаткового пробілу нижче рівня.

br 
{ 
font-size: 18px; 
vertical-align: -4px; 
}  

Просто використання, vertical-alignздається, зробити фокус з brтегом. Я перевірив це на IE 11.

3

ОНОВЛЕНО 13 вересня 2019 року:

Я використовую <br class=big>для того, щоб зробити велику розрив лінії, коли мені потрібна. До сьогоднішнього дня я стилізував це так:

br.big {line-height:190%;vertical-align:top}

( vertical-align:topПотрібно було лише для IE та Edge.)

Це працювало у всіх основних браузерах, які я спробував: Chrome, Firefox, Opera, Brave, PaleMoon, Edge та IE11.

Однак останнім часом вона перестала працювати в браузерах на базі Chrome : мої "великі" перерви в рядках перетворилися на звичайні розміри.

(Не точно знаю, коли вони зламали його. Станом на 12 вересня 2019 року він все ще працює у застарілому Chromium Portable 55.0.2883.11, але він зламаний в Opera 63.0.3368.71 та Chrome 76.0.3809.132 (обидва Windows та Android).)

Після деяких проб і помилок я закінчив наступний замінник, який працює в поточних версіях усіх цих браузерів:

br.big {display:block; content:""; margin-top:0.5em; line-height:190%; vertical-align:top;}

Примітки:

line-height:190% працює у всьому, окрім останніх версій веб-переглядачів Chrome.

vertical-align:topпотрібен IE та Edge (у поєднанні з line-height:190%), щоб отримати додатковий простір після попереднього рядка, куди він належить, а не частково до і частково після.

display:block;content:"";margin-top:0.5em працює в Chrome, Opera та Firefox, але не в Edge & IE.

Альтернативний (простіший) спосіб додавання трохи додаткового вертикального простору після <br>тегу, якщо ви не заперечуєте проти редагування HTML, - це щось подібне. Це добре працює у всіх браузерах:

<span style="vertical-align:-37%"> </span><br>

(Ви, звичайно, можете коригувати "-37%" за потреби для збільшення або меншого розриву.) Ось демонстраційна сторінка, яка включає деякі інші варіанти теми:

https://burtonsys.com/a_little_extra_vertical_space_for_br_tag.html



28 травня 2020 року:

Я оновив демонстраційну сторінку; Тепер він демонструє всі перераховані вище методи:

https://burtonsys.com/a_little_extra_vertical_space_for_br_tag.html


2

Майкл та Йода мають рацію. Що ви можете зробити, це використовувати <p>тег, який, будучи тегом блоку, використовує нижнє поле для зміщення наступного блоку, так що ви можете зробити щось подібне до цього, щоб отримати більший інтервал:

<p>
    A block of text.
</p>
<p>
    Another block
</p>

Інша альтернатива - використовувати <hr>тег блоку , за допомогою якого можна чітко визначити висоту міжряддя.


1
Дякую за вашу відповідь, але я заявив, що зараз не можу змінити цей макет. Звичайно, я зміню це на щось безпечніше, коли це буде можливо, але зараз - вибачте.
n1313

1

<br />займе стільки місця, скільки заповнений текстом рядок <p>, ви не можете змінити це. Якщо ви хочете збільшити розмір, це означає, що ви хочете розділити їх на абзац, тому додайте інші <p>. Не забувайте бути найсемантичнішим, що ви можете;)


1

ви також можете використати властивість "block-quote" у CSS. Це зробило б це таким чином, що воно не впливає на ваші окремі рядки, але дозволяє встановлювати параметри для просто перерв між абзацами або "блокувати лапки".

ОНОВЛЕННЯ:
Я виправлений. "blockquote" - це власне html-властивість. Ви використовуєте його так само, як <p> і </p> навколо своєї роботи. Потім ви можете встановити параметри для блокової цитати в css like

blockquote { margin-top: 20px }

Сподіваюсь, це допомагає. Це аналогічно встановленню параметрів на br і може бути, а може і не бути сумісним для браузера.


Це перший раз, коли я чув про цю властивість. Чи можете ви пояснити це більш детально?
n1313

Я стою виправлений. "blockquote" - це власне html-властивість. Ви використовуєте його так само, як <p> і </p> навколо своєї роботи. Потім ви можете встановити параметри для вашої блокової цитати в css, як blockquote {margin-top: 20px} тощо, тощо тощо
Jonn,

1

Здається, ви не можете регулювати висоту BR, але ви можете змусити його надійно зникати, використовуючи дисплей: жоден

Переходив на цю сторінку, шукаючи рішення для наступного:

У мене ситуація, коли сторонній платіжний шлюз (Worldpay) дозволяє лише налаштувати їхні платіжні сторінки з 10-макс. CSS та HTML (сценарій не дозволений), які вводяться в тіло їх шаблону, а після декількох тегів BR, FONT тощо У поєднанні з DTD, який змушує IE7 / 8 переходити в режим Quirks, це робить налаштування крос-браузера настільки ж важким, наскільки це стає!

Якщо вимкнути BR, це робить речі набагато послідовнішими ...


1

Я використовую ці методи, але я не знаю, чи крос-браузер

================= Спосіб 1 ===================

br {
    display:none;
}

АБО

================= Спосіб 2 ===================

br {
    display: block;
    margin-bottom: 2px;
    font-size:2px;
    line-height: 2px;
}
br:before {
    display: block;
    margin-top: 2px;
    content: "";
}
br:after {
    content: ".";
    visibility: hidden;
    display: block;
}

АБО

================= Спосіб 3 ===================

br:after { content: "" }
br { content: "" }

резюме для відображення: немає. ось що я закінчила робити!
Брайан

1

Спробуйте використати line-heightатрибут CSS у своєму pтезі, який містить brтег. Пам'ятайте , що ви можете idсвої pтеги , якщо ви хочете , щоб ізолювати його, хоча це могло б бути краще , використовуючи divдля ізоляції, ІМО.


1

Вибачте, якщо хтось уже сказав про це, але просте рішення - це пограти зі своєю "висотою лінії". Якщо ви отримуєте занадто багато місця під час використання розриву лінії, це просто тому, що висота лінії встановлена ​​занадто високою. Ви можете виправити це в CSS (але знайте, що це вплине на все, що використовує цю властивість) або ви можете зробити стиль вбудованої форми, щоб замінити CSS.


Це не дає відповіді на запитання. Щоб критикувати або вимагати роз'яснення у автора, залиште коментар під їх публікацією - ви завжди можете коментувати свої власні публікації, і як тільки у вас буде достатня репутація, ви зможете коментувати будь-яку публікацію . - З огляду
JRodDynamite

Я не погоджуюсь. Питання ОП було те, як відрегулювати висоту розриву лінії. Ви не можете, тому ви регулюєте висоту лінії для досягнення бажаного ефекту.
Даніель Сіддалл

1

Мені довелося розробити рішення для перетворення HTML у PDF та вертикального центрування тексту у комірках таблиці, але нічого не вийшло, крім введення простої <br>

Отже, думаючи поза рамкою, я змінив розмір вертикалі, регулюючи розмір шрифту (в пт).

<font style="font-size: 4pt"><br></font>

0
<span style="line-height:40px;"><br></span> 

Ви повинні зробити це в рядку та на кожному
елементі, але він повинен працювати в більшості браузерів Fiddle з висотою лінії, щоб отримати бажаний ефект. Якщо зробити його вбудованим на кожному елементі, він повинен працювати в більшості браузерів та електронної пошти (але це занадто складно для обговорення тут).


1
То навіщо публікувати це, якщо ви не збираєтесь наводити приклади? Вся ідея сайту полягає в тому, що ви це обговорюєте.
Пол

0

Це зробило трюк для мене, коли мені не вдалося отримати інтервал стилів для роботи з тегу span:

        <p style='margin-bottom: 5px' >
            <span>I Agree</span>
        </p>
        <span>I Don't Agree</span>

0

Використовуйте <div>

<div>Content 1</div>Content 2

Це дозволяє створити нову лінію без вертикального пробілу.

Це стає

<div>Content 1</div>Content 2


0

Відповідь на більш загальному рівні для тих, хто приземлився сюди, коли вони виправляють проблеми в інтервалі, викликаному <br>тегом. Мені доводиться робити багато скидів, щоб наблизитися до ідеального пікселя.

br {
    content: " ";
    display: block;
}

Для конкретного питання, з яким я звертався, мені довелося мати певний пробіл між рядками. Я додав поля вгорі і внизу.

br {
    content: " ";
    display: block;
    margin: 0.25em 0;
}

0

Я змусив його працювати в IE7 за допомогою комбінації рішень, але в основному загортаючи Br в DIV, як пропонували Найджел та інші. Додано ідентифікатор і запустіть на = "server", щоб я міг видалити BR при видаленні прапорця з рядка прапорців.

.narrow {
    display: block;
    margin: 0px;
    line-height: 0px;
    content: " "; 
}
<div class="narrow" run at="server"><br></br></div>

0

Можливо використання двох тегів br - це найпростіше рішення, яке працює з усіма браузерами. Але це повторюється.

<p>
content
</p>
<br /><br />
<p>
content
</p>
<br /><br />
<p>
content
</p>

0

Як щодо просто додавання абзацу замість розриву рядка так

бла-ла-бла-бла-абла-ла-ла-бла-бла-абла-ла-ла-бла-а

бла-ла-бла-бла-абла-ла-ла-бла-бла-абла-ла-ла-бла-а

бла-ла-бла-бла-абла-ла-ла-бла-бла-абла-ла-ла-бла-а

Потім ви можете вказати висоту лінійки або обшивку або будь-яку іншу для цього стор


Так, я визначив клас "великий" і для, і для <p>. "<br class=big>" додає пробіл між рядками, а "<p class = big>" додає пробіл перед абзацом: ‍‍‍‍‍‍ ‍‍ br.big {display: block; зміст: ""; маржа-верх: 0,5ем; висота лінії: 190%; вертикальне вирівнювання: top;} ‍‍‍‍‍‍ ‍‍ p.big {margin-top: 1.5em} ‍‍‍‍‍‍ ‍‍ Але проблема з тегом <p> полягає в тому, що вони стилізовані непослідовно програмами електронної пошти. Коли текст електронної пошти, що містить розриви абзацу, "цитується" у відповідях електронної пошти, проміжок між абзацами часто різко змінюється. Тому я маю звичку використовувати подвійні розриви рядків (ctrl-enter в gmail), в електронних листах.
Дейв Бертон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.