uniapp app 实现自适应宽度 input

核心原理

input 输入,存在一个 view 元素容纳输入内容,此时获取 view 元素的宽,将其设置为 input 的宽
特殊情况:回显的时候当前元素可能不存在,此时需要借助一个永远显示的元素进行宽度计算(InputWidthHelper.vue

adaption-input.vue

<template><view class="adaption-input-wrapper"><view class="adaption-input"><inputtype="text":placeholder-style="placeholderStyle":placeholder="placeholder":style="{ width: inputWidth }"@input="changeInputFn"/></view><view :id="randomID" class="a--input">{{ modelValue || '请输入' }}</view></view>
</template><script>export default {inheritAttrs: false,props: {modelValue: {type: [String, Number],default: '',},placeholder: {type: String,default: '请输入',},placeholderStyle: {type: String,default: 'color: #9ea5bb',},},data() {return {randomID: 'adaption_' + new Date().getTime(),inputWidth: '',}},watch: {modelValue: {handler() {this.$nextTick(() => {this.changeInputFn()})},immediate: true,},},options: {virtualHost: true,},computed: {inputVal: {set(val) {this.$emit('update:modelValue', val)this.$emit('change', val)},get() {return this.modelValue},},},methods: {changeInputFn() {setTimeout(() => {const query = uni.createSelectorQuery().in(this)query.select(`#${this.randomID}`).boundingClientRect((rect) => {if (rect) {// 处于不可见状态,需要借助一个永远显示的 dom 进行处理if (rect.width == 0) {uni.$emit('getInputWidth', this.inputVal)} else {let rectWidth = rect.widthif (rectWidth > 150) {rectWidth = 150}if (this.inputVal) {this.inputWidth = rectWidth + 30 + 'px'} else {this.inputWidth = rectWidth + 5 + 'px'}}}}).exec()}, 0)},},mounted() {uni.$on('returnInputWidth', (width) => {this.inputWidth = width})},}
</script><style lang="scss" scoped>.adaption-input {font-size: 28rpx;}.a--input {font: inherit;opacity: 0;position: fixed;top: 0;z-index: -1;}
</style>

InputWidthHelper.vue

<template><view :id="randomID" class="a--input">{{ inputValue || '请输入' }}</view>
</template><script>export default {inheritAttrs: false,data() {return {randomID: 'adaption_' + new Date().getTime(),inputValue: '',}},mounted() {uni.$on('getInputWidth', (text) => {this.inputValue = textthis.$nextTick(() => {const query = uni.createSelectorQuery().in(this)query.select(`#${this.randomID}`).boundingClientRect((rect) => {if (rect) {let rectWidth = rect.widthif (rectWidth > 150) {rectWidth = 150}if (text) {uni.$emit('returnInputWidth', rectWidth + 30 + 'px')} else {uni.$emit('returnInputWidth', rectWidth + 5 + 'px')}}}).exec()})})},}
</script><style lang="scss" scoped>.adaption-input {font-size: 28rpx;}.a--input {font: inherit;opacity: 0;position: fixed;top: 0;z-index: -1;}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/220206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bugku--source

dirsearch扫一下 题目提示源代码&#xff08;source&#xff09; 也就是源代码泄露&#xff0c;然后发现有.git 猜到是git泄露 拼接后发现有文件 但是点开啥也没有 kali里面下载下来 wegt -r 下载网站的所有内容 ls 查看目录 cd 进入到目录里面 gie reflog 引用日志使用…

如何用python编写抢票软件,python爬虫小程序抢购

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python小程序抢购脚本怎么写&#xff0c;如何用python编写抢票软件&#xff0c;现在让我们一起来看看吧&#xff01; 大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python小程序抢购脚本怎么写&#xff0c;如…

Linux下安装并配置JAVA环境

Linux下安装并配置JAVA环境 Linux下安装并配置JAVA环境安装版本 Linux下安装并配置JAVA环境 记录一下自己在平时的操作&#xff0c;同时希望可以帮助到大家 安装版本 此次安装版本为OpenJDK8U-jdk_x64_linux_8u332b09&#xff0c;步骤如下 1.上传版本包至合适位置 2.解压 …

【洛谷算法题】P1422-小玉家的电费【入门2分支结构】

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P1422-小玉家的电费【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…

diag_service的GLINK_IST是怎么来的

背景 平台&#xff1a;SA8155,QA 1.2.1 8155上集成了很多IP核&#xff0c;其中有不少的IP本质上是arm M核或者R核&#xff0c;这些模块在开发或者使用过程中也是需要监控和诊断的&#xff0c;但是他们并没有外部的调试接口&#xff0c;高通设计了整套诊断框架通过APSS&#x…

OpenHarmony应用开发——实现Toast提示功能-鸿蒙物联网应用开发-HarmonyOs应用开发

一、前言 本文我们将实现Toast样式的功能&#xff0c;以便于和用户进行简单、基本的信息交互。需要注意的是&#xff0c;本专栏&#xff08;OpenHarmony应用开发&#xff09;不阐述UI设计内容&#xff0c;而主要介绍大家开发中常遇到、常使用的功能问题&#xff0c;以及在物联网…

基于Dockerfile创建LNMP

实验组件 172.111.0.10&#xff1a;nginx docker-nginx 172.111.0.20&#xff1a;mysql docker-mysql 172.111.0.30&#xff1a;php docker-php 实验步骤 1.建立nginx-lnmp镜像及容器 cd /opt mkdir nginx cd nginx/ --上传nginx-1.22.0.tar.gz和wordpress-6.4.2-zh_C…

Android13适配所有文件管理权限

Android13适配所有文件管理权限 前言&#xff1a; 很早之前在Android11上面就适配过所有文件管理权限&#xff0c;这次是海外版升级到Android13&#xff0c;由于选择相册用的是第三方库&#xff0c;组内的同事没有上架Google的经验直接就提交代码&#xff0c;虽然功能没有问题…

自动化补丁管理软件

什么是自动化补丁管理 自动补丁管理&#xff08;或自动补丁&#xff09;是指整个补丁管理过程的自动化&#xff0c;从扫描网络中的所有系统到检测缺失的补丁&#xff0c;在一组测试系统上测试补丁&#xff0c;将它们部署到所需的系统&#xff0c;并提供定期更新和补丁部署状态…

arrays.sort用法详解

arrays.sort用法详解 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在编程的世界中&#xff0c;数组&#xff08;arrays&#xff09;是一种常见且重要的数据结构&a…

国产数据库适配-达梦(DM)

1、通用性 达梦数据库管理系统兼容多种硬件体系&#xff0c;可运行于X86、X64、SPARC、POWER等硬件体系之上。DM各种平台上的数据存储结构和消息通信结构完全一致&#xff0c;使得DM各种组件在不同的硬件平台上具有一致的使用特性。 达梦数据库管理系统产品实现了平台无关性&…

【算法与数据结构】37、LeetCode解数独

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题也是一道困难题&#xff0c;难点在于如何构建数独棋盘&#xff0c;如何检查棋盘的合法性&#xff…

H5开发App应用程序的常见问题以及解决方案

Hello大家好&#xff0c;我是咕噜铁蛋&#xff0c;天冷记得添衣&#xff0c;ok话说回来H5开发成为了一种流行的方式来构建跨平台的移动应用程序。然而&#xff0c;在H5开发App应用程序的过程中&#xff0c;我们常常会遇到一些问题&#xff0c;这些问题可能涉及性能、兼容性、用…

什么是http协议

1、概念 http协议超文本传输协议。HTTP是一个基于TCP/IP通信协议来传递数据&#xff08;HTML 文件, 图片文件, 查询结果等&#xff09;。超文本是超级文本的缩写&#xff0c;是指超越文本限制或者超链接&#xff0c;如:图片、音乐、视频、超链接等等都属 于超级文本。 作用&am…

人工智能_机器学习065_SVM支持向量机KKT条件_深度理解KKT条件下的损失函数求解过程_公式详细推导---人工智能工作笔记0105

之前我们已经说了KKT条件,其实就是用来解决 如何实现对,不等式条件下的,目标函数的求解问题,之前我们说的拉格朗日乘数法,是用来对 等式条件下的目标函数进行求解. KKT条件是这样做的,添加了一个阿尔法平方对吧,这个阿尔法平方肯定是大于0的,那么 可以结合下面的文章去看,也…

BIND9配置及配置文件参数详解

BIND9配置及配置文件参数详解 BIND&#xff08;Berkeley Internet Name Domain&#xff09;是一款广泛使用的开源DNS服务器软件&#xff0c;用于解析域名和IP地址之间的映射关系。BIND9是BIND系列的最新版本&#xff0c;提供了丰富的功能和配置选项。本文将详细介绍BIND9的配置…

3、ollvm移植

github: https://github.com/obfuscator-llvm/obfuscator/tree/llvm-4.0 先复制 include Obfuscation: /home/nowind/llvm/ollvm/obfuscator/include/llvm/Transforms/Obfuscation /home/nowind/llvm/llvm-project-9.0.1/llvm/include/llvm/Transforms/Obfuscation lib Ob…

【基于Flask、MySQL和Echarts的热门游戏数据可视化平台设计与实现】

基于Flask、MySQL和Echarts的热门游戏数据可视化平台设计与实现 前言数据获取与清洗数据集数据获取数据清洗 数据分析与可视化数据分析功能可视化功能 创新点结语 前言 随着游戏产业的蓬勃发展&#xff0c;了解游戏销售数据对于游戏从业者和游戏爱好者都至关重要。为了更好地分…

飞致云与上海吉谛达成战略合作,获得Gitea企业版中国大陆地区独家代理权

2023年12月13日&#xff0c;中国领先的开源软件提供商FIT2CLOUD飞致云宣布与上海吉谛科技有限公司&#xff08;以下简称为上海吉谛&#xff09;正式达成战略合作&#xff0c;FIT2CLOUD飞致云获得上海吉谛旗下代码托管平台Gitea企业版中国大陆地区独家代理权。 Gitea项目&…

市场全局复盘 20231213

昨日回顾&#xff1a; SELECT TOP 10000 CODE,成交额排名,净流入排名,代码,名称,DDE大单金额,涨幅 ,主力净额,DDE大单净量,CONVERT(DATETIME, 最后封板, 120) AS 最后封板 FROM dbo.全部&#xff21;股20231213_ALL WHERE 连板天 > 1AND DDE大单净量 > 0AND DDE散户数量…