【CSS3】自定义设置可编辑元素闪烁光标的颜色
前言
因为业务需求, 要求我们的input框内的文本与悬浮的光标颜色不同, 这样的问题肯定在书本上很难找到解决办法, 需要通过平时的基础积累和经验。
解决方案
- 使用
::first-line伪元素 - 使用
text-shadow和text-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】自定义设置可编辑元素闪烁光标的颜色的更多相关文章
- CSS3自定义滚动条样式
原文地址:→传送门 写在前面 滚动条是个很常见的东东,不过某些浏览器自带的滚动条确实不太好看啊,下面可以作为学习,探讨下自定义滚动条的实现,这样你的滚动条就可以美美的啦.但是,也只能玩玩,因为只针对w ...
- Visual Studio Code教程:基础使用和自定义设置
一.界面介绍 1.1 界面介绍 1.2 文件夹和文件的打开 文件——>打开文件夹/打开文件 1.3 新建文件/文件夹 新建文件: a. 文件——>新建文件: b. 按Ctrl+n; c. ...
- css3自定义移动端滚动条
css3自定义移动端滚动条<pre>/*定义滚动条宽 高度是根据内容设置的高度决定的*/::-webkit-scrollbar{ width: 5px;} /*定义滚动条轨道 内阴影+圆角 ...
- vim 自定义设置格式
在centos 6.9 或 7.3 环境下 可以在自己账户的主目录下新建一个.vimrc 的文件,放入一下代码: syntax on "即设置语法检测,当编辑C或者Shell脚本时,关键字会 ...
- css3自定义上传图片输入框的方法
css3自定义上传图片输入框的方法 代码如下<pre> <form class="form1"> <img src="/kelatoupia ...
- Jupyter自定义设置详解
今天专门花时间总结梳理一下jupyter的一些高级设置,jupyter我已经介绍过一次基本内容了,Setup and Linux | James Chen's Blogs,尤其是如何在服务器运行jup ...
- C#:实现快捷键自定义设置(转)
项目开发过程中,需要实现类似有道词典的软件设置中的自定义快捷键功能,如下图所示: 当我们相继按下Ctrl+Alt+M的时候,软件就会自动将快捷键显示在文本框中. 最终的效果如下图所示: private ...
- C#:实现快捷键自定义设置
代码下载 C#实现快捷键自定义设置 需求 项目开发过程中,需要实现类似有道词典的软件设置中的自定义快捷键功能,如下图所示: 当我们相继按下Ctrl+Alt+M的时候,软件就会自动将快捷键显示在文本框中 ...
- Netsharp产品标识自定义设置:产品名称、版权、LOGO等
阅读本文请先阅读Netsharp下载及环境搭建 Netsharp本身是一个业务基础平台,Netsharp本身基础上开发的业务产品对客户才有价值,客户看到的产品应该不是Netsharp而是具体的业务产品 ...
随机推荐
- 在windows系统下安装使用msf
前沿 msf基本是我在kali里最经使用的工具了 因为今天碰到一些关于VmWare的事情没有解决 windows在前一段时间更新,要求我卸载vmware虚拟机,否则就无法更新. 卸载之后再装回来就无法 ...
- day29-struct模块解决黏包问题
#struct模块可以把一个数据类型,例如数字int,转化成固定长度(4个字节)的bytes.int转为4个bytes. #在大量传输数据之前先告诉接收端即将接收数据的大小,方可解决黏包问题: #利用 ...
- sqlserver中的数据导到mysql相关
一.在sqlserver中生成数据表脚本,粘贴到记事本中,如下语法要进行替换 1.int IDENTITY (1, 1) NOT NULL——>id int unsigned NOT NULL ...
- 3dmax2017卸载/安装失败/如何彻底卸载清除干净3dmax2017注册表和文件的方法
3dmax2017提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dmax2017失败提示3dmax2017安装未完成,某些产品无法安装,也有时候想重新安装3 ...
- HihoCode-1323-回文字符串
参考博客: https://blog.csdn.net/mitsuha_/article/details/76690634 https://blog.csdn.net/u014142379/artic ...
- cs231n spring 2017 Python/Numpy基础
本文使根据CS231n的讲义整理而成(http://cs231n.github.io/python-numpy-tutorial/),以下内容基于Python3. 1. 基本数据类型:可以用 prin ...
- LeetCode Day 10
LeetCode0020 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序 ...
- shell-变量学习-01
1.变量 1.1 变量赋值 > variable_zhou="hello world!" #等号两边不能有空格 1.2 使用变量 > echo $variabl ...
- winform窗体中webbrowser如何屏蔽脚本错误弹窗
在构造函数中加入: webBrowser.ScriptErrorsSuppressed = true;
- python标准库:datetime模块
原文地址:http://www.bugingcode.com/blog/python_datetime.html datatime 模块题共用一些处理日期,时间和时间间隔的函数.这个模块使用面向对象的 ...