Javascript 由内圆和外圆构成边界的三角形

Javascript 由内圆和外圆构成边界的三角形,javascript,jquery,html,css,css-shapes,Javascript,Jquery,Html,Css,Css Shapes,我正在尝试使用CSS3在一个圆内创建大约12个三角形(每个三角形的圆弧为360/12=30度),以便其底部边界与外圆的圆弧相匹配,其顶点与内圆的圆弧相匹配/弯曲。我最初的想法是创建每个三角形,然后将其放置在两个圆内。但是,使用CSS中简单的三角形创建方法,我不知道如何创建一个边界正好适合两个圆的三角形。这些三角形稍后需要在其中包含文本(以及样式设置等),并使用jQuery或JavaScript移动(我还没有完全弄清楚这一部分)。有人能给我一些想法吗?我该怎么做呢。另外,这是否是最好的方法,特别是

我正在尝试使用CSS3在一个圆内创建大约12个三角形(每个三角形的圆弧为360/12=30度),以便其底部边界与外圆的圆弧相匹配,其顶点与内圆的圆弧相匹配/弯曲。我最初的想法是创建每个三角形,然后将其放置在两个圆内。但是,使用CSS中简单的三角形创建方法,我不知道如何创建一个边界正好适合两个圆的三角形。这些三角形稍后需要在其中包含文本(以及样式设置等),并使用jQuery或JavaScript移动(我还没有完全弄清楚这一部分)。有人能给我一些想法吗?我该怎么做呢。另外,这是否是最好的方法,特别是如果我以后想使用jQuery将它们作为一组拖动到两个圆圈中。我不熟悉CSS/JavaScript/jQuery,如有任何帮助,将不胜感激

下面是这两个圆圈的简单代码片段

.outerCircle{
宽度:400px;
高度:400px;
边框:1px纯黑;
边界半径:50%;
}
.内圈{
位置:相对位置;
左:170px;
顶部:170px;
宽度:50px;
高度:50px;
边界半径:50%;
边框:1px纯黑;
}
利昂先生{
}

您可以使用它将多个三角形做成一个圆:

.triangle { 
    position: absolute;
    width: 0; 
    height: 0; 
    border-left: 150px solid transparent; 
    border-right: 150px solid transparent; 
    border-top: 200px solid red; 
    -moz-border-radius: 50%; 
    -webkit-border-radius: 50%; 
    border-radius: 50%; }
.One {
    top: 0px;
    left: 50px;
    transform: rotate(0deg);
}
通过旋转和位置调整每个三角形。经过几次调整,你应该得到你想要的。 请参见我的示例

JSfiddle:
http://jsfiddle.net/marcusrommel/20df94wo/1/

您可以使用此选项由多个三角形组成一个圆:

.triangle { 
    position: absolute;
    width: 0; 
    height: 0; 
    border-left: 150px solid transparent; 
    border-right: 150px solid transparent; 
    border-top: 200px solid red; 
    -moz-border-radius: 50%; 
    -webkit-border-radius: 50%; 
    border-radius: 50%; }
.One {
    top: 0px;
    left: 50px;
    transform: rotate(0deg);
}
通过旋转和位置调整每个三角形。经过几次调整,你应该得到你想要的。 请参见我的示例

JSfiddle:
http://jsfiddle.net/marcusrommel/20df94wo/1/

您可以使用此选项由多个三角形组成一个圆:

.triangle { 
    position: absolute;
    width: 0; 
    height: 0; 
    border-left: 150px solid transparent; 
    border-right: 150px solid transparent; 
    border-top: 200px solid red; 
    -moz-border-radius: 50%; 
    -webkit-border-radius: 50%; 
    border-radius: 50%; }
.One {
    top: 0px;
    left: 50px;
    transform: rotate(0deg);
}
通过旋转和位置调整每个三角形。经过几次调整,你应该得到你想要的。 请参见我的示例

JSfiddle:
http://jsfiddle.net/marcusrommel/20df94wo/1/

您可以使用此选项由多个三角形组成一个圆:

.triangle { 
    position: absolute;
    width: 0; 
    height: 0; 
    border-left: 150px solid transparent; 
    border-right: 150px solid transparent; 
    border-top: 200px solid red; 
    -moz-border-radius: 50%; 
    -webkit-border-radius: 50%; 
    border-radius: 50%; }
.One {
    top: 0px;
    left: 50px;
    transform: rotate(0deg);
}
通过旋转和位置调整每个三角形。经过几次调整,你应该得到你想要的。 请参见我的示例

JSfiddle:
http://jsfiddle.net/marcusrommel/20df94wo/1/
我将此用于一个无关的主题,但我开发的一个解决方案实际上非常适合您的需要,尤其是小提琴,是最基本的

标记略有不同,但基本相同:

<svg viewBox="0 0 400 400" version="1.1">
    <path d="M 200,0 A 200 200,0,0,1,300,26.794919243112258 L 215,174.01923788646684 A 30 30,0,0,0,200,170"/>
    <path d="M 300,26.794919243112258 A 200 200,0,0,1,373.2050807568877,100 L 225.98076211353316,185 A 30 30,0,0,0,215,174.01923788646684"/>
    ...
</svg>
但是SVG可以做更多的事情,比如渐变等等。甚至可以使用文本

我将此用于一个无关的主题,但我开发的一个解决方案实际上非常适合您的需要,尤其是小提琴,是最基本的

标记略有不同,但基本相同:

<svg viewBox="0 0 400 400" version="1.1">
    <path d="M 200,0 A 200 200,0,0,1,300,26.794919243112258 L 215,174.01923788646684 A 30 30,0,0,0,200,170"/>
    <path d="M 300,26.794919243112258 A 200 200,0,0,1,373.2050807568877,100 L 225.98076211353316,185 A 30 30,0,0,0,215,174.01923788646684"/>
    ...
</svg>
但是SVG可以做更多的事情,比如渐变等等。甚至可以使用文本

我将此用于一个无关的主题,但我开发的一个解决方案实际上非常适合您的需要,尤其是小提琴,是最基本的

标记略有不同,但基本相同:

<svg viewBox="0 0 400 400" version="1.1">
    <path d="M 200,0 A 200 200,0,0,1,300,26.794919243112258 L 215,174.01923788646684 A 30 30,0,0,0,200,170"/>
    <path d="M 300,26.794919243112258 A 200 200,0,0,1,373.2050807568877,100 L 225.98076211353316,185 A 30 30,0,0,0,215,174.01923788646684"/>
    ...
</svg>
但是SVG可以做更多的事情,比如渐变等等。甚至可以使用文本

我将此用于一个无关的主题,但我开发的一个解决方案实际上非常适合您的需要,尤其是小提琴,是最基本的

标记略有不同,但基本相同:

<svg viewBox="0 0 400 400" version="1.1">
    <path d="M 200,0 A 200 200,0,0,1,300,26.794919243112258 L 215,174.01923788646684 A 30 30,0,0,0,200,170"/>
    <path d="M 300,26.794919243112258 A 200 200,0,0,1,373.2050807568877,100 L 225.98076211353316,185 A 30 30,0,0,0,215,174.01923788646684"/>
    ...
</svg>
但是SVG可以做更多的事情,比如渐变等等。甚至可以使用文本


你打算怎样做一个三角形?使用图像?帆布?SVG?或者只是CSS,如前所述?帮助您创建三角形向外看,您对纯CSS三角形的样式设置非常有限。您所能做的就是更改三角形的颜色,并添加一个假边框,在其上放置另一个三角形(可能使用伪元素)。不管怎么说,这就是你想要创造的吗?@MaxArt:太好了。但是,通过使用旋转元素(例如45度)并使两个边界透明,可以创建有边界的三角形,而不使用额外的伪元素。但问题是它只会在两个边上形成边界,而另一侧的边界可能需要45度的线性梯度。但总的来说,我认为这对于CSS来说有点太复杂了。SVG可能是一个更好的主意。@QPTR为了得到52px和165px,我使用了一些基本的几何图形(实际上得到了163,但由于圆角和边界而进行了调整),甚至没有使用三角法。SVG允许你画任何你想要的形状,用任何你想要的东西填充它,用CSS设计它们的样式,另外,你可以肯定,所以它肯定是一个更好的选择。关于最终结果,你能附上一张你想要实现的图片吗?仅仅用文字是不容易理解的。你打算怎样做一个三角形?使用图像?帆布?SVG?或者只是CSS,如前所述?帮助您创建三角形向外看,您对纯CSS三角形的样式设置非常有限。您所能做的就是更改三角形的颜色,并添加一个假边框,在其上放置另一个三角形(可能使用伪元素)。不管怎么说,这就是你想要创造的吗?@MaxArt:太好了。但是,通过使用旋转元素(例如45度)并使两个边界透明,可以创建有边界的三角形,而不使用额外的伪元素。但问题是它只会在两个边上形成边界,而另一侧的边界可能需要45度的线性梯度。但总的来说,我认为这对于CSS来说有点太复杂了。SVG可能是一个更好的主意。@QPTR为了得到52px和165px,我使用了一些基本的几何图形(实际上得到了163,但由于圆角和边界而进行了调整),甚至没有使用三角法。SVG允许你画任何你想要的形状,用任何你想要的东西填充它,用CSS设计它们的样式,另外,你可以肯定,所以它肯定是一个更好的选择。关于最终结果,你能附上一张你想要的图片吗