[基础] 在 css 中绘制三角形及相关应用 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iFat3
V2EX    CSS

[基础] 在 css 中绘制三角形及相关应用

  •  
  •   iFat3 2018-04-14 23:43:46 +08:00 2897 次点击
    这是一个创建于 2813 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简言

    本文简要阐述了用 CSS 边框的方法在页面上绘制三角形,包括几种典型的三角形绘制,还介绍了几个简单的应用场景。利用边框绘制三角形方法只是众多方案中的一种,大家根据项目实际,选用最适宜项目的方案。

    CSS 与三角形

    1 基本原理

    在 CSS 中,我们可以利用 border-top、border-left、border-bottom、border-left 四个属性来绘制三角形。实现的基本原理参见下面的演示代码及其运行结果。

    核心代码:

    .box { width: 50px; height: 50px; border-top: 50px solid red; border-left:50px solid blue; border-right: 50px solid green; border-bottom: 50px solid yellow; } 

    运行结果:

    边框基本原理

    演示代码

    从以上代码及运行结果不难想出绘制三角形的办法,我们只要将 .box 的长度和宽度都设成 0,就可以得到四个等腰三角形。再将不想保留的三角形边框颜色设置成透明色(即:border-color : transparent)就可以隐藏掉不想保留的三角形。从而完成三角形的绘制。

    2 绘制三角形

    2.1 等边三角形

    等边三角形(又称正三边形),为三边相等的三角形,其三个内角相等,均为 60°,它是锐角三角形的一种。等边三角形也是最稳定的结构。

    2.1.1 尖角向上:

    .triangle-up { width: 0; height: 0; border-bottom: 100px solid red; border-left: 57.735px solid transparent; border-right: 57.735px solid transparent; } 

    尖角向上等边三角形

    演示代码

    2.1.2 尖角向下:

    .triangle-down { width: 0; height: 0; border-top: 100px solid red; border-left: 57.735px solid transparent; border-right: 57.735px solid transparent; } 

    尖角向下等边三角形

    演示代码

    2.1.3 尖角向左:

    .triangle-left { width: 0; height: 0; border-right: 100px solid red; border-top: 57.735px solid transparent; border-bottom: 57.735px solid transparent; } 

    尖角向左等边三角形

    演示代码

    2.1.4 尖角向右:

    .triangle-right { width: 0; height: 0; border-left: 100px solid red; border-top: 57.735px solid transparent; border-bottom: 57.735px solid transparent; } 

    尖角向右等边三角形

    演示代码

    2.2 等腰直角三角形

    等腰直角三角形是特殊的等腰三角形,它的两底角相等,都是 45°;它的两腰长度相等。

    2.2.1 左上直角:

    .triangle-top-left{ width: 0; height: 0; border-top: 100px solid red; border-right: 100px solid transparent; } 

    左上直角等腰直角三角形

    演示代码

    2.2.2 右上直角:

    .triangle-top-right { width: 0; height: 0; border-top: 100px solid red; border-left: 100px solid transparent; } 

    右上直角等腰直角三角形

    演示代码

    2.2.3 左下直角:

    .triangle-bottom-left{ width: 0; height: 0; border-bottom: 100px solid red; border-right: 100px solid transparent; } 

    左下直角等腰直角三角形

    演示代码

    2.2.4 右下直角:

    .triangle-bottom-right { width: 0; height: 0; border-bottom: 100px solid red; border-left: 100px solid transparent; } 

    右下直角等腰直角三角形

    演示代码

    3 相关应用

    3.1 弹出框(popover)组件

    弹出框(popover)或提示框(tooltip)一般都会用到三角形,三角形明确并加强了指向作用。类似于 Bootstrap 的 Popover 和 Tooltip 组件都用到了边框三角形的实现方式。

    弹出框(popover)组件

    演示代码

    上述演示只是实现了顶部弹出框,其它方向弹出框参考上述实现方式即可。

    3.2 视频播放按钮

    视频播放按钮(Play button)可以采用边框三角形的实现方式。

    视频播放按钮组件

    演示代码

    三角形的应用场景还有很多,比如下拉菜单(dropdown menu)中,或者是“顶”及“踩”按钮等。

    边框实现三角形只是众多方案之一,大家可以根据项目实际,选择小图标方案或选用 SVG 方案。

    1 条回复    2018-04-23 23:56:19 +08:00
    POPOEVER
        1
    POPOEVER  
       2018-04-23 23:56:19 +08:00
    问你个简单问题,三角形边框怎么做
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2575 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 05:11 PVG 13:11 LAX 21:11 JFK 00:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86