纯CSS三角形的一些不得不说的故事

经常会用到三角形(比如对话啊,气泡之类的地方),用于明确指向发言者
总是百度一下成型的写法,一直想研究下,耐不住懒啊
终于打败的我的拖延症,整体下那些关于CSS三角形的故事


分为两种 (1)类名;(2)伪类
貌似这两种写法都和border脱不了干系,那我们先来看看 border 的到底是如何作用在盒模型上的

常见盒模型

随便来个盒模型,当当当

.Triangular  .bubble{
    width: 300px;
    height: 100px;
    border-top:10px solid #000;
    border-right:10px solid red;
    border-bottom:10px solid blue;
    border-left:10px solid green;
    margin-top: 20px;
}

原来border的四个边,在拐角相遇的时候,各占45°,嗯~ 很合理


随便来个盒模型

既然这样,那定义类名写三角形就很简单了

一. 定义类名


让内容为0,需要哪个方向的角,写那个方向的boder即可,需要注意的是,单单只写一个方向的border无效,需要相邻方向的border一起来定义,好比这是公共区域,一个人说了不算

//两个方向
.test{
    width: 0;
    height: 0;
    border-top: 10px solid #000;
    border-right:10px solid transparent;
}
//三个方向
.test{
    width: 0;
    height: 0;
    border-top: 10px solid #000;
    border-right:10px solid transparent;
    border-left:10px solid transparent;
}
两个方向

三个方向

综上:需要相邻的三个border才能定义一个水平垂直方向的三角形

写的简单一点

.test{
    width: 0;
    height: 0;
    border: 10px solid transparent;
    border-top: 10px solid #000;
}

第二步,相对父元素定位

.father{
  position:relative;
}
.test{
    width: 0;
    height: 0;
    border-right: 10px solid #000;
    border: 10px solid transparent;
    //定位
    position: absolute;
    left: -10px;
    top: 10px;
}
相对父元素定位

二. 利用伪类


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,827评论 1 92
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,812评论 0 2
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,346评论 0 11
  • 各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 9,715评论 0 8
  • 再贴上效果图
    我是一个大胖墩阅读 427评论 0 0