css 实现三角形
#demo1 { width: 0; height: 0; border-top: 100px solid rgba(255, 0, 0, 1); border-bottom: 50px solid rgba(0, 128, 0, 1); border-left: 50px solid rgba(0, 0, 255, 1); border-right: 50px solid rgba(128, 128, 128, 1) }
#demo2 { width: 200px; height: 100px; background: linear-gradient(45deg, rgba(255, 0, 0, 1), rgba(255, 0, 0, 1) 70.72px, rgba(0, 128, 0, 1) 70.72px, rgba(0, 128, 0, 1) 200px) }
#demo3 { width: 200px; height: 100px }
#demo4 { width: 300px; height: 100px; position: relative; overflow: hidden }
#demo4::before { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(255, 0, 0, 1); transform-origin: left bottom; transform: rotate(65deg) }
#demo5 { width: 100px; height: 100px; background: rgba(255, 0, 0, 1); clip-path: polygon(0 0, 50px 0, 0 100px, 0 0) }
#demo7 { width: 0; height: 0; border-top: 100px solid rgba(255, 0, 0, 1); border-bottom: 50px solid rgba(0, 128, 0, 1); border-left: 50px solid rgba(0, 0, 255, 1); border-right: 50px solid rgba(128, 128, 128, 1); transform: rotate(45deg) }
#demo8 { width: 0; height: 0; border-top: 100px solid rgba(255, 0, 0, 1); border-bottom: 50px solid rgba(0, 0, 0, 0); border-left: 50px solid rgba(0, 0, 0, 0); border-right: 50px solid rgba(0, 0, 0, 0); transform: rotate(45deg) }
#demo9 { width: 0; height: 0; border-top: 100px solid rgba(255, 0, 0, 1); border-bottom: 50px solid rgba(0, 0, 0, 0); margin-bottom: -50px; border-left: 50px solid rgba(0, 0, 0, 0); border-right: 50px solid rgba(0, 0, 0, 0); transform: rotate(45deg) }
#demo10 { width: 100px; height: 100px; border: 1px solid rgba(0, 128, 0, 1) }
盒模型中的div默认是一个矩形。那么我们怎么实现三角形呢。
使用字符中的符号。这个跟字体相关,在布局上基本没什么用。
矩形沿着一个角用斜线切一刀就可以得到三角形
一、怎么实现切一刀呢?
1、宽高为0的矩形。设置边框。可以将矩形分为四个三角形。
        #demo1 {
            width: 0;
            height:0;
            border-top: 100px solid red;
            border-bottom: 50px solid green;
            border-left: 50px solid blue;
            border-right: 50px solid grey;
        }
2、使用无过渡线性渐变的方式
#demo2 {
            width: 200px;
            height: 100px;
            background: linear-gradient(45deg, red, red 70.72px, green 70.72px, green 200px);
        }
3、使用角向渐变
#demo3 {
            width: 200px;
            height: 100px;
            background: conic-gradient(from 90deg at 0 0, red 0, red 10deg, green 10deg);
        }
4、使用旋转出父元素,超出隐藏的方式。
#demo4 {
            width: 300px;
            height: 100px;
            position: relative;
            overflow: hidden;
        }
            #demo4::before {
                content: "";
                position: absolute;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                background: red;
                transform-origin: left bottom;
                transform: rotate(65deg);
            }
5、css裁剪属性
#demo5 {
            width: 100px;
            height: 100px;
            background: red;
            clip-path: polygon(0 0, 50px 0, 0 100px, 0 0);
        }
二、怎么实现角度呢?
使用 rotate ,实现不同角度
#demo7 {
            width: 0;
            height: 0;
            border-top: 100px solid red;
            border-bottom: 50px solid green;
            border-left: 50px solid blue;
            border-right: 50px solid grey;
            transform: rotate(45deg);
        }
三、移除不必要的部分
例1-例3中把不要的部分颜色设置为transparent就可以了。
        #demo8 {
            width: 0;
            height: 0;
            border-top: 100px solid red;
            border-bottom: 50px solid transparent;
            border-left: 50px solid transparent;
            border-right: 50px solid transparent;
            transform: rotate(45deg);
        }
四、调整占位
如上的方式实现三角形后,在流中,会额外占用一部分位置。需要调整一下,这里根据具体需求来,例1中使用margin-bottom将不需要的border-bottom占用的50px拉回去。
下面的例子还存在着旋转导致的位置偏移。所以拉回去50px的效果依然不理想。这里需要根据实际的需求来调整了。没有一个完美的方案。
        #demo9 {
            width: 0;
            height: 0;
            border-top: 100px solid red;
            border-bottom: 50px solid transparent;
            margin-bottom:-50px;
            border-left: 50px solid transparent;
            border-right: 50px solid transparent;
            transform: rotate(45deg);
        }
        #demo10 {
            width: 100px;
            height: 100px;
            border:1px solid green;
        }
css 实现三角形的更多相关文章
- CSS制作三角形和按钮
		CSS制作三角形和按钮 用上一篇博文中关于边框样式的知识点,能制作出三角形和按钮. 我先说如何制作三角形吧,相信大家在平时逛网站的时候都会看到一些导航栏中的三角形吧,比如说: 网易首页的头部菜单栏中, ... 
- CSS 魔法系列:纯 CSS 绘制三角形(各种角度)
		我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ... 
- CSS 制作三角形原理剖析
		使用css制作三角形其实原理很简单,下面一步步解析. 1.html代码如下 <div class="triangle"> </div> 2.CSS代码 .t ... 
- CSS实现三角形
		突然想起搞一把三角形. 简单来说: 建一个div 宽度.高度设为0 添加两个样式: border 和 border-color 如果需要一个三角形把其他边框都设为透明 transparent < ... 
- css绘制三角形原理
		1.新建一个元素,将它的宽高都设置为0:然后通过设置border属性来实现三角形效果,下面是css绘制三角形的原理: <!DOCTYPE html> <html> <he ... 
- 纯CSS写三角形-border法
		(1)有边框的三角形 我们来写下带边框的三角形. 如果是一个正方形,我们写边时,会用到border,但我们这里讨论的三角形本身就是border,不可能再给border添加border属性,所以我们需要 ... 
- 经典CSS实现三角形图标原理解析
		前言: 在写这篇文章之前,我也看过很多前端大神写的代码,But,都只是粘贴代码和给出显示效果,对于初学者来说大家都喜欢刨根问底,为什么要这样做呢? 接下来就让我给大家分享一下我对CSS实现三角形的理解 ... 
- 用css制作三角形
		用css制作三角形,主要是利用css元素给“盒模型”设置边框得到的. 上图,上边框和做边框,以及上边框和右边框的交合处,浏览器会按照直角的二分之一处绘制交合线.这是“盒模型”有宽和高时候的效果.我们假 ... 
- 三种纯CSS实现三角形的方法
		看到像上图这样的 tip 的小三角,你会怎么办? 切个图上去?恩,不错,简单,兼容性也一级棒,不但好控制,那点小东西也增加不了多少图片的大小.但有没有更好更讲究技巧的办法呢?哈哈,那必须有啊,而且还不 ... 
- CSS画三角形引发的一些思考
		今天刷知乎时看到了一个问题,有谁能详细讲一下css如何画出一个三角形?怎么想都想不懂? - 知乎.很巧,刚入前端坑的我前不久也遇到过这个问题,今天再来谈一谈这个问题则是因为知乎的一些答案引发了我的 ... 
随机推荐
- java常见面试题2:求出两个正整数的最大公约数
			概念: 最大公约数:两个整数共有因子中最大的一个 方法一: 如果两个数相等,则最大公约数为它本身,两个数不等,则用两个数依次除 两个数中最小的一个到 1,直到找到同时能被两个数除尽的那个数 代码清单: ... 
- FHRP - 网关冗余协议
			通常情况下,在终端设备进入网络前,都会有一个 Router 充当网络,作为第一跳的网络地址.但假设路由器发生故障,此时终端设备就无法再接入互联网. 为了防止这样的问题,一般会再加入一台路由器充当备份. ... 
- JVM之对象回收
			finalize /** *此代码演示了两点: *1.对象可以在被GC时自我拯救. *2.这种自救的机会只有一次,因为一个对象的finalize()方法最多只会被系统自动调用一次 */ public ... 
- Android Studio 之创建自定义控件
			•前言 常用控件和布局的继承结构,如下图所示: 可以看到,我们所用的所有的控件都是直接或者间接的继承自View的: 所用的所有布局都是直接或者间接继承自ViewGroup的: View 是 Andro ... 
- oCPC中转化率模型与校准
			翻看日历时间已经来到了2021年,也是共同战役的第二年,许久没有更新文章了,在与懒惰进行过几次斗争都失利之后,今天拿出打工人最后的倔强,终于收获了一场胜利.闲话不多说,今天咱们重点聊聊oCPC中转化率 ... 
- Java单例模式实现,一次性学完整,面试加分项
			单例模式是设计模式中使用最为普遍的一种模式.属于对象创建模式,它可以确保系统中一个类只产生一个实例.这样的行为能带来两大好处: 对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而 ... 
- UnitTwoSummary
			目录 一.设计策略与程序分析 第一次作业 第二次作业 第三次作业 二.可扩展性检查与分析 三.bug 四.总结与反思 一.设计策略与程序分析 第一次作业 设计思路 输入,调度器,电梯分别设置成三个线程 ... 
- starctf_2019_babyshell
			starctf_2019_babyshell 有时shellcode受限,最好的方法一般就是勉强的凑出sys read系统调用来注入shellcode主体. 我们拿starctf_2019_babys ... 
- 死磕Spring之AOP篇 - Spring AOP自动代理(三)创建代理对象
			该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ... 
- Spring Boot+MySQL+Spring Data JPA一个Web的Demo
			2020.06.23 更新 1 概述 一个简单的web项目配合MySQL+Hibernate+Tomcat的简单示例demo,很容易在此基础上扩展成自己的项目. 2 创建工程 笔者IDE为Intell ... 
