css如何实现三角形,箭头,提示框,来一探究竟吧

拓朴棱镜
• 阅读 2758

1.给一个矩形设置border,来看如何变化

css如何实现三角形,箭头,提示框,来一探究竟吧

<section>
<h4>来看一个正常的矩形变化过程</h4>
    <div class="b">
        <div class="b1">设置了border正常宽高</div>
        <div class="b2">border-top</div>
        <div class="b3">border-right</div>
        <div class="b4">border-left</div>
        <div class="b5">border-bottom</div>
        <div class="b6">background</div>
    </div>
</section>
.b{
    display: flex;
    align-items: center;
    justify-content: space-around;
    flex-wrap: wrap;
    font-size: 10px;
    text-align: center;
}
.b1{
    width: 100px;
    height: 70px;
    border:5px solid #00aaff;
    margin-right: 10px;
    margin-bottom: 10px;
}
.b2{
    width: 100px;
    height: 70px;
    border:5px solid #00aaff;
    border-top: 5px solid #ff557f;
    margin-right: 10px;
    margin-bottom: 10px;
}
.b3{
    width: 100px;
    height: 70px;
    border:5px solid #00aaff;
    border-top: 5px solid #ff557f;
    border-left: 10px solid #550000;
    margin-right: 10px;
    margin-bottom: 10px;
}
.b4{
    width: 100px;
    height: 70px;
    border:5px solid #00aaff;
    border-top: 5px solid #ff557f;
    border-left: 10px solid #550000;
    border-right:15px solid #3EFF8B;
    margin-right: 10px;
    margin-bottom: 10px;
}
.b5{
    width: 100px;
    height: 70px;
    border:5px solid #00aaff;
    border-top: 5px solid #ff557f;
    border-left: 10px solid #550000;
    border-right:15px solid #3EFF8B;
    border-bottom:20px solid #ffff7f;
    margin-right: 10px;
    margin-bottom: 10px;
}
.b6{
    width: 100px;
    height: 70px;
    background: pink;
    border:5px solid #00aaff;
    border-top: 5px solid #ff557f;
    border-left: 10px solid #550000;
    border-right:15px solid #3EFF8B;
    border-bottom:20px solid #ffff7f;
    margin-right: 10px;
    margin-bottom: 10px;
}

2.改变矩形的宽高

当矩形的宽或者高为0的时候,出现了梯形+三角形。
矩形的宽高都为0的时候,出现了三角。
从这一步,我们就可以大致的知道这个梯形,三角形是怎么形成的了。
css如何实现三角形,箭头,提示框,来一探究竟吧

3.当矩形的高为0时

去掉border-top,我们可以得到下图第二个图片,当将border-left和border-right设置为transparent时候,出现梯形。将这个梯形用rotate进行选择,可以得到一个向下的梯形。
同理,去掉border-bottom,border-left和border-right设置为transparent时,也可以得到一个向下的梯形。
css如何实现三角形,箭头,提示框,来一探究竟吧

<div class="b10">高为0,出现梯形+三角</div>
<div class="b11">去掉border-top</div>
<div class="b11-tixing"><p>得到梯形</p></div>
<div class="b11-tixing-rotate"><p>rotate旋转</p></div>
.b10{
    width: 50px;
    height: 0;
    background: pink;
    border-top: 60px solid #ff557f;
    border-left: 60px solid #550000;
    border-right:60px solid #3EFF8B;
    border-bottom:60px solid #ffff7f;
    margin-right: 20px;
    margin-bottom: 10px;
}
.b11{
    width: 50px;
    height: 0;
    border-left: 60px solid #550000;
    border-right:60px solid #3EFF8B;
    border-bottom:60px solid #ffff7f;
    margin-right: 20px;
    margin-bottom: 10px;
}
.b11-tixing,.b11-tixing-rotate{
    width: 50px;
    height: 0;
    border-left: 60px solid transparent;
    border-right:60px solid transparent;
    border-bottom:60px solid #ffff7f;
    margin-right: 20px;
    margin-bottom: 10px;
    
}
.b11-tixing-rotate{
    transform: rotate(-180deg);
}
.b11-tixing-rotate p{
    transform: rotate(180deg);
}

设置其他情况,也能得到一些想要的图形。
css如何实现三角形,箭头,提示框,来一探究竟吧

4.当矩形的宽为0时

宽度为0的时候,可以得到相应的梯形,当然这个梯形也可以使用rotate旋转得来,方法并不唯一,知道即可。
css如何实现三角形,箭头,提示框,来一探究竟吧

5.当矩形的宽高皆为0时

当矩形的宽高皆为0时,可以看到设置不同的border时候,出现了很多三角形。
css如何实现三角形,箭头,提示框,来一探究竟吧

6.实心三角

假如你想得到一个向下的等腰三角,那么你只需要
(1):去掉border-bottom
(2):将border-left和border-right变成transparent
可以这么理解:设置相应的两边为transparent,一个上三角,那就设置border-bottom,去掉border-top,下三角,设置border-top,去掉border-bottom。左三角,设置border-right,右三角设置border-left。
若你想得到一个向右直角三角形:
(1):只需设置两边即可,border-top,border-right
(2):border-right设置为transparent
其他的可以多试试,可以发现是有规律存在的。
css如何实现三角形,箭头,提示框,来一探究竟吧

<section>
    <h4>实心三角来了</h4>
    <div class="b">
        <div class="b25"></div>
        <div class="b26"></div>
        <div class="b27"></div>
        <div class="b28"></div>
        <div class="b29"></div>
        <div class="b30"></div>
        <div class="b31"></div>
        <div class="b32"></div>
        <div class="b33"></div>
    </div>
</section>
.b25{
    width: 0;
    height: 0;
    border-top: 80px solid #A8C992;
    border-left: 80px solid transparent;
    border-right:80px solid transparent;
    margin-right: 20px;
    margin-bottom: 10px;
}
.b26{
    width: 0;
    height: 0;
    border-bottom: 80px solid #A8C992;
    border-left: 80px solid transparent;
    border-right:80px solid transparent;
    margin-right: 20px;
    margin-bottom: 10px;
}
.b27{
    width: 0;
    height: 0;
    border-left: 80px solid #A8C992;
    border-top: 40px solid transparent;
    border-bottom:40px solid transparent;
    margin-right: 20px;
    margin-bottom: 10px;
}
.b28{
    width: 0;
    height: 0;
    border-right: 80px solid #A8C992;
    border-top: 40px solid transparent;
    border-bottom:40px solid transparent;
    margin-right: 20px;
    margin-bottom: 10px;
}
.b29{
    height: 0;
    width: 0;
    border-color: #6c94c2 #193eaf transparent transparent;
    border-style: solid solid dashed dashed;
    border-width: 40px 40px 0 0;
    margin-right: 20px;
    margin-bottom: 10px;
}
.b30{
    height: 0;
    width: 0;
    border-top: 40px solid #a4d1eb;
    border-right: 80px solid transparent;
}
.b31{
    height: 0;
    width: 0;
    border-bottom: 40px solid #a4d1eb;
    border-right: 80px solid transparent;
}
.b32{
    height: 0;
    width: 0;
    border-top: 40px solid #aa007f;
    border-left: 80px solid transparent;
}
.b33{
    height: 0;
    width: 0;
    border-bottom: 40px solid #aa007f;
    border-left: 80px solid transparent;
}

7.空心三角

实现原理:先正常定义一个实心三角,利用伪元素,在定义一个比实心三角稍小一点的一个颜色为白色的三角。
css如何实现三角形,箭头,提示框,来一探究竟吧

.b34{
    width: 0;
    height: 0;
    border-top: 80px solid #A8C992;
    border-left: 80px solid transparent;
    border-right:80px solid transparent;
    margin-right: 20px;
    margin-bottom: 10px;
    position: relative;
}
    
.b34::after{
    content: "";
    position:absolute;
    top: -79px;
    left: -78px;
    width: 0;
    height: 0;
    border-top: 78px solid #fff;
    border-left: 78px solid transparent;
    border-right:78px solid transparent;
}

8.等边箭头

实现一个箭头有两种方式:
1.设置相应的宽高(宽和高必须相等,否则得到的是一个长度不一的箭头),并且设置border-top和border-right,得到以下:
css如何实现三角形,箭头,提示框,来一探究竟吧
利用 transform: rotate(-45deg)进行旋转得到不同角度的箭头。
**2.不设置宽高,设置padding值,padding的值越大,这个箭头就越大,如,padding:5px。
再利用利用 transform: rotate(-45deg)进行旋转得到不同角度的箭头。**
css如何实现三角形,箭头,提示框,来一探究竟吧

9.等腰箭头

原理:先正常定义一个实心三角,利用伪元素,在定义一个比实心三角稍小一点的一个颜色为白色的三角。对这个大的三角进行一部分的覆盖,实现等腰三角箭头。
css如何实现三角形,箭头,提示框,来一探究竟吧

10.实现提示框

原理:
一个正常的圆角矩形+一个空心三角形
(这个空心三角形是两个伪元素实现的三角形,其中一个三角形背景色为白色并且小于有颜色的三角形)
css如何实现三角形,箭头,提示框,来一探究竟吧

11.一些其他样式,可以通过伪元素得到

多尝试,会发现很多不一样的东西。
css如何实现三角形,箭头,提示框,来一探究竟吧

12.例子源码(持续更新中)

https://gitee.com/susuhhhhhh/css_demos

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
java一生之敌 java一生之敌
2年前
JVM的内存模型和优化方式
一、JVM的内存模型1.!图片(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/52b2220f04010eb329efbef966f9fa40.png)其中s0,s1为幸
Stella981 Stella981
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Easter79 Easter79
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
CSS 分类 (Classification)
★★CSS分类属性(Classification)★★⑴CSS分类属性允许你控制如何显示元素,设置图像显示于另一元素中的何处,相对于其正常位置来定位元素,使用绝对值来定位元素,以及元素的可见度。⑵下面是常用的属性以及描述:!(https://oscimg.oschina.net/oscnet/00cb565
Wesley13 Wesley13
3年前
mysql查询每个学生的各科成绩,以及总分和平均分
今天看一个mysql教程,看到一个例子,感觉里面的解决方案不是很合理。问题如下:有学生表:!在这里插入图片描述(https://oscimg.oschina.net/oscnet/07b001b0c6cb7e0038a9299e768fc00a0d3.png)成绩表:!在这里插入图片描述(https://oscimg.o
拓朴棱镜
拓朴棱镜
Lv1
为了赞美而去修行,有如被践踏的香花美草。
文章
2
粉丝
0
获赞
0