#html #css #svg #css_animation
Я работаю над SVG, моя концепция состоит в том, что у меня есть два изображения,
которые пересекаются друг с другом, и используя многоугольник SVG, я сделал пять разных
треугольников.
Моя цель - добиться первого наложения части фигуры от полного отображения изображения
при наведении курсора на фон фигуры. Границы многоугольника также должны быть видны.
Это мой исходный код перед наложением изображения:
.box {
position: relative;
background-image: url('https://picsum.photos/id/1/1000/800');
background-repeat: no-repeat;
width: 100%;
height: 600px;
background-size: cover;
}
polygon {
stroke-width: 1;
stroke: red;
fill: #ffffff;
}
polygon:hover {
fill: transparent;
}
Теперь я добавил overlay изображение, которое должно располагаться над изображением
.box и многоугольниками. Теперь, при наведении курсора, я хочу отобразить .box изображение
в текущей форме многоугольника, как это
код здесь:
.box {
position: relative;
background-image: url('https://picsum.photos/id/1/1000/800');
background-repeat: no-repeat;
width: 100%;
height: 600px;
background-size: cover;
}
polygon {
stroke-width: 1;
stroke: red;
fill: #ffffff;
}
polygon:hover {
fill: transparent;
}
.overlay:hover polygon {
z-index: 100;
}
.overlay {
position: absolute;
background-image: url('https://picsum.photos/id/118/1000/800');
background-repeat: no-repeat;
width: 100%;
height: 600px;
background-size: cover;
z-index: 10;
}
Может ли кто-нибудь помочь мне с этим при наведении курсора. Нужно отрегулировать
z-индексы div и заполнения полигонов.
Ответы
Ответ 1
rect, polygon { stroke-width: 0; fill: none; pointer-events: all; } rect, polygon:hover { fill: url(#f); } Если нижняя часть изображения не нужна, то так: svg { overflow: hidden; } polygon { stroke-width: 0; stroke: transparent; fill: none; pointer-events: all; } polygon:hover { fill: url(#f); }Ответ 2
Я скорректировал код моего предыдущего ответа, как показано ниже: .box { width:450px; height:250px; position:relative; overflow:hidden; z-index:0; background:url(https://picsum.photos/id/13/1000/800) center/cover; } .box > div { position:absolute; top:0; left:0; right:0; bottom:0; background-size:cover; background-position:center; opacity:0; } .box > div:nth-child(1) { clip-path:polygon(20% 0,80% 0, 50% 100%); } .box > div:nth-child(2) { clip-path:polygon(0 0, 20% 0,50% 100%,0 40%); } .box > div:nth-child(3) { clip-path:polygon(100% 0,80% 0,50% 100%,100% 40%); } .box > div:nth-child(4) { clip-path:polygon(0 100%,50% 100%,0 40%); } .box > div:nth-child(5) { clip-path:polygon(100% 100%,50% 100%,100% 40%); } .box > div:hover { opacity:1; }Вот иллюстрация, чтобы показать вам различные точки, используемые в пути клипа С тем же изображением? как у автора: .box { width:450px; height:250px; position:relative; overflow:hidden; z-index:0; background:url(https://picsum.photos/id/13/1000/800) center/cover; } .box > div { position:absolute; top:0; left:0; right:0; bottom:0; background-image:url(https://picsum.photos/id/118/1000/800); background-size:cover; background-position:center; opacity:0; } .box > div:nth-child(1) { clip-path:polygon(20% 0,80% 0, 50% 100%); } .box > div:nth-child(2) { clip-path:polygon(0 0, 20% 0,50% 100%,0 40%); } .box > div:nth-child(3) { clip-path:polygon(100% 0,80% 0,50% 100%,100% 40%); } .box > div:nth-child(4) { clip-path:polygon(0 100%,50% 100%,0 40%); } .box > div:nth-child(5) { clip-path:polygon(100% 100%,50% 100%,100% 40%); } .box > div:hover { opacity:1; }Источник ответа: @Temani AfifОтвет 3
Решение @Temani Afif только на CSS очень хорошее Однако, будьте осторожны, это все еще не поддерживается ни в Safari, ни в IE / Edge. Для этих браузеров вам понадобится использовать SVG, который также реализует элемент. .overlay { background-image: url('https://picsum.photos/id/118/1000/800'); background-repeat: no-repeat; background-size: cover; } .overlay use { opacity: 0; } .overlay use:hover { opacity: 1; } Так что, это более многострочно в коде, но это должно работать в любом браузере начиная с IE9. Источник ответа: @Kaiido
Комментариев нет:
Отправить комментарий