css-各种各样三角形CSS

2024-10-10
2031 分钟
...
  • 边框是实现三角形的部分,边框实际上并不是一个直线,如果我们将四条边设置不同的颜色,将边框逐渐放大,可以得到每条边框都是一个梯形

  • 当分别取消边框的时候,发现下面几种情况:

    • 取消一条边的时候,与这条边相邻的两条边的接触部分会变成直的
    • 当仅有邻边时, 两个边会变成对分的三角
    • 当保留边没有其他接触时,极限情况所有东西都会消失
  • 通过上图的变化规则,利用旋转、隐藏,以及设置内容宽高等属性,就能够实现其他类型的三角形

  • 
    
      .obtuseB {
        border-width: 0px 40px 40px 40px;
        border-color: transparent transparent #4285f4 transparent;
      }
    
      .obtuseL {
        border-width: 40px 0px 40px 40px;
        border-color: transparent transparent transparent #d9534f;
      }
    
      .obtuseR {
        border-width: 40px 40px 40px 0px;
        border-color: transparent #42f4aa transparent transparent;
      }
    
      .obtuseT {
        border-width: 40px 40px 0px 40px;
        border-color: #e8f442 transparent transparent transparent;
      }
    
      
      .obtuseB.empty {
        position: relative;
        border-width: 0 40px 40px 40px;
        border-color: transparent transparent yellow transparent;
      }
      .obtuseB.empty::after {
        content: '';
        border-style: solid;
        border-width: 0 35px 35px 35px;
        border-color: transparent transparent #fff transparent;
        position: absolute;
        left: -35px;
        top: 3px
      }
    
      .obtuseL.empty {
        position: relative;
        border-width: 40px 0 40px 40px;
        border-color: transparent transparent transparent #d9534f;
      }
      .obtuseL.empty::after {
        content: '';
        border-style: solid;
        border-width: 35px 0 35px 35px;
        border-color: transparent transparent transparent #fff;
        position: absolute;
        left: -38px;
        top: -35px
      }
    
      .obtuseR.empty {
        position: relative;
        border-width: 40px 40px 40px 0;
        border-color: transparent #42f4aa transparent transparent;
      }
      .obtuseR.empty::after {
        content: '';
        border-style: solid;
        border-width: 35px 35px 35px 0;
        border-color: transparent #fff transparent transparent;
        position: absolute;
        left: 3px;
        top: -35px;
      }
    
      .obtuseT.empty {
        position: relative;
        border-width: 40px 40px 0px 40px;
        border-color: #e8f442 transparent transparent transparent;
      }
      .obtuseT.empty::after {
        content: '';
        border-style: solid;
        border-width: 35px 35px 0px 35px;
        border-color: #fff transparent transparent transparent;
        position: absolute;
        left: -35px;
        top: -38px;
      }
    
      
      .equalSidesB {
        border-width: 0px 40px 60px 40px;
        border-color: transparent transparent blue transparent;
      }
    
      .equalSidesL {
        border-width: 40px 0px 40px 60px;
        border-color: transparent transparent transparent red;
      }
    
      .equalSidesR {
        border-width: 40px 60px 40px 0px;
        border-color: transparent green transparent;
      }
    
      .equalSidesT {
        border-width: 60px 40px 0px 40px;
        border-color: yellow transparent transparent transparent;
      }
    
      
      .rightBL {
        border-width: 40px;
        border-color: transparent transparent blue blue;
      }
    
      .rightTL {
        border-width: 40px;
        border-color: red transparent transparent red;
      }
    
      .rightTR {
        border-width: 40px;
        border-color: green green transparent transparent;
      }
    
      .rightBR {
        border-width: 40px;
        border-color: transparent yellow yellow transparent;
      }
    
  • // html
    <h1>钝角三角形:</h1>
      <div class="container">
        <div class="obtuseB triangle"></div>
        <div class="obtuseL triangle"></div>
        <div class="obtuseR triangle"></div>
        <div class="obtuseT triangle"></div>
      </div>
    
      <h1>钝角空心三角形:</h1>
      <div class="container">
        <div class="obtuseB empty triangle"></div>
        <div class="obtuseL empty triangle"></div>
        <div class="obtuseR empty triangle"></div>
        <div class="obtuseT empty triangle"></div>
      </div>
    
      <h1>等边三角形:</h1>
      <div class="container">
        <div class="equalSidesB triangle"></div>
        <div class="equalSidesL triangle"></div>
        <div class="equalSidesR triangle"></div>
        <div class="equalSidesT triangle"></div>
      </div>
    
      <h1>直角三角形:</h1>
      <div class="container">
        <div class="rightBL triangle"></div>
        <div class="rightTL triangle"></div>
        <div class="rightTR triangle"></div>
        <div class="rightBR triangle"></div>
      </div>
    

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
css2026-06-17
外阴影和内阴影介绍
在前端页面设计中,阴影是非常常见的视觉效果。它可以让元素看起来更有层次感,也可以用来表达悬浮、按压、凹陷、卡片、按钮等状态。 CSS 中最常用的阴影属性是 。它既可以实现外阴影,也可以实现内阴影。 一、什么是外阴影 外阴影指的是元素外部的阴影效果。 它会出现在元素边框之外,让元素看起来像是从页面中“浮起来”了一样。常见的卡片、弹窗、按钮悬浮效果,基本都会用到外阴影。 例如: 这个阴影表示:元素下方有一层柔和的黑色阴影,让卡片看起来更有立...
学习
css2026-05-15
border-image-slice详细介绍
是 CSS 系列属性里最关键、也最容易让人懵的一个属性。 它的作用可以简单理解为: 把一张图片切成九宫格,然后决定哪几块用来绘制元素的边框。 它通常和这些属性一起使用: 或者简写成: 其中 决定“怎么切图”。 一、 是什么? 普通的 只能画纯色边框: 但有时候我们想用图片作为边框,比如: 游戏按钮边框 像素风 UI 复古窗口 聊天气泡 卡牌边框 花纹装饰框 九宫格按钮背景 这时候就可以用 。 例如一张按钮图片长这样: 我们希望按钮变宽时...
学习
css2026-03-05
如何在最小副作用下创建 BFC
在 CSS 布局的江湖中, BFC (Block Formatting Context,块级格式化上下文) 是一个老生常谈却又至关重要的概念。无论是解决 高度塌陷 、 清除浮动 ,还是防止 垂直外边距重叠 ,BFC 都是我们的得力助手。 但是,创建 BFC 的方法有很多: 、 、 、 …… 哪种方法对现有布局的“破坏”最小? ❌ 过去的老方法 在过去,为了触发 BFC,我们不得不使用一些带有副作用的“黑客”技巧: : 元素会脱离文档流,...
学习
css2026-03-03
CSS过渡性能解析:transition: all
CSS过渡性能深度解析:为什么 可能是你页面的隐形杀手 一、引言:一个被忽视的性能陷阱 你是否曾在项目中这样写: 看似简洁优雅,却可能在低端设备上引发卡顿、掉帧。 真相 : 是前端性能优化中高频出现的“隐形陷阱”。本文将彻底揭开它的面纱。 二、核心概念: 到底在控制什么? 指定 哪些CSS属性变化时触发动画过渡 。它是过渡效果的“守门员”: | 值 | 含义 | 生成的CSS | | | | | | | 所有 可过渡属性变化时均触发动画...
学习
css2026-01-26
在CSS中,四种高度视口单位的区别
在CSS中,视口单位是构建响应式网页设计的重要工具,特别是针对移动端开发。除了传统的 ,CSS新引入了 、 和 等更精确的单位,解决传统单位在移动端的局限性。 四种高度视口单位的区别 | 单位 | 全称 | 含义 | 特点 | | | | | | | vh | Viewport Height | 传统视口高度单位,1vh = 视口高度的1% | 在移动端有问题:不考虑浏览器UI变化,经常导致内容被遮挡或出现意外滚动 | | svh |...
学习
css2025-11-04
keyframes 关键帧机制
一、什么是 @keyframes? 用于定义动画在不同时间点(关键帧)的样式变化;配合 属性应用到元素上。 定义动画 :使用 声明关键帧序列; 应用动画 :在选择器中通过 / 相关长属性控制表现。 二、基本语法 等价写法( / ): 三、与 属性配合使用 /相关长属性 | 属性名 | 含义 | 示例值 | | : | : | : | | | 动画名称 | | | | 持续时长 | 、 | | | 速度曲线 | / / / | | | 延...
学习

评论

请登录后发表评论

去登录
加载评论中...