Deutsch

Смена бекграунда

579  1 2 все
Ivan_Pomidoroff старожил01.11.10 23:57
Ivan_Pomidoroff
NEW 01.11.10 23:57 
Появилась идея зделать на своём сайте сменяющийся бекграунд. Естественно, сам я невсостоянии "переварит" этот вопрос.
Задача такая: 24 картинки меняют друг друга поочереди каждый час... тоесть каждая картинка привязанна к конкретному времени.
Как можно решить такую задачу?
зы. Знаю немного HTML и СSS поэтому просьба - неспешите, я записываю...
#1 
voxel3d коренной житель02.11.10 01:03
voxel3d
NEW 02.11.10 01:03 
в ответ Ivan_Pomidoroff 01.11.10 23:57, Последний раз изменено 02.11.10 01:07 (voxel3d)
Как сделан сайт? Если статика, то жабаскриптом, если какое-нибудь пхп, то в скрипте. Третий вариан - кроном менять картинку на сервере, вероятно, плохой - предположительно, на клиенте появятся проблемы с кэшированием. Если надо при загруженной страничке по прошествии часа менять фон, то однозначно жабаскрипт. new Date().getHours() вернёт текущий час, дальше, зависит от того, как сделан фон.
Dropbox - средство синхронизации и бэкапа файлов.
#2 
compman завсегдатай02.11.10 01:06
compman
NEW 02.11.10 01:06 
в ответ Ivan_Pomidoroff 01.11.10 23:57
Если сайт уже загружен в браузер, то при помощи javascript. Если имеется в виду, что каждый час должен загружаться с сервера новый бекграунд, то при помощи например PHP
#3 
Murr_0001 завсегдатай02.11.10 02:45
Murr_0001
NEW 02.11.10 02:45 
в ответ Ivan_Pomidoroff 01.11.10 23:57
Вопрос не четкий.
Что нужно:
- динамически менять бэграунд в загруженной в браузер странице?
- организовать отдачу сервером разных бекграундов в разное время?
1. жабий скрипт, но Я не уверен, что всегда получится без перезагрузки страницы. Ну а с перезагрузкой должно быть понятно...
2. подготовить 24 штуки CSS и отдавать нужный, формируя имя в зависимости от состояния часов... есть и более сложный вариант, с формированием CSS на лету, но там будет достаточно гемороя с кешированием...
#4 
Ivan_Pomidoroff старожил02.11.10 07:14
Ivan_Pomidoroff
NEW 02.11.10 07:14 
в ответ voxel3d 02.11.10 01:03, Последний раз изменено 02.11.10 07:21 (Ivan_Pomidoroff)
В ответ на:
Как сделан сайт?

Сайт в профиле. обычный html и css.
В ответ на:
Что нужно:
- динамически менять бэграунд в загруженной в браузер странице?

ну это необезательно, хотя былобы круто ))) Достаточно чтобы загружалась правельная картинка при заходе (обнавлении), наврятли кто на сайте будет более часа. )
В ответ на:
дальше, зависит от того, как сделан фон.

background-image: url(images/knopf/background.png);
фон - растянутая картинка шириной в пиксель.
В ответ на:
прошествии часа менять фон, то однозначно жабаскрипт.

В ответ на:
2. подготовить 24 штуки CSS и отдавать нужный, формируя имя в зависимости от состояния часов...

Это то что нада... Можно конкретный пример, а то я сам "нетяну".
зы. ещё один вопрос: вечером и утром лого с иконками должно менять цвет, чтобы ночью не потерялись на тёмном фоне.
#5 
Guliston прохожий02.11.10 09:42
NEW 02.11.10 09:42 
в ответ Ivan_Pomidoroff 01.11.10 23:57
20 € PayPal, и я тебе сделаю.
#6 
Murr_0001 завсегдатай02.11.10 11:39
Murr_0001
NEW 02.11.10 11:39 
в ответ Ivan_Pomidoroff 02.11.10 07:14
Можно конкретный пример
------
Можно. Т.е. нельзя.
Придется освоить серверную часть программирования - ASP, PHP, JAVASCRIPT & etc...
Проверяешь текущее время и отдаешь строку для загрузки нужного CSS.
#7 
miltorg местный житель02.11.10 14:55
miltorg
02.11.10 14:55 
в ответ Ivan_Pomidoroff 01.11.10 23:57, Последний раз изменено 02.11.10 15:19 (miltorg)
http://fx-signal.ru/
Это готовый Друпальский шаблон. Работает на php. Подменяет картинки каждую перезагрузку. Поставить определитель времени и всё.
Сайт делался для клиента. Клиент правил его. Так что помидорами не кидайте - код уже не мой.
Половина евро в час
#8 
Ivan_Pomidoroff старожил02.11.10 15:03
Ivan_Pomidoroff
NEW 02.11.10 15:03 
в ответ Guliston 02.11.10 09:42
В ответ на:
20 € PayPal, и я тебе сделаю.

спасибо за предложение.
В ответ на:
Можно. Т.е. нельзя.

В любом случае мне нужно добится результата.
#9 
Ivan_Pomidoroff старожил02.11.10 15:08
Ivan_Pomidoroff
NEW 02.11.10 15:08 
в ответ miltorg 02.11.10 14:55
У меня свой собственный сайт и меня интересует что нужно зделать в моём случае, для достижения моей цели. Я, например, незнаю как "Поставить определитель времени и всё".
PHP - тёмный лес.
#10 
miltorg местный житель02.11.10 15:16
miltorg
NEW 02.11.10 15:16 
в ответ Ivan_Pomidoroff 02.11.10 15:08, Последний раз изменено 02.11.10 15:17 (miltorg)
В ответ на:
что нужно зделать в моём случае, для достижения моей цели.

Переписать сайт на cms и использовать имеющиеся там шаблоны. Их очень много.
Потихоньку учить php - это очень просто.
Или платить деньги. Я прошу 5 евро в час. В том числе и за обучение.
Половина евро в час
#11 
Ivan_Pomidoroff старожил02.11.10 22:15
Ivan_Pomidoroff
NEW 02.11.10 22:15 
в ответ miltorg 02.11.10 15:16
Вобщем, остановился на пхп варианте предложенным одним хорошим человеком.
Ситуация такая:
Переименовал css в php. в первой строке ввёл
<?php
header("Content-type: text/css");
?>

а в "башке" страници указал что теперь у нас link href="style.php"
Теперь мой сайт поддерживает php. )))
Осталось вписать в style.php функцию которая будет менять бекграунд в зависимости от времени. сейчас бекграунд у меня описывается так:
#header{
height: 71px;
width: auto;
background-image: url(images/knopf/background/background_17.png);
}

Ктонить понимает какую функцию надо вписать?
#12 
Ivan_Pomidoroff старожил02.11.10 23:53
Ivan_Pomidoroff
NEW 02.11.10 23:53 
в ответ Ivan_Pomidoroff 02.11.10 22:15, Последний раз изменено 03.11.10 00:04 (Ivan_Pomidoroff)
нашёл! несовсем изящно, но я незнаю как сделать короче (
<script>
window.onload=function() {
var date=new Date();
if (date.getHours()>=0 && date.getHours()<1) document.getElementById('x').style.background='url(images/knopf/background/background_00.png)';
if (date.getHours()>=1 && date.getHours()<2) document.getElementById('x').style.background='url(images/knopf/background/background_01.png)';
if (date.getHours()>=2 && date.getHours()<3) document.getElementById('x').style.background='url(images/knopf/background/background_02.png)';
if (date.getHours()>=3 && date.getHours()<4) document.getElementById('x').style.background='url(images/knopf/background/background_03.png)';
if (date.getHours()>=4 && date.getHours()<5) document.getElementById('x').style.background='url(images/knopf/background/background_04.png)';
if (date.getHours()>=5 && date.getHours()<6) document.getElementById('x').style.background='url(images/knopf/background/background_05.png)';
if (date.getHours()>=6 && date.getHours()<7) document.getElementById('x').style.background='url(images/knopf/background/background_06.png)';
if (date.getHours()>=7 && date.getHours()<8) document.getElementById('x').style.background='url(images/knopf/background/background_07.png)';
if (date.getHours()>=8 && date.getHours()<9) document.getElementById('x').style.background='url(images/knopf/background/background_08.png)';
if (date.getHours()>=9 && date.getHours()<10) document.getElementById('x').style.background='url(images/knopf/background/background_09.png)';
if (date.getHours()>=10 && date.getHours()<11) document.getElementById('x').style.background='url(images/knopf/background/background_10.png)';
if (date.getHours()>=11 && date.getHours()<12) document.getElementById('x').style.background='url(images/knopf/background/background_11.png)';
if (date.getHours()>=12 && date.getHours()<13) document.getElementById('x').style.background='url(images/knopf/background/background_12.png)';
if (date.getHours()>=13 && date.getHours()<14) document.getElementById('x').style.background='url(images/knopf/background/background_13.png)';
if (date.getHours()>=14 && date.getHours()<15) document.getElementById('x').style.background='url(images/knopf/background/background_14.png)';
if (date.getHours()>=15 && date.getHours()<16) document.getElementById('x').style.background='url(images/knopf/background/background_15.png)';
if (date.getHours()>=16 && date.getHours()<17) document.getElementById('x').style.background='url(images/knopf/background/background_16.png)';
if (date.getHours()>=17 && date.getHours()<18) document.getElementById('x').style.background='url(images/knopf/background/background_17.png)';
if (date.getHours()>=18 && date.getHours()<19) document.getElementById('x').style.background='url(images/knopf/background/background_18.png)';
if (date.getHours()>=19 && date.getHours()<20) document.getElementById('x').style.background='url(images/knopf/background/background_19.png)';
if (date.getHours()>=20 && date.getHours()<21) document.getElementById('x').style.background='url(images/knopf/background/background_20.png)';
if (date.getHours()>=21 && date.getHours()<22) document.getElementById('x').style.background='url(images/knopf/background/background_21.png)';
if (date.getHours()>=22&& date.getHours()<23) document.getElementById('x').style.background='url(images/knopf/background/background_22.png)';
if (date.getHours()>=23 && date.getHours()<24) document.getElementById('x').style.background='url(images/knopf/background/background_23.png)';
if (date.getHours()>=7 && date.getHours()<20) document.getElementById('y')='images/knopf/ich_bin24.png';
if (date.getHours()>=20 && date.getHours()<24) document.getElementById('y')='images/knopf/ich_bin24_hell.png';
if (date.getHours()>=0 && date.getHours()<7) document.getElementById('y')='images/knopf/ich_bin24_hell.png';

}
</script>
</head>
<body class="img">
<div id="x" style="height: 71px; width: auto">
<div id="head"> <a href="index.shtml"><img src="images/knopf/head.png" width="300" height="70" border="0" align="left" alt="andrey_logvin" /></a>

<div id="kontakt">
<a href="ubermich.shtml"><img src="y" width="24" height="24" border="0" alt="uber_mich" /></a>
<a href="kontakt.shtml"><img src="images/knopf/post24.png" width="24" height="24" border="0" alt="post" /></a>
</div>

</div>
</div>
Теперь див "контакт" (синий) . Там две картинки они должны менятся ночью на светлые. проблема как присвоить пременной "y" свойства адреса картинки. На примере с бекграундом мы меняли стиль дива, а теперь надо менять адрес.
метод "тыка" (красный) недал положительного результата (
#13 
Murr_0001 завсегдатай03.11.10 01:41
Murr_0001
NEW 03.11.10 01:41 
в ответ Ivan_Pomidoroff 02.11.10 23:53
нашёл!
------
Чуток выше ты писал что нашел РНР...
То, что ты привел здесь - javascript, к тому же - клиентский. Т.е. весь этот бред будет таскаться на клиента и там менять бекграунд перезагрузкой оного.
Чтобы избежать этого есть смысл использовать PHP.
Где-то в топе у тебя есть что-то типа
В ответ на:

<link href="css/MyStyle_00.css" rel="stylesheet" type="text/css">

или что там используется с РНР...
То, что тебе надо сделать - "вырезать" значение часа из строки дата-время. Как сделать посмотришь здесь - http://php.net/manual/en/function.time.php
И склеить ее с именем MyStyle_00.css.
Будет примерно так:
В ответ на:

<?php
$currentHour = '15'; // посчитать текущий час
?>
<link href="css/MyStyle_<?php echo $currentHour ?>.css" rel="stylesheet" type="text/css">

Css-файлики должны быть на месте.
Хотя Я предпочитаю собирать строку полностью и потом выводить...
#14 
Ivan_Pomidoroff старожил03.11.10 02:24
Ivan_Pomidoroff
NEW 03.11.10 02:24 
в ответ Murr_0001 03.11.10 01:41
В ответ на:
Чуток выше ты писал что нашел РНР...

Развиваю две ветки. )
Ест вариант где css переменован в php но там нет никагого кода, тоесть я как-бы подгатовился к пхп, но что дальше делать - незнаю.
Представь, что я нешарю в пхп... ну совсем. Для меня привёдённые строки кода - набор непонятных операторов в каше пунктуации, а ты мне говоришь "как сделать посмотришь здесь"... для меня "примерно так" - всё равно что никак. Я немогу редактировать код, я его непонимаю.
Спасибо за участие. )
#15 
miltorg местный житель03.11.10 09:29
miltorg
NEW 03.11.10 09:29 
в ответ Ivan_Pomidoroff 03.11.10 02:24
Лет 10 назад я тоже пытался изобретать велосипед. И даже написал сайт знакомств в начале на перле, потом на php. Потом я увидел CMS и понял, что главное это умело пользоваться чужим кодом и уникальный контент.
Половина евро в час
#16 
Murr_0001 завсегдатай03.11.10 09:51
Murr_0001
NEW 03.11.10 09:51 
в ответ Ivan_Pomidoroff 03.11.10 02:24
Представь, что я нешарю в пхп... ну совсем.
------
Осознай - Я то же не знаю РНР... совсем.
Я немогу редактировать код
------
Эээ... ты хочешь сказать, что не знаешь, как загружается Нотепад?
, я его непонимаю.
------
Разумеется. Потому "примерно так" и ссылка на документацию.
А РНР - придется изучить.
#17 
Ivan_Pomidoroff старожил03.11.10 16:18
Ivan_Pomidoroff
NEW 03.11.10 16:18 
в ответ Murr_0001 03.11.10 09:51, Последний раз изменено 03.11.10 16:19 (Ivan_Pomidoroff)
один понимающий человек помог:
$IMG = array(
0 => "images/background/background_00.png",
1 => "images/background/background_01.png",
2 => "images/background/background_02.png",
3 => "images/background/background_03.png",
4 => "images/background/background_04.png",
5 => "images/background/background_05.png",
6 => "images/background/background_06.png",
7 => "images/background/background_07.png",
8 => "images/background/background_08.png",
9 => "images/background/background_09.png",
10 => "images/background/background_10.png",
11 => "images/background/background_11.png",
12 => "images/background/background_12.png",
13 => "images/background/background_13.png",
14 => "images/background/background_14.png",
15 => "images/background/background_15.png",
16 => "images/background/background_16.png",
17 => "images/background/background_17.png",
18 => "images/background/background_18.png",
19 => "images/background/background_19.png",
20 => "images/background/background_20.png",
21 => "images/background/background_21.png",
22 => "images/background/background_22.png",
23 => "images/background/background_23.png",
24 => "images/background/background_24.png",
);
$hour = date("H");//Узнали, который час

-------------------------------------------------------------------------------
background-image: url(<?=$IMG[$hour]?>);
значит теперь делаем через пхп.
Может кто поможет сделать смену картинок? чел дал код:
$hour = date("H");
if($hour >= 7 && <=19){
$IMG_1 = "1.png";
}else{
$IMG_1 = "2.png";
}

Но он непашет если его вставить. Дримвивер ругается на операторы "if" и "else". Gробны завуск на сервере показывает, что стили вобще отрубаются с этим кодом.
В чём может быть сложность?
Второй вопрос - переменная $IMG_1 будет работать в Боди?
#18 
Murr_0001 завсегдатай03.11.10 16:33
Murr_0001
NEW 03.11.10 16:33 
в ответ Ivan_Pomidoroff 03.11.10 16:18
Может кто поможет сделать смену картинок?
------
Эээ... верхняя часть кода уже дает сменяющиеся картинки...
Правда Я не люблю развесистый код и потому определения массива делать бы не стал, а обошелся сборкой имени. Примерно так:
В ответ на:

$bkgFilename = 'images/background/background_' & date("H") & '.png';
--------
background-image: url(<?=$bkgFilename?>);

Ну или упаковал бы все в объект/функцию...
В чём может быть сложность?
------
Вероятно в том, что ты пытаешься поместить серверный код в клиентскую часть...
Второй вопрос - переменная $IMG_1 будет работать в Боди?
------
Что есть Боди? Если подразумевается HTML->BODY, то читай описание HTML.
#19 
project33 старожил03.11.10 16:52
project33
NEW 03.11.10 16:52 
в ответ Ivan_Pomidoroff 03.11.10 16:18, Последний раз изменено 03.11.10 16:59 (project33)
В ответ на:
0 => "images/background/background_00.png",
1 => "images/background/background_01.png",

проще просто черех запятую "images/background/background_00.png","images/background/background_01.png"... а еще проще вообще без массива.
background-image: url(images/background/background_<?=date("H")?>.png);
Продвижение сайтов, реклама: https://www.pro33.net
#20 
1 2 все