当前位置: 首页 > news >正文

css 实现闪烁光标

要实现闪烁光标(比如文本输入框内常见的闪烁效果),可以使用 CSS 动画。下面是一个简单的方法:

代码示例

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>CSS 闪烁光标</title>
  <style>
    .blinking-cursor {
      display: inline-block;
      width: 2px;  /* 光标宽度 */
      height: 1em; /* 光标高度与文字一致 */
      background-color: black;  /* 光标颜色 */
      animation: blink 1s step-end infinite;  /* 动画:1秒闪烁一次 */
    }

    @keyframes blink {
      50% {
        background-color: transparent;  /* 闪烁时变成透明 */
      }
    }
  </style>
</head>
<body>
  <p>模拟光标:<span class="blinking-cursor"></span></p>
</body>
</html>

解释

  • .blinking-cursor:设置一个类似光标的矩形条,高度为 1em,宽度为 2px。
  • animation: blink 1s step-end infinite;
    • blink 是关键帧动画名称。
    • 1s 表示动画周期为 1 秒。
    • step-end 表示每个动画周期末端执行变化(让闪烁看起来干脆)。
    • infinite 表示无限循环。
  • @keyframes blink:设置光标颜色在动画中变为透明,实现“闪烁”效果。

可选改进

  • 调节频率:可以更改 1s0.5s 或其他时间来更快或更慢闪烁。
  • 更改颜色或样式:除了 background-color,可以使用其他样式来改变光标行为,比如大小、颜色等。

也可以结合输入文本使用伪类 ::after 来模拟,使用伪类 ::after 可以更灵活地模拟输入文本后的闪烁光标。以下是一个带有伪类实现的动态光标的例子。

代码示例(伪类 + 闪烁光标)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>伪类闪烁光标</title>
  <style>
    .text-container {
      font-family: "Courier New", Courier, monospace;  /* 等宽字体 */
      font-size: 24px;  /* 字体大小 */
      display: inline-block;
      position: relative;
    }

    .text-container::after {
      content: "";  /* 空内容,用于模拟光标 */
      position: absolute;
      right: 0;
      width: 2px;  /* 光标宽度 */
      height: 1em;  /* 光标高度等于字体高度 */
      background-color: black;  /* 光标颜色 */
      animation: blink 1s step-end infinite;  /* 闪烁动画 */
    }

    @keyframes blink {
      50% {
        background-color: transparent;  /* 50% 时光标透明,实现闪烁 */
      }
    }
  </style>
</head>
<body>

  <div class="text-container">
    正在输入文本...
  </div>

</body>
</html>

解释

  • .text-container:这是包含文本的容器,它使用 position: relative; 以便让伪类 ::after 的绝对定位起作用。
  • 伪类 ::after
    • content: "";:必须设置内容(即使为空),否则伪类无法显示。
    • position: absolute;:让伪类可以相对于父元素定位。
    • right: 0;:让光标始终贴紧文本右侧。
    • animation: blink 1s step-end infinite;:让光标每 1 秒闪烁一次,呈现打字效果。
  • 关键帧动画 @keyframes blink:设置光标每隔 1 秒透明一次,实现闪烁效果。

相关文章:

  • DaemonSet 与 Deployment 的主要区别
  • 使用 Layers 扩展你的 Nuxt4 应用
  • VScode-i18n-ally-Vue
  • “线程通信“一个案例
  • 仓储物流中UWB标签实现货物实时追踪的技术路径与品铂科技方案解析
  • MySQL、创建数据库、表、SQL 函数:数学函数、字符串函数、日期函数、聚合函数
  • 怎么使用pm2启动和暂停后端程序(后端架构nodejs+koa)
  • 【学Rust写CAD】14线性插值函数(加入color.rs)
  • Docker 快速入门指南
  • 【安全运营】关于攻击面管理相关概念的梳理(二)
  • Ubuntu 24.04 安装 Docker 详细教程
  • SQL server中的事务与锁
  • 华为HG532路由器RCE漏洞 CVE-2017-17215 复现
  • 批量给 PDF 页面添加超链接
  • Flink实战教程从入门到精通(基础篇)(五)Flink部署-YARN运行模式
  • 风险研究 | AI 安全警钟响起:Manus AI 漏洞暴露的背后真相
  • LeetCode 第36、37题(数独问题)
  • spring ApplicationContext 继承的这些接口作用,示例,表格对比
  • 华为单臂路由 与 策略路由
  • SpringCould微服务架构之Docker(4)
  • 做动车哪个网站查/seo网络优化是什么意思
  • 自己有网站怎么做点卡?/西安关键词快速排名
  • html5的网站有哪些/外贸网站推广优化
  • 柳市做公司网站/平台推广渠道
  • 网络广告营销概念/优化师和运营区别
  • 优普南通网站建设/收录查询工具