我不能制作 3/4 圆圈,我只能使用一个 div 所以我怎样才能像下面 link 中的示例那样制作它
I can't make the 3/4 circle and i have to use one div only so how can i make it as the example in the link below
这是我想要做的形状enter link description here
P.S.I我还在学习前端的东西所以你能帮我完成这个作业吗?
这是HTML代码<div>Elzero</div>
这是我尝试使用的CSS代码
* {
box-sizing: border-box;
}
div {
width: 200px;
height: 200px;
background-color: #eee;
margin: 80px auto;
color: black;
font-size: 50px;
font-weight: bold;
text-align: center;
line-height: 200px;
border-radius: 50%;
}
::after {
content: "";
width: 200px;
height: 200px;
background-color: #03a9f4;
margin: 80px auto;
border-radius: 50%;
position: absolute;
transform: translate(-190px, -80px);
z-index: -1;
}
::before {
content: "";
width: 200px;
height: 200px;
background-color: #e91e63;
margin: 80px auto;
border-radius: 50%;
position: absolute;
top: 0px;
z-index: -2;
}
div:hover {
transition: all 0.5s;
transform: rotate(180deg);
}
这里还有 less 中的示例:
https://codepen.io/nikitahl/pen/XooBXd
如果你想使用 css 这里有一个转换器:
https://jsonformatter.org/less-to-css
由于您只能使用一个 div,此代码段基于您的想法,即拥有伪元素但使用圆锥渐变背景和 'main' div 创建它们具有使用径向渐变创建的浅灰色圆形背景。这样它就创建了这 3 个形状。
并将它们叠加起来,给人以 3/4 圆圈的印象。然后它使用 CSS 动画在悬停时旋转它们。
显然,您会想要尝试使用尺寸、动画时间和方向来获得您想要的内容,但这应该是一个开始。
* {
box-sizing: border-box;
}
div {
width: 200px;
height: 200px;
background-image: radial-gradient(#eee 0 55%, transparent 55% 100%);
margin: 80px auto;
color: black;
font-size: 50px;
font-weight: bold;
text-align: center;
line-height: 200px;
border-radius: 50%;
position: relative;
}
div::after {
content: "";
width: 200px;
height: 200px;
border-radius: 50%;
position: absolute;
top: 0;
left: 0;
z-index: -2;
background-image: conic-gradient(#03a9f4 0deg 45deg, white 45deg 135deg, #03a9f4 135deg 360deg);
}
div::before {
content: "";
width: calc(100% - 10%);
height: calc(100% - 10%);
position: absolute;
border-radius: 50%;
position: absolute;
top: 5%;
left: 5%;
z-index: -1;
background-image: conic-gradient(#e91e63 0, #e91e63 225deg, white 225deg, white 315deg, #e91e63 315deg, #e91e63 360deg);
}
div:hover::after {
animation: rot .4s linear;
}
div:hover::before {
animation: rot .4s linear;
animation-delay: .1s;
animation-direction: reverse;
}
@keyframes rot {
0% {
transform: rotate(0);
}
25% {
transform: rotate(180deg);
}
50% {
transform: rotate(180deg);
}
75% {
transform: rotate(0);
}
100% {}
}
<div>Elzero
</div>
这是我想要做的形状enter link description here
P.S.I我还在学习前端的东西所以你能帮我完成这个作业吗?
这是HTML代码<div>Elzero</div>
这是我尝试使用的CSS代码
* {
box-sizing: border-box;
}
div {
width: 200px;
height: 200px;
background-color: #eee;
margin: 80px auto;
color: black;
font-size: 50px;
font-weight: bold;
text-align: center;
line-height: 200px;
border-radius: 50%;
}
::after {
content: "";
width: 200px;
height: 200px;
background-color: #03a9f4;
margin: 80px auto;
border-radius: 50%;
position: absolute;
transform: translate(-190px, -80px);
z-index: -1;
}
::before {
content: "";
width: 200px;
height: 200px;
background-color: #e91e63;
margin: 80px auto;
border-radius: 50%;
position: absolute;
top: 0px;
z-index: -2;
}
div:hover {
transition: all 0.5s;
transform: rotate(180deg);
}
这里还有 less 中的示例:
https://codepen.io/nikitahl/pen/XooBXd
如果你想使用 css 这里有一个转换器:
https://jsonformatter.org/less-to-css
由于您只能使用一个 div,此代码段基于您的想法,即拥有伪元素但使用圆锥渐变背景和 'main' div 创建它们具有使用径向渐变创建的浅灰色圆形背景。这样它就创建了这 3 个形状。
并将它们叠加起来,给人以 3/4 圆圈的印象。然后它使用 CSS 动画在悬停时旋转它们。
显然,您会想要尝试使用尺寸、动画时间和方向来获得您想要的内容,但这应该是一个开始。
* {
box-sizing: border-box;
}
div {
width: 200px;
height: 200px;
background-image: radial-gradient(#eee 0 55%, transparent 55% 100%);
margin: 80px auto;
color: black;
font-size: 50px;
font-weight: bold;
text-align: center;
line-height: 200px;
border-radius: 50%;
position: relative;
}
div::after {
content: "";
width: 200px;
height: 200px;
border-radius: 50%;
position: absolute;
top: 0;
left: 0;
z-index: -2;
background-image: conic-gradient(#03a9f4 0deg 45deg, white 45deg 135deg, #03a9f4 135deg 360deg);
}
div::before {
content: "";
width: calc(100% - 10%);
height: calc(100% - 10%);
position: absolute;
border-radius: 50%;
position: absolute;
top: 5%;
left: 5%;
z-index: -1;
background-image: conic-gradient(#e91e63 0, #e91e63 225deg, white 225deg, white 315deg, #e91e63 315deg, #e91e63 360deg);
}
div:hover::after {
animation: rot .4s linear;
}
div:hover::before {
animation: rot .4s linear;
animation-delay: .1s;
animation-direction: reverse;
}
@keyframes rot {
0% {
transform: rotate(0);
}
25% {
transform: rotate(180deg);
}
50% {
transform: rotate(180deg);
}
75% {
transform: rotate(0);
}
100% {}
}
<div>Elzero
</div>