CSS如何实现自适应分隔线?方法介绍

CSS如何实现自适应分隔线?方法介绍

CSS如何实现自适应分隔线?下面CSS栏目就来给大家介绍一下CSS实现自适应分隔线的N种方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

(推荐教程:CSS栏目)

分割线是网页中比较常见的一类设计了,比如说知乎的更多回答

1.png

立即学习“前端免费学习笔记(深入)”;

这里的自适应是指两边的横线会随着文字的个数和父级的宽度自适应

偷偷的看了一下知乎的实现,很显然是用一块白色背景覆盖的,加一点背景就露馅了

2.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;}

登录后复制

CSS栏目

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;}

登录后复制

CSS栏目

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%);}

登录后复制

CSS栏目

4.伪元素+right:100%

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

具体实现如下

html结构为

   我是分割线

登录后复制

css样式为

.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;}

登录后复制

CSS栏目

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;}

登录后复制

CSS栏目

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;}

登录后复制

CSS栏目

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;}

登录后复制

CSS栏目

8.fieldset+legend

利用fieldset和legend标签组合,可以天然实现分隔线效果,参考至张鑫旭的CSS栏目

具体实现如下

html结构为


登录后复制

    

我是分割线

css样式为

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

登录后复制

CSS栏目

小结

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

这里整理了一下,整体效果如下,可访问CSS栏目查看,大家在实际项目中可自行选取所需要的方式

3.png

可能还有其他方式没有想到,欢迎大家集思广益,在下方留言讨论

更多编程相关知识,请访问:CSS栏目!!

以上就是CSS如何实现自适应分隔线?方法介绍的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2884661.html

(0)
上一篇 2025年3月10日 20:30:42
下一篇 2025年3月10日 20:30:52

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何解决PHP中HTML解析的复杂问题?使用voku/simple_html_dom可以!

    可以通过以下地址学习 Composer:学习地址 在我的项目中,我需要从 html 页面中提取特定内容并进行操作。起初,我尝试使用正则表达式和手动解析,但这不仅耗时,而且容易出错。幸运的是,我找到了 voku/simple_html_dom…

    编程技术 2025年4月5日
    200
  • 使用Composer解决CSS前缀问题:padaliyajay/php-autoprefixer库的实践

    可以通过一下地址学习composer:学习地址 在前端开发中,处理不同浏览器的兼容性问题一直是开发者们的一大挑战。特别是当你需要为 css 属性添加前缀以确保在旧版浏览器中也能正常显示时,这个过程往往是繁琐且容易出错的。最近,在开发一个新项…

    编程技术 2025年4月5日
    300
  • 关于HTML5和CSS替换使用

    听到html5的都知道它的强大,如更多的描述性标记、较少依赖于插件的多媒体支持、跨文档消息通信、web sockets、客户端存储、更强大的表单、提升可访问性、先进的选择器、强大的视觉效果。费话不多说,细细说来 被废弃的标签和属性 废弃的标…

    编程技术 2025年4月4日
    100
  • 跨平台开发中的Java框架选择

    跨平台 java 应用程序开发的最佳框架选择取决于项目需求。原生开发框架 (swift、kotlin) 提供最佳性能,但需要针对每个平台单独编写代码。跨平台框架 (react native、flutter) 允许代码重用,但性能可能受限。选…

    2025年4月2日
    100
  • eclipse怎么改黑色主题

    要将 Eclipse 的主题更改为黑色,请按照以下步骤操作:1. 打开主题菜单;2. 选择黑色主题;3. 应用更改;4. 重启 Eclipse。使用第三方插件或自定义 CSS 可以进一步自定义主题。 如何修改 Eclipse 为黑色主题 要…

    2025年4月2日
    200
  • eclipse怎么安装emmet

    Emmet 的 Eclipse 安装分以下步骤进行:安装 Emmet 插件:转到菜单栏中的“帮助”>“市场”,搜索并安装“Emmet for Eclipse”。启用 Emmet:重新启动 Eclipse,转到“窗口”>“首选项”…

    2025年4月2日
    200
  • idea怎么刷新项目

    直接刷新项目方法:1. 单击“Reload”按钮(Ctrl + F5);2. 右键单击项目,选择“Reload All from Disk”。强制刷新项目:1. 单击“Invalidate Caches / Restart”按钮(Ctrl …

    2025年4月2日
    300
  • yii框架怎么引用css

    yii框架引用css的方法:1、内联样式,将CSS样式直接写在视图文件中的HTML元素上;2、内部样式表,在视图文件的head标签内使用style标签来定义CSS样式;3、外部样式表,创建一个独立的CSS文件,并在视图文件中使用link标签…

    2025年4月2日
    100
  • 解决Laravel项目中CSS文件无法加载的问题

    解决Laravel项目中CSS文件无法加载的问题,需要具体代码示例 在开发Laravel项目的过程中,有时候会遇到CSS文件无法加载的问题,这可能会导致页面样式混乱或者无法正常显示页面内容。这个问题通常是由于文件路径配置或者缓存导致的,接下…

    2025年4月2日
    200
  • 如何解决Laravel无法加载CSS样式的情况

    标题:如何解决Laravel无法加载CSS样式的情况 在使用Laravel进行Web开发的过程中,有时候会遇到CSS样式无法加载的情况,这可能会导致页面显示效果不正常。本文将介绍一些常见的原因以及解决方法,同时提供具体的代码示例供大家参考。…

    2025年4月2日
    100

发表回复

登录后才能评论