в моем текущем проекте у меня есть следующая структураСделать пункт автоматического заполнения оставшихся высота родительского
<ol>
<li>...</li>
<li>
<section>
<h1>some title</h1>
<p>some text</p>
</section>
</li>
<li>...</li>
</ol>
ol
имеет переменную, но набор высоты, которая заполняется по li
(через height:100%;
). Теперь я хочу, чтобы текст в абзаце заполнил оставшуюся высоту (через line-height
и/или font-size
).
Я исследовал это, но на самом деле не нашел решения для этого, только FitText.js, но он «предназначен только для гигантского текста дисплея», как говорится.
Так что я придумал решение JavaScript, вычисляя оставшуюся высоту с двух точек зрения (по умолчанию line-height: 1em
и line-height: 0em
) и рассчитать необходимый line-height
так остающегося высота 0 (по основнымам математики, интерполяционной функции y = a*x + b
, где это y
равным оставшаяся высота).
var outerHeight = $("section").innerHeight(),
h1Height = $("section").children("h1").first().outerHeight(),
pHeight = $("section").children("p").first().outerHeight();
var defaultHeight, a, b, x;
defaultHeight = outerHeight - (h1Height + pHeight);
$("section").children("p").first().css("line-height", "0em");
b = outerHeight - (h1Height + $("section").children("p").first().outerHeight());
a = defaultHeight - b;
x = -b/a;
$("section").children("p").first().css("line-height", x+"em");
Наконец мой вопрос: Можно ли добиться этого в лучшую сторону (чистый CSS было бы удивительным, но я сомневаюсь, что)? Если нет, какие события могут произойти, в которых я должен был пересчитать (например, изменение размера браузера)?
Также хотел бы, чтобы текст заполнил раздел до максимальной степени - в настоящее время последней строки может создать небольшую видимую область между символами и нижней частью раздела.
Почему бы не установить высоту до 'auto' – BlackHatSamurai
@Blaine это из раздела' ol' вертикальна и имеет 3 элемента, как показано на рисунке -? Я хочу, чтобы все они имеют такой же высоты, поэтому я сделал не думай об этом. Будем исследовать это, так что спасибо уже;) – kero
Или вы можете обернуть этот раздел в div и установить его в 'auto', тогда дочерние элементы автоматически заполнили родителя. – BlackHatSamurai