Как изменить прозрачность фона со временем?

Я хочу изменить прозрачность фона в div в зависимости от времени.

Я буду использовать css rgba. например, 12 часов дня самое яркое (rgba(0, 0, 0, 0)), а 12 часов самое темное (rgba(0, 0, 0, 1))

и я нашел этот скрипт и пытаюсь изменить. но он меняет цвет, и нет опции непрозрачности.

Как я могу изменить этот код?

Мне действительно нужна твоя помощь. Спасибо.

Вот сценарий

function time() {
  var today = new Date();
  var h = today.getHours()


  if (h > 12) {
    h = h - "12"
  };
  var m = today.getMinutes();
  var s = today.getSeconds();
  m = checkTime(m);
  s = checkTime(s);
  document.getElementById('clocky').innerHTML = h + ":" + m + ":" + s;
  var r = parseInt(s) * 1;
  var g = parseInt(s) * 3;
  var b = parseInt(s) * 5;
  document.body.style.backgroundColor = 'rgb(' + r + ',' + g + ',' + b + ')';
  var t = setTimeout(time, 500);
}

function checkTime(i) {
  if (i < 10) {
    i = "0" + i
  };
  return i;
}

time();
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
305
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Нет свойства css для непрозрачности фона

Вы можете изменить непрозрачность элемента следующим образом:

document.getElementById('my_id').style.opacity = some_values

function changeOpacity() {
  var today = new Date();
  var s = parseInt(today.getSeconds());
  var opacity = getOpacity(s);
  console.info(opacity)
  document.getElementById('my_div').style.backgroundColor = "rgba(0, 0, 0," + opacity + ")";
  var t = setTimeout(changeOpacity, 500);
}

function getOpacity(s) {
  var x = 10; // You can change this to adjust the speed of change in opacity
  s = s % (2 * x);
  if (s > x) {
    return (2 * x - s) / x;
  }
  return s / x;
}

changeOpacity();
#my_div {
  color: white;
}
<div id = "my_div">
  <p>Hilo</p>
</div>

спасибо за ваш код. но я хочу, чтобы цвет фона работал как часы...

yjdev 26.12.2020 10:25

Что вы подразумеваете под «Я хочу, чтобы цвет фона работал как часы»? Вы хотите изменить непрозрачность цвета фона, не влияя на прозрачность текста?

atin 26.12.2020 10:30

Да, Алтин, поэтому я планирую использовать background-color:rgba(0,0,0,0.1). например, 12 часов дня — это 0,0,0,0,1 / 13:00 — это 0,0,0,1,83 / ... / 12 часов ночи — это 0,0,0,0.

yjdev 26.12.2020 10:57

поэтому я изменил ваш скрипт «getSeconds» на «getHours» и «.style.backgroundColor». а то не знаю как быть..

yjdev 26.12.2020 11:06

Я изменил свой ответ. Вам это помогает?

atin 26.12.2020 11:17

большое спасибо! это то, что я хотел. очень помог мне Алтин. но у меня есть один вопрос. Когда непрозрачность от 0 до 1, могу ли я изменить ее с 1 на 0,9 вместо того, чтобы вернуться к 1?

yjdev 26.12.2020 12:26

Я отредактировал свой ответ, я думаю, что это решит вашу проблему, если это так, пожалуйста, примите мой ответ, иначе скажите мне, если что-то не так. P.S. - Как я упоминал в комментарии к javascript, вы можете изменить значение x, чтобы настроить скорость изменения непрозрачности.

atin 26.12.2020 15:09

Давайте продолжим обсуждение в чате.

atin 26.12.2020 15:20

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

document.element.style.opacity = 0.5

В свой код вы можете добавить эти две строки:

var a = parseInt(s) * 24
document.body.style.backgroundColor = 'rgba(' + r + ',' + g + ',' + b + ',' + 
 a ')'; //this last parameter 'a' will change the opacity.

Чтобы получить значение, попадающее между двумя значениями (например, часы), полезно использовать значение косинуса. Значение косинуса меняется от -1 до 1 d. Затем непрозрачность будет изменена с -1 на 1.

Значение непрозрачности изменяется от 0 до 1. И значение косинуса изменяется от 0 до 1 при делении PI на 2. Таким образом, если значение cos изменяется при делении PI на 2, то значение может быть изменено от 1 до 0 и от 0 до -1 и от от -1 до 0 и так далее. Но нужно только от 0 до 1, поэтому Math.abs() получит абсолютное значение.

С cos можно использовать значение дня. Таким образом, дневное значение может идти со значением cos. Затем день может перейти от -2 PI к 0, как на графике cos. Продолжительность дня равна PI, деленному на 2. Наконец, значение, используемое в качестве значения непрозрачности.

Поскольку console.info показывает изменения значения от -1 до 1, непрозрачность также будет изменена. Вы не можете видеть изменения непрозрачности, потому что значение непрозрачности меняется очень медленно, но меняется.

function time(){
var today = new Date();
var h = today.getHours()


 if (h>12) {h= h- "12"} ;
  var m = today.getMinutes();
  var s = today.getSeconds();
  m = checkTime(m);
  s = checkTime(s);
  
  var sec = 1000;
  var min = 60 * sec;
  var hour = min * 60;
  var day = hour * 24
  
  var todaySec = today.getSeconds();
  var todayMin = today.getMinutes() * sec;
  var todayHour = today.getHours() * hour;
  var todayValue = todaySec + todayMin + todayHour; 
  
  // this value change from 0 to (3.14 / 2) but time of changes of the value is too long to wait
  var dayValueChange = todayValue/day * Math.PI / 2
  // this cosine value will be change from 1 to 0 and from 0 to 1 only
  var cosValue = Math.abs(Math.cos(dayValueChange));
  console.info(cosValue)
  document.getElementById('clocky').innerHTML = h + ":" + m + ":" + s;
  var r = parseInt(s) * 1;
  var g = parseInt(s) * 3;
  var b = parseInt(s) * 5;
  // rgb values are just example
  document.body.style.backgroundColor = 'rgb(84, 86, 171,' + cosValue + ')';
  var t = setTimeout(time, 500);
}

function checkTime(i) {
    if (i < 10) {i = "0" + i};
    return i;
}

time();
<div id='clocky'></div>

Другие вопросы по теме