实现 input无内容是缩小居中显示,有内容,有焦点时变长显示

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

要求


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


15.png


  1. 有焦点或者有内容,input 变长


16.png


测试地址


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


实现思路


Vue + css 实现


  1. <input v-model="value" :class="{'focus':value.length}"> 我们通过内容的长度来动态修改 class ,用来实现有内容时的效果


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


纯 css 实现


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

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


required


required 属性规定必须填写内容。可以用在 <input> 类型: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 来决定渲染状态。


相关文章
|
1月前
|
前端开发 JavaScript 容器
文字溢出隐藏及鼠标悬停显示效果
文字溢出隐藏及鼠标悬停显示效果
81 0
|
6月前
textarea文本框根据输入内容自动适应高度
textarea文本框根据输入内容自动适应高度
92 0
UE虚幻引擎 UTextBlock UMG文本控件超过边界区域以后显示省略号
UE虚幻引擎 UTextBlock UMG文本控件超过边界区域以后显示省略号
197 0
|
6月前
|
iOS开发
ios中,输入框获得焦点时,页面输入框被遮盖,定位的元素位置错乱
ios中,输入框获得焦点时,页面输入框被遮盖,定位的元素位置错乱
83 1
|
前端开发
鼠标点击<input>输入框后边框发生颜色变化
鼠标点击<input>输入框后边框发生颜色变化
92 0
输出框的背景和字体颜色改变
输出框的背景和字体颜色改变
104 0
输出框的背景和字体颜色改变
布局之悬浮显示更多文本并增加箭头指示效果
布局之悬浮显示更多文本并增加箭头指示效果
127 0
布局之悬浮显示更多文本并增加箭头指示效果
|
JavaScript 前端开发 .NET
|
Web App开发 Ubuntu 前端开发