前言

因为业务需求, 要求我们的input框内的文本与悬浮的光标颜色不同, 这样的问题肯定在书本上很难找到解决办法, 需要通过平时的基础积累和经验。

解决方案

  • 使用 ::first-line 伪元素
  • 使用 text-shadowtext-fill-color
  • 使用 caret-color

::fist-line 修改元素

原理

一般来说,设置input框的 color 属性会修改文本内容的颜色,同时顺带改变光标的颜色。而::first-line也可以设置首行文本内容的颜色, 利用选择器的权重比,::first-line覆盖了前者的color,最终得到了想要的结果。实际演示


input.form-control {
color: #05d380; /* 光标颜色 */
} input.form-control::first-line {
color: #333; /* 文本颜色 */
}

缺陷

只适用于input框, 同时微信 webview 不支持。需要写两个css样式。

text-shadow 和 text-fill-color

原理

先利用color设置文本和光标的颜色, 然后利用 text-shadow 设置文本阴影覆盖文本颜色, 最后使用text-fill-color 将文本颜色置为透明。实际演示

.form-control {
color: #05d380; /* 光标颜色 */
text-shadow: 0 0 0 #333; /* 文本颜色 */
-webkit-text-fill-color: transparent;
} /* 设置暗文颜色 */
.form-control::-webkit-input-placeholder{
color: rgb(60, 0, 248); /* 改变placeholder文本颜色 */
text-shadow: none;
-webkit-text-fill-color: initial;
}

缺陷

text-fill-color 属性不太支持 firefox, 目前尽量使用 -webkit- 前缀。

caret-color

原理

这是CSS3最新的属性,目的就是为了解决光标颜色的问题。 实际演示

.form-control {
color: #333; /* 文本颜色 */
caret-color: #05d380; /* 光标颜色 */
}

缺陷

低版本IE浏览器不支持

兼容性考虑

为了兼容多端设备显示情况,我们必须要将一些情况考虑进来, 使用@support 条件判断来检测是否可用。因为我的环境在于移动端展示,所以只要要求进行兼容移动端,结合第二种和第三种解决方案,可以大面积覆盖设备。


.form-control {
color: #05d380; /* 光标颜色 */
text-shadow: 0 0 0 #333; /* 文本颜色 */
-webkit-text-fill-color: transparent;
} @supports (caret-color: #05d380) {
.form-control {
color: #333; /* 文本颜色 */
caret-color: #05d380; /* 光标颜色 */
}
}

小结

最近的需求里,移动端开发越来越多,而设备兼容性一直都是头疼的事情,如何更好的方式调试,写出兼容性更强的代码。需要的就是不断总结,减少错误重复发生。

最后能给大家带来帮助就好,希望大家多点赞,收藏 !!

周边知识

【CSS3】自定义设置可编辑元素闪烁光标的颜色的更多相关文章

  1. CSS3自定义滚动条样式

    原文地址:→传送门 写在前面 滚动条是个很常见的东东,不过某些浏览器自带的滚动条确实不太好看啊,下面可以作为学习,探讨下自定义滚动条的实现,这样你的滚动条就可以美美的啦.但是,也只能玩玩,因为只针对w ...

  2. Visual Studio Code教程:基础使用和自定义设置

    一.界面介绍 1.1 界面介绍 1.2 文件夹和文件的打开 文件——>打开文件夹/打开文件 1.3 新建文件/文件夹 新建文件: a. 文件——>新建文件: b. 按Ctrl+n; c. ...

  3. css3自定义移动端滚动条

    css3自定义移动端滚动条<pre>/*定义滚动条宽 高度是根据内容设置的高度决定的*/::-webkit-scrollbar{ width: 5px;} /*定义滚动条轨道 内阴影+圆角 ...

  4. vim 自定义设置格式

    在centos 6.9 或 7.3 环境下 可以在自己账户的主目录下新建一个.vimrc 的文件,放入一下代码: syntax on "即设置语法检测,当编辑C或者Shell脚本时,关键字会 ...

  5. css3自定义上传图片输入框的方法

    css3自定义上传图片输入框的方法 代码如下<pre> <form class="form1"> <img src="/kelatoupia ...

  6. Jupyter自定义设置详解

    今天专门花时间总结梳理一下jupyter的一些高级设置,jupyter我已经介绍过一次基本内容了,Setup and Linux | James Chen's Blogs,尤其是如何在服务器运行jup ...

  7. C#:实现快捷键自定义设置(转)

    项目开发过程中,需要实现类似有道词典的软件设置中的自定义快捷键功能,如下图所示: 当我们相继按下Ctrl+Alt+M的时候,软件就会自动将快捷键显示在文本框中. 最终的效果如下图所示: private ...

  8. C#:实现快捷键自定义设置

    代码下载 C#实现快捷键自定义设置 需求 项目开发过程中,需要实现类似有道词典的软件设置中的自定义快捷键功能,如下图所示: 当我们相继按下Ctrl+Alt+M的时候,软件就会自动将快捷键显示在文本框中 ...

  9. Netsharp产品标识自定义设置:产品名称、版权、LOGO等

    阅读本文请先阅读Netsharp下载及环境搭建 Netsharp本身是一个业务基础平台,Netsharp本身基础上开发的业务产品对客户才有价值,客户看到的产品应该不是Netsharp而是具体的业务产品 ...

随机推荐

  1. mysql中datetime时间转字符串(避免java层映射为数字串)

    -- in_date datetime NULLDATE_FORMAT(ls.`in_date`,'%Y-%m-%d %T')AS create_time

  2. Yahoo!团队:网站性能优化的35条黄金守则

    Yahoo!的 Exceptional Performance团队为改善 Web性能带来最佳实践.他们为此进行了一系列的实验.开发了各种工具.写了大量的文章和博客并在各种会议上参与探讨.最佳实践的核心 ...

  3. Datagridview 实现二维表头和行合并

    借鉴别人的,改了改,没用timer using System;using System.Collections.Generic;using System.ComponentModel;using Sy ...

  4. open 管道用法|Getopt::Long

    #!/usr/bin/perl use strict; use warnings; use Getopt::Long; my ($number,$in,$out); GetOptions( " ...

  5. openssl 密钥注意

    使用openssl生成的密钥,在对加密字符串进行数字签名的时候,程序一直报错,错误异常: algid parse error, not a sequence​ 其原因是因为,openssl生成的私钥没 ...

  6. 1)session总结

    (1)session的由来: HTTP协议是一种无状态协议,服务器响应完之后就失去了与浏览器的联系,最早,Netscape将cookie引入浏览器,使得数据可以客户端跨页面交换,那么服务器是如何记住众 ...

  7. 76)PHP,session数据区的使用

    (1)session数据区: 在我们的session会话结束之前,会有一个seeeion的文件,存储着session序列化的数据,在会话没有结束之前,我们都是操作$_SESSION的,但是在会话结束后 ...

  8. golang kafka clinet 内存泄露问题处理

    go 内存泄露 新版本服务跑上一天内存占用20g,显然是内存泄露 内存泄露的问题难在定位 技术上的定位 主要靠 pprof 生成统计文件 之前写web项目 基于net/http/pprof 可以看到运 ...

  9. django框架进阶-中间件-长期维护

    ##################    为什么使用中间件?      ####################### 先说几个需求, 1,url的白名单,url=[ "XX"] ...

  10. vscode中的live-server配置https?

    json文件中使用绝对路径添加证书 "liveServer.settings.https": { "enable": true, "cert" ...