用原生CSS实现标签样式

Posted Kira~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用原生CSS实现标签样式相关的知识,希望对你有一定的参考价值。

semantic-ui中有一个很适合于博客标签的样式,但element-ui中却没有找到相关的组件,因此就需要自己手动用原生CSS去写样式了
在这里插入图片描述
右边的长方形很容易实现直接用div+border的方式,修改以下颜色就可以了,颜色可以直接参考element-ui中的配色,效果如下。
在这里插入图片描述

难点在于前面的小三角形,这里采用设置border样式的方式,将上下border设为透明,右边设为蓝色,则可以得到一个箭头向左的三角形,并紧贴后面的长方形就可以。代码如下

    .sjx{
        width: 0;
        height: 0;
        border-top: 7px solid transparent;
        border-bottom: 7px solid transparent;
        border-right: 7px solid #409eff;
    }

效果如下
在这里插入图片描述接下来就是要实现空心的效果,这里空心可以想象成两个大小不同的三角形叠加,形成边框的效果,于是在外三角形的div中添加一个内三角形,用同样的方式实现填色,效果如下
在这里插入图片描述
第二个三角形位于第一个三角形之下,是因为第一个div的宽高为0,内部的元素便会从div远点开始渲染,因此,将外三角的 position属性设为relative,内三角设为absolute,并经过简单的数学计算便可得到嵌套的三角形,代码如下:

    .sjx-outer{
        width: 0;
        height: 0;
        border-top: 7px solid transparent;
        border-bottom: 7px solid transparent;
        border-right: 7px solid #409eff;
        position: relative;
    }

    .sjx-inner{
        border-top: 6px solid transparent;
        border-bottom: 6px solid transparent;
        border-right: 6px solid #ecf5ff;
        top: -6px;
        left: 1px;
        position: absolute;
    }

效果如下
在这里插入图片描述
但和最终要实现的效果还有差距,右边长方形的一部分边框要去掉,这个时候我突然想到,如果两个三角形不是一大一小,而是相同大小,而叠加的时候将内三角向右移动一个像素,这样便能实现只有左边是有边框的,如下图所示。
在这里插入图片描述
同时,内三角向右偏移了一个像素,刚好能将长方形左边的边框遮挡住,这样刚好最终效果就完美实现啦,如图:
在这里插入图片描述
最终代码:

    .tag{
        padding-left: 10px;
        padding-right: 10px;
        border-radius: 5px;
        background-color: #ecf5ff;
        border: 1px solid #409eff;
        color: #409eff;
        display: flex;
    }
    .sjx-outer{
        width: 0;
        height: 0;
        border-top: 7px solid transparent;
        border-bottom: 7px solid transparent;
        border-right: 7px solid #409eff;
        position: relative;
    }

    .sjx-inner{
        border-top: 7px solid transparent;
        border-bottom: 7px solid transparent;
        border-right: 7px solid #ecf5ff;
        top: -7px;
        left: 1px;
        position: absolute;
    }

以上是关于用原生CSS实现标签样式的主要内容,如果未能解决你的问题,请参考以下文章

用原生CSS实现标签样式

js实现addClass添加样式

用JavaScript修改CSS属性的代码

怎么用CSS设置html中的表格边框样式

CSS代码片段

CSS代码片段