实现 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 来决定渲染状态。


相关文章
UE虚幻引擎 UTextBlock UMG文本控件超过边界区域以后显示省略号
UE虚幻引擎 UTextBlock UMG文本控件超过边界区域以后显示省略号
230 0
|
前端开发
鼠标点击<input>输入框后边框发生颜色变化
鼠标点击<input>输入框后边框发生颜色变化
106 0
|
编解码 前端开发 PHP
悬浮坐标解决方案:如何在图片获取xy鼠标位置和增加标注信息
悬浮坐标解决方案:如何在图片获取xy鼠标位置和增加标注信息
173 0
文本溢出显示省略号,鼠标浮动查看全部内容
文本溢出显示省略号,鼠标浮动查看全部内容
126 0
布局之悬浮显示更多文本并增加箭头指示效果
布局之悬浮显示更多文本并增加箭头指示效果
134 0
布局之悬浮显示更多文本并增加箭头指示效果
|
前端开发 JavaScript 计算机视觉
css动画:文字向上移动并逐渐消失 点击按钮显示+1上移淡出
css动画:文字向上移动并逐渐消失 点击按钮显示+1上移淡出
1134 0
css动画:文字向上移动并逐渐消失 点击按钮显示+1上移淡出
|
编解码 前端开发 UED
每日一学—设置页面文字大小随屏幕大小变化而变化(rem布局)
每日学一点加强技术水平,夯实基础。 阅读这篇文章,一起学习rem布局吧。
418 0
每日一学—设置页面文字大小随屏幕大小变化而变化(rem布局)
PyQt5 技术篇-设置滚动条拉动位置,scrollArea滚动条位置设置方法。
PyQt5 技术篇-设置滚动条拉动位置,scrollArea滚动条位置设置方法。
632 0
iframe框根据内容自适应高度(100%可用)
iframe框根据内容自适应高度(100%可用)
952 0
|
JavaScript 前端开发 .NET