input无法获取焦点_实现 input 无内容时缩小居中显示,有内容、有焦点时变长显示...

前两天做了一个搜索中间页,有个 input 的效果挺有意思,准备分享一下。

要求

  1. 默认时(无内容、无焦点)显示居中效果。

    f14276b9114d2dfe0038f7c9f168f128.png

  2. 有焦点或者有内容,input 变长be928480a1a53197f418129d0a6824f0.png

测试地址 : https://www.lilnong.top/static/html/css-flex-input-auto-animate.html

https://www.lilnong.top/stati...

实现思路

方案一:Vue + css 实现

  1. 我们通过内容的长度来动态修改 class ,用来实现有内容时的效果

  2. input.focus,input:focus{width: 100%} 我们通过 :focus 这个伪类来监听获取焦点的状态。

方案二:纯 css 实现

上一个方案依赖js。那有没有不依赖 js 的呢?重点在判断是否有内容

我们如何判断呢?这里要依赖两个东西 required:valid

required

required 属性规定必须填写内容。可以用在 类型:text, search, url, telephone, email, password, date pickers, number, checkbox, radio, file

:valid

:valid 选择器作用在限制值的元素上,例如 input 元素中的 min 和 max 属性,require,及正确的 email 字段, 合法的数字字段等。:valid 选择器可以在表单元素的值需要根据指定条件验证时设置指定样式

那么问题就很简单了,我们让他必填,这样就可以根据这个状态来显示样式

优化优化一下无内容时不显示 close 按钮

方案一:当然是 js 大法了,还是判断 value.length
方案二:增加一个表单,然后判断根据表单的 :valid 来决定渲染状态。

微信公众号:前端linong

欢迎大家关注我的公众号。有疑问也可以加我的微信前端交流群。

e30874a9c18cfbebd204c7b2469104b4.png

总结

  1. js 实现当然是兼容性极好

  2. css 实现来说比较简单,当然兼容性就比较感人。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值