apache伪静态把css 排除掉_CSS实现自适应分隔线的 8 种方法

b1b0b7a60f29166841ee5a0d16bc30c3.png

1.伪元素+transform:translateX(-100%);

主要原理是设置文本居中text-align: center;,然后给定两个伪元素,分别绝对定位,那么此时伪元素也是跟随着水平居中的,设置足够的宽度,然后把左边的往左位移100%就可以了,父级记得超出隐藏。

具体实现如下

html结构为

我是分割线

css样式为

.title{    position: relative;    text-align: center;    overflow: hidden;    font-size: 14px;    color: #999;}.title::before,.title::after{    content: '';    display: inline-block;    width: 100%;    height: 1px;    position: absolute;    background: #ccc;    top: 50%;}.title::before{    margin-left: -10px;    transform: translateX(-100%);}.title::after{    margin-left: 10px;}专门建立的学习Q-q-u-n: ⑦⑧④-⑦⑧③-零①② ,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习技巧(从零基础开始到前端项目实战教程,学习工具,全栈开发学习路线以及规划)

2.伪元素+flex

这个比较好理解了,设置display:flex,然后两个伪元素分别铺满剩余空间。

具体实现如下

html结构为

我是分割线

css样式为

.title{    display: flex;    align-items: center;    font-size: 14px;    color: #999;}.title::before,.title::after{    content: '';    flex: 1;    height: 1px;    background: #ccc;}.title::before{    margin-right: 10px;}.title::after{    margin-left: 10px;}

3.伪元素+box-shadow/outline+clip-path

同样利用text-align: center使文本和伪元素居中,然后生成足够大的box-shadow或者outline,由于不支持单个方向,所以用clip-path或者clip裁剪掉

具体实现如下

html结构为

我是分割线

css样式为

.title{    text-align: center;    font-size: 14px;    color: #999;    overflow: hidden;}.title::before,.title::after{    content: '';    display: inline-block;    width: 0;    height: 1px;    box-shadow: 0 0 0 9999px #ccc;    vertical-align: middle;}.title::before{    margin-right: 10px;    clip-path: polygon(0 0, -9999px 0, -9999px 100%, 0 100%);}.title::after{    margin-left: 10px;    clip-path: polygon(0 0, 9999px 0, 9999px 100%, 0 100%);}

4.伪元素+right:100%

这个实现需要多一层标签,外部仍然是text-align: center,内部文本里添加两个伪元素绝对定位,其中左边的设置距离右边100%(相对于文本标签)即可

具体实现如下

html结构为

我是分割线

css样式为

专门建立的学习Q-q-u-n: ⑦⑧④-⑦⑧③-零①② ,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习技巧(从零基础开始到前端项目实战教程,学习工具,全栈开发学习路线以及规划).title{    text-align: center;    font-size: 14px;    color: #999;    overflow: hidden;}.inner{    position: relative;}.inner::before,.inner::after{    position: absolute;    content: '';    width: 9999px;    height: 1px;    background: #ccc;    top: 50%;}.inner::before{    right: 100%;    margin-right: 10px;}.inner::after{    margin-left: 10px;}

5. border+transform

这个思路可以不用到伪元素,不过需要额外的标签,给内部文本左右足够大的1px边框,此时需要设置line-height:1px,由于内部整体以及足够大了(超过父级),可以使用绝对定位和transform: translateX(-50%)居中

具体实现如下

html结构为

我是分割线

css样式为

.title{    position: relative;    text-align: center;    font-size: 14px;    color: #999;    overflow: hidden;    padding: .6em 0;/**把高度撑起来**/}.inner{    position: absolute;    left: 50%;    transform: translateX(-50%);    white-space: nowrap;    line-height: 1px;    border-left: 9999px solid #ccc;    border-right: 9999px solid #ccc;    padding: 0 10px;}

6.伪元素+border+left/right

这个思路只需要一个伪元素,在文本内部生成一个伪元素,利用足够大的border和相同的负值(绝对定位+left/right)还原位置

具体实现如下

html结构为

我是分割线

css样式为

.title{    text-align: center;    font-size: 14px;    color: #999;    overflow: hidden;}.inner{    position: relative;    padding: 0 10px;}.inner::before{    content: '';    position: absolute;    height: 1px;    top: 50%;    border-left: 9999px solid #ccc;    border-right: 9999px solid #ccc;    right: -9999px;    left: -9999px;}

7.伪元素+table-cell

主要思路为父级设置display:table,伪元素设置display:table-cell,并设置足够大的宽度即可

具体实现如下

html结构为

我是分割线

css样式为

.title{    display: table;    font-size: 14px;    color: #999;}.inner{    display: table-cell;    white-space: nowrap;    padding: 0 10px;}.title::before,.title::after{    content: '';    display: table-cell;    width: 9999px;    overflow: hidden;    background: linear-gradient(#ccc 0,#ccc) center no-repeat;/**这里用线性渐变生成的,也可以用其他方式**/    background-size: 100% 1px;}

8.fieldset+legend

利用fieldset和legend标签组合,可以天然实现分隔线效果

具体实现如下

html结构为

我是分割线

css样式为

.title{    font-size: 14px;    color: #999;    border: 0;    border-top: 1px solid #ccc;    padding: 0;}.inner{    margin: 0 auto;;    padding: 0 10px;}

小结

上面一共列举了8中方式来实现分隔线的效果,每种方法思路各不相同,重要的是可以发散自己的想象力,可能这才是CSS与其他语言所不同的吧~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值