CSS组件_0 燕尾

CSS是传统前端“三大马车”之一,本系列专注于用CSS实现小组件,例如:燕尾、三角、箭头、风火轮等。愿积”组件“之跬步,至”系统“之千里。

一、燕尾是个啥?

燕尾,顾名思义,燕子的尾巴。我们都知道燕子的尾巴是分叉的,本文要实现的组件如下。

燕尾组件

二、小马甲思路

我们很容易想到使用一个长方形来实现,但是长方形的首尾得做一些处理。

使用长方形作为基础

首先,在长方形的首尾添加正方形。

长方形首尾添加正方形

对于首端(左)来说,我们可以通过将正方形平移、旋转的方式形成想要的形状。

在这里插入图片描述

对于尾端(右)来说,进行同样的操作,最终形成了我们需要的燕尾组件。

在这里插入图片描述
下面我们计算下平移、旋转的数值。假设长方形高为h、宽度为w,正方形边长为x

可以知道平移的距离为x/2,旋转的角度为45°。
在这里插入图片描述
x 2 + x 2 = h 2 x^2 + x^2= h^2 x2+x2=h2 可知,

x = h 2 2 x = \sqrt{\frac{h^2}{2}} x=2h2

还有个问题,平移和旋转怎么实现呢?实际上CSS3很容易实现。

  • 平移,通过指定元素postion,然后设置left/right实现
  • 旋转,通过设置元素transform属性实现

三、小马甲实现

我们不妨假设长方形高h为40px,那么正方形边长约为28px

<style>
    .c-step {
        position: relative;
        display: inline;
        height: 40px;			/** height 即为长方形的高h **/
        width: 80px;
        padding: 0 20px 0 45px;

        display: flex;
        justify-content: center;
        align-items: center;

        background-color: #ef8825;
        color: white;
        user-select: none;
    }

    .c-step::before {			/** 首端正方形 **/
        position: absolute;
        left: -14px;			/** 平移距离为x/2 **/
        width: 28px;			/** 正方形边长 **/
        height: 28px;			/** 正方形边长 **/

        transform: rotate(-45deg);	/** 旋转45° **/
        content: "";
        
        background: white;
    }

    .c-step::after {			/** 末端正方形 **/
        position: absolute;
        right: -14px;			/** 平移距离为x/2 **/
        width: 28px;			/** 正方形边长 **/
        height: 28px;			/** 正方形边长 **/

        transform: rotate(-45deg);	/** 旋转45° **/
        content: "";
       
        background: #ef8825;
    }
</style>

<body>
    <div class="c-step">燕尾</div>
</body>

四、总结

本文介绍了CSS组件——燕尾的一种实现方式:通过在长方形盒子两端加正方形,利用平移、旋转的手段形成燕尾形状。平移是通过设置元素为absolute,利用left、right属性设置相对于父元素的相对位置实现;选装是通过设置元素的transform属性实现。

基础知识关键字:绝对布局、旋转、CSS

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值