У меня есть значок svg для веб-сайта, который я хотел бы преобразовать в форму css, чтобы я мог создавать собственный эффект при наведении курсора.
Я использую для этого чистый CSS и не уверен, что правильно подхожу к проблеме.
.wrapper {
position: relative;
height: 100vh;
}
.square {
height: 40px;
width: 40px;
background-color: black;
transition: all .2s;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.square:before {
content: "";
width: 100%;
height: 2px;
background-color: #fff;
display: inline-block;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.square:after {
content: "";
width: 100%;
height: 2px;
background-color: #fff;
display: inline-block;
position: absolute;
left: 50%;
top: 50%;
transform-origin: 50%;
transform: translate(-50%, -50%) rotate(90deg);
}
.square:hover {
transform: scale(1.2) translate(-50%, -50%);
}
.square:hover .square:before {
transform: scale(1.2);
}
.square:hover .square:before, .square:hover .square:after {
height: 4px;
}
<div class="wrapper">
<div class="square"></div>
</div>
https://codepen.io/Portismouth/pen/ZEEXeVP
Пока я использую простой квадрат с крестом, созданный с помощью псевдо-селекторов: before и: after. При наведении я пытаюсь сделать квадрат больше, а линии толще, чтобы создать впечатление, к которому я стремлюсь.
По сути, это сетка квадратов 2 x 2, которую я хочу расширить из середины квадрата при наведении курсора. Должен ли я создать квадрат с четырьмя отдельными квадратами или продолжить свой подход до сих пор.
Заранее спасибо.
1 ответ
Ваш код работает правильно. Если вы хотите навести курсор, и он будет расширяться из середины квадрата, не используйте translate(-50%, -50%);
при наведении курсора на квадрат.
.wrapper {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.square {
height: 40px;
width: 40px;
background-color: black;
transition: all .2s;
}
.square:before {
content: "";
width: 100%;
height: 2px;
background-color: #fff;
display: inline-block;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.square:after {
content: "";
width: 100%;
height: 2px;
background-color: #fff;
display: inline-block;
position: absolute;
left: 50%;
top: 50%;
transform-origin: 50%;
transform: translate(-50%, -50%) rotate(90deg);
}
.square:hover {
transform: scale(2);
}
<div class="wrapper">
<div class="square"></div>
</div>
Похожие вопросы
Новые вопросы
css
CSS (каскадные таблицы стилей) - это язык таблиц стилей представления, используемый для описания внешнего вида и форматирования документов HTML (язык разметки гипертекста), XML (расширяемый язык разметки) и элементов SVG, включая (но не ограничиваясь) цвета, макет, шрифты, и анимации. Также описывается, как элементы должны отображаться на экране, на бумаге, в речи или на других носителях.
.square:hover .square:before
и.square:hover .square:after
совершенно не нужны и бессмысленны для этой разметки.