Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.06.2013, 02:37
Интересующийся
Отправить личное сообщение для WaMpIr Посмотреть профиль Найти все сообщения от WaMpIr
 
Регистрация: 05.10.2010
Сообщений: 23

Выбор темы оформления на cookies.
Всем доброго времени суток (лично у меня ночь ).
Вопрос не столь банальный, как можно предположить из заголовка.
Нужно сделать возможность пользовательской настройки оформления сайта. А именно: фоновое изображение, цвет ссылок, и цвет текста. Все эти параметры должны настраиваться независимо, т.е. использование .css файлов тут не прокатит.
Допустим, как сделать смену изображения с "печеньками" я знаю, а вот цвет ссылок никак. Сотню сайтов точно просмотрел.
Усложнять задачу палитрами не вижу смысла, поэтому можно просто ограничиться выбором заранее заданных цветов.
localStorage тут не прокатит, т.к. нужна поддержка ещё и старых браузеров (будь они неладны!!!!).
И тут даже больше проблема не в том, как записать это в cookies, а в том, как подставить в существующий файл css, без использования дополнительных файлов и php.
Вроде как должно получиться через это $("body").css();, НО, в js я ламер
Нашёл где-то далеко в 3/9 царстве скрипт [ссылка ниже], но мне не подходит такая реализация. А вот выбор Основного цвета - то что мне нужно.
И я так подозреваю, придётся делать три скрипта для сохранения параметров. Или можно в один фай одним скриптом записывать все три значения?
Если "никто за вас тут скрипты писать не будет, думайте сами", то хотябы подтолкните на путь истинный, пожалуйста.
Вложения:
Тип файла: txt styler.txt (39.0 Кб, 5 просмотров)

Последний раз редактировалось WaMpIr, 16.06.2013 в 02:41.
Ответить с цитированием
  #2 (permalink)  
Старый 16.06.2013, 03:58
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от WaMpIr
$("body").css();
Через прямое изменение стиля скриптом ты можешь, гм, изменить только стиль непосредственно указанного элемента.
Хотя если динамики нет (всяких аяксов там), то можно и методом в лоб сделать:
$('a').css('color', getUserStyle('link-color') );

Соответственно функцию getUserStyle тебе нужно написать самому.

Если динамика есть, то нужно создавать элемет <style> и добавлять в него каскадные стили типа
типа
var $style = $('<style/>').appendTo($('head'));

$style.prop('sheet').addRule('a', "color:" + getUserStyle('link-color'));


(код не кроссбраузерный)
Ответить с цитированием
  #3 (permalink)  
Старый 16.06.2013, 12:58
Интересующийся
Отправить личное сообщение для WaMpIr Посмотреть профиль Найти все сообщения от WaMpIr
 
Регистрация: 05.10.2010
Сообщений: 23

Динамики нет.
Т.е. этой строчкой мы применяем к странице выбранный стиль?!
$('a').css('color', getUserStyle('link-color') );
И можно вот это адаптировать под изменение цвета:
<script>
 function ChangeOpacity(x)
 {var opacity=x.options[x.selectedIndex].text;
 var el=document.getElementById("p1");
 if (el.style.opacity!==undefined)
 {el.style.opacity=opacity;}
 else
 {alert("Ваш браузер не поддерживает эту функцию!:( ");}
 }
 </script>

<select onchange="ChangeOpacity(this);" size="5">
 <option selected="selected" />0
 <option />0.2
 <option />0.5
 <option />0.75
 <option />1
 </select>

Или я что-то недо понимаю?!
Ответить с цитированием
  #4 (permalink)  
Старый 16.06.2013, 15:07
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от WaMpIr
"Ваш браузер не поддерживает эту функцию! "
А ничего, что..
Сообщение от WaMpIr
нужна поддержка ещё и старых браузеров (будь они неладны!!!!)
?? Мне кажется где-то тут противоречие..
Сообщение от WaMpIr
И можно вот это адаптировать под изменение цвета
Это - вобще ниочем.
Ответить с цитированием
  #5 (permalink)  
Старый 16.06.2013, 15:48
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

function cookie(a, b)
{
	if(b) document.cookie = a+'='+escape(b)+'; expires = Mon, 01-Jan-2999 00:00:00 GMT; path=/';
	var c = '(?:; )?'+a+'=([^;]*);?', d = new RegExp(c);
	return d.test(document.cookie) ? decodeURIComponent(RegExp['$1']) : 0;
}

$('body').css('backgroundImage', 'url(\''+(cookie('bg') || 'стандартный_фон.jpg')+'\')');
$('a').css('color', cookie('link') || '#стандартный_цвет');


Например, для смены цвета ссылок:
<select onchange="cookie('link', this.value); document.location = ''">
   <option value="red">Красный</option>
   <option value="red">Зелёный</option>
   <option value="#FFF">Белый</option>
</select>


Или с палитрой (Opera, Chrome):
<input onchange="cookie('link', this.value); document.location = ''" type="color" />

Последний раз редактировалось ruslan_mart, 16.06.2013 в 15:51.
Ответить с цитированием
  #6 (permalink)  
Старый 16.06.2013, 16:23
Интересующийся
Отправить личное сообщение для WaMpIr Посмотреть профиль Найти все сообщения от WaMpIr
 
Регистрация: 05.10.2010
Сообщений: 23

danik.js, это просто как пример. Т.к. написать код с нуля для меня сложная задача, приходится брать готовые решения, и переписывать их под себя.
Ruslan_xDD, дефолтный фон поставился, а цвет нет. Да и не применяется ни один из списка.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
можно ли заставить ajax не отправлять cookies ? mitiya Общие вопросы Javascript 3 18.11.2012 16:57
проверка отсутствия всех cookies legrol Общие вопросы Javascript 0 30.03.2012 11:38
Про использование cookies zloctb Общие вопросы Javascript 3 11.02.2012 09:36
Темы оформления dijit MODist Dojo toolkit 1 13.10.2011 17:34
ТЕМЫ ОФОРМЛЕНИЯ, ДВИГАЮЩАЯСЯ ФОРМА alex_89 Элементы интерфейса 2 01.05.2011 20:30