#javascript #html #css
#javascript #HTML #css
Вопрос:
У меня есть полукруг в центре моей страницы, который я хочу иметь возможность вращать, я могу сделать какую-то его часть, отрегулировав ширину, но мне нужен способ заставить его вращаться на 360 градусов. Если возможно, я хочу иметь возможность выполнить это, используя только css, однако, если требуется, я не возражаю против ванильного js (без Jquery).
body {
background-color: lightblue;
}
#txt {
position: fixed;
left: 50%;
transform: translate(-50%, 0);
top: 40%;
font-size: 30px;
color: white;
}
#spinCircle {
position: fixed;
left: 50%;
top: 15%;
height: 50vh;
width: 50px;
border-radius: 0 150px 150px 0;
border-color: black;
color: black;
border-style: solid;
border-left-style: none;
/*background-color: black;*/
animation: spinning infinite;
animation-duration: 3s;
}
@keyframes spinning {
from {
width: 50px
}
to {
width: 0px;
z-index: -5;
}
}
<div id="txt">Hello</div>
<div id="spinCircle" />
Ответ №1:
Это то, что вы хотите?
body {
background-color: lightblue;
}
#txt {
position: fixed;
left: 50%;
transform: translate(-50%, 0);
top: 40%;
font-size: 30px;
color: white;
}
#spinCircle {
position: fixed;
left: 50%;
top: 15%;
height: 50vh;
width: 50px;
border-radius: 0 150px 150px 0;
border-color: black;
color: black;
border-style: solid;
border-left-style: none;
transform-origin: left;
/*background-color: black;*/
animation: spinning infinite;
animation-duration: 3s;
}
@keyframes spinning {
from {
transform: rotateY(0deg);
}
to {
transform: rotateY(180deg);
z-index: -5;
}
}
<div id="txt">Hello</div>
<div id="spinCircle" />
Комментарии:
1. Спасибо за ваш ответ, это почти то, что мне нужно, я хочу, чтобы полукруг был на 360 градусов, что означает, что строка также должна находиться перед текстом. Также, похоже, в этой анимации есть один момент, когда строка становится невидимой (сзади) Я хочу, чтобы в этой точке появлялась прямая линия, иначе она не выглядит такой гладкой.
Ответ №2:
Если я правильно понимаю, вы хотите, чтобы полукруг вращался вокруг вашего текста «привет». Если это так, вы можете использовать transform: rotateY()
стиль для вращения своего круга. Если вы сделаете это, вы можете добавить свою ширину к окружности div, а также установить начало преобразования как левую сторону вашего элемента, чтобы вы вращались вокруг левой стороны вашего полукруга, а не центра:
transform-origin: left;
width: 50px;
Смотрите пример ниже:
body {
background-color: lightblue;
}
#txt {
position: fixed;
left: 50%;
transform: translate(-50%, 0);
top: 40%;
font-size: 30px;
color: white;
}
#spinCircle {
position: fixed;
left: 50%;
top: 15%;
height: 50vh;
width: 200px;
border-radius: 0 150px 150px 0;
border-color: black;
color: black;
border-style: solid;
border-left-style: none;
animation: spinning linear infinite;
animation-duration: 3s;
transform-origin: left;
width: 50px;
}
@keyframes spinning {
from {
transform: rotateY(0);
}
to {
transform: rotateY(360deg);
}
}
<div id="txt">Hello</div>
<div id="spinCircle" />
Комментарии:
1. Спасибо за ваш ответ, это почти то, что мне нужно, я хочу, чтобы полукруг был на 360 градусов, что означает, что строка также должна находиться перед текстом. Также, похоже, в этой анимации есть один момент, когда строка становится невидимой (сзади) Я хочу, чтобы в этой точке появлялась прямая линия, иначе она не выглядит такой гладкой.