смена CSSна сайте в зависимости от дня недели
Доброго всем.
Признаюсь честно в Javascript полный ноль, но постала потребность сделать смену CSS на сайте в зависимости от дня недели. Подскажите как сделать чтоб изменялся файл CSS взависимости от того какой сегодня день (пн, вт, и т. д.)? |
Цитата:
А вот как узнать день недели... http://javascript.ru/forum/misc/9390...en-nedeli.html |
ksa,
если только ручками в шаблоне :), а так то нет. |
dac_60, серверный язык каккой?
|
вообще то кмс стоит DLE
|
Если есть серверный язык - можно сделать цсс-файлы такого типа
f0.css f1.css ... f6.css тогда при генерации хтмля можно использовать нечто подобное <link rel="stylesheet" type="text/css" href="f#($h#7)#.css"> Пример на csp... |
ksa,
на csp - не работает. я думаю что лучше на javascript это сделать |
Цитата:
dac_60 откроете файл main.tpl, найдете файл, который отвечает у вас за стили, замените на код ниже, но перед этим создайте в каталоге шаблона css 7 файлов css с названиями style1, style2 и тд: <?php $i = 0; $array = array(); while($i++<7){ array_push($array, $i); } ?> <link rel="stylesheet" type="text/css" href="{THEME}/css/style<?php echo $array[date("w",time())].'.css'; ?>" /> |
Функция для динамической подгрузки*:
<script> function loadjscssfile(filename, filetype){ if (filetype=="js"){ //if filename is a external JavaScript file var fileref=document.createElement('script') fileref.setAttribute("type","text/javascript") fileref.setAttribute("src", filename) } else if (filetype=="css"){ //if filename is an external CSS file var fileref=document.createElement("link") fileref.setAttribute("rel", "stylesheet") fileref.setAttribute("type", "text/css") fileref.setAttribute("href", filename) } if (typeof fileref!="undefined") document.getElementsByTagName("head")[0].appendChild(fileref) } </script> *взято отсюда ее вставить в HEAD. Подключать таблицу стилей вызовом: loadjscssfile("путь_к_файлу.css", "css"); получить день недели можно c помощью метода day объекта Date |
kadabrik ну зачем всякий сусор из сети нести, можно гораздо проще, по аналогии с примером выше на PHP:
<script type="text/javascript"> window.onload = function(){ var i = 0, array = []; while(i++<7){ array.push(i); } document.getElementsByTagName('link')[0].setAttribute('href', 'style'+array[new Date().getDay()]+'.css'); }; </script> dac_60, только номер элемента не забудьте поменять или же ничего не нужно менять если файл будет стоять первым. |
new Date().getDay()
Только 0 соответствует вс. Если нужно привести к виду пн - 0, вт - 1, ..., вс - 6, то так: (new Date().getDay() + 6) % 7 Ну и вместо генерации аж 7(!) файлов есть работа со стилями document.styleSheets - массив таблиц addRule(), insertRule() - методы конкретной таблицы (для IE и остальных) Плюс - не нужно отдельных запросов, все делается в одном скрипте. Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Самый простой способ менять стиль элемента в зависимости от дня недели: <script type="text/javascript"> window.onload = function(){ var array = ['#DC1C1C', '#1CCCDC', '#1CDC6C', '#425C4D', '#B8DC00', '#DC00B6', '#A2A2A2']; document.getElementsByTagName('div')[0].style.background = array[new Date().getDay()]; }; </script> <div style="width: 200px; height: 200px;"></div> |
monolithed, интересно это зачем? )))
<script type="text/javascript"> window.onload = function(){ var array = ['#DC1C1C', '#1CCCDC', '#1CDC6C', '#425C4D', '#B8DC00', '#DC00B6', '#A2A2A2'], i = array.length; *!* while(i--){ array.push(i); } */!* document.getElementsByTagName('div')[0].style.background = array[new Date().getDay()]; }; </script> <div style="width: 200px; height: 200px;"></div> |
рони, ага тупанул что-то (с предыдущих примеров осталось)))
|
я считаю, самый оптимальный вариант - на сервере назначать body нужный класс(mon, tue, wed...), а в css переопределять нужные свойства в зависимости от наличия того или иного класса. Таким образом, не размазываем css по html и имеем разные значения свойств друг возле друга:
.mon div { background: red; } .tue div { background: green; } .wed div { background: blue; } |
Цитата:
<script type="text/javascript"> window.onload = function(){ document.getElementsByTagName('link')[0].setAttribute('href', 'style'+[0,1,2,3,4,5,6][new Date().getDay()]+'.css'); }; </script> |
А, вообще, думаю, что это не лучшая идея, загружать страницу, а потом перерисовывать ее, подгружая цсс:)
|
Цитата:
<script type="text/javascript">document.write('<link rel="stylesheet" href="style_' + new Date().getDay() + '.css">')</script> А вообще - решение по-любому надо делать на серваке. |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Что-то записать в head можно, только полностью переписав весь документ. Вместе с html, head и body. RTFM. |
Цитата:
<html> <head> <script type="text/javascript"> document.write('<link rel="stylesheet" href="style_' + new Date().getDay() + '.css">'); </script> </head> <body></body> </html> |
Цитата:
|
Цитата:
На всякий если ещё не дошло: <html> <head> <script type="text/javascript"> document.write('<link rel="stylesheet" href="style_' + new Date().getDay() + '.css">'); alert('A где же наше body? Посмотрим: ' + document.body) </script> </head> <body> <h1>А вот и body!</h1> </body> </html> |
Вобщем-то можно даже так
<html><head> <script type="text/javascript">document.write('</head>');</script> <body></body> </html> |
не удосужившись на них даже взглянуть, не то что понять Да, парсеры нынче правильно разбирают, куда какие элементы вставлять в дерево. Тут я не прав. Раньше ситуация была куда как хуже - все добавлялось в body. Цитата:
Смотрим <html> <head> <script type="text/javascript"> document.write('<link rel="stylesheet" href="test.css">'); document.write('<h1>Ой, а куда меня добавят? Неужто в head?</h1>'); </script> </head> <body></body> </html> Метод document.write() передает нераспарсенный текст. Кому? Парсеру, конечно. На этом этапе никакого дерева еще нет и быть не может. Потому и обращение к document.body тут абсолютно не при чем. |
Цитата:
|
Цитата:
Цитата:
Это вставка COS (Каше Обжект Скрипт) в хтмл... #(...)# Это дата в формате хоролог <количество_дней_с_1800_года>,< количество_секунд_с_полуно и> $h Это бинарная операция остаток от деления N на M N#M Возможно там придется прибавить что-то для коррекции дня недели но это уже не принципиально... |
Цитата:
<html><head></head> <body id="body_id"> <script type="text/javascript">document.write(document.body.id);</script> </body></html> |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 14:52. |