纯CSS画三角形

纯CSS画三角形之前遇到过的问题如果查了然后懂了,然后没有及时复盘思考,就很容易还回去,今天把许久之前的这个知识点再整理一下,一是加深自己的记忆,二也是让初学者更容易懂。首先,创建一个空的div<divclass="triangle"></div>然后,CSS处理它的边框,给它不一样的颜色,好观察.triangle{border-left:100pxs…

大家好,又见面了,我是你们的朋友全栈君。

之前遇到过的问题如果查了然后懂了,然后没有及时复盘思考,就很容易还回去,今天把许久之前的这个知识点再整理一下,一是加深自己的记忆,二也是让初学者更容易懂。

首先,创建一个空的div
<div class="triangle"></div>
然后,CSS处理它的边框,给它不一样的颜色,好观察

.triangle{ border-left:100px solid red; border-right:100px solid black; border-top:100px solid green; border-bottom:100px solid pink; ·}

结果,运行出来是这样的
这里写图片描述
div的宽占据了整个浏览器,因为我们没有给它设置宽度高度,它的值是auto,所以就占据了整个浏览器,导致我们的上下边框特别的长。
这时,我们给它设置一下宽度

.triangle{ width:0; border-left:100px solid red; border-right:100px solid black; border-top:100px solid green; border-bottom:100px solid pink; }

结果是这样子的
这里写图片描述
这个结果我非常满意,看到这里你们应该也知道三角形怎么截取了,而且是任意方向(上下左右)的三角形。
解释一下
四个方向的border其实是有重叠部分的,在四条边框都有值的情况下,左上角的正方形就由左边框和上边框分割,以此类推,而左矩形理所应当是归属左边距,以此类推。
上面的图形,因为宽高为0,所以其实只有四个正方形在被分割,所以也才会呈现四个三角形。
为了更形象的表达,我给div加了宽高

    .triangle{ width:50px; height:50px; border-left:100px solid red; border-right:100px solid black; border-top:100px solid green; border-bottom:100px solid pink; }

然后是这样子的
这里写图片描述
这样子,你们就很清楚的知道边框是怎么分割的以及它为什么会呈现这个图案,下面我手动分割@依旧不懂的同学,到这里你应该懂我说的了。
手动分割

回到原来的问题,我们应该怎么得到三角形呢?
有的同学可能会以为是直接把其他三个方向的边框去掉,那你会发现,div不见了!因为任意三个方向的边框为0,都会使4个正方形都消失,只剩下一个矩形,然而我们的宽高为0,因此,就使图形消失。再来看看这个图案。
这里写图片描述
比如我们想得到向右的三角形
那么,我先去掉右边的边框总可以吧,这样子就会去掉蓝色框框内的内容
这里写图片描述
呈现这样子
这里写图片描述
再想一步,怎么才能让绿色的块和粉红色的块去掉,有同学想,我们把它们设置成背景颜色就好啦!于是就有人设置成默认的白色。
这里写图片描述
看似我们把三角形画出来,但是假如换了一个背景色,我们就要手动去换边框的颜色,这里介绍一个属性值:transparent,表示透明。
完整的CSS如下:

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

CSS画三角形的介绍就到这里,大家也可以用span标签来话,但是会发现有一个纵向的高度,一开始我以为是line-height导致的,试了一下,发现是font-size导致的,所以只要把font-size设置为0就ok了,完整的CSS如下:

    .triangleSpan{ font-size: 0; border-left:100px solid red; border-top:100px solid transparent; border-bottom:100px solid transparent; }

假如你们不满足于四个方向的三角形,那么可以运用CSS3的属性,随便你旋转

div{ transform:rotate(7deg); -ms-transform:rotate(7deg); /* IE 9 */ -moz-transform:rotate(7deg); /* Firefox */ -webkit-transform:rotate(7deg); /* Safari 和 Chrome */ -o-transform:rotate(7deg); /* Opera */ }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/149157.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • webstorm的永久激活码2021(注册激活)

    (webstorm的永久激活码2021)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • Java中数字的四舍五入和取整

    Java中数字的四舍五入和取整Java中对数字进行四舍五入或取整处理经常使用Math库中的三个方法:ceilfloorround1ceil向上取整ceil英文释义:天花板。天花板在上面,所以是向上取整,好记了。Math.ceil函数接收一个double类型的参数,用于对数字进行向上取整(遇小数进1),即返回一个大于或等于传入参数的最小整数(但还是以double类型返回)。2floor向下取整floor英文释义:地板。地板在下面,所以是向下取整,好记了。Math.floor函数接收一个double

  • python 字符转义(url中文转义)

    URL特殊字符需转义1、空格换成加号(+)2、正斜杠(/)分隔目录和子目录3、问号(?)分隔URL和查询4、百分号(%)制定特殊字符5、#号指定书签6、&号分隔参数转义字符的原因:如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数…

  • 常见外包公司汇总[通俗易懂]

    常见外包公司汇总[通俗易懂]1.博朗软件Bleum(上海)2.中软国际(北京)3.东软集团Neusoft(沈阳)4.博彦科技BeyondSoft(北京)5.中电金信(北京)6.法本信息(深圳)7.浙大网新Insigma(杭州)8.奥博杰天Objectiva(北京)9.浪潮Inspur(济南)10.软通动力iSoftStone(北京)11.福瑞博德Freeborders(深圳)12.信必优Symbio(北京)13.大展科技Achievo(深圳)14.恒生电子hundsun(杭州)15.日电卓越软

  • 深度学习中Dropout原理解析「建议收藏」

    深度学习中Dropout原理解析「建议收藏」1.Dropout简介1.1Dropout出现的原因在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题,过拟合具体表现在:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。过拟合是很多机器学习的通病。如果模型过拟合,那么得到的模型几乎不能用。为了解决过拟合问题,一…

  • Arduino编程之Serial.println()和Serial.print()

    Arduino编程之Serial.println()和Serial.print()Arduino编程之Serial.println()和Serial.print()Arduino的输出基本就用两个函数print和println,区别在于后者比前者多了回车换行Serial.println(data)从串行端口输出数据,跟随一个回车(ASCII13,或’r’)和一个换行符(ASCII10,或’n’)。这个函数所取得的值与Serial.print()一样。Ser…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号