#javascript #jquery #css
#javascript #jquery #css
Вопрос:
Я пытаюсь повернуть div при наведении курсора мыши, а затем расширить его правую сторону под наклонным углом. Мне удалось добиться расширения div при наведении курсора мыши.
div{
height: 200px;
width: 200px;
background-color:wheat;
transition: .2s;
margin-top: 1em;
margin-left: 10em;
margin-bottom: 10em;
overflow: hidden;
}
div:after{
-webkit-transition: .2s;
transition: .2s;
content: '';
position: absolute;
top: 0;
left: 25%;
width: 0px;
height: 200px;
background: wheat;
overflow: hidden;
-webkit-transform-origin: 100% 0;
transform-origin: 100% 0;
-webkit-transform: skew(-35deg);
transform: skew(-35deg);
z-index: -1;
margin-left: 10em;
margin-top: 1em;
}
div:hover:after {
-webkit-transition: .2s;
transition: .2s;
width: 200px;
height: 200px;
background: wheat;
-webkit-transform-origin: 100% 0;
transform-origin: 100% 0;
-webkit-transform: skew(-35deg);
transform: skew(-35deg);
z-index: -1;
margin-top: 1em;
margin-left: 10em;
margin-bottom: 10em;
}
<div>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Similique dicta adipisci qui fugit, eum eaque dolorem accusamus natus animi nam, deleniti tempora fugiat iusto minima optio commodi laudantium veritatis quos.</p>
</div>
Но когда я пытаюсь повернуть основной div с transform: rotate(-45deg);
помощью, следующий псевдоэлемент не запускается. Есть ли способ сделать это? или есть хотя бы альтернатива javascript, которая упростила бы весь этот процесс?
Комментарии:
1. положение: относительно div удалить переполнение: скрыто удалить p margin
Ответ №1:
Если я правильно вас понимаю, вы хотите что-то вроде этого
div{
height: 200px;
width: 200px;
background-color:wheat;
transition: .2s;
margin-top: 10em;
margin-left: 10em;
margin-bottom: 10em;
}
div:hover {
transform: rotate(-45deg);
}
div:after{
-webkit-transition: .2s;
transition: .2s;
content: '';
position: absolute;
top: 0;
left: 65%;
width: 0px;
height: 200px;
background: wheat;
overflow: hidden;
-webkit-transform-origin: 100% 0;
transform-origin: 100% 0;
-webkit-transform: skew(-35deg);
transform: skew(-35deg);
z-index: -1;
}
div:hover:after {
-webkit-transition: .2s;
transition: .2s;
width: 200px;
height: 200px;
background: wheat;
-webkit-transform-origin: 100% 0;
transform-origin: 100% 0;
-webkit-transform: skew(-35deg);
transform: skew(-35deg);
z-index: -1;
margin-left: 4em;
}
p {
margin: 0;
}
<div>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Similique dicta adipisci qui fugit, eum eaque dolorem accusamus natus animi nam, deleniti tempora fugiat iusto minima optio commodi laudantium veritatis quos.</p>
</div>
Ответ №2:
div{
height: 200px;
width: 200px;
transition: .2s;
margin-top: 1em;
margin-left: 10em;
margin-bottom: 10em;
position: relative;
}
div:before{
content: '';
position: absolute;
top: 0;
left: 0;
width: 200px;
height: 200px;
background: wheat;
z-index: -1;
transition: all 1s ease;
}
div:hover:before {
width: 200px;
height: 200px;
-webkit-transform: rotate(180deg) ;
transform: rotate(180deg);
transition: all 1s ease;
}
div::after {
position: absolute;
top: 0;
right: 0;
content: "";
width: 0;
height: 0;
border-top: 200px solid wheat;
border-right: 200px solid transparent;
z-index: -2;
opacity: 0;
transition: all 300ms ease;
}
@keyframes example {
from {Opacity: 0;right: 0}
to {opacity: 1;right: -200px;}
}
div:hover::after {
animation-delay: 1s;
animation: example forwards;
animation-duration: 1s;
transition: all 300ms ease;
}
<div>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Similique dicta adipisci qui fugit, eum eaque dolorem accusamus natus animi nam, deleniti tempora fugiat iusto minima optio commodi laudantium veritatis quos.</p>
</div>
Я изменил before после css и также использовал анимацию.
Ответ №3:
Проблема, похоже, заключалась в том, что вы overflow:hidden
установили элемент div, хотя почему псевдоэлемент все еще был виден без поворота, для меня несколько загадочно.
div {
height: 200px;
width: 200px;
background-color: wheat;
transition: .2s;
margin-top: 1em;
margin-left: 10em;
margin-bottom: 10em;
position: relative;
}
div:hover {
transform: rotate(-60deg);
}
div:after {
transition: .2s;
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: wheat;
transform-origin: 100% 0;
transform: skew(-0deg);
z-index: -1;
}
div:hover:after {
transform: skew(-35deg);
}
<div>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Similique dicta adipisci qui fugit, eum eaque dolorem accusamus natus animi nam, deleniti tempora fugiat iusto minima optio commodi laudantium veritatis quos.</p>
</div>