1.不同理解的边框

<div class="border"></div>
.border {width: 50px;height: 50px;border: 2px solid;border-color: #96ceb4 #ffeead #d9534f #ffad60;
}


将border设置大一点

.border {width: 50px;height: 50px;border: 50px solid;border-color: #96ceb4 #ffeead #d9534f #ffad60;
}


当border足够宽,这才反应过来border就像我们在生活中见过的相框,它是由四个梯形拼凑而成。中间白色区域就是元素的宽高,
现在我们将元素宽高去除掉:

.border {width: 0;height: 0;border: 50px solid;border-color: #96ceb4 #ffeead #d9534f #ffad60;
}

那么现在你想要什么颜色的三角形呢?比如我要中国红,那就将上,左右边框颜色设置为透明,这样就得到了一个红色三角形
将上,左右边框颜色设置为透明

.border {width: 0;height: 0;border: 50px solid;border-color: transparent transparent #d9534f;
}


当然这样还不够完美,我们可以看到虽然上方没颜色,还是占据了部分高度,对于强迫症来说真的不舒服,我们再将上边框高度去除掉。


将上边框高度去除掉。

.border {width: 0;height: 0;border-bottom: 50px solid #d9534f;border-left: 50px solid transparent;border-right: 50px solid transparent;border-top: 0;
}

这样就是一个比较完美的三角形了:

2.CSS画一个空心三角形(只有边框)

那么现在我们想画一个只有边框的空心三角形怎么做呢,首先三角形本身就是由border实现,所以没法在border上添加border了,最直接的办法就是再新建一个小一点的三角形定位上去。

这里我使用伪类再定义一个小一点三角形,可以看到是这样:

.border {width: 0;height: 0;border-style:solid;border-width: 0 50px 50px;border-color: transparent transparent #d9534f;position: relative;
}
.border:after{content: '';border-style:solid;border-width: 0 40px 40px;border-color: transparent transparent #96ceb4;position: absolute;top: 0;left: 0;
}


可以看到小三角顶端与大三角形对齐,且小三角形左侧恰好与大三角形中心部分对齐。这是因为伪类元素定位参照对象的内容区域没有任何东西,在我们没隐藏其它三个三角形之前,四个三角形的中心就是父级元素。

那么进行简单定位微调,可以看到效果变成这样:

.border:after {content: '';border-style: solid;border-width: 0 40px 40px;border-color: transparent transparent #96ceb4;position: absolute;top: 6px;left: -40px;
}


最后我们将小三角形的边框颜色换成白色,那么一个只有边框的空心三角形就诞生了:

.border:after {content: '';border-style: solid;border-width: 0 40px 40px;border-color: transparent transparent #fff;position: absolute;top: 6px;left: -40px;
}

3.实现一个箭头

实现一个箭头就更好说了,我们将定位的三角形设置的与之前的三角形一样大,简单定位,比如这样:

        .border:after {content: '';border-style: solid;border-width: 0 50px 50px;border-color: transparent transparent green;position: absolute;top: 6px;left: -50px;}


再将背景色改成白色即可:

        .border:after {content: '';border-style: solid;border-width: 0 50px 50px;border-color: transparent transparent #fff;position: absolute;top: 6px;left: -50px;}

.border {width: 0;height: 0;border-style: solid;border-width: 0 50px 50px;border-color: transparent transparent #d9534f;position: relative;
}.border:after {content: '';border-style: solid;border-width: 0 50px 50px;border-color: transparent transparent #fff;position: absolute;top: 6px;left: -50px;
}.border:hover{border-top: 50px solid rgb(126, 212, 177);border-bottom: 0;
}.border:hover::after{border-top: 50px solid #fff;border-bottom: 0;margin-top: -62px;
}

分析:

把白色换成蓝色看看

.border:hover{border-top: 50px solid rgb(126, 212, 177);border-bottom: 0;
}.border:hover::after{border-top: 50px solid rgb(125, 145, 211);border-bottom: 0;margin-top: -62px;
}

把margin去掉看看

 .border:hover{border-top: 50px solid rgb(126, 212, 177);border-bottom: 0;}.border:hover::after{border-top: 50px solid rgb(125, 145, 211);border-bottom: 0;}

当然也可以用::before和::after一起写

 .border {width: 0;height: 0;position: relative; }.border::before{content: '';border-left: 50px solid transparent;border-right: 50px solid transparent;border-top: 0;border-bottom: 50px solid #d9534f;position: absolute;top: 0;left: 0;}.border:after {content: '';border-left: 50px solid transparent;border-right: 50px solid transparent;border-top: 0;border-bottom: 50px solid #7dc71b;position: absolute;top: 6px;left: 0px;}

换成白色

.border:hover:before{border-top: 50px solid rgb(126, 212, 177);border-bottom: 0;
}
.border:hover::after{border-top: 50px solid rgb(17, 66, 228);border-bottom: 0;margin-top: -12px;
}


换成白色

        .border {width: 0;height: 0;position: relative; margin:30px auto;}.border::before{content: '';border-left: 50px solid transparent;border-right: 50px solid transparent;border-top: 0;border-bottom: 50px solid #d9534f;position: absolute;top: 0;left: 0;}.border:after {content: '';border-left: 50px solid transparent;border-right: 50px solid transparent;border-top: 0;border-bottom: 50px solid #7dc71b;position: absolute;top: 6px;left: 0px;}.border:hover:before{border-top: 50px solid rgb(126, 212, 177);border-bottom: 0;}.border:hover::after{border-top: 50px solid #fff;border-bottom: 0;margin-top: -12px;}

总结:

用::after写

.border {width: 0;height: 0;border-style: solid;border-width: 0 50px 50px;border-color: transparent transparent #d9534f;position: relative;
}.border:after {content: '';border-style: solid;border-width: 0 50px 50px;border-color: transparent transparent #fff;position: absolute;top: 6px;left: -50px;
}.border:hover{border-top: 50px solid rgb(126, 212, 177);border-bottom: 0;
}.border:hover::after{border-top: 50px solid #fff;border-bottom: 0;margin-top: -62px;
}


用::before ::after写

        .border {width: 0;height: 0;position: relative; margin:30px auto;}.border::before{content: '';border-left: 50px solid transparent;border-right: 50px solid transparent;border-top: 0;border-bottom: 50px solid #d9534f;position: absolute;top: 0;left: 0;}.border:after {content: '';border-left: 50px solid transparent;border-right: 50px solid transparent;border-top: 0;border-bottom: 50px solid #7dc71b;position: absolute;top: 6px;left: 0px;}.border:hover:before{border-top: 50px solid rgb(126, 212, 177);border-bottom: 0;}.border:hover::after{border-top: 50px solid #fff;border-bottom: 0;margin-top: -12px;}


参考:
CSS画一个三角形,CSS绘制空心三角形,CSS实现箭头

[css] CSS画一个三角形,CSS绘制空心三角形相关推荐

  1. 玩转border-radius,用CSS来画一个花式流程图~

    用Html标签和css来写一个花式流程图,先看这张已经完工的流程图,一个白色圆形,中心是文字,围绕它周围的是8个彩色的花瓣,花瓣中间有文字.另外圆环周围缺角的三角形部分分别对应的是花瓣的颜色. 难点分 ...

  2. CSS 如何画一个三角形?原理是什么?

    css 画三角形的原理是利用盒子边框完成的,实现步骤可以分为以下四步: 1.设置一个盒子 2.设置四周不同颜色的边框 3.将盒子宽高设置为 0,仅保留边框 4.得到四个三角形,选择其中一个后,其他三角 ...

  3. 面试官:CSS如何画一个三角形?原理是什么?

    一.前言 在前端开发的时候,我们有时候会需要用到一个三角形的形状,比如地址选择或者播放器里面播放按钮 通常情况下,我们会使用图片或者svg去完成三角形效果图,但如果单纯使用css如何完成一个三角形呢? ...

  4. CSS如何画一个三角形?

    通常情况下,我们会使用图片或者svg去完成三角形效果图,但如果单纯使用css如何完成一个三角形呢? 实现过程似乎也并不困难,通过边框就可完成 盒子模型 <style>.border {wi ...

  5. html如何绘制棒棒糖,如何使用css来画一个棒棒糖

    先来看一下效果图: (相关视频教程推荐:css视频教程) CSS代码: 棒棒糖 用css画一个棒棒糖 要求: 1:棒棒糖中间文字为水平居中 2:不得少于三层颜色 .round{ width: 100p ...

  6. html如何画出抽奖的转盘,css 如何“画”一个抽奖转盘

    主要描述的是如何运用 css 绘制一个抽奖转盘,并运用原生 js 实现转盘抽奖效果. 先来张效果图: 布局 一般来说,转盘一般有四个部分组成:外层闪烁的灯.内层旋转的圆盘.圆盘上的中奖结果.指针. 所 ...

  7. css如何画一个梯形

    要用 CSS 画一个梯形,你可以使用伪元素和 CSS 三角形. 首先,你需要在 HTML 中创建一个空的容器元素,比如一个 div.然后,在 CSS 中为该元素添加两个伪元素,使用 ::before ...

  8. 动态太极图html代码,用一个div加一段css代码画一个太极图

    [摘要] 在王海达博客看到了这段代码,仅使用一个div和css就画出了一个标准的太极阴阳鱼图. 在王海达博客看到了这段代码,仅使用一个div和css就画出了一个标准的太极阴阳鱼图.看了下代码,发现其利 ...

  9. 【CSS】画一个扇形

    利用border属性画一个矩形 border: 200px solid red; 2.在矩形的基础上,画出三个等分的三角形,调整width border-left: 200px solid red; ...

最新文章

  1. ios 部分string颜色_ios 设置字符串中某段字符的颜色
  2. NSPredicate
  3. nginx 安装及使用命令
  4. python可视化界面工具_8个流行的 Python可视化工具包,你喜欢哪个?
  5. 为什么互联网公司都喜欢自研业务系统?
  6. centos内核参数优化
  7. JavaSE 国际化 简单例子
  8. clion的project区的字体以及自动排版的快捷键修改
  9. POJ1182 食物链 —— 种类并查集
  10. P4879-ycz的妹子【分块】
  11. 约7459元!索尼Xperia 1即将亮相:全球首款4K骁龙855新机
  12. gtk窗口和标签控件范例代码
  13. IO库----IO类,文件输入输出,string流
  14. python调用perl_从Python调用Perl脚本不断返回值
  15. P1827 [USACO3.4] 美国血统 American Heritage
  16. 360安全卫士弹窗广告怎么彻底关闭
  17. linux挂接移动硬盘,LINUX挂接移动硬盘
  18. android学习笔记----ListView和各种适配器简介
  19. 在麦加总督的支持赞助下,朝觐博览会定于2023年1月举行
  20. mtk6735编译总结|MTK芯片/MTK手机攻略指令大全

热门文章

  1. VBScript里msgbox出现中文乱码的解决办法
  2. html天气插件iframe,HTML_利用iframe在网页中显示天气附效果截图,css: 复制代码代码如下: *{margi - phpStudy...
  3. d-link路由器虚拟服务器,两台D-Link路由器之间如何桥接上网
  4. 2018年贺岁档电影票房大数据报告!国产电影的黄金时代已经到来?
  5. pe系统如何读取手机_如何让Android手机在winpe连接电脑后显示?
  6. YC全球总裁:我招揽陆奇好多年,如今终于如愿了!
  7. 北京交通拥堵问题及其建议
  8. TCP/IP协议就是这个玩意(不看也不影响拿到50K!但是程序员应该知道这些)持续更新中
  9. VS 给自己开发的Qt程序加上程序图标ico
  10. 小学生台灯哪个品牌更护眼?精选教育部认可护眼灯品牌