Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.11.2024, 18:47
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 778

Поменять фон части блока
Привет.
<div class="wrraper">
<!-- Затемнение для картинки -->
<div class="page"></div>
<!-- Облость вокруг курсора  --->
 <span class="magnify"></span>
<img src="" />
</div>

<style>
.page{
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.6);
    position: absolute;
}
</style>


var magnify = document.querySelector('.magnify');
 document.querySelector(".wrraper").onmousemove = function (e) {
        magnify.style.top = e.clientY * 1 - 300 + "px";
        magnify.style.left = e.clientX * 1 - 300 + "px";

}


Подскажите как мне вокруг курсора убирать затемнение?
Ответить с цитированием
  #2 (permalink)  
Старый 10.11.2024, 19:57
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Что значит "убирать затемнение вокруг курсора"?
Какой-то кружок оставлять прозрачным? Квадрат? Просто убирать всё затемнение при наведении?

Если кружок - используй для затемнения radial-gradient:
<div class="wrraper">
  <!-- Затемнение для картинки -->
  <div class="overlay"></div>

  <img  src="https://images.unsplash.com/photo-1506610654-064fbba4780c?crop=entropy&cs=srgb&fm=jpg&ixid=M3wzMjM4NDZ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3MzEwOTcwMDV8&ixlib=rb-4.0.3&q=85" />
</div>

<style>
  .overlay {
    --cicle-radius: 10px;
    pointer-events: none;
    background-image: radial-gradient(
      circle at var(--cicle-radius) var(--cicle-radius), 
      #0000,
      #0000 calc(var(--cicle-radius) - 5px), 
      rgba(0, 0, 0, 0.6) var(--cicle-radius)
    );
    background-position: -99999px;
    background-size: 200% 200%;
    transition: background-position 0.01s;
    position: absolute;
  }
  
  html, body, .wrraper, .overlay {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    overflow: hidden;
  }
  img {
     width: 100%;
  }
</style>
<script>
  var cicleRadius = 100;
  var overlay = document.querySelector('.overlay');
  overlay.style.setProperty('--cicle-radius', `${cicleRadius}px`);
  document.querySelector(".wrraper").addEventListener('mousemove', (e) => {
    overlay.style.backgroundPosition = `${e.pageX - cicleRadius}px ${e.pageY - cicleRadius}px`;
  });
</script>


Если какая-то более сложная фигура - то всякие clip-path, mask, mix-blend-mode, filter и.т.д. тебе в помощь.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2024, 12:33
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 778

Убрать затемнение, то есть, есть блок с картинкой.Картинка затемнена другим дивом, поверх первого. Когда курсор на картинке, то там где курсор, вокруг него убрать затемнение. Форма пока не важна. Это уже другой шаг)
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2024, 14:01
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

В общем и целом "убрать затемнение" не трогая сам элемент который это затемнение обеспечивает - невозможно. Т.е. так как ты хочешь: убрать затемнение .page путём воздействия исключительно на .magnify - нельзя принципиально никак.
Чтоб что-то делать с затемнением - надо это делать именно с самим затемнением. Рабочий пример я привёл, как и написал другие возможные варианты.

Альтернативой может быть не "убирание затемнения", а рисование копии того, что лежит под затемнением. Т.е. в .magnify ты кладёшь точно такую же img как и снизу, обрезаешь и позиционируешь её как тебе надо. Это очень ограниченный в применимости способ, но в данном конкретном случае имеет право на жизнь.
__________________
29375, 35

Последний раз редактировалось Aetae, 11.11.2024 в 14:16.
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2024, 19:07
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 778

Вот пример на слайдере. С затемнением. Как такое реализовать?
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2024, 19:12
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

ureech, и чем тебе не нравится тот код, что я тебе привёл? Он делает абсолютно то же самое, разве что края кружка не так размывает(что меняется правкой оной циферки).
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 12.11.2024, 10:10
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 778

Aetae,
да нет, спасибо, я не о том. Я ещё и не кодил) Просто хотел уточнить непонятные мне моменты.
Ответить с цитированием
  #8 (permalink)  
Старый 12.11.2024, 19:04
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 778

Ну вроде победил я его)
Вот пример с кодом, кому интересно. Только на реальном сайте, нужно учитывать координаты блока при задании координат мыши.
Но вот как размыть очертания круга что то не найти. Вся инфа о масках и тп для css. Как применить для js нужна помощь.
Ответить с цитированием
  #9 (permalink)  
Старый 13.11.2024, 00:08
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Ты зачем-то пошёл по альтернативному варианту, хотя он и сложнее. Но ок. Чтоб получить размытый кружок тебе всё также придётся воспользоваться радиальным градиентом как и в моём примере, только теперь как маской: убери clip-path и используй
day.style.mask=`radial-gradient(circle at ${x}px ${y}px, rgba(0, 0, 0), rgba(0, 0, 0) 40px, rgb(0, 0, 0, 0) 60px)`;
Разница меж 40px и 60px - ширина размытия.
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 13.11.2024, 09:36
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 778

Ок. Спасибо.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в ffmpeg разрезать каждый видеофайл по середине и эти 2 части поменять местами? mik888em Events/DOM/Window 0 15.01.2021 00:26
Как совместить фон блока и фон body? i501 Элементы интерфейса 17 29.11.2018 10:50
стрелки вниз, верх при раздвижение блоков dima018 Элементы интерфейса 8 12.02.2018 21:29
Поменять фон при вводе в текст поле input teamf7 Элементы интерфейса 5 03.04.2016 21:28
Как сделать скрытие блока при клике на фон? clb Элементы интерфейса 6 11.06.2013 18:03