Как скрыть псевдоэлемент за пределами родителя?
Нужно реализовать заливку кнопки "под углом". Для этого использую before, который представляет собой прямоугольник, повернутый на определенный угол, размеры которого увеличиваются, если навести курсор на кнопку.
.auth {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.button {
position: relative;
display: inline-block;
vertical-align: top;
padding: 20px 45px;
font-size: 13px;
font-weight: 600;
color: #fff;
text-decoration: none;
text-transform: uppercase;
text-align: center;
color: #191919;
/* background-color: #fff; */
background-color: transparent;
border: 1px solid #191919;
border-radius: 5px;
cursor: pointer;
outline: 0;
transition: background-color 0.2s linear, color 0.2s linear;
}
.button:hover {
color: #fff;
/* background-color: #191919; */
}
.button::before {
position: absolute;
left: -50%;
top: -100%;
transform: rotate(-10deg);
z-index: -1;
display: block;
width: 100%;
height: 100%;
overflow: hidden;
content: '';
background-color: red;
transition: width 0.2s linear, height 0.2s linear;
}
.button:hover::before {
width: 160%;
height: 250%;
}
<div class="auth">
<button class="button" type="submit">Войти</button>
</div>
Как сделать так, чтобы прямоугольник не отображался за пределами кнопки?
Ответы (2 шт):
Автор решения: Air
→ Ссылка
задай родителю overflow: hidden
.auth {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.button {
position: relative;
display: inline-block;
vertical-align: top;
padding: 20px 45px;
font-size: 13px;
font-weight: 600;
color: #fff;
text-decoration: none;
text-transform: uppercase;
text-align: center;
color: #191919;
/* background-color: #fff; */
background-color: transparent;
border: 1px solid #191919;
border-radius: 5px;
cursor: pointer;
outline: 0;
transition: background-color 0.2s linear, color 0.2s linear;
overflow: hidden
}
.button:hover {
color: #fff;
/* background-color: #191919; */
}
.button::before {
position: absolute;
left: -50%;
top: -100%;
transform: rotate(-10deg);
z-index: -1;
display: block;
width: 100%;
height: 100%;
overflow: hidden;
content: '';
background-color: red;
transition: width 0.2s linear, height 0.2s linear;
}
.button:hover::before {
width: 160%;
height: 250%;
}
<div class="auth">
<button class="button" type="submit">Войти</button>
</div>
Автор решения: Zhihar
→ Ссылка
не подойдет ли вам маскироване и клипирование?