textarea 聚焦后边框_实现"输入框"获得焦点时外边框变蓝

本文讲述了如何在textarea聚焦时改变边框颜色以提高用户体验。原本使用outline属性实现,但由于浏览器兼容性和样式问题,转向使用border和box-shadow。对于由div包裹的输入框,通过JavaScript监听focus和blur事件来改变边框颜色,尽管尝试过用CSS解决,但最终未能实现。
摘要由CSDN通过智能技术生成

背景

之前做了一个网页,网页中的所有输入框都被设计为“获得鼠标焦点时外边框不变蓝”。突然某一天,产品觉得这样用户体验不好,不能很明显地告诉用户当前鼠标停在哪里,于是要求改为“当输入框获得鼠标焦点时,外边框自动变蓝;失去焦点时外边框恢复原样”。

浏览器自动会给输入框input、textarea的outline 属性设置一个默认值,效果就是当输入框获得鼠标焦点时外边框会自动带上颜色,失去焦点时外边框颜色消失。由于不同浏览器outline 属性的默认值不同,导致外边框的颜色也不同。如果不想要浏览器的outline默认设置,只需要将 outline 属性设置为none 即可。

所以一开始听到这个需求,感觉特别简单,不就是纯 CSS 的问题嘛!我只要将所有输入框的 outline 属性设置为浏览器默认的值就好了,但我想的太天真了。。。。

1、如何复制浏览器默认的 outline 样式

由于网页中已有的输入框的样式遍布在各个文件中,有一种非常机械的办法,那就是到每个文件中去删除掉输入框的 outline:none样式,这样输入框就会使用浏览器默认的 outline 样式了。但是这样做要改的地方太多了,会疯掉的!再想想有没有更省事的方法,有了!在最基本的base.css样式文件中给输入框添加一个focus时候的outline样式不就解决了么。那么问题来了,该将outline 设置何值,才能自动使用浏览器默认的outline样式呢?

我第一个想到的方法是将 outline设置为auto,但发现只有webkit 内核的浏览器才支持这个属性值,firefox 不支持,因为auto 并不是标准的outline 值。所以要想直接复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值