如何隐藏 Safari 中 input 标签的 autofill 图标

Safari 浏览器会为 <input type="passport"> 标签自动添加一个小锁的图标(如下图),本意上是让用户可以从这里选择相应的 用户名/密码 进行自动填充,但是在某些场景下需要将其隐藏,可能是出于安全性考虑,当然也有可能出于 UI 样式方面考虑。

从网上可以搜到很多种有效的解决方法,例如下面的代码就是其中之一,但是很少会告诉你为什么要这样做,以致于下次再遇到这样类似的问题时,还是要借助于 Google、Baidu。

input::-webkit-credentials-auto-fill-button {
    display: none !important;
    visibility: hidden;
    pointer-events: none;
    position: absolute; /* 避免占用 input 元素额外的 padding,正常情况下存在 display: none!; 就可以了 */
    right: 0;
}

在了解为什么要这样做之前,我们需要稍微了解下什么是 Shadow DOM,简单点来说:

Shadow DOM 允许在 document 渲染时插入一个 DOM 元素子树,但是这课子树并不在主 DOM 树中。开发者可以利用 Shadow DOM 封装自己的 HTML 标签、CSS 样式和 JavaScript 代码。

在介绍 Shadow DOM 的所有例子中,最经典的就是 <video> 标签。在HTML中,我们只使用了一个 <video> 标签,但是在页面上却呈现了很多元素,例如,下载按钮、全屏按钮呀等等。这个就是 Shadow DOM 的功劳了,它在 document 渲染 <video> 元素时,在该元素的子树中插入了 <button><span> 等标签用来显示 下载、全屏 等一系列的元素。该原理同样适用于 <input type="passowrd"> 标签,虽然它的子树中的元素相对于 <video> 来说少的可怜。

我们可以通过下述方法在 Safari 中打开显示 Shadow DOM 的开关。

在显示 Shadow DOM 后,我们可以清楚的看到 <input type="passport"> 中的小锁是由 <div pseudo="-webkit-credentials-auto-fill-button"></div> 渲染的。

所以我们的问题就简化为如何通过 CSS 隐藏相应的 <div> 。说到这里,相信大家也都明白文章开头的 CSS 的作用以及为什么要这样做了吧。

原文地址:https://www.cnblogs.com/philipding/p/8319512.html

时间: 2024-10-19 04:44:35

如何隐藏 Safari 中 input 标签的 autofill 图标的相关文章

html中input标签相关的属性

1. input标签的type属性 属性 值 描述 type button 定义可点击按钮(多数情况下,用于通过 JavaScript 启动脚本). file 定义输入字段和 "浏览"按钮,供文件上传. checkbox 定义复选框. hidden 定义隐藏的输入字段. image 定义图像形式的提交按钮. password 定义密码字段.该字段中的字符被掩码. radio 定义单选按钮. reset 定义重置按钮.重置按钮会清除表单中的所有数据. submit 定义提交按钮.提交按钮

html 中input标签的name属性

  <form action="form_action.asp" method="get"> <p>Name: <input type="text" name="fullname" /></p> <p>Email: <input type="text" name="email" /></p> <in

html中input标签的tabindex属性

当浏览者浏览网站时可以通过按TAB键在网页的链接中依次移动,这是一个相当方便实用的功能.但如果网页中链接太多,恐怕按TAB键就没什么作用了,这时不妨通过改变TAB键移动的顺序来突出重点,在某些重要页面上方便访问者. 使用TABINDEX属性可以设置TAB键在链接中的移动顺序.把链接的TABINDEX属性设成1到32767的一个值,就可以把这个链接加入到 TAB键的序列中,而若把TABINDEX属性设为一个负值(如TABINDEX="-1"),那么这个链接将被排除在TAB键的序列之外.

解决iview中&lt;/Input&gt;标签报错的方法

(1)To turn it off, set vetur.validation.template: false. 这时错误并不会消息. (2)在git bash中输入yarn add -D eslint eslint-plugin-vue,若没有安装yarn则需要先安装,安装可采用npm的安装方法: (3)在eslintrc.js中配置,如下: 1 extends: [ 2 // https://github.com/vuejs/eslint-plugin-vue#priority-a-esse

iOS 7.1的Safari为meta标签新增minimal-ui属性,在网页加载时隐藏地址栏与导航栏

iOS 7.1的Safari为meta标签新增minimal-ui属性,在网页加载时隐藏地址栏与导航栏 在过去,用 Safari 打开一个网页后是这样的: 是不是十分不爽?因为顶部的地址栏与底部的导航栏让页面显得非常拥挤,所以用户常常会马上伸手触屏滑动让它们隐藏起来. 始终强调人性化设计的苹果当然注意到了这点,于是在 iOS 7.1 的 Safari 中为 meta 标签新增 minimal-ui 属性,让网页在加载时便可隐藏顶部的地址栏与底部的导航栏. 如何实现?你只需将“minimal-ui

使用CSS3中的input标签与lable标签组合实现banner图的切换

在做网页时,我们经常可以碰到banner图的切换.对于那些JS薄弱的同学来说,这就很尴尬了.今天,我来告诉大家如何使用CSS做出banner图切换的效果. 这里,用到了lable标签与input的组合,首先先来了解下lable标签 <label> 标签为 input 元素定义标签(label). label 元素不会向用户呈现任何特殊的样式.不过,它为鼠标用户改善了可用性,因为如果用户点击 label 元素内的文本,则会切换到控件本身. <label> 标签的 for 属性应该等于

html5中form表单新增属性以及改良的input标签元素的种类

在HTML5中,表单新增了一些属性,input标签也有了更多的type类型,有些实现了js才能实现的特效,但目前有些浏览器不能全部支持.下面是一些h5在表单和input标签上的一些改动. <!DOCTYPE html><html> <head> <title>表单测试</title> <meta charset="utf-8" /> <!-- 在不支持h5的浏览器中,可以用CSS样式进行改写 --> &

控制input标签中只能输入数字以及小数点后两位

js 代码如下: /* 控制input标签中只能输入数字 和小数点后两位 */ function checkNum(obj) { //检查是否是非数字值 if (isNaN(obj.value)) { obj.value = ""; } if (obj != null) { //检查小数点后是否对于两位http://blog.csdn.net/shanzhizi if (obj.value.toString().split(".").length > 1 &a

关于在input标签中输入数字的问题(正则表达式)

在项目开发中遇到文本框限制输入内容的问题,自己在网上找了找,又加了点自己的,简略写出了几个,在这写一下,希望对其他人有所帮助. 可在input标签中根据情况加入属性: 情况1:需要只能输入数字: onkeyup='this.value=this.value.replace(/\D/gi,"")' 情况2:需要只能输入小数(牵扯到金额等): onkeyup="this.value=(this.value.match(/\d+(\.\d{0,2})?/)||[''])[0]&qu