Как изменить цвет заливки svg при onScroll?

161
11 июня 2019, 01:20

Могу ли я изменить цвет заливки логотипа SVG при onScroll?
Это возможно с html или свойством css?
Изменение цвета должно быть при прокрутке, когда курсор находится на другом DIV

Answer 1

Идея состоит в том, чтобы использовать правила CSS: mix-blend-mode: difference; и isolation: isolate; для группы.
Вам решать, как вы хотите перемещать слои.
Я использую диапазон input type для этого.

Я надеюсь, код ниже поможет.

percent.addEventListener("input",()=>{ 
  let val = ~~(percent.value); 
  let _var = map(100-val,0,100,3,27); 
  txt.textContent = val+"%"; 
  pth.setAttributeNS(null,"d",`M3,27H27V${_var}H3z`) 
}) 
 
function map(n, a, b, _a, _b) { 
  let d = b - a; 
  let _d = _b - _a; 
  let u = _d / d; 
  return _a + n * u; 
}
svg{border:1px solid; font-size:10px; background:lightblue} 
[type="range"]{width:150px;}
<svg viewBox="0 0 30 30" width="150"> 
  <g style="isolation: isolate;"> 
  <path d="M3,27H27V3H3z" fill="white" /> 
  <path id="pth" d="M3,27H27V15H3z"  /> 
  <text id="txt" x="15" y="15" dominant-baseline="middle" text-anchor="middle" fill="white" style="mix-blend-mode: difference;">50%</text> 
  </g> 
</svg> 
 
 
<p><input id="percent" type="range" value="50" /></p>

Источник

READ ALSO
Для чего нужен package-lock.json?

Для чего нужен package-lock.json?

Доброе время сутокЯ почитал документацию к NPM, почитал форумы, но всё равно до конца не совсем понимаю, смысловую нагрузку этого файла

161
Как передать данные из браузера?

Как передать данные из браузера?

У меня есть простенькое расширение для Google Chrome которое получает Url открытой вкладки и выводит его на экран

140
localStorage JS как правильно использовать

localStorage JS как правильно использовать

Всем привет! Недавно начал изучать JS, при создании "ToDo" формы столкнулся с тем, что после обновления страницы пропадают все добавленные делаУзнал...

117
Превращение блоков в друг друга

Превращение блоков в друг друга

Изначально на странице отображается только блок redКак сделать чтобы при наведении на блок red он превращался в блок green, а при отведении - обратно...

106