vue点击搜索改变搜索框长度

vue点击搜索改变搜索框长度,第1张

1、首先打开vue,创建logo和搜索框部分的组件

2、其次新建一个空的Vue对象,使用“bus”触发事件并传递参数。

3、最后使用vue控制input输入长度和获取输入内容的长度,就可以点击搜索改变搜索框长度了。

Vue3可以使用CSS来设置宽度,可以使用width属性来设置宽度,也可以使用max-width属性来设置最大宽度,也可以使用min-width属性来设置最小宽度,还可以使用flexbox来实现宽度的自适应。

先设置元素的ref,如 <div style="height: 500px" ref="tablewrap" ></div>,要获取该元素高度,必须先给该元素设置css高度

再用  windowgetComputedStyle(this$refstablewrap)height  获取

注意:用this$refs获取dom元素高度,必须在mounted钩子中,如下:

mounted() {

        consolelog(windowgetComputedStyle(this$refstablewrap)height)

}

给element表格设置动态高度,就可以用上述方法

在data中定义变量

最后,在mounted钩子中设置表格的高度

可编辑div可能很简单 contenteditable="true" 就能实现了

但是,,,输入一个字的时候,焦点会自动跳到文本开头,很烦的有木有

在网上看见一个大神写的,引用过来,很久了,忘记了出处

将可编辑div单独设置成一个组件

子组件中

<template>

  <div class="edit" placeholder="11"

      v-html="innerText"

      :contenteditable="canEdit"

      @focus="isLocked =true"

      @blur="isLocked =false"

      @input="changeText">

</template>

watch: {

'value'(){

if (!thisisLocked && !thisinnerText) {

thisinnerText =thisvalue;

    }

}

},

methods: {

changeText(){

this$emit('input', this$elinnerHTML);

  }

},

父组件中只要 v-model='你想要绑定的数据'

对vue不熟悉,,当然这位大神也说看下官方文档v-model这一块

大致是如果父组件的v-model会首先绑定子组件的emit的input方法

开关

为分页组件添加一个开关(openroute),因为需要灰度上线,万一有问题,要调整的页面也只有一个。代码如下:

<script>

export default {

props: {

openroute: {

type: Boolean,

default: () => (true)

}

},

}

</script>

分页组件中存储页码和选择条件&获取页码

<script>

export default {

methods: {

fetchData(page) {

//请求参数

let params = thisparams;

//请求页码

let newPage;

//openroute处理

if (thisopenroute) {

//为url添上#page

if (page) {

historyreplaceState(paramsdata, documenttitle, "#" + page);

} else {

if (historystate) {

if (!historystatekey && locationhash && locationhashsplit("#") && locationhashsplit("#")[1]) {

if (JSONstringify(historystate) !== JSONstringify(paramsdata)) { //选择条件变更则请求第一页

historyreplaceState(paramsdata, documenttitle, "#1");

} else {

historyreplaceState(paramsdata, documenttitle, "#" + locationhashsplit("#")[1]);

}

} else {

historyreplaceState(paramsdata, documenttitle, "#1");

}

} else {

if (locationhash && locationhashsplit("#") && locationhashsplit("#")[1]) {

historyreplaceState(paramsdata, documenttitle, "#" + locationhashsplit("#")[1]);

} else {

historyreplaceState(paramsdata, documenttitle, "#1");

}

}

}

//获取url后面的#page

if (locationhash && locationhashsplit("#") && locationhashsplit("#")[1]) {

newPage = Number(locationhashsplit("#")[1]);

} else {

newPage = 1;

}

} else {

newPage = page;

}

//请求数据,获得结果,传递给列表页面

}

}

}

</script>

列表页面获取选择条件

在Vue中,union可以用于合并两个数组,方法是使用concat()。具体步骤如下:

1 首先,定义两个数组,例如arr1和arr2。

2 使用concat()方法将两个数组合并,并将结果保存到一个新的数组中。例如,定义一个变量result,将arr1和arr2合并后的结果赋值给它,即result = arr1concat(arr2);

3 最后,将result数组渲染到页面上,可以使用v-for指令遍历数组中的元素,并将它们渲染成列表。

下面是一个示例代码,演示了如何在Vue中使用union:

<template>

<div>

<ul>

<li v-for="item in result" :key="item">{{ item }}</li>

</ul>

</div>

</template>

<script>

export default {

data() {

return {

arr1: [1, 2, 3],

arr2: [4, 5, 6],

result: []

};

},

mounted() {

thisresult = thisarr1concat(thisarr2);

}

};

</script>

在这个示例中,我们定义了两个数组arr1和arr2,然后使用concat()方法将它们合并到result数组中。最后,我们将result数组渲染到页面上,使用v-for指令遍历数组中的元素,并将它们渲染成列表。

博客说明

在手机端的需求难免会遇到与手势相关的,比如div的长按和单击事件,长按可能是分享或者删除等 *** 作,一般的形式是通过d窗来展现。

其实主要是利用dom的触摸事件,touchstart,touchmove,touchend

发现在长按时,会出现选中文字的效果,这比较影响体验。

在css中加入样式,这样就不会出现选中的效果了。

感谢

接到需求:输入框限字数——10个汉字,或者20个字母

实现逻辑:使用正则表达式判断输入框中文的字符长度,再将剩下的字符长度05,两者相加即可

具体实现如下:

以上就是关于vue点击搜索改变搜索框长度全部的内容,包括:vue点击搜索改变搜索框长度、vue3设置宽度、vue 中用this.$refs获取dom元素高度,给element表格设置动态高度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9823867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存