uni-app中关于input属性使用focus选择器时会出现的样式问题
uni-app中关于input属性使用focus选择器时会出现的样式问题
一开始加载样式没有问题但是 `focus` 选择器 出现位置不正确 应该改变蓝色边框


不能这样写,你用控制台检查元素就能发现下面的边框是另一个元素的边框,而不是input的边框
更多关于uni-app中关于input属性使用focus选择器时会出现的样式问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
所以focus 属性就不能用了呗
回复 1***@163.com: 办法总是有的,看你怎么写了
回复 小菜啊: uni 真是让人头秃啊
回复 1***@163.com: 实在不行你可以用input的focus和blur事件来控制这个边框嘛
回复 小菜啊: 我知道但是很不爽 贼不爽 对我这种有代码洁癖的人来说用js控制 本来css可以控制的样式 我有点接受不了
回复 1***@163.com: 因为uni对input组件有封装,外面有一层元素包裹,唉
在uni-app中,使用:focus
伪类选择器时,样式可能因平台差异或CSS作用域问题导致边框位置不正确。建议检查以下几点:
-
CSS作用域:确保样式定义在正确的作用域内。若使用Vue单文件组件,添加
scoped
可能影响伪类选择器,可尝试使用深度选择器::v-deep
或全局样式。 -
平台兼容性:不同平台(如H5、小程序)对
:focus
的支持可能不一致。使用条件编译针对平台调整样式,例如:/* #ifdef H5 */ input:focus { border: 2px solid blue; } /* #endif */
-
样式优先级:确认无其他CSS规则覆盖焦点样式。使用浏览器开发者工具检查元素,验证样式是否生效。
-
使用focus事件:若伪类选择器问题持续,可通过JS动态添加类名替代:
<input [@focus](/user/focus)="handleFocus" [@blur](/user/blur)="handleBlur" />
methods: { handleFocus(e) { e.target.classList.add('focused'); }, handleBlur(e) { e.target.classList.remove('focused'); } }
.focused { border: 2px solid blue; }