Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.05.2018, 16:10
Аспирант
Отправить личное сообщение для Vadim Zhizherin Посмотреть профиль Найти все сообщения от Vadim Zhizherin
 
Регистрация: 04.05.2018
Сообщений: 35

Помогите сделать динамическое изменение стилей фона на сайте
Создайте HTML-страницу с возможностью переключения стилевого файла для страницы index.html.

Для этого необходимо создать две страницы со стилями light.css и dark.css', задающие разный фон и шрифт для страницы, а также к тегу <link>, с помощью которого подключается стилевой файл, добавить id:

<link id="CSSsource" href="light.css" rel="stylesheet" />
Далее нужно создать функцию, которая переключает стиль страницы при нажатии на кнопку.
Ответить с цитированием
  #2 (permalink)  
Старый 18.05.2018, 16:24
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,724

var includeStyle;
(function() {
    const ID = 'variable-stylesheet';

    includeStyle = function(path) {//Принимает путь к css файлу
        let node = document.getElementById(ID);
        if (node)
            node.parentNode.removeChild(node);

        node = document.createElement('link');
        node.rel = 'stylesheet';
        node.href = path;
        node.id = ID;

        document.head.appendChild(node);
    };
})();

Последний раз редактировалось Nexus, 18.05.2018 в 17:08. Причина: Упростил
Ответить с цитированием
  #3 (permalink)  
Старый 18.05.2018, 16:40
Аспирант
Отправить личное сообщение для Vadim Zhizherin Посмотреть профиль Найти все сообщения от Vadim Zhizherin
 
Регистрация: 04.05.2018
Сообщений: 35

111111ывывывыв
Скажи, пожалуйста, где тут что? Как сделать так, чтобы по нажатию на кнопку менялся фон?
Ответить с цитированием
  #4 (permalink)  
Старый 18.05.2018, 16:46
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,724

Vadim Zhizherin, функция "includeStyle" принимает в кач-ве аргумента строку (доступные значения: light, dark).

<button type="button" onclick="includeStyle('light.css');">Light</button>
<button type="button" onclick="includeStyle('dark.css');">Dark</button>

Последний раз редактировалось Nexus, 18.05.2018 в 17:10.
Ответить с цитированием
  #5 (permalink)  
Старый 18.05.2018, 16:51
Аспирант
Отправить личное сообщение для Vadim Zhizherin Посмотреть профиль Найти все сообщения от Vadim Zhizherin
 
Регистрация: 04.05.2018
Сообщений: 35

То есть там, где написано style писать light?
То есть там, где написано style писать light?

Должно быть две функции?

Последний раз редактировалось Vadim Zhizherin, 18.05.2018 в 16:56.
Ответить с цитированием
  #6 (permalink)  
Старый 18.05.2018, 17:03
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,724

Vadim Zhizherin, я привел пример кнопок...
Ответить с цитированием
  #7 (permalink)  
Старый 18.05.2018, 17:06
Аспирант
Отправить личное сообщение для Vadim Zhizherin Посмотреть профиль Найти все сообщения от Vadim Zhizherin
 
Регистрация: 04.05.2018
Сообщений: 35

Я понял, но...
я понял, что функций две, но, там, где написано style или ID писать название css файла и его ID?
Ответить с цитированием
  #8 (permalink)  
Старый 18.05.2018, 17:10
Аспирант
Отправить личное сообщение для Vadim Zhizherin Посмотреть профиль Найти все сообщения от Vadim Zhizherin
 
Регистрация: 04.05.2018
Сообщений: 35

что не так? не робит :((
var includeStyle;
(function() {
    let styles = {
        light: 'light.css',
        dark: 'dark.css'
    };
    const ID = 'variable-stylesheet';

    includeStyle = function(light) {
        if (!styles[light])
            return;

        let node = document.getElementById(llight);
        if (node)
            node.parentNode.removeChild(node);

        node = document.createElement('light.css');
        node.rel = 'stylesheet';
        node.href = styles[light];
        node.id = llight;

        document.head.appendChild(node);
    };

      includeStyle = function(dark) {
        if (!styles[dark])
            return;

        let node = document.getElementById(ddark);
        if (node)
            node.parentNode.removeChild(node);

        node = document.createElement('dark.css');
        node.rel = 'stylesheet';
        node.href = styles[dark];
        node.id = ddark;

        document.head.appendChild(node);
    };
})();
Ответить с цитированием
  #9 (permalink)  
Старый 18.05.2018, 17:12
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,724

Vadim Zhizherin, функция одна.
Убрал список доступных файлов, теперь функция принимает просто путь к css файлу.
Еще один пример:
<!-- Подключить файл «new-style.css» -->
<button type="button" onclick="includeStyle('new-style.css');">Подключить файл</button>
Ответить с цитированием
  #10 (permalink)  
Старый 18.05.2018, 17:16
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,724

https://plnkr.co/edit/VhrGgdLyyI98sSbrmUNB?p=preview
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение позиции фона по скроллу kd241286zjv jQuery 4 29.11.2017 10:06
Динамическое изменение размера карусели Liberbox Элементы интерфейса 2 17.10.2014 14:31
Помогите сделать так чтоб по клику открывалось и по клику же закрывалось Maxsl_89 Элементы интерфейса 1 25.10.2013 16:11
Помогите сделать нумерацию картинок в новости DemonXT jQuery 7 23.02.2012 17:08
Нужно сделать плавное появление текстового поля как на сайте vkontakte.ru paratrooper1981 Элементы интерфейса 1 23.11.2009 18:24