Смена фона при посещении/обновлении сайта
На крайняк, что скорее всего, как сделать это при помощи JS. Был бы очень признателен, если бы ещё и разжевали как можно лучше, а то я пытался сделать, но так ничего и не вышло. :(
Было бы конечно интереснее, если бы фон плавно менялся, но это сложнее, я сам не смогу сделать, даже фреймворки не помогают. :(
2)постоянная смена фона в javascript есть setInterval(функция, интервал);, окторая регулярно по прошествии интервала вызывает функцию(в твоём случае со сменой фона)
а вот на счет плавной смены фона....хз Как вариант фон не через body а 1-н img на всю область страници, 2-й img плавно проявлять поверх первого.
А ЖСом, запросто.
Вешаеш даный код на выполнение после загрузки страницы и все.
Если менять картинку в бэкграунде, то все аналогино. либо масив картинок и случайный елемент, либо имена файлов специально подбираешь.
document.body.style.backgroundColor='#'+randColor;
[HTML]
<html>
<head>
</head>
<body>
<b>Blah-blah-blah...</b>
<script language="javascript">
function chbg()
{
randColor = (Math.floor(Math.random()*0xFFFFFF)).toString(16);
document.body.style.backgroundColor='#'+randColor;
}
chbg();
setInterval(chbg,500);
</script>
</body>
</html>
[/HTML]
я про разовое изменение на онлоад.
Хотя я бы и вызов setInterval вешал на onload
А то я обычно в Event.observe все делаю
Предлагаю ваш CSS подключать как:
[HTML]<link rel="stylesheet" type="text/css" href="/css.php" />[/HTML]
И в этом PHP файле вы описываете ваш CSS и секцию body делаете так:
[HTML]body {
background-image:url(/img/<?= $randomimage ?>)
}[/HTML]
Ну и где-то в начале скрипта описываете генерацию случайной картинки...
Здесь вы можете использовать функции чтения директории с картинками (man scandir() )... В результате добавление\удаление картинок стиля сведется к тому, что вам нужно будет закинуть\удалить картинку из каталога на сервере...
При этом, во избежание проблем с кэшом, советую при выводе хтмла подключать случайное число (таймштамп подойдет)в качестве GET-параметра к ссылке на таблицу стилей.
И выглядеть будет так:
[HTML]<link rel="stylesheet" type="text/css" href="/css.php?1234567890" />[/HTML]
Единственное над чем прийдется потрудиться - это разобраться с работой scandir и получать рэндомно значение массива избегая каталогов "." и "..".
Я вот все смотрю на такие заявления и все удивляюсь. Не надоело? Ну нет JS - значит ничего не увидит. А если у него нет цветного монитора и он пользуется монохромным CGA монитором или вообще не дай бог осциллографом? А если у человека нет интернета - будете оффлайн версию делать и раздавать? А если компа нет - будете на бумажке печатать?
Нет JS - это проблемы того у кого его нет и из-за своей паранойи его отключает. Без JS 75% современного интернета таким людям недоступна, а значит как я уже и говорил - это их проблемы потому, что они сами так захотели.
Не устали флудить?
Идите читайте первый пост топикстартера.
1. Человека JS интересовал лишь как крайний случай. А не единственно необходимый.
2. Я предложил вариант решения, простой и гибкий. А ваш JS нужно постоянно править при добавлении новых картинок.
про пхп речи не было.
2-й пост ТС'а
сделай на css.
А вобще да, хавтит флудить)) Тема раскрыта по самое нехочу.
Нет JS - это проблемы того у кого его нет и из-за своей паранойи его отключает. Без JS 75% современного интернета таким людям недоступна, а значит как я уже и говорил - это их проблемы потому, что они сами так захотели.
Зачем заниматься вёрсткой с головной болью под IE6? Ведь в мире давно доминируют нормальные браузеры со сносной поддержкой стандартов CSS?
Зачем ставить ГБО на машину, когда можно купить электромобиль\гибрид?
Зачем писать подобные вопросы на форуме, когда в интернете все мануалы есть?
А как ручкой писать буквы хоть помнишь еще???
Я предложил нормальный, работающий, гибкий вариант... :) Не нравится - не делайте так... Но ТС, как начинающий, должен знать и такой подход.
И включенным js :)
Ну типа того :)
Я к тому, что много чего есть... С включенным\отключенным.
Кстати, ИМХО, постоянная смена фона (динамическая, без перезагрузки страницы) будет отвлекать пользователя непосредственно от содержания страницы, читаемого текста и т.д... Так что, с точки зрения маркетинга, это может быть не самый удачный ход (если, конечно, это не является главной идеей сайта).
А вменяемые люди уже и не занимаются версткой под это гогно. Большинство веб-студий делают это за отдельные деньги.
Гибриды отличная тема, но пока моделей мало и стоят они дорого. А на электротяге стоять в пробке вообще идеальный вариант, особенно учитывая, что по вечерам (а также утрам и днем) крупные города вроде Москвы и Питера превращаются в одну гигантскую пробку.
Незачем писать. Топикстартер мог легко погуглить и за 10 минут найти ответ на свой вопрос. Но не умеет он этого делать и не додумался. Вопрос не особо сложный и решение его занимает пару строк. Поэтому ему ответили, а не отправили в гугл.
Зачем говнишь, а?
Вариант рабочий, но неэффективный. Предложи еще модуль для апача написать, подменяющий фон. Или еще лучше сниффер, который вылавливает пакеты НТТР протокола и подменяет там цвет фона. Тоже вполне будет работать. Но это будет несоответствие проблемы решению. Если на улице гопник отнял у школьника деньги, то можно, конечно, на решение этой проблемы отправить танковую дивизию и стратегические бомбардировщики, но это будет идиотизм.
К тому же претензия была не к решению на основе РНР, а на фразу "а если JS отключен". У кого отключен - тот обламывается и это его проблемы.
Правильно говорит RussianSpy, я его поддерживаю всеми руками и ногами. Я не собираюсь делая сайт-визитку подстраиваться под каждый браузер, кроме тех которые сейчас используют многие, включён js или нет — проблемы не мои, я всё вижу. Люди, с которыми я больше всего общаюсь ВСЕ используют js и будут всё нормально видеть.
Меня интересовал HTML/CSS — так нельзя. На КРАЙНИЙ случай JS. PHP для меня ещё тёмный, я вообще не знаком с ним, ни с одним понятием.
Гуглить я буду дома. На работе нет доступа в интернет, кроме парочки сайтов. Я бы и не спрашивал Вас, тем более, осознавая, что Вы всё равно пошлёте меня в гугл. Не вижу смысла вообще в форуме, если посылают в гугл. Глуповато.
Ты не прав. Такие вопросы на форуме - в 99% это лень и не умение самостоятельно искать решения. И тогда вопрос - зачем такие программисты?
В твоем 1% случае, ситуация обьективная. Закрыты большинство сайтов, и гугл помочь не может. Тем более видно, что ты не просто ищещь как бэ это сделать, а учишся. И то что тебе ответят, ты запомнишь и обдумаешь. По этому тебя в гугл не отправляют, ибо тебе приятно помогать.
Но в 99% случаев за такой вопрос отправляли, отправляют и будут отправлять в гугл.
Без обид, тут только ИМХО.
P.S. а вобще можешь, даже, в скайп мне стучать. Если не буду занят подскажу и смогу - отвечу.
Потому что ты гов(нишь|нюк) !< (не меньше)... Только критика и не более... Это проблема гиков. ) Нужно быть добрее и терпимее :)
Кстати, про сниффинг пакетов я не подумал... Нужно попробовать :)))
2 Шалфей:
Во-первых, я извучил твои последние посты (и в других темах тоже), и выяснил, что в твоих постах кроме флуда ничего нету...
Во-вторых, твоя фраза про клиентсткую сторону звучит как "Я вот тут наваял говно, а вы как хотите, так и работайте с ним"... Это подход самовлюбленных идиотов
В-третьих, используя мой метод мы просто избавляемся от верстальщика, а значит и лишних расходов... Закинуть файл в папку на сервере может и бухгалтерша )))
Суммарно:
CLubbery, делай как тебе удобно, варианты тебе расписали... а их (быстрых, гибких и удобных) - два... на JS или на PHP\ASP\etc... Т.е. или сервером отдаешь случайную картинку, или клиентом генерируешь...
А вообще для "соблюдения" гибкости и сочетания обоих методов можно делать так:
PHP-ой генерировать JS-код... А конкретно - массив с именами файлов картинок (можно тем же scandir), и отдавать пользователю.
Таким образом, ты можешь работать JSом (ну там, плавно картинки менять и пр.), но при этом добавление картинок остается таким же элементарным - копированием в папку.
А можно я буду тебе скайп разрывать? ))
Многие твои идеи мне нравятся.. можно организовать коллективный ум онлайн )
2 All
Забыл добавить:
Вы же помните, что сейчас на дворе 2011 год и многие в интернете выходят со смартфонов и планшетов...
И большинство из них не очень производительные. Так что ваш JS будет в лучшем случае чуть-чуть тормозить... В лучшем, при динамической смене фона (плавной) будет просто умирать... Так что вы осторожней с этим ) Оно красиво и т.д... но люди не любят тормозных сайтов...
В твоем 1% случае, ситуация обьективная. Закрыты большинство сайтов, и гугл помочь не может. Тем более видно, что ты не просто ищещь как бэ это сделать, а учишся. И то что тебе ответят, ты запомнишь и обдумаешь. По этому тебя в гугл не отправляют, ибо тебе приятно помогать.
Но в 99% случаев за такой вопрос отправляли, отправляют и будут отправлять в гугл.
Без обид, тут только ИМХО.
P.S. а вобще можешь, даже, в скайп мне стучать. Если не буду занят подскажу и смогу - отвечу.
Было бы на что обижаться. :)
P.S. Вчера дома лазил по форуму jquery и там в принципе что-то накопал + помогли немного разобраться, но всё же не срабатывает.
С помощью сделал вот такое:
var imagesNumber = 2;
var rndBg = Math.floor(Math.random() * imagesNumber);
document.body.style.backgroundImage = 'url(' + bgPath + rndBg + '.jpg)';
У меня два изображения bg0.jpg, bg1.jpg. Всё указано в процессе скрипта.
P.S. Когда убираю звёздочку или меняю на число, то фон появляется, но не меняется.
var imagesNumber = 2;
var rndBg = Math.floor(Math.random() * imagesNumber);
document.body.style.backgroundImage = 'url(' + bgPath + rndBg + '.jpg)';
С помощью сделал вот такое:
var imagesNumber = 2;
var rndBg = Math.floor(Math.random() * imagesNumber);
document.body.style.backgroundImage = 'url(' + bgPath + rndBg + '.jpg)';
У меня два изображения bg0.jpg, bg1.jpg. Всё указано в процессе скрипта.
P.S. Когда убираю звёздочку или меняю на число, то фон появляется, но не меняется.
:) Ты опять невнимателен... Как в предыдущем топике )))
По тем параметрам что ты ввёл у тебя строка урла получится img/bg0.jpg1.jpg
У тебя есть такой файлик на сервере??? ))))
var bgPath = 'img/bg';
Вот так должно выглядеть )
arrjj апиридил :)
Видишь, формумчане наперебой пытаются тебе помочь что аж до перепалок доходит ))) А ты спрашиваешь "зачем форум?" )
1. Форум место для дискусий, а не "вопрос - ответ"
2. Покажи хоть один флудный пост (где я об этом не писал)? (Т.е. он не по теме был). Отсутствие кода != отсутствие помощи.
Это фраза основана на 7ми летнем опыте, а не взята из воздуха. Советую тебе твой новый портал (если доверит кто) оптимизировать под lynx.
Далее, читаем про "доступность сайта" и понимаем, что главное на сайте это информация, а не фон оного и если у человека не будет меняться фон - ничего страшного. Хотя тебе об этом бесполезно говорить.
Угу, ей больше заняться не чем. Хотя, читая твои посты я понимаю, что ты привык делать сайты которые забиваются и обслуживаются уборщицами, извини, из таких я уже года 4 как вырос.
PS Ты навел меня на мысль, немного добавить буквок в подписи.
Правильно. Твоя новая подпись == предупреждение. Сдаюсь. Затоптал ты меня свойм 7-летним опытом)
По сути топика я ответил всё что мог.
CLubbery, как сделаешь - хоть результатом похвастайся (ссылку кинь) :)
Кесано, успокойся, Shaelf прав здесь полностью. А ты вообще не понимаешь смысл backend и frontend. php не должен генерировать js (кроме редких случаев, когда генерирует лишь данные), не должен генерировать css. Всякие картинки и прочее - это желательно указывать в клиентской части, т.к. тогда становится явная независимость разных участков кода, что всегда намного лучше (с опытом это понимается отчетливо, что лучше делать полностью независимые участки программы).
Посчет того, что может быть отключен JS - это действительно проблема юзверя. Давайте ещё подумаем о том, что у пользователя может быть и CSS отключен. У меня вон была пара знакомых товарищей, которые использовали свои стили для всех страниц, у них убивалась вся графика и разметка - так не парится же нам теперь из-за пары таких странных людей.
Имхо, тему надо закрывать, ибо тут столкновение троллей и с опытными людьми назревает.
Всё чотка пашет! :D Спасибочки огромное ребятушки. цём вас всех :******
Козёл, шалфей... Нувыдайоте! XD
Kesano, я на сервер ещё не выкладывал. Сегодня уже думаю выложу, ибо закончил, дальше будет просто мелкие апдейты. Ах да, ещё твиттер привяжу и всё (слава Богу он уже сделан и всё стабильно работает).
Согласен. Закройте пожалуйста тему. Я получил хорошие советы, результат получил и радует. :)
А я дам тебе один совет.
Дебажь свой код. видишь, что не работает, ставб между каждой командой brakepoint-ы, например alert-ы, а еще лучше console.log(), но нужен firebug.
И смотри, что отработало и с каким результатом.
В последнем примере, тебе хватило бы просмотра результат генерации урл-а для картинки. Сразу бы увидел завтык.
2Kesano, да пожалуйста пиши.
А вобще я постоянно вишу в комнате #codenet@conference.jabber.org тут еще проще будет.
А я дам тебе один совет.
Дебажь свой код. видишь, что не работает, ставб между каждой командой brakepoint-ы, например alert-ы, а еще лучше console.log(), но нужен firebug.
По твоему же совету установил firebug, но не пытался его использовать. Сегодня попробую.