Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   как загрузить css из javascript (https://javascript.ru/forum/css-html/8860-kak-zagruzit-css-iz-javascript.html)

GRean 17.04.2010 13:56

как загрузить css из javascript
 
Всем привет!
Столкнулся с такой проблемой, что в отображение стилей в разных браузерах происходит по разному. Ну например в Опере и в Фоксе все ровно, а вот в IE кривовато выводятся стили. Решил для каждого браузера подгружать свою таблицу стилей.
С определением типа браузера разобрался, но вот не получается загрузить нужный мне стиль.

<script>

var ua = navigator.userAgent.toLowerCase();
// Определим Internet Explorer
isIE = (ua.indexOf("msie") != -1 && ua.indexOf("opera") == -1); 
// Opera
isOpera = (ua.indexOf("opera") != -1); 
// Gecko = Mozilla + Firefox + Netscape
isGecko = (ua.indexOf("gecko") != -1);
// Safari, используется в MAC OS
isSafari = (ua.indexOf("safari") != -1);
// Konqueror, используется в UNIX-системах
isKonqueror = (ua.indexOf("konqueror") != -1);
// Простая проверка с помощью document.write
document.write(
    "isIE = " + isIE + "<br>" +
    "isOpera = " + isOpera + "<br>" +
    "isGecko = " + isGecko + "<br>" +
    "isSafari = " + isSafari + "<br>" +
    "isKonqueror = " + isKonqueror + "<br>"
);

if(isIE){
// Что нужно вписать сюда, что бы загрузить Таблица_стилей_для_ИЕ.css
}
else if(isGecko){
// Что нужно вписать сюда, что бы загрузить Таблица_стилей_для_FF.css
}
else if(isOpera)
// Что нужно вписать сюда, что бы загрузить Таблица_стилей_для_Opera.css
</script>


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

subzey 17.04.2010 17:14

Используйте вместо этого условные комментарии IE!

JsLoveR 17.04.2010 17:50

GRean,
Если у пользователя будет отключён джаваскрпит, то стили не подгрузятся, для этих целей есть:
Для Ie:
<!--[if IE 6]><link href="styles.css" rel="stylesheet" type="text/css" /><![endif]-->

Для Opera:
@media all and (min-width: 0) {
.style { background: #FF0; }
}
html:first-child .style {
background: #FF0;
}

Для Лисы, Сафари:
html:root .style {
background: #FA0;
}

.style, x:-moz-any-link {
background: #FA0;
}

GRean 17.04.2010 18:10

Спасибо Вам!

Вот код, который мне помог:

<![if IE ]>
    <link rel="stylesheet" type="text/css" href="IEStyle.css" />
<![endif]>
<![if !IE ]>
    <link rel="stylesheet" type="text/css" href="FFStyle.css" />
<![endif]>


Думаю этого будет достаточно! Или этот код тоже требует javascript?

JsLoveR 17.04.2010 18:16

GRean,
Цитата:

Сообщение от GRean
Или этот код тоже требует javascript?

Нет)

GRean 17.04.2010 19:06

теперь проблема в том, что в лисе выполняются два условия, а в IE все как надо работает.

Объясните плииз как пользоваться этими хаками, что привел JsLoveR.
Их надо просто скопировать в стили или по месту назначения в див пихать?

JsLoveR 17.04.2010 19:19

<!--заверни условие для Ie в комментарии-->, так
<!--[if IE 6]><link href="styles.css" rel="stylesheet" type="text/css" /><![endif]-->
и тогда в других браузерах, кроме Ие это условие не будет срабатывать

JsLoveR 17.04.2010 19:38

Ах, да, забыл сказать, что хаки для других браузеров добавлять в CSS, например:
@-moz-document url-prefix() {
div.elem {color:red;}
}

GRean 17.04.2010 19:42

IE тоже видит эти комментарии. Для примера сделал вот так :
<!-- <a>IE</a> -->

JsLoveR 17.04.2010 19:52

<!-- --> Комментарии для html кода, в них добавляются условия для загрузки стилей IE, другие браузеры воспринимают это как комментарии, это условие добавляется обычно в <head></head> и если нету никакого условия внутри этих комментариев ничего происходить не будет.

GRean 17.04.2010 20:24

В итоге добился своего результата.
Вот пример:

<link href="FFStyle.css" type="text/css" rel="stylesheet"/>
<!--[if IE]><link href="IEStyle.css" type="text/css" rel="stylesheet"/><a>IE</a><![endif]-->


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

Какой строгий CSS, а вот совместимость хромает, одна головная боль с этим CSS.

Octane 17.04.2010 20:27

Цитата:

Сообщение от GRean
Оказывается я напутал порядок команд внутри тега, то есть после линка обязательно должен href идти, иначе ошибка.

Неправда. Загляните хотя бы в HTML-код на этом форуме, там:
<link rel="stylesheet" type="text/css" href="http://javascript.ru/forum/clientscript/vbulletin_css/style-540801a6-00003.css" id="vbulletin_css" />
и все работает.

JsLoveR 17.04.2010 20:29

GRean,
Вы бы, допустим, верстали html под какой-то один браузер, например, Мозиллу, а под другие браузеры делали отдельные стили, а вообще лучше уметь верстать одним кодом.

GRean 17.04.2010 20:43

Цитата:

Сообщение от Octane
Оказывается я напутал порядок команд внутри тега, то есть после линка обязательно должен href идти, иначе ошибка.
Неправда. Загляните хотя бы в HTML-код на этом форуме, там:
<link rel="stylesheet" type="text/css" href="http://javascript.ru/forum/clientscript/vbulletin_css/style-540801a6-00003.css" id="vbulletin_css" />и все работает.

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

Цитата:

Сообщение от JsLoveR
Вы бы, допустим, верстали html под какой-то один браузер, например, Мозиллу, а под другие браузеры делали отдельные стили, а вообще лучше уметь верстать одним кодом.

Раз уж условия удались, то буду делать для трех браузеров. (ОПЕРА и ЛИСА) и IE. Естесственно, за основу берется Лиса, а в ИЕ уже вношу мелкие изменения. Раз IE еще жив, то для него тоже приходится делать.

Во флэше почти все что угодно могу сделать, а вот в html,css и javascript я делаю первые шаги. Я и так чуть не утанул в литературе. Но практика лучше всего.

Octane 17.04.2010 21:14

Цитата:

Сообщение от GRean
Раз IE еще жив

Он и не собирался умирать)

p.s. вторая цитата в вашем сообщении не моя)

GRean 17.04.2010 21:37

Цитата:

Сообщение от Octane (Сообщение 51996)
Он и не собирался умирать)

p.s. вторая цитата в вашем сообщении не моя)

Извиняюсь, подправил.

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

Сам текст находится в
<Table><div id = "menu">ТЕКС</div></Table>

#menu {
PADDING:0px; 
MARGIN:0px;
position: relative;
float: left;
left:0px;
top:0px;
width: 120px;
height: 50px;
border: solid 1px black; 
}

Есть ли какие либо средства, кроме хаков отрегулировать высоту ?

Octane 17.04.2010 21:41

Цитата:

Сообщение от GRean
Сам текст находится в <Table><div id = "menu">ТЕКС</div></Table>

А что вы таким HTML-кодом хотели сделать? :blink:

Цитата:

Сообщение от GRean
Есть ли какие либо средства, кроме хаков отрегулировать высоту ?

Покажите страницу

GRean 17.04.2010 22:29

Вот сам сайт:
http://www.flashgame.b13.su/exp/Indexx.html
Если запустить под лисой, то номер телефона почти правильно стоит, просто в стиле я его не отрегулировал. А если под оперой запустить, то идет смещение. Стиль используется один и тот же для Оперы и для лисы.
Собственно через страницу можно и сам код увидеть.

Octane 17.04.2010 22:45

Заголовки внутри <a>… :-/ учите XHTML, который взялись использовать.

И для <h1..6> браузеры задают оформление, каждый своё, поэтому нужно сбросить хотя бы margin и padding по умолчанию. Ну и высоту строки нужно с помощью line-height регулировать.

GRean 17.04.2010 23:17

Спасибо за советы и помощь. Пошел разбираться!


Часовой пояс GMT +3, время: 10:53.