博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文字两侧加横线的解决方案
阅读量:5914 次
发布时间:2019-06-19

本文共 2109 字,大约阅读时间需要 7 分钟。

文字两侧加横线的需求你遇到过吗?在参与的项目中我遇到过这种需求,总结了一下,目前分为两种:

一,文字所在的背景是纯色,单一颜色;

二,文字所在背景是花色,或者是背景图片

给你一些时间,思考一下:

脑海闪过了什么?定位,浮动,背景图片,伪元素。。。还是大脑一片空白?

条条大路通罗马,相信给你足够的时间,静静的坐在开着空调的房间里,你会得到自己的实现方法。

先看第一种,背景纯色的实现方案。

用的一个方法是用一个空的标签,来写这条横线。当然也可以用背景图,切一个中间透明,两边白条的图片。也可以使用伪元素。before after前后夹击。

在背景为图片的时候使用了伪元素这种方法,个人感觉伪元素这个东西真的是太强大了。

废话不说上代码:

HTML:

标题在此

复制代码

CSS:

/*纯背景实现原理代码*/.onpure_bg{    background: #ccc;    width: 700px;    height: 400px;    margin:0 auto;    background-size: cover;     position: relative;}.onpure{    position: absolute;    top: 70px;    left:50%;    width: 150px;    margin-left: -75px;    margin-top: 50px;     z-index: 1}.onpure_title{/*关键点:设置和背景颜色一样的颜色。*/    background:#ccc;    padding:0px 20px; }.line{    display: inline-block;    width: 500px;    height: 0px;    border: 2px solid #fff;    position: absolute;    top:130px;    left: 50%;    margin-left: -250px;}复制代码

代码解析:

把标题和线条定位左右居中,上下靠上部分,用z-index将文字层级放置线条上方,在给标题使用和背景色一样的背景色。padding设置左右值撑开空隙。

It is so easy!

再来看背景为图片的实现方法,很显然,上边的方法取了个巧,利用背景色一致看不出差别。换成一张有复杂的背景图案的图片,这种方法就失效,我们借助伪元素来实现。

代码

HTML

标题在此

复制代码

CSS

/*背景图片实现原理代码*/.onimg_bg{    background: none no-repeat;    width: 700px;    height: 400px;    margin:0 auto;    background-size: cover;     position: relative;    margin-bottom: 20px;}.onimg{    position: absolute;    top: 70px;    left:50%;    width: 600px;    margin-left: -300px;    text-align: center;}/*伪元素实现*/.onimg_title:before{    display: inline-block;    position: relative;    top:-7px;    right: 20px;    content: "";    width: 200px;    height: 0px;    border: 2px solid #fff;}.onimg_title:after{    display: inline-block;    position: relative;    top:-7px;    left: 20px;    content: "";    width: 200px;    color: #fff;    height: 0px;    border: 2px solid #fff;}复制代码

伪元素这种方法,也很简单,刚遇到的时候也是纠结了一会儿,有时候是思路的问题,想到这个方法,问题就迎刃而解了。

代码解析:

需要注意的是使用伪元素content属性必不可少,然后给伪元素块级化,就可以像设置正常的元素一样设置你想要的样式了,在这里设置了一个没有高度,宽200px的长条,通过border控制高;

也可以通过设置背景图片background: none no-repeat,代替border实现

针对这种需求,目前只想到伪元素实现,如果您有更好的方法,欢迎留言。

转载于:https://juejin.im/post/5be0f44f5188251712123af4

你可能感兴趣的文章
数据库设计,表与表的关系,一对一。One-To-One(1)
查看>>
Building QT projects from the command line
查看>>
JSP
查看>>
新工作
查看>>
linux网络编程涉及的函数
查看>>
数据表的相关操作
查看>>
PHP 全局变量
查看>>
String和StringBuilder、StringBuffer的区别?
查看>>
Debian/Kali下Subversion的配置
查看>>
c#选择文件并读取EXECL
查看>>
网络编程
查看>>
【转】Python资源 转自 dylanninin.com
查看>>
SQL Server 约束表字段不能有重复值
查看>>
B/S网络概述
查看>>
HDU1235 统计同成绩学生人数【序列处理】
查看>>
Project Euler Problem 92 Square digit chains
查看>>
数组、指针
查看>>
VMware Vsphere 虚拟化
查看>>
*_zh_CN.properties 国际化资源文件 struts 防乱码等
查看>>
关于同时Python3和Python2引起的问题,Fabric-samples的balance-transfer不能运行
查看>>