• 【CSS】CSS实现三角形(一)


    话不多说,下面介绍两种比较常用的写法:

    一、border边框

    宽和高都设置为0px,通过border的交点创建三角形,这应该是使用的最多的一种写法。

    1. .triangle{
    2. width: 0;
    3. height: 0;
    4. border: 100px solid;
    5. border-color: red green blue orange;
    6. }

     效果图如下:

    好了,四个小三角已经初见雏形了,只需要稍做修改,就能一个个拿出来。

    1、上三角

    原理简单粗暴,既然我只需要最上面的那个小三角,其他几个角的边框颜色设置为透明即可。

    1. .triangle{
    2. width: 0;
    3. height: 0;
    4. border-top: 100px solid red;
    5. border-left: 100px solid transparent;
    6. border-right: 100px solid transparent;
    7. }

     效果图:

    2、下三角

    1. .triangle{
    2. width: 0;
    3. height: 0;
    4. border-bottom: 100px solid blue;
    5. border-left: 100px solid transparent;
    6. border-right: 100px solid transparent;
    7. }

    效果图: 

     3、左三角

    1. .triangle{
    2. width: 0;
    3. height: 0;
    4. border-left: 100px solid orange;
    5. border-top: 100px solid transparent;
    6. border-bottom: 100px solid transparent;
    7. }

    效果图: 

     4、右三角

    1. .triangle{
    2. width: 0;
    3. height: 0;
    4. border-right: 100px solid green;
    5. border-top: 100px solid transparent;
    6. border-bottom: 100px solid transparent;
    7. }

    效果图: 

     

    不过需要注意的是,其他的几个边还是占据空间的哦,一般会配合定位position来用。

    5、直角三角形

    如果需要直角三角形,上面的写法似乎并不满足,换个思路,看下面:

    1. .triangle1{
    2. width: 0;
    3. height: 0;
    4. border-top: 100px solid red;
    5. border-right: 100px solid transparent;
    6. }
    7. .triangle2{
    8. width: 0;
    9. height: 0;
    10. border-bottom: 100px solid red;
    11. border-left: 100px solid transparent;
    12. }
    13. .triangle3{
    14. width: 0;
    15. height: 0;
    16. border-bottom: 100px solid red;
    17. border-right: 100px solid transparent;
    18. }
    19. .triangle4{
    20. width: 0;
    21. height: 0;
    22. border-top: 100px solid red;
    23. border-left: 100px solid transparent;
    24. }

     效果如下:

    除了border之外,还有没有什么办法也可以实现三角形的效果呢?

    二、 linear-gradient渐变

    对,你没有看错,就是渐变。具体需要怎么操作呢?

    1、直角三角形

    这里我们需要配合background-image使用,下面说一下思路:

    (1)先设定一个长宽均为100px的正方形

    (2)设定渐变轴,这里需要获取到的是直角三角形,我们可以简单的设定轴的方向是45度或者-45度,可以结合border边框下最开始的那四个小三角来思考。45度和-45度相当于各为两个三角形,方向不同而已。

    (3)现在开始设置渐变色,其中一个颜色设置为透明,并且第一个颜色停止渲染的位置是在50%,这样,一个三角形就绘制出来了。

    1. .triangle1{
    2. width: 100px;
    3. height: 100px;
    4. background-repeat: no-repeat;
    5. background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0) 50%, #f00 50%);
    6. }
    7. .triangle2{
    8. width: 100px;
    9. height: 100px;
    10. background-image: linear-gradient(-45deg, #f00 50%, rgba(255, 255, 255, 0) 50%);
    11. }
    12. .triangle3{
    13. width: 100px;
    14. height: 100px;
    15. background-repeat: no-repeat;
    16. background-image: linear-gradient(45deg, #f00 50%, rgba(255, 255, 255, 0) 50%);
    17. }
    18. .triangle4{
    19. width: 100px;
    20. height: 100px;
    21. background-image: linear-gradient(45deg, rgba(255, 255, 255, 0) 50%, #f00 50%);
    22. }

    效果如下:

    2、非直角三角形

    非直角三角形需要注意的就是,角度需要根据设置的宽高自行调整。

    1. .triangle {
    2. width: 100px;
    3. height: 100px;
    4. background-repeat: no-repeat;
    5. background-image: linear-gradient(26deg, red 50%, rgba(255, 255, 255, 0) 50%), linear-gradient(154deg, green 50%, rgba(255, 255, 255, 0) 50%);
    6. background-size: 100% 50%;
    7. background-position: top left, bottom left;
    8. }

    这里为了区分,放了两种颜色,用的时候可以把颜色统一就OK了。

     其他方向的三角形大家也可以自己参考着试一试哦,本文就先告一段落了。

    下一篇文章将会通过伪元素的方式实现三角形:CSS实现三角形(二)

    另外,如果有什么其他好方法也可以评论区补充哦!

  • 相关阅读:
    【Redis】Java连接redis进行数据访问及项目的实例应用场景
    计算机网络(HTTP上)
    AtCoder Beginner Contest 264 部分题解
    vue3使用知识点总结
    驱动开发day4
    TASK03|概率论
    Wirshark学习笔记
    六种常用事务解决方案,你方唱罢,我登场(没有最好只有更好)
    上线后出现问题,被自己坑了...
    国际赛事证书,220G数据集开放下载|ACCV2022国际细粒度图像分析挑战赛开赛
  • 原文地址:https://blog.csdn.net/weixin_38629529/article/details/126440388