CSS——文字渐入效果

news2024/10/9 16:28:05

CSS——文字渐入效果

昨天制作了文字的打字机效果(CSS——文字打字机效果),然后我想到有些网页的文字效果是平滑渐入的,我就去思考这样的实现方式,其实就把之前的steps()函数去掉即可,但是我想换种实现方式。之前是使用伪元素遮住父元素,这次我选择使用父元素占位,然后通过逐步显示伪元素来实现这个效果,同时还用到了响应式布局,使得在缩放页面的时候也能够保证文字不会加载到屏幕之外。

文字渐入效果

基本思路

使用父元素占位,然后通过逐步显示伪元素;
使用 clac() 计算函数以及相对单位 vw 动态调整字体的大小。

实现步骤

基础的设置

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>文字填入效果</title>
  <style>
    * {
      padding: 0;
      margin: 0;
    }

    body {
      height: 100vh;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      background-color: hsl(280, 50%, 30%);
      font-family: 'Times New Roman', Times, serif;
    }

    h1 {
      position: relative;
      font-size: calc(0.5rem + 3vw);
      line-height: 2em;
      letter-spacing: .1em;
      text-wrap: nowrap;
      color: transparent;
    }

    h1::before {
      content: attr(data-text);
      position: absolute;
      width: 0;
      height: 100%;
      border-right: 5px solid var(--text-color);
      text-wrap: nowrap;
      overflow: hidden;
      color: var(--text-color);
      text-shadow: 0.05em 0.05em 0.05em hsla(0, 0%, 0%, .5);
    }
  </style>
</head>

<body>
  <h1 data-text="I'm lazy-sheep-king!" style="--text-color: hsl(60, 50%, 50%); --delay: 0">I'm lazy-sheep-king!</h1>
  <h1 data-text="Welcome to my blog!" style="--text-color: hsl(180, 50%, 50%); --delay: 1">Welcome to my blog!</h1>
  <h1 data-text="Thank you for you support!" style="--text-color: hsl(300, 50%, 50%); --delay: 2">Thank you for you
    support!</h1>
</body>

</html>

注意的是,这里使用font-size: calc(0.5rem + 3vw);动态设置文字的大小,使用line-height: 2em设置行高,这里使用相对单位em,所以行高也会随着文字大小的变化而变化,最后对父元素和伪元素使用text-wrap: nowrap,确保文字不会换行。
我们还为伪元素使用 content: attr(data-text) 获取自定义属性中的值(即将伪元素的内容设置为于其父元素一致),使用 overflow: hidden;将超出"已加载"部分的文本隐藏,与之前不同,现在使用border-right设置光标,不过这里不方便给光标设置圆角,不如使用伪元素简单(当然,这里可以继续像之前一样使用::after伪元素设置光标)。父元素设置 color: transparent; 以达到将原文字隐藏的目的。
在这里插入图片描述
(其实我觉得这个光标效果不是很搭,去掉更好,但是为了与上一篇文章联系起来就保留了)

添加关键帧

@keyframes moving {
  to {
    width: 100%;
  }
}

@keyframes flashing {
  to {
    border-color: transparent;
  }
}
h1::before {
  animation: moving 3s calc(var(--delay) * 3s) linear forwards, flashing 0.5s infinite alternate;
}

这里同样使用计算函数clac()设置不同的延时,使其依次播放,然后额外设置“光标闪烁”的效果,我们当然可以改动 -- text-color 的值以达到光标闪烁的目的,但是这同样会影响文字的颜色,所以不要为了改变而改变,这里我们改变最基础的 border-color 来实现此效果。

结语

创作不易,感谢支持;如有错误,恳请指出,希望与大家共同进步!

源码

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>文字填入效果</title>
  <style>
    * {
      padding: 0;
      margin: 0;
    }

    body {
      height: 100vh;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      background-color: hsl(280, 50%, 30%);
      font-family: 'Times New Roman', Times, serif;
    }

    h1 {
      position: relative;
      font-size: calc(0.5rem + 3vw);
      line-height: 2em;
      letter-spacing: .1em;
      color: transparent;
    }

    h1::before {
      content: attr(data-text);
      position: absolute;
      width: 0;
      height: 100%;
      border-right: 5px solid var(--text-color);
      text-wrap: nowrap;
      overflow: hidden;
      animation: moving 3s calc(var(--delay) * 3s) linear forwards, flashing 0.5s infinite alternate;
      color: var(--text-color);
      text-shadow: 0.05em 0.05em 0.05em hsla(0, 0%, 0%, .5);
    }

    @keyframes moving {
      to {
        width: 100%;
      }
    }

    @keyframes flashing {
      to {
        border-color: transparent;
      }
    }
  </style>
</head>

<body>
  <h1 data-text="I'm lazy-sheep-king!" style="--text-color: hsl(60, 50%, 50%); --delay: 0">I'm lazy-sheep-king!</h1>
  <h1 data-text="Welcome to my blog!" style="--text-color: hsl(180, 50%, 50%); --delay: 1">Welcome to my blog!</h1>
  <h1 data-text="Thank you for you support!" style="--text-color: hsl(300, 50%, 50%); --delay: 2">Thank you for you
    support!</h1>
</body>

</html>

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

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

相关文章

电脑无法无线投屏的解决办法

在前司的时候经常遇到电脑无法使用无线投屏器的情况&#xff0c;今天就来聊聊如何解决。 1.不会连接。这种情况&#xff0c;经常发生在WIN10升级WIN11之后&#xff0c;一般是两种办法&#xff0c;一种是同时按键盘上的WINDOWS和K键&#xff0c;右下角就会出来连接的图标&#…

Day8:返回倒数第k个节点

题目&#xff1a; 实现一种算法&#xff0c;找出单向链表中倒数第k个节点。返回该结点的值。 示例&#xff1a; 输入&#xff1a;1->2->3->4->5和k2 输出&#xff1a;4 说明&#xff1a; 给定的k保证是有效的。 public int kthToLast(ListNode head,int k){…

《动手学深度学习》Pytorch 版学习笔记一:从预备知识到现代卷积神经网络

前言 笔者有一定的机器学习和深度学习理论基础&#xff0c;对 Pytorch 的实战还不够熟悉&#xff0c;打算入职前专项突击一下 本文内容为笔者学习《动手学深度学习》一书的学习笔记 主要记录了代码的实现和实现过程遇到的问题&#xff0c;不完全包括其理论知识 引用&#x…

GRASP七大基本原则+纯虚构防变异

问题引出 软件开发过程中&#xff0c;需要设计大量的类&#xff0c;使他们交互以实现特定的功能性需求。但是不同的设计方式&#xff0c;对程序的非功能性需求&#xff08;可扩展性&#xff0c;稳定性&#xff0c;可维护性等&#xff09;的实现程度则完全不同。 有没有一种统一…

动态规划算法——三步问题

1.题目解析 2.算法原理 本题可以近似看做泰波那契数列&#xff0c;即小孩到第一个台阶需要一步&#xff0c;到第二个台阶则是到第一个台阶的步数加上第一阶到第二阶的步数&#xff0c;同理第三阶就是第二阶的步数加上第二阶到第三阶的步数&#xff0c;由于小孩只能走三步&#…

基于STM32的智能垃圾桶控制系统设计

引言 本项目设计了一个基于STM32微控制器的智能垃圾桶控制系统&#xff0c;能够通过超声波传感器检测手部动作&#xff0c;自动打开或关闭垃圾桶盖&#xff0c;提升用户的便利性和卫生性。该项目展示了STM32微控制器在传感器检测、伺服电机控制和嵌入式智能控制中的应用。 环…

在不支持WSL2的Windows环境下安装Redis并添加环境变量的方法

如果系统版本支持 WSL 2 可跳过本教程。使用官网提供的教程即可 官网教程 查看是否支持 WSL 2 如果不支持或者觉得麻烦可以按照下面的方式安装 下载 点击打开下载地址 下载 zip 文件即可 安装 将下载的 zip 文件解压到自己想要解压的地方即可。&#xff08;注意&#x…

毕业设计选题:基于ssm+vue+uniapp的模拟考试小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

2024最新 Navicat Premium 17 简体中文版安装图文详细教程

Navicat 17 引入了一系列新特性&#xff0c;旨在提升用户体验和工作效率。以下是一些值得关注的新功能&#xff1a; ‌模型工作区的全面重新设计‌&#xff1a;包含了增强的图表设计、更强大的同步工具、数据字典支持等多项功能。这有助于在一个工作区中创建多个模型&#xff0…

集合论基础 - 离散数学系列(一)

目录 1. 集合的基本概念 什么是集合&#xff1f; 集合的表示方法 常见的特殊集合 2. 子集与幂集 子集 幂集 3. 集合的运算 交集、并集与补集 集合运算规则 4. 笛卡尔积 5. 实际应用 6. 例题与练习 例题1 练习题 总结 引言 集合论是离散数学的基础之一&#xff…

HarmonyOS第一课 04 应用程序框架基础-习题分析

判断题 1.在基于Stage模型开发的应用项目中都存在一个app.json5配置文件、以及一个或多个module.json5配置文件。T 正确(True) 错误(False) 这个答案是T - AppScope > app.json5&#xff1a;app.json5配置文件&#xff0c;用于声明应用的全局配置信息&#xff0c;比如应用…

利用大规模语言模型提高生物医学 NER 性能的新方法

概述 论文地址&#xff1a;https://arxiv.org/pdf/2404.00152.pdf 大规模语言模型在零拍摄和四拍摄任务中表现出色&#xff0c;但在生物医学文本的独特表达识别&#xff08;NER&#xff09;方面仍有改进空间。例如&#xff0c;Gutirrez 等人&#xff08;2022 年&#xff09;的…

Chrome浏览器调用ActiveX控件--allWebOffice控件功能介绍

allWebOffice控件概述 allWebOffice控件能够实现在浏览器窗口中在线操作文档的应用&#xff08;阅读、编辑、保存等&#xff09;&#xff0c;支持编辑文档时保留修改痕迹&#xff0c;支持书签位置内容动态填充&#xff0c;支持公文套红&#xff0c;支持文档保护控制等诸多办公功…

医院伤病员食堂批量打印—未来之窗行业应用跨平台架构

一、订单后厨打印批量 在医院伤员管理中&#xff0c;预约订单现场打印的方式往往不太合适。现场打印可能会导致效率低下&#xff0c;尤其在伤员较多、情况紧急的时候&#xff0c;容易造成混乱和延误。 采用统一打印的方式具有诸多优势。首先&#xff0c;能够集中处理打印任务&…

猴子吃桃-C语言

1.问题&#xff1a; 猴子第一天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不过瘾&#xff0c;又多吃了一个。 第二天早上又将剩下的桃子吃掉一半&#xff0c;又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时&#xff0c;见只剩下一个…

ctf.bugku - SOURCE

题目来源&#xff1a; source - Bugku CTF 首先&#xff0c;访问页面&#xff0c; 得到的是假的 flag &#xff0c; 查看前端页面、代码、response返回&#xff1b; 没有有用信息&#xff1b; 查后端&#xff1a; git泄露 下载git文件 # wget -r http://114.67.175.224:156…

SIE将使用AI和机器学习加速游戏开发

索尼在一份新的索尼公司报告中透露&#xff0c;PlayStation将利用人工智能和机器学习来加快游戏开发速度。在报告的第16页&#xff0c;索尼表示&#xff1a;“加强能够帮助创作者以高效、高质量的方式最大化其IP价值的技术&#xff0c;包括传感和捕捉以及实时3D处理、人工智能和…

IDM6.42免费安装破解注册(Internet Download Manager)

01 到官网或者网盘下载安装包 中文官网链接&#xff1a; https://souurl.cn/9nbWw2 优惠码&#xff1a;WMHRDIDM5 夸克网盘&#xff1a;https://pan.quark.cn/s/885c8a9e487e​​​​​​​ 02 Powershell脚本使用: 总的来说&#xff0c;这段代码的目的是通过管理员身份下…

Spring Boot助力医院数据管理

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

SolidWorks零件图到工程图标记尺寸

SolidWorks零件图&#xff0c;生成工程图后&#xff0c;自动标注尺寸&#xff1b;&#xff08;在零件图中尺寸做了标注&#xff0c;导出成工程图后&#xff0c;尺寸不一定合适&#xff0c;需要手动挪一下位置&#xff09;