10.11.2024, 18:47
|
Профессор
|
|
Регистрация: 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";
}
Подскажите как мне вокруг курсора убирать затемнение?
|
|
10.11.2024, 19:57
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
Что значит "убирать затемнение вокруг курсора"?
Какой-то кружок оставлять прозрачным? Квадрат? Просто убирать всё затемнение при наведении?
Если кружок - используй для затемнения 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
|
|
11.11.2024, 12:33
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
Убрать затемнение, то есть, есть блок с картинкой.Картинка затемнена другим дивом, поверх первого. Когда курсор на картинке, то там где курсор, вокруг него убрать затемнение. Форма пока не важна. Это уже другой шаг)
|
|
11.11.2024, 14:01
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
В общем и целом "убрать затемнение" не трогая сам элемент который это затемнение обеспечивает - невозможно. Т.е. так как ты хочешь: убрать затемнение .page путём воздействия исключительно на .magnify - нельзя принципиально никак.
Чтоб что-то делать с затемнением - надо это делать именно с самим затемнением. Рабочий пример я привёл, как и написал другие возможные варианты.
Альтернативой может быть не "убирание затемнения", а рисование копии того, что лежит под затемнением. Т.е. в .magnify ты кладёшь точно такую же img как и снизу, обрезаешь и позиционируешь её как тебе надо. Это очень ограниченный в применимости способ, но в данном конкретном случае имеет право на жизнь.
__________________
29375, 35
Последний раз редактировалось Aetae, 11.11.2024 в 14:16.
|
|
11.11.2024, 19:07
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
Вот пример на слайдере. С затемнением. Как такое реализовать?
|
|
11.11.2024, 19:12
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
ureech, и чем тебе не нравится тот код, что я тебе привёл? Он делает абсолютно то же самое, разве что края кружка не так размывает(что меняется правкой оной циферки).
__________________
29375, 35
|
|
12.11.2024, 10:10
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
Aetae,
да нет, спасибо, я не о том. Я ещё и не кодил) Просто хотел уточнить непонятные мне моменты.
|
|
12.11.2024, 19:04
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
Ну вроде победил я его)
Вот пример с кодом, кому интересно. Только на реальном сайте, нужно учитывать координаты блока при задании координат мыши.
Но вот как размыть очертания круга что то не найти. Вся инфа о масках и тп для css. Как применить для js нужна помощь.
|
|
13.11.2024, 00:08
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
Ты зачем-то пошёл по альтернативному варианту, хотя он и сложнее. Но ок. Чтоб получить размытый кружок тебе всё также придётся воспользоваться радиальным градиентом как и в моём примере, только теперь как маской: убери 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
|
|
13.11.2024, 09:36
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
Ок. Спасибо.
|
|
|
|