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

news2024/12/22 20:32:59

前言

👏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.coloradmin.cn/o/722075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LabVIEW脉冲检测实现

文章目录 前言一、脉冲检测的原理二、代码实现1、前面板①、输入波形相关参数②、脉冲检测结果 2、程序框图 三、代码自取结论 前言 本节通过 labview 软件实现先导脉冲检测的功能&#xff0c;从而获取先导脉冲的频率、先导脉冲与线性调频信号的延时的相关信息。 一、脉冲检测…

多实例部署和Nginx+Tomcat负载均衡、动静分离

目录 一、Tomcat多实例部署 1.安装好 jdk 2.安装 tomcat 3.配置 tomcat环境变量 4.修改 tomcat2 中的 server.xml文件&#xff0c;要求各 tomcat 实例配置不能有重复的端口号 5.修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件&#xff0c;添加 tomcat 环境变量 6.启…

Vue和React的区别?

目录 共同点 1. 数据驱动视图 2. 组件化 3. Virtual DOM 不同点 1. 核心思想不同 2. 组件写法差异 3. diff算法不同 4. 响应式原理不同 5. 其他不同点 首先找到 Vue 和 React 的共性&#xff0c;它们被用于解决什么问题&#xff0c; 然后再挖掘各自独特的个性、设计原…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(6月 30 日论文合集)

文章目录 一、检测相关(8篇)1.1 Detect Any Deepfakes: Segment Anything Meets Face Forgery Detection and Localization1.2 Sustainable Palm Tree Farming: Leveraging IoT and Multi-Modal Data for Early Detection and Mapping of Red Palm Weevil1.3 Evaluation of Env…

【DP+博弈】ABC195 E

E - Lucky 7 Battle (atcoder.jp) 题意&#xff1a; 思路&#xff1a; Code&#xff1a; #include <bits/stdc.h>//#define int long longusing namespace std;const int mxn2e510; const int mxe1e610; const int mod1e97; const int Inf0x3f3f3f3f;string s,x;int N;…

【设计模式】第十九章:访问者模式详解及应用案例

系列文章 【设计模式】七大设计原则 【设计模式】第一章&#xff1a;单例模式 【设计模式】第二章&#xff1a;工厂模式 【设计模式】第三章&#xff1a;建造者模式 【设计模式】第四章&#xff1a;原型模式 【设计模式】第五章&#xff1a;适配器模式 【设计模式】第六章&…

VI-SLAM系统对比

任何类型的相机对运动物体&#xff0c;视线遮挡&#xff0c;光照剧烈变化等恶劣情况下都不够鲁棒&#xff0c;而惯性测量单元&#xff08;IMU&#xff09;对环境基本没有要求&#xff0c;并且IMU可以提供高频的位姿估计&#xff0c;视觉一般只能提供低频的位姿。依据视觉与IMU的…

前后端实现导出导入功能

目录 导出 1.后端代码 &#xff08;1&#xff09;相关依赖 &#xff08;2&#xff09;自定义实体类 &#xff08;3&#xff09;写一个查询方法list &#xff08;4&#xff09;写导出接口 2.前端代码 3.效果示例 导入 1.后端代码 &#xff08;1&#xff09;写导入接口 …

在SpringBoot中对es集群的基本操作

在创建SpringBoot项目之前要先把上一篇文档搭建的集群打开,然后再创建SpringBoot项目,不会创建的可以访问这里 快速创建SpringBoot项目 提前准备: 1.导入pom依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starte…

23西安电子科技大学光电工程学院851考研录取情况

01、光电工程学院各个方向 02、23光电工程学院一志愿考研录取情况总览、平均分 PS&#xff1a;在23年&#xff0c;西电物理与光电工程学院拆分为两个院&#xff0c;分别是&#xff1a;物理学院和光电工程学院。其中物理学院改考602高等数学872普通物理&#xff0c;光电学院专业…

六、盒子模型

盒子模型 1、元素分类 1、元素分类 行内元素&#xff08;内联元素&#xff09;inline 从左向右&#xff0c;从上到下&#xff0c;依次显示 一个挨着挨一个 以下属性无效&#xff1a;width、height、maring、pading 行内元素内部无法嵌套块级元素 行内元素列表 a strong span …

leetcode 160.链表相交

⭐️ 往期相关文章 &#x1f4ab;链接1&#xff1a;链表分割 &#x1f4ab;链接2&#xff1a;链表中倒数第k个结点(快慢指针问题) &#x1f4ab;链接3&#xff1a;leetcode 876.链表的中间结点(快慢指针问题) &#x1f4ab;链接4&#xff1a;leetcode 206.反转链表 &#x1f4…

Servlet 的常用 API + 综合运用【表白墙】

前言 小亭子正在努力的学习编程&#xff0c;接下来将开启JavaEE的学习~~ 分享的文章都是学习的笔记和感悟&#xff0c;如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话&#xff0c;烦请点赞关注支持一波, 感激不尽~~ 目录 前言 一、HttpServlet Servlet 的生…

医学图像分割的全卷积transformer

文章目录 The Fully Convolutional Transformer for Medical Image Segmentation摘要本文方法实验结果 The Fully Convolutional Transformer for Medical Image Segmentation 摘要 我们提出了一种新的Transformer &#xff0c;能够分割不同模式的医学图像。医学图像分析的细…

【机器学习核心总结】什么是EM(最大期望值算法)

什么是EM(最大期望值算法) 在现实生活中&#xff0c;苹果百分百是苹果&#xff0c;梨百分白是梨。 生活中还有很多事物是概率分布&#xff0c;比如有多少人结了婚&#xff0c;又有多少人有工作&#xff0c; 如果我们想要调查人群中吸大麻者的比例呢&#xff1f;敏感问题很难得…

FOF常用的七种投资策略全解析

从当前市场上的投资策略种类来看&#xff0c;大致有七种&#xff0c;包括核心*卫星投资策略、「杠铃」投资策略、反向投资策略、成本平均策略和时间分散化策略、买入并持有策略、美林投资时钟策略、Alpha/Beta投资策略。 投资策略一:美林投资时钟策略 美林投资时钟投资策略相信…

CAN(2)-GD32

CAN(2)-GD32 GD32中CAN的特征 结构框图 CNA总线的工作模式 睡眠工作模式 初始化工作模式 正常工作模式 CAN通信模式 静默通信模式 回环通信模式 回环静默通信模式

hadoop --- MapReduce

MapReduce定义&#xff1a; MapReduce可以分解为Map (映射) Reduce (规约) &#xff0c; 具体过程&#xff1a; Map : 输入数据集被切分成多个小块&#xff0c;并分配给不同的计算节点进行处理Shuffle and Sort&#xff1a;洗牌和排序&#xff0c;在 Map 阶段结束后&#xf…

CCF-CSP真题《202303-4 星际网络II》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看&#xff1a;CCF-CSP真题附题解大全 试题编号&#xff1a;202303-4试题名称&#xff1a;星际网络II时间限制&#xff1a;2.0s内存限制&#xff1a;1.0GB问题描述&#xff1a; 问题描述 随着星际网络的进一步建设和规模的增大&#x…

docker-compose部署BCH节点

BCH gitlab BCH github 1、下载BCH二进制文件 rootiZj6c076dm0c5n5b39lzlxZ:/data/docker-compose/bch# wget https://github.com/bitcoin-cash-node/bitcoin-cash-node/releases/download/v26.1.0/bitcoin-cash-node-26.1.0-x86_64-linux-gnu.tar.gz --2023-07-05 16:30:46--…