2015-09-15 4 views
-3

У меня есть требование загрузить различные CSS на основе настроек браузера.Применить разные стили на основе настроек браузера.

Предположим, если языковой предпочтение будет китайским, тогда стиль FontFamily должен быть: Microsoft Chinese иначе FontFamily будет: Calibri.

Любая догадка.

Спасибо.

+0

Итак, исходя из этого ответа о [локализации в JavaScript] (http://stackoverflow.com/a/4079798/3753055), вы можете выполнить его с использованием JavaScript. Поскольку CSS - это только интерпретируемый код, вы не можете получить доступ к информации браузера через CSS. –

ответ

2

Желание использовать разные шрифты отличается от «желающих загрузить различные CSS». Вы можете легко иметь один файл CSS, который содержит разные правила для разных языков. Вот один подход:

[lang=zh-cn] { font-family: "Microsoft Yahei","微软雅黑", STXihei, "华文细黑"; } 
[lang=en-us] { font-family: Calibri; } 

Какой вариант будет выбран, будет зависеть от настройки lang для элемента оно применяется, или, точнее, атрибут ближайшего предка, который имеет один lang (это последнее поведение является особенно для атрибута lang). Таким образом,

<html lang='zh-cn'> 

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

Что необходимо для того, чтобы сервер правильно установил атрибут lang на элементе html. Существует несколько способов сделать это. Например, это может быть основано на предпочтении пользователя. Или сервер может заполнить его в соответствии с заголовком Accept-Language. Или на основе геообнаружения. Если пользователь меняет настройки своего языка с помощью пользовательского интерфейса, клиент может сбросить атрибут lang на самом элементе html.

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

[lang|=en] { font-family: Calibri; } 

(обратите внимание на вертикальную полосу), которая соответствовала бы en, но и en-us и т.д. Затем обеспечивают еще одно правило для en-uk, если вы хотите для британского английского.

Однако имейте в виду, что вы можете не захотеть полностью по умолчанию использовать китайские шрифты. Это приведет к тому, что с помощью этого шрифта будут отображаться даже римские символы, и часто символы глифов в таких шрифтах особенно уродливы. Возможно, вам понадобится объединить шрифты в «стеки шрифтов», обычно с первым шрифтом западного символа, чтобы перенести римские символы с помощью шрифтов, таких как Calibri, а затем вернуться к китайским шрифтам только для найденных там глифов.

Другим распространенным использованием CSS-селекторов, основанных на атрибутах lang, является выбор различных типов кавычек на основе языка с использованием свойства CSS quotes.

+0

U качающийся человек! Это именно то, чего я хочу. Реализуем это сейчас. Спасибо – user3674148

+0

Насколько вы знаете синтаксис добавления «Accept-Language» в MasterPages (asp.net)? Между тем, я добавил эту строку в Html Root (перед голосом), но, похоже, прослушивание - некоторые прокрутки страниц JS или лента отключены ... – user3674148

Смежные вопросы