CSS 两行文字两端对齐与字符间距的处理

前言

👏CSS 文字对齐与字符间距的处理,在这里,你可以了解到文字渐变,letter-spacing,text-align,text-align-last,filter等,速速来Get吧~
🥇文末分享源代码。记得点赞+关注+收藏!

1.实现效果

在这里插入图片描述

2.实现原理

  • 文章开始之前,让我们先学习一下实现原理

2.1 文字渐变色的实现

实现文字渐变色的方法有多种,在这里,我们用方法一实现,其他方法暂不赘述:

  • 方法一:background-clip+背景渐变色+color/text-fill-color设置为透明
  • 方法二:伪元素+mask遮罩
  • 方法三:SVG

为文字设置背景渐变色:
在这里插入图片描述

background: linear-gradient(180deg, red 0%, #4effe4 100%);

将背景裁剪为文字:

background-clip:text,背景被裁剪成文字的前景色。

在这里插入图片描述

/* 将背景裁剪为文字 */
background-clip: text;
-webkit-background-clip: text;

设置text-fill-color或者color为透明

text-fill-color:CSS 属性 -webkit-text-fill-color 指定了文本字符的填充颜色。若未设置此属性,则使用 color 属性的值。

在这里插入图片描述

/* 设置color为透明 */
color: transparent;
/* 或者设置text-fill-color为透明 */
/* -webkit-text-fill-color: transparent; */

2.2 filter添加文字投影

filter:CSS属性 filter 将模糊或颜色偏移等图形效果应用于元素。滤镜通常用于调整图像、背景和边框的渲染。

drop-shadow():drop-shadow()
函数对输入图像应用阴影效果。阴影可以设置模糊度的,以特定颜色画出的遮罩图的偏移版本,最终合成在图像下面

在这里插入图片描述

  • 以下,是一个木有投影的文字

在这里插入图片描述

  • 为其添加投影

在这里插入图片描述

filter: drop-shadow(0px 2px 4px red);

2.3 letter-spacing最后字符间距的处理

letter-spacing:CSS 的 letter-spacing 属性用于设置文本字符的间距表现。在渲染文本时添加到字符之间的自然间距中。letter-spacing 的正值会导致字符分布得更远,而 letter-spacing 的负值会使字符更接近。

在这里插入图片描述

  • 为文字设置 letter-spacing,可以看到设置的值越大,文本的最后也会显示相应的字符

在这里插入图片描述

font-size: 40px;
font-family: YouSheBiaoTiHei;
letter-spacing: 20px;
border: 1px dotted;
  • 将文字拆分为两部分,用span标签包裹,最后一个字+剩余其他字,如:‘这是一段文’,‘字’

在这里插入图片描述

<p><span>这是一段文</span><span></span>
</p>
  • 将第一个span设置letter-spacing,去掉父元素设置的letter-spacing,可以看到文字末尾的间距不存在了

在这里插入图片描述

--letter-spacing: 20px;
<p><span style="letter-spacing: 12px;">这是一段文</span><span></span>
</p>
  • span与span标签之间的空格或换行造成了一定的间距,可以通过一些方法来解决
  • 方法一:将span写在一行 ,局限:可能在格式化或其他人接手时候不小心修改
  • 方法二:设置font-size为0,并添加额外的font-size ,局限:重写比较麻烦
  • 方法三:父元素设置flex布局,局限:可能使某些数据失效,如align-last
  • 方法四:span写在一行,并在中间添加注释 ,局限:可能被他人修改,但是有注释会稍微好点
  • 我们通过方法四来解决间距问题

在这里插入图片描述

<p><span style="letter-spacing: 12px;">这是一段文</span><!--消除间距--><span></span>
</p>

2.4 text-align两端对齐的使用

这text-align:text-align CSS 属性定义行内内容(例如文字)如何相对它的块父元素对齐。text-align 并不控制块元素自己的对齐,只控制它的行内内容的对齐。

text-align: justify 文字向两侧对齐,对最后一行无效。
text-align: justify-all 和 justify 一致,但是强制使最后一行两端对齐。为实验性,暂不生效

text-align: left;//行内内容向左侧边对齐。
text-align: right;//行内内容向右侧边对齐。
text-align: center;//行内内容居中。
text-align: justify;//文字向两侧对齐,对最后一行无效。
text-align: justify-all;// justify 一致,但是强制使最后一行两端对齐。
text-align: start;//如果内容方向是左至右,则等于left,反之则为right。
text-align: end;//如果内容方向是左至右,则等于right,反之则为left。
text-align: match-parent;//和inherit类似,区别在于start和end的值根据父元素的direction确定,并被替换为恰当的left或right。
  • 结合2.3的demo,接着往下进行,为父元素设置足够长的宽度

在这里插入图片描述

 + width: 600px;
  • 为其设置text-align,设置justify,实现两端对齐,可以发现,木有效果,因为justify对最后一行无效。那如何实现呢?
  • 方法一:通过text-align-last ,局限:兼容性问题

在这里插入图片描述

text-align-last:CSS 属性 text-align-last 描述的是一段文本中最后一行在被强制换行之前的对齐规则。

text-align-last:justify 最后一行文字的开头与内容盒子的左侧对齐,末尾与右侧对齐。

 + text-align: justify;+ text-align-last: justify;
  • 方法二:添加内联伪元素,父元素设置text-align

在这里插入图片描述

div::after{content: '';display: inline-block;width: 100%;
}
  • 伪元素使得高度变多了,为父元素设置高度

在这里插入图片描述

div{text-align: justify;height:52px;
}

3.实现步骤

  • 父元素定义为section
<section>
</<section>
section {cursor: default;display: inline-block;
}
  • 根据2.1章节实现文字渐变色,在 section标签下添加p标签在这里插入图片描述
<p class="title" id="title"><span id="item1">工欲善其事必先利其器</span>
</p>
.title{font-family: YouSheBiaoTiHei;font-size: 44px;line-height: 57px;background: linear-gradient(180deg, #d0dae2 0%, #ffffff 100%);background-clip: text;-webkit-background-clip: text;-webkit-text-fill-color: transparent;
}
  • 根据2.2章节为title实现文字投影

在这里插入图片描述

.title{filter: drop-shadow(0px 2px 4px #000);
}
  • 根据2.3章节处理letter-spacing最后一个字符间距

在这里插入图片描述

<span id="item1">工欲善其事必先利其</span><!--消除间距--><span id="item2"></span>
.title span:nth-child(1) {letter-spacing: 12px;}
  • title添加伪元素,实现渐变色下划线

在这里插入图片描述

.title::after {content: "";position: absolute;left: 0;bottom: 0;width: 100%;height: 1px;background: linear-gradient(270deg,rgba(72, 85, 100, 0) 0%,#637992 51%,rgba(72, 85, 100, 0) 100%);}
  • 与title元素同级别,添加英文字符

在这里插入图片描述

<p class='title'>xxx</p>
<p class="en-title">SHARP TOOLS MAKES GODD WORK (Never too old to learn)
</p>
.en-title {font-size: 12px;color: #8e939a;line-height: 13px;letter-spacing: 2px;
}
  • 根据2.4章节,为section添加text-align设置,这里选择方法一(如果选择方法二,需要单独对每行文字设置,不能直接设置在父元素上)

在这里插入图片描述

section{text-align: justify;align-last: justify;
}
  • 为section添加hover事件,鼠标悬浮,文字字体放大;title设置过渡效果,就实现了~

在这里插入图片描述

section:hover .title {font-size: 48px;
}
.title {transition: all 0.5s ease-in-out;
}

4.实现代码

<style>section {cursor: default;display: inline-block;text-align: justify;text-align-last: justify;}.title {font-family: YouSheBiaoTiHei;font-size: 44px;line-height: 57px;background: linear-gradient(180deg, #d0dae2 0%, #ffffff 100%);background-clip: text;-webkit-background-clip: text;-webkit-text-fill-color: transparent;position: relative;margin-bottom: 10px;transition: all 0.5s ease-in-out;filter: drop-shadow(0px 2px 4px #000);}.title::after {content: "";position: absolute;left: 0;bottom: 0;width: 100%;height: 1px;background: linear-gradient(270deg,rgba(72, 85, 100, 0) 0%,#637992 51%,rgba(72, 85, 100, 0) 100%);}.title span:nth-child(1) {letter-spacing: 12px;}.en-title {font-size: 12px;color: #8e939a;line-height: 13px;letter-spacing: 2px;font-family: "D-DIN";}section:hover .title {font-size: 48px;}
</style><body><section><p class="title" id="title"><span id="item1"></span><!--消除间距--><span id="item2"></span></p><p class="en-title">SHARP TOOLS MAKES GODD WORK (Never too old to learn)</p></section>
</body>
<script>// 标题字数有限制const init = (title) => {const dom1 = document.getElementById("item1");const dom2 = document.getElementById("item2");const titleBox = document.getElementById("title");titleBox.dataset.title = title;dom1.innerHTML = title.slice(0, -1);dom2.innerHTML = title.slice(-1);}init('工欲善其事必先利其器');
</script>

5.写在最后🍒

看完本文如果觉得对你有一丢丢帮助,记得点赞+关注+收藏鸭 🍕
更多相关内容,关注🍥苏苏的bug,🍡苏苏的github,🍪苏苏的码云~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/15118.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

42. 会话划分问题

文章目录 题目需求思路一实现一题目来源 题目需求 现有页面浏览记录表&#xff08;page_view_events&#xff09;如下&#xff0c;每行数据代表&#xff1a;每个用户的每次页面访问记录。 规定若同一用户的相邻两次访问记录时间间隔小于60s&#xff0c;则认为两次浏览记录属于…

CSS 内容盒子与边框盒子

这篇比较重要&#xff0c;会不断更新❗ 文章目录 &#x1f447;内容盒子开发者工具的使用border 边框padding 内边距margin 外边距盒子整体尺寸元素默认样式与CSS重置元素分类块级标记行级标记行内块标记 display样式内容溢出裁剪掉溢出部分滚动条 圆角边框 border-radius ✌边…

学无止境·MySQL③

单表查询 题一创建表并插入数据薪水修改为5000将姓名为张三的员工薪水修改为3000元将姓名为李四的员工薪水修改为4000元&#xff0c;gener改为女 题一 1.创建表&#xff1a; 创建员工表employee&#xff0c;字段如下&#xff1a; id&#xff08;员工编号&#xff09;&#xff…

Day976.如何安全、快速地接入OAuth 2.0? -OAuth 2.0

如何安全、快速地接入OAuth 2.0&#xff1f; Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于如何安全、快速地接入OAuth 2.0&#xff1f;的内容。 授权服务将 OAuth 2.0 的复杂性都揽在了自己身上&#xff0c;这也是授权服务为什么是 OAuth 2.0 体系的核心的原因之…

c++读取字符串字符时出错

这是我做的一个c爬虫程序但是在抓取网页的时候string类型传递出现了问题 以下是图片代码 url的值是 "http://desk.zol.com.cn/" 我不知道为什么数据传递会出问题 请大佬指教 后面重新启动一遍编译器查一查断点有突然没问题了 &#xff0c;真是个玄学的问题。我还以…

mysql 大数据量从“.log“文件插入方法

要被插入的数据文件以及内容 表结构 插入成功&#xff0c;插入时如果有主键唯一索引&#xff0c;则按照唯一索引的大小顺序插入&#xff0c;速度会快很多

Linux——内核概念

一、内核 什么是内核&#xff1f; 计算机是由各种外部硬件设备组成的&#xff0c;如内存、cpu、硬盘等。如果每个应用都要和这些硬件对接通信协议&#xff0c;就太麻烦了&#xff0c;所以这个工作就由内核来负责。内核作为软件连接硬件设备的桥梁&#xff0c;使应用开发者只需…

(ARM)7/5

1.串口发送单个字符 2.串口发送字符串 uart4.h #ifndef __UART4_H__ #define __UART4_H__#include "stm32mp1xx_uart.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h"//初始化相关操作 void hal_uart4_init();//发送一个字符 v…

云计算——虚拟化层架构

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 前言 本章将会讲解云计算的虚拟化层架构&#xff0c;了解云计算虚拟化层都有哪些架构模式…

Java POI excel单元格背景色(填充)、字体颜色(对齐)、边框(颜色)、行高、列宽设置

文章目录 1、Excel Cell单元格背景色颜色名称对照关系2、Excel Cell单元格背景填充样式颜色填充对照关系3、Excel Cell字体样式设置对照图4、Excel 行高、列宽设置5、Excel单元格边框设置边框类型图片对比附一&#xff1a;一些问题1、关于列宽使用磅*20的计算方式2、关于行高使…

开发抖音短视频账号矩阵系统技术实现能解决一机一号实名认证问题?

一、短视频账号矩阵系统解决一机一号实名认证问题&#xff1f; 目前站在开发者角度来看问的比较多&#xff0c;做开发技术类矩阵saas工具&#xff0c;需要的多账号怎么解决&#xff0c;这需要从两个方面来做开发解决。 第一、从开发角度来看技术开发首先解决代理ip分发问题&a…

DAY38:贪心算法(五)K次取反后最大数组和+加油站

文章目录 1005.K次取反后最大化的数组和思路直接升序排序的写法最开始的写法&#xff1a;逻辑错误修改版时间复杂度 自定义sort对绝对值排序的写法sort的自定义比较函数cmp必须声明为static的原因std::sort升降序的问题&#xff08;默认升序&#xff09;时间复杂度 总结 134.加…