2016-05-09 2 views
0

У меня есть переключатель темы на моем сайте и вы хотите добавить «Автоматический» вариант, который изменяет тему на закате. На данный момент я сделал это, указав вручную вручную, но мне было интересно, можно ли на самом деле сделать это за фактическое время заката, используя что-то похожее на функцию PHP date_sunset().Изменить класс тела на фактическое время заката

var url, hour = new Date().getHours(); 
     if (hour > 8 && hour < 17) { 
     $('body').removeClass().addClass('light'); 
     } else if (hour > 17 || hour < 8) { 
     $('body').removeClass().addClass('dark'); 
} 

Возможно ли это? Если да, то каким образом я могу реализовать его в коде выше?

Кроме того, если это возможно, было бы легко сказать, добавьте 60 минут к времени захода солнца, так как время заката обычно немного раньше, чем наступает темнота.

Возможно, это невозможно, но я знал, что это место будет лучшим местом для двойной проверки!

Заранее спасибо.

ответ

0

Нужно ли его реализовать в JavaScript? Если нет, то в этом коде:

<body class="<?php echo time() < date_sunset(time()) ? 'light' : 'dark'; ?>"> 

Improved в ответ на Ваш комментарий:

PHP

<body data-daypart="<?php echo time() < date_sunset(time()) ? 'day' : 'night'; ?>"> 

JS

var body = $('body'); 
body.removeClass().addClass(body.attr('data-daypart') === 'day' ? 'light' : 'dark'); 
+0

Я так думаю, потому что тема переключателе имеет три варианта: «Свет», «Темный» и «Автоматический», и все они выполняют изменения, а также Локальные настройки хранилища. Если бы я не использовал javascript, я бы сломал коммутатор, верно? Я бы хотел сделать это в моих существующих js, если смогу! – Joseph

+0

Это противоречит моим существующим js, которые задают выбор темы пользователя в localstorage и обновляют класс переключателя темы до текущего. Я ценю ваш ответ, но я хотел бы заполнить это в javascript, чтобы он не конфликтует с моим переключателем тем, каким он является в настоящее время. Я просто хочу изменить код в своем первоначальном вопросе, чтобы изменить класс тела на основе заката, а не в фиксированное время, как показано. Остальная часть кода, например. ручная светло-темная тема, которую я также хотел бы оставить в javascript. – Joseph

+0

Другое решение может отправлять метки времени заката/восхода солнца в документ и изменять класс с помощью javascript, когда фактическое время достигает одной из временных меток. – midlan

Смежные вопросы