Фиксированный размер шрифта в Firefox?

Я хочу, чтобы размер шрифта меню навигации был одинаковым для всех браузеров. Я установил размер шрифта текста меню навигации на определенный размер в пикселях. В IE это работает, но не в FF.

Проблема в том, что если человек изменяет размер шрифта своего браузера, это полностью разрушает макет меню в FF.

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

Спасибо!

Приемы 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 сценарий полностью изменился.
0
0
3 901
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

У меня есть хороший друг, который по образованию дизайнер полиграфии. Когда она впервые начала заниматься веб-дизайном, она чуть не сошла с ума из-за отсутствия контроля. Я посоветовал ей глубоко вздохнуть, изучить блочную модель CSS, а затем разработать «нормальный» размер шрифта +/- 1 размер.

Ответ принят как подходящий

У вас есть три варианта:

  1. Исправьте макет меню так, чтобы он был более устойчивым к разным размерам шрифтов (рекомендуется: множество пользователей, которые не согласятся с вашим выбором размера шрифта, не только для пользователей с ослабленным зрением).
  2. Замените текст изображениями (с соответствующим замещающим текстом!); FF (и IE) по-прежнему масштабируют их в режиме «масштабирования», но не нарушают макет страницы.
  3. Ничего не делать. Оставьте сломанный макет как большой «FU» для тех пользователей, которые в противном случае напряглись бы, чтобы прочитать ваш текст фиксированного размера.

Согласовано. Умышленное нарушение увеличенного размера шрифта - плохая идея. Если ваш пользователь просматривает страницы с увеличенным размером шрифта, вероятно, это потому, что им это нужно. Единственный случай, когда это может быть нормально, - это если вы используете огромный размер в пикселях, и в этом случае вы можете использовать (2), используя изображения.

Adam Bellaire 19.12.2008 21:14

Я бы даже не сказал, что работать с изображениями - это хорошо. Используйте сброс css, найдите удобный, читаемый размер шрифта и установите его с помощью em. Любой, кто собирается увеличить размер шрифта, хочет читать контент, а не видеть, сломается ли ваш сайт.

Steve Perks 19.12.2008 22:54

Вы сражаетесь в битве, которую не выиграете, если попытаетесь все исправить и радоваться только своим глазам. Если контент предназначен для публичного использования, то поймите, что у г-жи Паблик разные мнения относительно правильного размера шрифта, который ей следует читать.

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

Развивайте и поймите, что размер шрифта ДОЛЖЕН изменяться с помощью CTRL + '+/-'

Но до какой крайности? Если человек максимально увеличивает размер шрифта своего браузера, то такие вещи, как горизонтальные навигационные меню, переносятся на новые строки, полностью разрушая макет.

Bryan Denny 19.12.2008 21:35

Если они увеличивают размер шрифта до максимума, чтобы сломать ваш макет, действительно ли это вас беспокоит? Вы должны иметь в виду, что пользователи, которые отключили Javascript, используются для сайтов, которые не работают, точно так же, как пользователь с большим шрифтом используется для макетов, которые выглядят странно. Пусть решают.

hugoware 19.12.2008 22:38

@Bryan Как сказал HBoss. Если этот сайт предназначен для вашего развлечения, просто сохраните его на рабочем столе и откройте, когда захотите посмотреть.

Steve Perks 19.12.2008 22:52

Проблема не в том, что кто-то масштабирует, клиент хотел это, и это похоже на то, что он хотел, проблема в том, что шрифт 9pt отображается, например, 7 и 8 и хром, но не в ff

Есть еще вариант:

Определите размер шрифта пользователя с помощью следующего скрипта: http://www.alistapart.com/articles/fontresizing/

Затем настройте контейнер div в em, чтобы компенсировать размер пользователя.

Например, если размер шрифта пользователя равен 22, а база - 20, тогда размер шрифта вашего контейнера div должен быть 20/22 (т.е. 22 * ​​(20/22) = 20). :)

Примечание. Причина, по которой вам понадобится контейнер div, заключается в том, что ваш слушатель событий будет следить за изменениями размера шрифта в теле.

(Этот ответ, вероятно, разозлит некоторых экспертов по юзабилити. Извините этих людей. У вас есть хорошие моменты, но ответ все равно остается ответом.: P)


PS. Думаю, мне лучше приложить свой код реализации, чтобы доказать, что он работает. Я не редактировал этот код для глобального приложения. Он скопирован и вставлен ... обратите внимание на такие вещи, как замена моего условного IE (который использует динамически добавленные классы CSS) обычными условными операторами обнаружения браузера (например).

Это долго, но все необходимое:

updateBaseFontSize : function(fontSize,reloadBool){
                /*Format 1 is fed from the plug; format2 is the body size equiv
                 *examples:
                 *Frmt 1 (all/IE) | Frmt 2 (all/IE)
                 *20/18           | 16px/16px
                 *21/21           | 17.6px/19px
                 *22/23           | 19.2px/22px
                 *
                 *Purpose of updateBaseFontSize is:
                 * 1. convert format 1 figures to format 2
                 * 2. modify the all containing div 'fontbodyreadjust'
                 *    to compensate for the new user defined body font size
                 */

                var format1Base;
                var format1Size = fontSize; //equals new size in pixels
                var reloadPage = reloadBool; //prevents reload on 1st visit

                var baseConverter;
                var changeConverter;

                if ($('body').hasClass('browserIE')) {
                    format1Base = 19; //expected base size value for IE
                    baseConverter=16/19; //converts from format 1 to 2 for IE
                    changeConverter=1.5; //ditto for the difference from base size for IE
                } else {
                    format1Base = 20;//expected base size value for all other browsers
                    baseConverter=16/20; //converts from format 1 to 2 for all others
                    changeConverter=1.6; //ditto for the difference from base size for all others
                }


                //Find modifiedSize, how much to compensate for the new body size
                var format2Base = format1Base * baseConverter;

                var format2SizeChange = (format1Size-format1Base)*changeConverter;
                var format2NewSize = format2SizeChange + format2Base;

                var modifiedSize = format2Base/format2NewSize;


                //Allow text resizing for shrinking text and very very large text
                //Only works for safari. meant to prevent odd behavior at math extremes
                if ((format2NewSize >= format2Base)&&(modifiedSize>.6)){
                    $('#fontbodyreadjust').css('font-size',modifiedSize+'em');
                }

                //reloadPage boolean in place so that reload doesn't occur on first visit
                if (reloadPage){
                    window.location.reload()
                }
    },

    initHome : function(){


        // UNHIDE HOME PAGE CONTENT AFTER IT'S LOADED. OTHERWISE, LAYERED AND MESSY
        $('#slider').css('display', 'block');


                // PREVENT VARIOUS USER BROWSER-FONT RESIZE SCENARIOS
                // Note: irrelevant for browsers that zoom all elements simultaneously
                window.initFontResizeDetector = function(){
                        var iBase = TextResizeDetector.addEventListener(onFontResize,null);

                        //Don't run the updateBaseFontSize if font size is not larger than usual
                        if (iBase>20){
                            var reloadBoolean = false;
                            window.updateBaseFontSize(iBase,reloadBoolean);
                        }
                }

                //id of element to check for and insert control
                TextResizeDetector.TARGET_ELEMENT_ID = 'bodyContent';
                //function to call once TextResizeDetector has init'd
                TextResizeDetector.USER_INIT_FUNC = window.initFontResizeDetector;

                window.onFontResize = function(e,args) {
                        var iSize = args[0].iSize; //get new user defined size
//                        var iDelta = args[0].iDelta; //get new user defined size
//                        var iBase = args[0].iBase; //get new user defined size
                        var reloadBoolean = true;
//                        console.info(iSize,iDelta,iBase);
                        window.updateBaseFontSize(iSize,reloadBoolean);
                }

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