边框写三角形,这个技能从事前端的小伙伴应该都不陌生,不过大多数都是知其然而不知其所以然,今天我们就来探究一下这里面的原理。

随意的在页面上给一个盒子,然后给一个边框来看看。

这样的一段代码,给到盒子的宽高都是100像素,然后10个像素实线的红色边框;

效果图如下,看起来没有什么特别的,好像和三角形也没什么关系:

但是当我们把每一条边的颜色改得不一样的时候,就能看出来一些端倪了:

可以看到,当每一条边的颜色都不一样的时候,每两条边交汇的地方是一个斜角。

其实这个斜角一直都存在,只是当我们两条边的颜色一样的时候看不出来而已,曾经也有人在面试的时候问到过这个问题:

边框是什么形状的?大家现在可有答案了?

不过从这里来看的话,虽然有一个斜角了,但是和三角形好像还是没有太大的关系啊?

不着急,再往下走。当我们把盒子的宽高慢慢的减小,我们可能会发现一些不一样的东西;

下图四个盒子的宽高分别是:

100,80,40,10

好像可以看到盒子慢慢变小,边框虽然没有发生变化;

但是当斜角慢慢靠近的时候,似乎有了一点三角形的痕迹,那么再接着缩小盒子,来看看效果:

看不清楚?我们把边框的宽度改大一点试试

可以看到,当宽高为0,四条边框的颜色不一样的时候,边框或者说整个盒子变成了一个由四个三角形所组成的矩形;

这是上图的代码:

在这里,我加大了边框的宽度,并且把盒子的宽度和高度都设置为0(当值为0的时候可以不写单位)。

这时候三角形已经出来了,但是是四个,而我们通常情况下只需要一个。

所以我们可以考虑把其他三条边框如果变成透明的话是不是就只剩下其中一个了呢?

如果我现在需要一个尖角朝上的三角形,那么从这四个三角形里面,貌似只有下面这条边框符合我的需求;

所以我需要把上边框,和左右两条边框的颜色都改成透明的。

在这里,透明可以用transparent来表示:

得到下图:

可以看到这时候就只剩下一个三角形了,其他的三条边看不见了。

看起来这样似乎就完成了,但是我们还需要处理一下兼容性,transparent这个值在IE6下会显示成一个黑色。

不过,我们可以用边框的样式来解决,代码如下:

这里,我们需要把其他三条边框的样式改成点线,这样在IE6下就能显示透明了。

然后把上面的代码优化一下就好了:

上面我们已经得到一个等腰的三角形了,基本已经能够满足我们的日常需求。

不过总有一些特殊需求,比如一个不规则的三角形?

或者一个直角三角形?

或者我们怎么去确定三角形的宽高呢?

从上面的代码可以看出来改变边框的width值可以改变边框的高度。

但是同时也改变了边框的宽度,我们可以再仔细看看这张图:

单看下面的那个三角形,可以看到这个三角形的底边宽度完全等于左右两条边框的高度之和。

这时候我们再回过头来看看我们的代码:

这段代码里面边框的颜色各不相同,边框的样式也是各不相同,唯独宽度是四条边都是一样的。

我们把其他三条边的颜色先还原回来,然后来改一些边框的宽度试试会有什么效果:

这是当我把边框的上下两条边的宽度为100,左右两条边的宽度为50的时候的样子。

如果说光看下面这一条边的话,它的高度没有发生任何变化,但是底边的宽度明显只有100个像素了,这也就证明了上面那句话:

单看下面的那个三角形,可以看到这个三角形的底边宽度完全等于左右两条边框的高度之和。

那么也就是说左右两边的边框宽度决定了下面这个三角形的宽度;

而下面这条边的宽度决定了这个三角形的高度,换成代码也就是:

border-left-width 和 border-right-width决定了这个三角形的宽度,border-bottom-width决定了这个三角形的宽度。

我们进一步来看,如果左右两条边的宽度不一样会发生什么呢?

这是当我左边的边框宽度只有10像素,右边的边框宽度为80像素的时候看到的效果。

可以发现,这个时候三角形已经变成了一个任意的三角形了。

当然,它的宽高还是能算出来的;

宽度就是底边的高度,也就是100像素,而宽度是左右两条边框宽度之和,也就是90像素:

再把其他三条边“隐藏”起来,那么我们将得到一个不规则的三角形:

甚至直角三角形:

这是代码:

其实代码只是一个工具,能做到什么,取决于我们的想法…

大家甚至可以想想,用以上知识点,稍微拓展一下,能否写一个梯形呢?

前端怎么画三角形_前端小技巧:边框写三角形相关推荐

  1. 如何让你瞬间拥有百万粉丝 前端F12的那些装X小技巧

    如何让你瞬间拥有百万粉丝 前端F12的那些装X小技巧 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客,亓官劼的博客2 ...

  2. css 自动换行_前端必备!20个CSS小技巧

    在日常学习和工作中,你是否经常觉得时间不够用?为了帮助你提高效率,今天,就为大家分享一些CSS小技巧,如果你感觉有用,也可以收藏与分享给你的小伙伴们~ 1. 文字水平居中 将一段文字置于容器的水平中点 ...

  3. 前端开发者应该知道的 CSS 小技巧

    一些小技巧让你的CSS技术更专业 使用:not()去除导航上不需要的边框 为body添加行高 垂直居中任何元素 逗号分离的列表 使用负nth-child选择元素 使用SVG图标 文本显示优化 在纯CS ...

  4. 前端改变div排序_前端面试经常问到的问题

    CSS 1.盒模型 2.flex 3.css单位 4.css选择器 5.bfc 清除浮动 6.层叠上下文 7.常见页面布局 8.响应式布局 9.css预处理,后处理 10.css3新特性 animat ...

  5. 前端图片合成技术_前端图片合并方案调研

    介绍 通过产品线数据分析,发现70%左右的图片为小于300K的图片,50%左右为小于100K的图片,因此调研前端图片合并方案是否有利于提高图片批量上传速度.之前做过的前端ZIP方案也是类似的思路. 工 ...

  6. 怎么共享电脑上的文件_电脑小技巧--远程访问共享文件夹

    电脑小技巧--电脑做无线热点 电脑小技巧--U盘坏了如何修复 电脑小技巧--自动维护计划.任务关闭.禁用 电脑小技巧--预防U盘中毒 电脑小技巧--提高U盘读写速度 电脑小技巧--调整引导高级选项加快 ...

  7. java编码技巧_编码小技巧 让java编程更便捷

    经过一段时间的编码,程序员们或多或少会形成自己的编码习惯,好的习惯能帮助自己写出更好的代码,方便程序的维护.抱着侥幸心理,对"可能会出错"的代码没有做"防错性程序设计&q ...

  8. 360浏览器保存密码设置_电脑小技巧查看浏览器保存的系统账号密码

    电脑小技巧--电脑做无线热点 电脑小技巧--U盘坏了如何修复 电脑小技巧--自动维护计划.任务关闭.禁用 电脑小技巧--预防U盘中毒 电脑小技巧--提高U盘读写速度 电脑小技巧--调整引导高级选项加快 ...

  9. layer 关闭一个弹窗打不开新的的弹窗_电脑小技巧关闭FF弹窗

    电脑小技巧--电脑做无线热点 电脑小技巧--U盘坏了如何修复 电脑小技巧--自动维护计划.任务关闭.禁用 电脑小技巧--预防U盘中毒 电脑小技巧--提高U盘读写速度 电脑小技巧--调整引导高级选项加快 ...

最新文章

  1. js变量传递给less_如何利用webpack实现一键换肤(CSS变量替换)
  2. boost::random模块实现允许直观地检查分布函数的结果的测试程序
  3. SAP CRM和C4C的客户主数据修改历史记录查询
  4. 如何在php中插入数据并修改,php怎么同时向2张表里插入数据
  5. java 字符串倍_java字符串拼接与性能分析详解
  6. html调试的时候弹出一直消失,页面中css调试和问题解决的一些经验总结
  7. android: ListView设置emptyView 误区
  8. Graphviz样例之集群流程图
  9. 硕博经验——科研论文阅读与写作实战技巧
  10. 从事Web前端开发,必须要知道的这些框架
  11. cost of path 的计算
  12. 企业开展自媒体推广,重点是什么?
  13. python 主函数传参_Python函数传参详解
  14. 幼儿园故事导入语案例_幼儿园故事教案导入语
  15. 用pip freeze >requirements.txt命令迁移模块
  16. php 红包算法教程,php仿微信红包分配算法的实现方法
  17. 人工神经网络理论及应用pdf,人工智能的相关书籍
  18. 22.4.2_mysql自动生成日期表(按年份)
  19. 电脑技术 计算机专业技能分类,电脑操作员有几级分类?分别是什么内容,代表什么技能 ?...
  20. Algorithms, 4th Edition 算法4精华笔记,通俗理解,算法收集与强化

热门文章

  1. endl、flush、ends、unitbuf、nounitbuf区别及详解
  2. Failed to capture snapshot of output files for task ':UserAppModule:packagePreDebug' property 'outpu
  3. HTML与CSS基础之常用选择器(一)
  4. c 调用c语言写的dll文件路径,手把手教你用C/C++语言创建及调试动态库DLL程序
  5. HTTP head 详解
  6. linux卡在x windows,Linux下显卡配置错误 无法进入X Windows的解决
  7. 查数估获近千万元融资 ,用科技为金融赋能
  8. qemu-kvm部署虚拟机
  9. Ruby中如何识别13位的时间戳
  10. 构建负载均衡服务器之一 负载均衡与集群详解