整个活儿,文字反向居中排序

171 阅读3分钟

文字反向居中排序(整活思路)

不知道大家有没有遇到过这种需求


写过tab的时候,下面的文字描述是自动换行居中的,然后反着来的显示

image.png

不知道大家在处理这种情况的时候都是怎么做的呢
正常自动换行居中的话是这样的

image.png

如果是我的话,直接几个p标签怼上去
但是我突发奇想是不是可以整个活,我可以结合翻转来实现这个需求

一、明确需求

实现一个tab,里面展示描述文字 “好麻烦让我文字反着写”,文字反向居中排序,期待效果如下: image.png

二、设计思路

1.结构转换

正常的自动换行和期望的效果在结构上是相似的,都是三七的组合,要么上面七个字下面三个字,要么上面三个字下面七个字
如果我们将正常的自动换行旋转一百八十度,那结构是不是一样了,如下:

image.png

2.顺序转换

翻转一百八十度之后结构相同了,但是细心的朋友可以发现我们的顺序不对。

image.png

所以我们重新整一下
我们需要在转之前就先将我们的文案顺序逆序
翻转后的内容顺序是:写着反字文我让烦麻好
然后将这段文案按正常的自动换行输出效果如下:

image.png
然后操作同上,再翻转一百八十度

image.png
我们就得到了一个顺序正常的文字反向居中排序的文案了


3.文字转换

image.png
这个其实已经是文字反向居中排序了

但可以看到每个字都旋转了180度,因此我们最后一步就是把每个字再旋转180度
就可以得到反向居中排序的文字了

image.png

三、开始实现

1.开始

text:"好麻烦让我文字反着写"
<div class="box">
    <div class="tips">
        <p>{{text}}</p>
    </div>
</div>
.box {
    height: 52px;
    width: 100px
    border-radius: 3px;
    padding: 16px 53px 16px 53px;
    background: antiquewhite;
    .tips {
        font-size: 14px;
        width: 100%;
        color: #333;
        text-align: center;
    }
}

效果:

image.png

2.结构转换

.box {
    height: 52px;
    width: 100px
    border-radius: 3px;
    padding: 16px 53px 16px 53px;
    background: antiquewhite;
    .tips {
        transform:rotate(180deg); // 旋转180font-size: 14px;
        width: 100%;
        color: #333;
        text-align: center;
    }
}

效果:

image.png

3.顺序转换

<div class="box">
    <div class="tips">
        <p>{{reverseText()}}</p>
    </div>
</div>
reverseText() {
    return this.text.split("").reverse().join("") // 文字顺序逆序
}

效果:

image.png

4.文字转换

文字转换要将每个字都旋转一百八十度

<div class="box">
    <div class="tips">
        <p>
            <!-- 遍历数组每个内容单独转换180度-->
            <span v-for="(item, index) in reverseText()" :key="index">{{ item }}</span>
        </p>
    </div>
</div>
reverseText() {
    return this.text.split("").reverse() // 文字顺序逆序, 转成数组,每个字都旋转180度
}
.box {
    height: 52px;
    width: 100px
    border-radius: 3px;
    padding: 16px 53px 16px 53px;
    background: antiquewhite;
    .tips {
        transform:rotate(180deg); // 旋转180font-size: 14px;
        width: 100%;
        color: #333;
        text-align: center;
        span {
                display: inline-block;
                transform: rotate(180deg);// 旋转180度
            }
    }
}

效果:

image.png

总结

实现方法是:
1.先文字逆序成一个数组
2.文字容器旋转一百八十度
3.遍历逆序文字数组,每一个再旋转一百八十度
这样就可以得到一个逆序反向居中排序的文字了

到这里这个文字反向居中排序就完成了,说到底是个整活文章,一般项目中也不会这么搞。
这里提供个有意思的思路,谢谢各位观众大佬的观看!