FireFox 3 line-height

Firefox 3 представил новое поведение, в котором высота строки, если она не задана, отличается от того, как ее отображают другие браузеры. Таким образом, критический раздел может отображаться слишком высоко в этом браузере. Установка глобального процента не работает, так как его основа другая. Установка безразмерного значения, такого как «1», тоже не работает. Есть ли способ нормализовать это измерение?

Возможно, пример страницы или что-то в этом роде? У меня не было этой проблемы.

rfunduk 21.01.2009 20:49

Действительно. Здесь нет такой проблемы; вопрос недостаточно конкретен.

bobince 21.01.2009 21:49
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
10
2
12 939
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы всегда должны «сбрасывать» стили, чтобы устранить все несоответствия браузера со стилями элементов.

Мне нравится Сброс CSS Эрика Мейера. Yahoo тоже есть.

Каким будет значение сброса в этом случае? 0? Затем добавить высоту строки к текстовому контейнеру? Я думаю, что это проблема другого типа, чем поля и отступы.

mmcglynn 21.01.2009 21:34

Если вы собираетесь использовать сброс Эрика Мейера, убедитесь, что вы используете самую последнюю версию - meyerweb.com/eric/tools/css/reset/index.html

Andy Ford 21.01.2009 23:54
Ответ принят как подходящий

Вычисленное значение line-height: normal варьируется между платформами, браузерами (и разными версиями одного и того же браузера, как вы указываете), шрифтами и даже разными размерами одного и того же шрифта (см. статью Эрика Мейера).

Установка безразмерного значения, например ...

body {line-height: 1.2;}

... должен нормализует интервал между браузерами. Если это не работает, не могли бы вы дать более подробное описание вашей таблицы стилей?

Трудно (невозможно?) Получить «идеальные по пикселям» результаты, но для того, чтобы получить максимально предсказуемые результаты, я стараюсь использовать высоту строки, которая дает хорошее круглое значение при умножении на размер шрифта. Мы не можем знать размер шрифта пользовательского агента по умолчанию, но 16 пикселей - это довольно распространенное явление.

body 
{
    font-size: 100%;
    line-height: 1.5;
}

Если начальный размер шрифта пользовательского агента действительно составляет 16 пикселей, тогда высота строки 1.5 получается хорошей, даже 24 пикселей. Однако пользователи могут изменять размер шрифта по умолчанию или масштаб страницы, и они меняют его, а разные браузеры имеют разные методы масштабирования страницы. Тем не менее, я думаю, что для большинства пользователей у меня был разумный успех. Если я не могу добиться точной высоты строки, я стремлюсь немного выше целого числа, а не немного ниже, потому что некоторые браузеры, кажется, усекают значения, а не округляют их.

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

body 
{
    font-size: 100%;
    line-height: 150%;
}

p
{
    font-size: 75%;
}

Начиная с базового размера шрифта 16 пикселей, высота строки будет 24 пикселя. В элементе <p> размер шрифта становится 12 пикселей, но высота строки нет становится 18 пикселей, а не остается 24 пикселей. В этом разница между line-height: 1.5 и line-height: 150%. Когда используется body {line-height: 1.5;}, высота строки для <p>является 18 пикселей.

Да, установка атрибута, как вы показали, помогает, как и line-height: 120%. Однако это не дает идеальных результатов по пикселям продукта. Может быть, это так хорошо, как есть. Кто-нибудь знает, почему Firefox изменил это поведение?

mmcglynn 21.01.2009 22:59

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

David Kolar 22.01.2009 00:05

Вы ничего не можете сделать. У каждого браузера есть способ рендеринга CSS и контента. Вы можете использовать «Главный» сброс (как предлагает cowgod), но даже в этом случае это не решит в конечном итоге проблемы с выравниванием. Они там из-за реального движка рендеринга. Добавьте CSS на свой существующий веб-сайт и протестируйте его. Скажите, делает ли это идеальным пиксель во всех отношениях. Не будет.

Единственный способ добиться совершенства пикселей - это реализовать определенный CSS для конкретных браузеров. У Mozilla есть @ -moz-doc, у IE есть свои собственные хаки, но ни один из них не является частью спецификаций W3C, и мы все знаем, что стандарты важны. Так что не лучший вариант.

Как сказал Дэвид выше, это сложно. На самом деле я склонен думать, что это невозможно. И я часами пытался, поверьте мне! Почти сходил с ума больше раз, чем я могу сосчитать. Это тяжелая пилюля, но нет никакого способа обойти ее, если только все не используют один и тот же движок просмотра (что, на мой взгляд, сделало бы Интернет большим шагом вперед). Я имею в виду, что было бы не так уж сложно установить любой интерфейс, который вы хотите, в своем браузере, если вы подключаете [gecko] [webkit] [presto] [trident] [что угодно] для обработки бэкэнда ... Поскольку хороший все они с открытым исходным кодом, вы можете объединить проекты и действительно начать работу. Людям нужно научиться хорошо играть вместе;)

Вы МОЖЕТЕ решить это:

Установите высоту строки на 1, затем на ноль в тексте, используя padding-top и padding-bottom, и установите высоту на auto.

.zeroed_in_element {
    padding: 4px 2px 5px 2px;
    height: auto;
    line-height: 1;
} 

Другие вопросы по теме