面试技巧老生常谈之n种使用实现三角形的技巧腾讯云开发者社区

在一些面经中,经常能看到有关 CSS 的题目都会有一道如何使用 CSS 绘制三角形,而常见的回答通常也只有使用 border 进行绘制一种方法。

而 CSS 发展到今天,其实有很多有意思的仅仅使用 CSS 就能绘制出来的三角形的方式,本文将具体罗列讲讲。

通过本文,你能了解到 6 种使用 CSS 绘制三角形的方式,并且它们都非常好掌握。

当然本文仅是抛砖引玉,CSS 日新月异,可能还有一些有意思的方法本文遗漏了,欢迎大家在留言区补充~

使用 border 实现三角形应该是大部分人都掌握的,也是各种面经中经常出现的,利用了高宽为零的容器及透明的 border 实现。

简单的代码如下:

高宽为零的容器,设置不同颜色的 border:

这样,让任何三边的边框的颜色为 transparent,则非常容易得到各种角度的三角形:

接着,我们使用线性渐变 linear-gradient 实现三角形。

它的原理也非常简单,我们实现一个 45° 的渐变:

让它的颜色从渐变色变为两种固定的颜色:

再让其中一个颜色透明即可:

通过旋转 rotate 或者 scale,我们也能得到各种角度,不同大小的三角形,完整的 Demo 可以戳这里:

还是渐变,上述我们使用了线性渐变实现三角形,有意思的是,在渐变家族中,角向渐变 conic-gradient 也可以用于实现三角形。

方法在于,角向渐变的圆心点是可以设置的,类似于径向渐变的圆心点也可以被设置。

我们将角向渐变的圆心点设置于 50% 0,也就是 center top,容器最上方的中间,再进行角向渐变,渐变到一定的角度范围内,都是三角形图形。

假设我们有一个 200px x 100px 高宽的容器,设置其角向渐变圆心点为 50% 0:

并且,设置它从 90° 开始画角向渐变图,示意图如下:

可以看到,在初始的时候,角向渐变图形没有到第二条边的之前,都是三角形,我们选取适合的角度,非常容易的可以得到一个三角形:

上述代码中的 deeppink 45deg, transparent 45.1deg 多出来的 0.1deg 是为了简单消除渐变产生的锯齿的影响,这样,我们通过 conic-gradient,也轻松的得到了一个三角形。

同理,再配合旋转 rotate 或者 scale,我们也能得到各种角度,不同大小的三角形,完整的 Demo 可以戳这里:

这种方法还是比较常规的,使用 transform: rotate 配合 overflow: hidden。一看就懂,一学就会,简单的动画示意图如下:

设置图形的旋转中心在左下角 left bottom,进行旋转,配合 overflow: hidden。

完整的代码:

clip-path 一个非常有意思的 CSS 属性。

clip-path CSS 属性可以创建一个只有元素的部分区域可以显示的剪切区域。区域内的部分显示,区域外的隐藏。剪切区域是被引用内嵌的 URL 定义的路径或者外部 SVG 的路径。

也就是说,使用 clip-path 可以将一个容器裁剪成任何我们想要的样子。

通过 3 个坐标点,实现一个多边形,多余的空间则会被裁减掉,代码也非常简单:

OK,最后一种,有些独特,就是使用字符表示三角形。

下面列出一些三角形形状的字符的十进制 Unicode 表示码。

譬如,我们使用 ▼ 实现一个三角形 ▼,代码如下:

效果还是不错的:

可以看到,不同字体的形状、大小及基线都是不一样的,所以如果你想使用字符三角形,确保用户的浏览器安装了你指定的字体,否则,不要使用这种方式。

完整的对比 Demo,你可以戳这里:

好了,本文到此结束,关于使用 CSS 绘制三角的 6 种不同方式,希望对你有帮助 ?

想 Get 到最有意思的 CSS 资讯,千万不要错过我的公众号 -- iCSS前端趣闻 ?

THE END
0.B2005字符三角形乐意丘解题思路详细步骤讲解 问题分析 题目要求用给定的字符构造一个底边长5个字符、高3个字符的等腰三角形。观察样例输出可以发现: 第一行:2个空格 + 1个字符 第二行:1个空格 + 3个字符 第三行:0个空格 + 5个字符 解决步骤 输入处理: 读取一个字符存入变量ch 三角形构造: jvzquC41yy}/ewgnqiy/exr1n{w22:;1r17:29=879
1.洛谷B2005字符三角形b2005字符三角形给定一个字符,用它构造一个底边长5 55个字符,高3 33个字符的等腰字符三角形。 输入格式 输入只有一行,包含一个字符。 输出格式 该字符构成的等腰三角形,底边长5 55个字符,高3 33个字符。 样例#1 样例输入 #1 * 一键获取完整项目代码 1 样例输出 #1 jvzquC41dnuh0lxfp0tfv8xswkxsgudI1cxuklqg1fkucrqu13955?6342
2.B2005字符三角形(洛谷—python)给定一个字符,用它构造一个底边长 5 个字符,高 3 个字符的等腰字符三角形。 输入格式 输入只有一行,包含一个字符。 输出格式 该字符构成的等腰三角形,底边长 5 个字符,高 3 个字符。 输入输出样例 输入#1复制 * 输出#1复制 * *** *** 说明jvzquC41dnuh0lxfp0tfv87524e8;=5394:0c{ykenk0fnyckny03=;43:;22
3.C语言for循环打印各种字符三角形+菱形的方法c语言字符三角形循环//三角形输出 for(i=1;i<=num;i++) { for(j=1;j<=num-i;j++)//打印空格 printf(" "); for(j=1;j<=i;j++)//打印升序字母 printf("%c",64+j); for(j=j-2;j>=1;j--)//打印降序字母 printf("%c",64+j); for(j=1;j<=num-i;j++)//打印空格 jvzquC41dnuh0lxfp0tfv8|w3279:8ftvkimg8igvcomu8=8889:;A
4.1108:字符三角形木樨给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。 输入输入只有一行, 包含一个字符。输出该字符构成的等腰三角形,底边长5个字符,高3个字符。样例输入 * 样例输出 * *** *** 1#include<stdio.h>2intmain()3{4chara;5scanf("%c",&a);6printf("%c\n %c%c%c\n%c%c%c%cjvzquC41yy}/ewgnqiy/exr1skgoz~jlkp5q1=>;45>30qyon
5.MMCODE1011:字符三角形(C++)字符三角形代码MMCODE 1011: 字符三角形(C++) 本文介绍了一个简单的C++程序,用于根据用户输入的字符绘制等腰三角形。通过使用嵌套循环,程序能够按照指定格式输出不同大小的字符三角形。 题目描述 读入三个整数,按每个整数占8个字符的宽度,右对齐输出它们,按照格式要求依次输出三个整数,之间以一个空格分开。jvzquC41dnuh0lxfp0tfv8FDW4622<731cxuklqg1fkucrqu13879B=562
6.OJ1001Python字符三角形(菜鸟快进)字符三角形pythonOJ1001 Python 字符三角形( 菜鸟快进 ) 该篇文章介绍如何使用一个给定的字符,通过编程生成一个底边长5个字符,高3个字符的等腰三角形。作者给出了Python代码示例作为参考。 字符三角形 描述 给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。 输入 一行,一个字符。 输出 该字符构成的等腰三角形,底边长5个字符,高3个字jvzquC41dnuh0lxfp0tfv8fjue€tn‚v1ctzjeuj1fgzbkux135<18<623
7.1004:字符三角形信息学奥赛一本通1004:字符三角形【题目描述】给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。 【输入】输入只有一行,包含一个字符。 【输出】该字符构成的等腰三角形,底边长5个字符,高3个字符。 【输入样例】* 【输出样例】 * *** *** 2. 【题目链接】 1004:jvzquC41dnuh0lxfp0tfv8|gkzooa?>97878;8ftvkimg8igvcomu86584=4;>>
8.入门字符图形4星号三角形字符图形4星号正三角【入门】字符图形4-星号三角形 题目描述 输入一个整数,打印字符图形。 例如,输入 3,则输出图形如下:(为方便效果显示,□代表空格,×代表*,但实际输出时还是输出空格,*) □□× □××× ××× 输入 一个整数(0<N<=10) 输出 一个字符图形,具体格式见样例输出。 样例jvzquC41dnuh0lxfp0tfv8~k|joicxlqw1gsvrhng1jfvjnnu1748>95:28
9.字符三角形字符三角形 Java 作业 本文介绍了一个简单的编程任务:接收一个字符作为输入,并使用该字符构造一个等腰三角形,该三角形的底边由5个字符组成,高度为3个字符。文章提供了完整的Java代码示例,演示了如何实现这一功能。 描述 给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。 输入 输入只有一行,jvzquC41dnuh0lxfp0tfv8|gkzooa=;49;?:68ftvkimg8igvcomu8649596;=:
10.字符三角形给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。 输入 输入只有一行, 包含一个字符。 输出 该字符构成的等腰三角形,底边长5个字符,高3个字符。 样例输入 * AI写代码c 运行 1 样例输出 *** AI写代码c 运行 1 2 3 C语言jvzquC41dnuh0lxfp0tfv8vsa67969=651gsvrhng1jfvjnnu1755B=42;9
11.字符绘制三角形字符三角形空格,换行,星花(或者是其他字符)是构成字符三角形的重要元素,但是这其中的关系通常会让人头晕眼花,那就让我们由简到难来解决这类问题吧🫡😎 一.了解其中的关系 你一定知道,绘制字符三角形需要用到for循环,而最让人头疼的是for函数中的表达式2的限制条件以及语句之间的先后顺序。 jvzquC41dnuh0lxfp0tfv87623e99B<9:7<0c{ykenk0fnyckny03=9397>49
12.08:字符三角形博客围绕一个问题展开,需求是输入一个字符,输出由该字符构成的底边长5个字符、高3个字符的等腰三角形。介绍了算法思想,如定义输入字符,明确每行字符和空格数量,最后给出了Java程序来实现该功能。 一、问题来源 http://noi.openjudge.cn/ch0101/08/ 二、问题需求 2.1 输入一个字符,输出由该字符构成的三角形jvzquC41dnuh0lxfp0tfv8owuverkzn1ctzjeuj1fgzbkux135958A888
13.B2005字符三角形(python)b2005字符三角形pythonB2005 字符三角形(python) 本文介绍了Python编程中,如何使用字符型变量a接收用户输入,并使用加号操作符连接字符串进行输出的基本概念。 a =input() print(' '+ a) print(' '+ a + a + a) print(a + a + a + a + a) AI写代码python 运行jvzquC41dnuh0lxfp0tfv87523e8;=835690c{ykenk0fnyckny03<:55297;