如何使用css3/javascript将圆分成12等份并带有颜色

2024-01-11

HTML:

<?xml version="1.0" encoding="utf-8"?>
<html>
  <head>
    <title>Circle</title>
    <link rel="stylesheet" href="stylesheet.css" type="text/css" />
  </head>
  <body>
    <div class="circle"><p class="innerCircle"></p></div>
  </body>
</html>

CSS:

.circle {
    width: 450px;
    height: 450px;

    border-top: 30px solid #416fa6;
    border-right: 30px solid #718242;
    border-bottom: 30px solid #63ae98;
    border-left: 30px solid #b45447;
    -webkit-border-radius: 300px;
       -moz-border-radius: 300px;
            border-radius: 300px;
}
.innerCircle {
    width: 0px;
    height: 0px;
    border-top: 210px solid #416FA6;
    border-left: 210px solid #B45447;
    border-right: 210px solid #718242;
    border-bottom: 210px solid #FFA500;
    -webkit-border-radius: 100%;
       -moz-border-radius: 100%;
            border-radius: 100%;
    margin-left: 15px;
    margin-right:0px;
    margin-top: 15px;
    margin-bottom:0px; 
    /* border-radius: 50%;
    background-color: green; */
}

我想用线把一个圆分成12部分内圆如下图所示。我尝试了一些但不完全。所以请给一些想法。

提前致谢。


这可以使用 CSS 转换来完成

  1. 对于 12 个相等的切片,每个切片角度将为 30 度。

  2. 我们需要根据垂直轴和切片起点之间的角度旋转每个切片。所以第一个切片将旋转 0deg,最后一个切片将旋转 330deg

  3. 此外,我们需要将每个切片倾斜负数(90 度 - 切片角度) 在这种情况下,它是 -(90deg - 30deg) =skewY(-60deg)

  4. 关于正文:

a) 我们需要使用以下命令来恢复切片内容的倾斜skewY(60deg)

b) 为了使文本在切片中居中,我们需要将其旋转切片角度的一半,因此:rotate(15deg)

FIDDLE http://jsfiddle.net/danield770/hwpa0uk1/9/

.circle {
  position: relative;
  border: 1px solid black;
  padding: 0;
  margin: 1em auto;
  width: 20em;
  height: 20em;
  border-radius: 50%;
  list-style: none;
  overflow: hidden;
}

li {
  overflow: hidden;
  position: absolute;
  top: 0;
  right: 0;
  width: 50%;
  height: 50%;
  transform-origin: 0% 100%;
}

.text {
  position: absolute;
  left: -100%;
  width: 200%;
  height: 200%;
  text-align: center;
  transform: skewY(60deg) rotate(15deg);
  padding-top: 20px;
 
}

li:first-child {
  transform: rotate(0deg) skewY(-60deg);
}

li:nth-child(2) {
  transform: rotate(30deg) skewY(-60deg);
}

li:nth-child(3) {
  transform: rotate(60deg) skewY(-60deg);
}

li:nth-child(4) {
  transform: rotate(90deg) skewY(-60deg);
}

li:nth-child(5) {
  transform: rotate(120deg) skewY(-60deg);
}

li:nth-child(6) {
  transform: rotate(150deg) skewY(-60deg);
}

li:nth-child(7) {
  transform: rotate(180deg) skewY(-60deg);
}

li:nth-child(8) {
  transform: rotate(210deg) skewY(-60deg);
}

li:nth-child(9) {
  transform: rotate(240deg) skewY(-60deg);
}

li:nth-child(10) {
  transform: rotate(270deg) skewY(-60deg);
}

li:nth-child(11) {
  transform: rotate(300deg) skewY(-60deg);
}

li:nth-child(12) {
  transform: rotate(330deg) skewY(-60deg);
}

li:first-child .text {
  background: green;
}

li:nth-child(2) .text {
  background: tomato;
}

li:nth-child(3) .text {
  background: aqua;
}

li:nth-child(4) .text {
  background: yellow;
}

li:nth-child(5) .text {
  background: orange;
}

li:nth-child(6) .text {
  background: purple;
}

li:nth-child(7) .text {
  background: cyan;
}

li:nth-child(8) .text {
  background: brown;
}

li:nth-child(9) .text {
  background: gray;
}

li:nth-child(10) .text {
  background: pink;
}

li:nth-child(11) .text {
  background: maroon;
}

li:nth-child(12) .text {
  background: gold;
}
<ul class="circle">
  <li>
    <div class="text">1</div>
  </li>
  <li>
    <div class="text">2</div>
  </li>
  <li>
    <div class="text">3</div>
  </li>
  <li>
    <div class="text">4</div>
  </li>
  <li>
    <div class="text">5</div>
  </li>
  <li>
    <div class="text">6</div>
  </li>
  <li>
    <div class="text">7</div>
  </li>
  <li>
    <div class="text">8</div>
  </li>
  <li>
    <div class="text">9</div>
  </li>
  <li>
    <div class="text">10</div>
  </li>
  <li>
    <div class="text">11</div>
  </li>
  <li>
    <div class="text">12</div>
  </li>

</ul>

NB:IE9 和 Safari/iOS 分别需要 -ms 和 -webkit 供应商前缀。 (caniuse http://caniuse.com/#feat=transforms2d)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用css3/javascript将圆分成12等份并带有颜色 的相关文章

  • Node js 使用中间件重定向进行过多重定向

    在我的 Node js 应用程序 我使用的是express 4 x 中 我想检查用户是否已登录 如果用户未登录 我想重定向到我的登录页面 然后我在中间件中这样做 服务器 js app use function req res next if
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 如何按照编写的顺序迭代 javascript 对象属性

    我发现了代码中的一个错误 我希望通过最少的重构工作来解决该错误 此错误发生在 Chrome 和 Opera 浏览器中 问题 var obj 23 AA 12 BB iterating through obj s properties for
  • 如何仅在 NextJS 站点构建期间使用 getInitialProps?

    当使用 NextJS 构建静态站点时 我想要getInitialProps方法仅在构建步骤期间触发 而不是在客户端上触发 在构建步骤中 NextJS 运行getInitialProps 方法 https nextjs org docs fe
  • jquery window.open 在 ajax 成功中被阻止

    尝试在我的 ajax 成功调用中打开一个新的浏览器窗口 但是 它被阻止为弹出窗口 我做了一些搜索 发现用户事件需要绑定到 window open 才能避免这种情况发生 我还找到了这个解决方案 您可以在 ajax 之前打开一个空白窗口 然后在
  • Jquery 中的动态滚动位置

    请帮助我解决以下情况 我有 3 个页面 当滚动到达第二页时 用户滚动页面 它必须找到特定的 ID 然后触发一个函数 一旦第三页开始 另一个函数就会触发 根据要求我不应该使用任何插件
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • 是否有任何非轮询方式来检测 DOM 元素的大小或位置何时发生变化?

    很长一段时间以来 我一直在寻找一种方法来检测 DOM 元素的大小或位置何时发生变化 这可能是因为窗口调整了大小 或者因为向该元素添加了新的子元素 或者因为在该元素周围添加了新元素 或者因为 CSS 规则已更改 或者因为用户更改了浏览器的字体
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • 如何使JavaScript函数在Eclipse“大纲视图”中可见?

    我有这样的代码 但如果它在匿名函数中定义 则无法打开函数大纲 类没有问题 我该如何概述something2 请分享一些提示 我可以将所有函数标记为构造函数 但这是无效的方法 start of track event required deb
  • 覆盖并重置 CSS 样式:auto 或 none 不起作用

    我想覆盖为所有表定义的以下 CSS 样式 table font size 12px width 100 min width 400px display inline table 我有一个特定的表 其类名为 other 最后的餐桌装饰应该是这
  • 将 javascript 整数转换为字节数组并返回

    function intFromBytes x var val 0 for var i 0 i lt x length i val x i if i lt x length 1 val val lt lt 8 return val func
  • 悬停时为 SVG 制作动画

    我正在尝试在悬停时为 SVG 文件设置动画 默认情况下 它可以使用 svg 函数实现出色的动画效果 例如
  • 当用户单击链接时,如何记录 MixPanel 事件?

    当用户单击某种类型的链接时 我试图在 MixPanel 中记录一个事件 我正在使用 JQuery 不引人注意地完成此操作 据我所知 我需要添加一个回调函数 以便在记录事件后将用户带到 URL 这是我正在使用的代码 不幸的是
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 为范围旋钮 ionic-range 添加边框颜色

    我正在使用离子范围添加范围滑块 并想向范围旋钮添加边框 由于它的 ionic4 和范围旋钮是 Shadow dom 的一部分 我无法使用范围旋钮的 border 属性直接更改边框 我已附上我想要实现的图像 范围旋钮周围有白色边框 现有属性只
  • 如何在 javascript 正则表达式中匹配平衡分隔符?

    我原以为这个问题是不可能的 据我所知 Javascript 的正则表达式既没有递归插值 也没有漂亮的 NET 平衡组功能 但问题就在那里 如问题 12 所示正则表达式 alf nu http regex alf nu 匹配平衡对 lt an
  • 单击列表时使用 bootstrap Dropdown 防止下拉菜单消失

    我正在使用使用引导下拉菜单 http twitter github com bootstrap javascript html dropdowns生成下拉菜单 我想防止点击菜单时菜单消失 我已经实现了以下代码 但它不起作用 知道如何修复它吗
  • 带显示块的SPAN

    和默认有什么区别 div 元素和默认值 span 元素与display block HTML 元素的有效性和语义存在差异 否则它们是相同的 div and span两者都被定义为通用容器 在 HTML 方面没有更深层次的含义 一个默认为块显

随机推荐

  • 需要帮助调试旨在更新 Google 云端硬盘中数百个文件的 Google Apps 脚本代码

    我工作的公司刚刚更新了其品牌 影响了保存到共享 Google 云端硬盘的数百个 Excel 和 PowerPoint 文件 有一个团队正在努力更新文件 我的挑战是找到一种有效的方法来添加新文件并删除 Google 云端硬盘中的旧文件 我创建
  • 实现一个简单的 Dagger2 示例

    我是 Dagger2 的新手 我一直使用 Koin 我正在尝试实现一个简单的示例 但我真的不知道我缺少什么 这是我到目前为止所得到的 应用程序 gradle ext daggerVersion 2 23 2 implementation c
  • “插入”和“删除”表是否保证在 AFTER UPDATE 触发器中以相同的顺序返回其记录?

    如果我有一个 AFTER UPDATE 触发器 将会 SELECT FROM inserted and SELECT FROM deleted 按同样的顺序把他们的记录还给我吗 IE 假设我能够索引到他们的结果集 将 del 5 和 ins
  • 将 CSV 文件导入 C#

    我正在构建一个网站 要求之一是用户从电子邮件客户端导出联系人 然后将其导入到网站中 因为每个电子邮件客户端以稍微不同的格式导出他们的联系人 这让我摸不着头脑 必须找到处理它的最佳方法 因为我不知道字段是什么 也不知道分隔符是什么 我只想瞄准
  • 获取字体支持的字符 - 在 C# 中

    我有一个支持日语字符的第三方字体 我需要将其用于应用程序 每当该字体不支持某个字符时 就会绘制常见的矩形 默认字符 显然 并非所有日语字符都受支持 因为如果我尝试绘制翻译办公室给我们的翻译 就会发现有很多矩形 每当使用不支持的字符时 我都需
  • 如何将 JS 对象集合发送到 ASP.NET API 服务?

    我正在尝试将 JavaScript 对象集合发送到我的 API 服务 但服务器收到空对象列表
  • 如何同时部署两个 ClickOnce 版本?

    我希望能够为我的应用程序提供一个测试 ClickOnce 服务器 用户可以在其中并行运行生产版本和测试版本 这可能吗 我首先尝试使用以下内容AssemblyInfo cs并且还更改了 ClickOnce 部署中的名称 尽管所实现的所有这些都
  • 何时将 volatile 与寄存器/局部变量一起使用

    在 CUDA 中使用 volatile 限定符声明寄存器数组的含义是什么 当我尝试使用 volatile 关键字和寄存器数组时 它删除了溢出寄存器内存到本地内存的数量 即强制 CUDA 使用寄存器而不是本地内存 这是预期的行为吗 我在 CU
  • 访问 BeanFactoryPostProcessor 中的属性

    我正在尝试创建一些东西 它将根据可配置的属性自动创建bean 来自application yml等 因为我不能像通常那样访问属性组件BeanFactoryPostProcessor 我有点困惑如何访问它们 如何访问应用程序属性BeanFac
  • 如何在 .NET 交互式笔记本中绘制图像(C#、VS Code)

    我正在尝试使用 C 在 NET 交互式笔记本中绘制简单的图形 有点像 Dr Racket 的 C 版本 到目前为止我见过的最简单的事情是using System Drawing SFML NET Raylib cs 也可以工作 但它们会打开
  • Python 中的 NoSql 注入

    当试图提出这个问题时 我得到了this one https stackoverflow com questions 4167077 mongodb injection它使用的是Java 并且在答案中给出了一个Ruby示例 并且似乎只有在使用
  • Vaadin 通过单击按钮重定向到 URL

    我已经搜索了很长时间 但我确实无法弄清楚这一点 如何将用户重定向到新的外部链接 例如www google com 当他们点击 Vaadin 中的按钮时 到目前为止我唯一能做的就是将链接放入链接中 Link link new Link lin
  • 如何构建没有版本后缀的ffmpeg共享库

    有没有一种方法可以配置为Android构建没有版本号后缀的ffmpeg共享库 我能够使用不同的选项进行构建 但总是得到像 libavcodec so 57 这样的文件 我需要没有后缀的库 例如 libavcodec so 我认为选项 dis
  • 为什么 UDP 在其数据包中有两次“UDP 长度”字段?

    为什么 UDP 在其数据包中有两次 UDP 长度 字段 这不是多余的吗 如果需要进行某种错误检查 请提供示例 你的观察是正确的 长度字段是多余的 因为IP头和UDP头都有长度字段 我对这种冗余原因的唯一猜测是 它发生是因为 UDP 是在当时
  • 部分 .csproj 文件

    是否可以将 csproj 中的信息拆分到多个文件中 有点像项目版本partial class特征 您不能拥有多个主 csproj 但因为 csproj 的底层接线是使用 msbuild 完成的 所以您可以简单地拥有多个相互导入的部分 csp
  • SwiftUI 列表在任何视图更改时重置滚动

    我有一个非常简单的列表 其中有一些部分 在同一视图中 我还有一个按钮 当选择任何列表项时 该按钮将被启用 这是由状态变量控制的 当发生这种情况时 如果列表向下滚动 状态变量将发生变化 以启用按钮 并且所有视图将刷新 导致我的列表滚动到顶部
  • 使用 pandas 组合日期和时间列

    我有一个带有以下列的 pandas 数据框 data Date 01 06 2013 02 06 2013 02 06 2013 02 06 2013 02 06 2013 03 06 2013 03 06 2013 03 06 2013
  • 使用 memcache 进行 Ratchet 会话数据同步

    我创建了一个 Ratchet Web Socket 服务器并尝试使用 SESSIONS 在 HTTP Web 服务器 端口 80 上的 php 文件中 我像这样设置会话数据 use Symfony Component HttpFoundat
  • PBEWITHSHA256AND128BITAES-CBC-BC 在 RedHat 6.4 上创建 java.security.NoSuchAlgorithmException

    我们有一个应用程序使用Bouncy Castle使用加密数据PBEWITHSHA256AND128BITAES CBC BC算法 它运行良好Ubuntu跑步OpenJDK 1 7 但是当我们把它移到RedHat 6 4也在运行OpenJDK
  • 如何使用css3/javascript将圆分成12等份并带有颜色

    HTML div class circle p class innerCircle p div CSS circle width 450px height 450px border top 30px solid 416fa6 border