# 1 - Использование clip-path
Совместимость: Все современные браузеры, кроме Edge. IE10 / 11 и Edge предоставляют ограниченные возможностиподдержка только url()
.
Пример с клип-траекторией
Чтобы обрезать изображение, используйте clip-path: inset()
. В этом примере у нас есть 120-пиксельное поле, которое при наведении уменьшается до 0.
.reveal {
background: url(https://i.stack.imgur.com/3v1Kz.jpg) no-repeat;
background-size: 150px;
background-position: center;
height: 300px;
width: 300px;
clip-path: inset(120px 120px 120px 120px);
transition: clip-path 0.5s;
}
.reveal:hover {
clip-path: inset(0 0 0 0);
}
/*for example*/
body {
background: linear-gradient(to bottom right, black 0%, white 100%);
height: 100vh;
}
<div class="reveal"></div>
Пример с url () (не работает в Edge или IE)
Была попытка!
СоздатьSVG примерно так:
<svg>
<clipPath id="square">
<rect />
</clipPath>
</svg>
и поместите это в контейнер. Div задается clip-path: url(#square)
, а координаты ширины, высоты, x и y предоставляются в CSS и изменяются при наведении курсора.
.reveal-url {
background: url(https://www.pngfind.com/pngs/m/299-2991041_memes-para-stickers-png-png-download-surprised-pikachu.png)
no-repeat;
background-size: 150px;
background-position: center;
height: 300px;
width: 300px;
clip-path: url(#square);
position: relative;
}
svg {
width: 100%;
height: 100%;
}
.reveal-url rect {
transition: all 0.5s;
x: 120px;
y: 120px;
width: 60px;
height: 60px;
}
.reveal-url:hover rect {
width: 100%;
height: 100%;
x: 0;
y: 0;
}
/*for example*/
body {
background: linear-gradient(to bottom right, black 0%, white 100%);
height: 100vh;
}
h1 {
font-size: 30px;
color: white;
}
<h1>This only works in Chrome and Firefox.</h1>
<div class="reveal-url">
<svg>
<clipPath id="square">
<rect />
</clipPath>
</svg>
</div>
# 2 - Использование Box-shadow
Если вы работаете со сплошными фоновыми цветами, простой способ - использовать вставку box-shadow
чтобы замаскировать содержимое контейнера, а затем уменьшить тень при наведении курсора.
.reveal {
background: #000 url(https://www.pngfind.com/pngs/m/299-2991041_memes-para-stickers-png-png-download-surprised-pikachu.png) no-repeat;
background-size: 150px;
background-position: center;
height: 300px;
width: 300px;
box-shadow: inset 0 0 0 120px #000;
transition: box-shadow 1s;
}
.reveal:hover {
box-shadow: inset 0 0 0 70px #000;
}
/*for example*/
body {
background: #000;
}
<div class="reveal"></div>