想问一下老师,这种圆形的警告图怎么实现

正在回答

登陆购买课程后可参与讨论,去登陆

3回答


http://img1.sycdn.imooc.com//climg/5ad83f420001ce1903950263.jpg

http://img1.sycdn.imooc.com//climg/5ad83f5a0001d8e103820259.jpg

旋转点我试了一下才找到的,可能是因为旋转中心默认为元素的中心位置,但三角形宽高都为0,所以原旋转点应该是在图中三角形的左上角,该点坐标应为(0,0),要调整旋转中心到下边的角,就横坐标移动28.87,纵坐标移动50px.

  • 老衲还能打 提问者 #1
    非常感谢你!
    2018-04-19 18:05:28
  • sherryliu 回复 提问者 老衲还能打 #2
    旋转中心那里我解释错了,不好意思,三角形原旋转中心在三角形的中间位置,而不是左上角,该点坐标为(50%,50%),左上角不是原旋转中心,但是坐标原点(0,0),下边角的坐标是(28.87px, 50px ),所以新的旋转中心设置为下边角坐标。
    2018-04-20 11:46:40
sherryliu 2018-04-20 14:29:53

http://img1.sycdn.imooc.com//climg/5ad9883f0001958d03820259.jpg

更正一下第二张图。

sherryliu 2018-04-19 10:15:04

用了一种比较笨拙的方法,黑色圆形里面套三个黄色三角形。黑色背景设置overflow:hidden使三角形溢出部分隐藏,形成圆弧三角形。调整好一个三角形的位置,设置好旋转中心,经旋转得到另外两个。三角形是用border实现的。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Document</title>

<style>

.circle{

width: 100px;

height: 100px;

border-radius: 50%;

background: #000;

overflow: hidden;

position: relative;

}

.trangle{

width: 0;

height: 0;

border-top: 50px solid #ff0;

border-left: 28.87px solid transparent;

border-right: 28.87px solid transparent;

position: absolute;

left: 21.13px;

top: 0;

transform-origin: 28.87px 50px;

}

.trangle:nth-child(2){

transform: rotate(120deg);

}

.trangle:nth-child(3){

transform: rotate(-120deg);

}

</style>

</head>

<body>

<div class="circle">

<div class="trangle"></div>

<div class="trangle"></div>

<div class="trangle"></div>

</div>

</body>

</html>


  • 提问者 老衲还能打 #1
    请问一下 border-left和right的 28.87px怎么算出来的,然后定位时left:21.13怎么算出来的, ;
    2018-04-19 13:03:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
响应式开发与常用框架 2018
  • 参与学习           人
  • 提交作业       2198    份
  • 解答问题       5012    个

如果你有web端基础,既想进阶,又想进军移动端开发,那就来吧,我们专题为你带来的课程有HTML5、CSS3、移动基础、响应式、bootstrap、less等,让你在前端道路上畅通无阻!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师