Для каждой страницы свой бэкграунд

Всем привет!
Товарищи, подскажите (дайте совет) как сделать правильно…
Картина:
у меня есть 10 страниц (вобще их больше) и нужно для этих, и только для этих 10-ти страниц задать индивидуальный фон для каждой. Подскажите пожалуйста правильное решение друзья ;-)

1 лайк
  1. Подключать 10 разных внешних cssок
  2. Навешивать 10 разных классов на body

Мне кажется, есть проще решение… Можно ли вытянуть URL страницы в JS? что бы сравнить с ним адрес страницы… и реализовать это все через if/else

можно location.pathname
Но я бы делал это на бек-энде

Выше, что-то такое советовали по-видимому.
http://test.com/index.php#page1

$('body').data('page', window.location.hash);
<body data-page="#page1">
body[data-page='#page1'] {
  background: yellow;
}

body[data-page='#page2'] {
  background: red;
}
  1. Если есть возможность - делай через класс на body элементе. Пусть сервер в зависимости от своей логики добавляет-удаляет класс каждой странице.
  2. Если сайт типа промо, и url каждой страницы уникальный, точно так-же через класс на странице (который ставит javascript) в зависимости от заматчившейся части url:
var urls = {
	'/about/' : 'about-background',
	'/project/' : 'project-background'
};

for (var urlMapping in urls) {
	if (location.href.indexOf(urls) !== -1) {
		document.body.className += (' ' + urls[urlMapping]);
	};
}
1 лайк

хм… не работает… хотя цикл срабатывает, и у всех страниц уникальный урл, но в класс “боди” не добавляется (’ ’ + urls[urlMapping])

У меня в скрипте ошибка.

if (location.href.indexOf(urls) !== -1) {

Я не проверяю наличие строки-ключа в текущем адресе страницы. Надо так:

if (location.href.indexOf(urlMapping) !== -1) {

И все вместе:

var urls = {
	'/about/' : 'about-background',
	'/project/' : 'project-background'
};

for (var urlMapping in urls) {
	if (location.href.indexOf(urlMapping) !== -1) {
		document.body.className += (' ' + urls[urlMapping]);
	};
}
1 лайк

Юху!!! Спасибо!! Все работает. Только нужно убрать слэши, вместо:
’/about/’ : ‘about-background’,
’/project/’ : 'project-background’
должно быть так:
‘about’ : ‘about-background’,
‘project’ : 'project-background’
По крайней мере у меня со слэшами работать не хотело.

Зависит от того, какие у вас URL. Если ?page=about или page.html#about - то понятное дело, что со слешами не заработает

Как раз дело в том что у меня URL выглядит как http://blablabla.com/kontakty/

Учти нюанс, что соответствие между ключом объекта urls и классом добавляемым в боди происходит по вхождению подстроки ключа в url. Это означает, что url вида:

http://site.com/?about

заматчится и получит класс ‘about-background’.

var urls = {
	'about' : 'about-background'
};

лучше искать подстроки в location.pathname

Возможно, идет редирект на http://blablabla.com/kontakty

Да, я с этим разобрался, все в норме, спасибо!
У меня сейчас еще одна проблемка но с другим проектом… Делаю одностраничник, и на нем в двух местах должен выводиться обратный счетчик (как в интернет магазинах типа осталось: 12дней 14часов 22минут 06секунд). И вот один из них работает(перелистывает) а второй нет… точнее он то перелистывает но не в режиме онлайн. Когда обновляю страницу, на нем обновляются цыфры, но он не “анимирует” как первый.