`<ul id="list"> <li v-for="(item, index) in listData" :key="index" @click="toArticle(item)"> <div> <div class="imgBox" style="width: 100%;height: 100%;overflow: hidden;"> <img :src="item.img" alt="博客图片" @error="defaultImg()"> </div> </div> <div class="msg" ref="information"> <h3>{{ item.theme }}</h3> <p class="introduce" v-show="introduction">{{ item.introduction }}</p> </div> <p class="pushTime" v-show="introduction"><span style="margin-right: 10px;"></span>{{ item.initialTime.slice(0, 10) }}</p> <p class="popularity" v-show="introduction"><span style="margin-right: 10px;"></span>{{ item.popularity }} </p> </li> </ul> `

时间: 2024-01-03 10:37:48 浏览: 152
根据您提供的代码,我注意到您使用了Vue.js的v-for指令来循环渲染列表项,并且每个列表项包含一个图片和其他内容。在这种情况下,可能会出现grid布局的高度不受max-height限制的情况。 您在li标签中设置了max-height为280px,但是在使用了grid布局的情况下,li标签的高度会根据其内容自动调整,并不受max-height限制。因此,即使设置了max-height为280px,li标签的实际高度可能会超过这个值。 如果您希望li标签的高度受到max-height限制并出现滚动条,可以尝试将li标签的样式设置为: ```css li { max-height: 280px; overflow: auto; } ``` 这样,当li标签的内容超过280px时,会在li标签内部出现垂直滚动条,以便浏览全部内容。请注意,如果li标签的内容高度小于280px,滚动条将不会出现。 另外,请确保父容器(ul元素)也没有设置其他样式或布局属性影响到li标签的高度和滚动条显示。
相关问题

在前端页面中 默认生成了数据如下<template> <div class="content"> <div class="row"> <div class="list"> <ul> <li>序号</li> <li>权限</li> <li>角色</li> <li>账号</li> <li>编辑</li> </ul> </div> </div> <div class="row"> <div class="lists"> <ul v-for="item in dataList" :key="item.id"> <li>{{ item.userid }}</li> <li>{{ item.authority }}</li> <li>{{ item.role }}</li> <li>{{ item.username }}</li> <li @click="ect">编辑</li> </ul> </div> </div> </div> </template> <script setup> import { ref, onMounted } from "vue"; import { getList } from "@/api/user"; const dataList = ref([]); onMounted(async () => { try { const response = await getList(); dataList.value = response.data; } catch (error) { console.error(error); } }); </script> 如何实现对数据修改并且不改变id

对数据进行修改需要在编辑按钮的点击事件中进行处理,可以在方法中接收当前被点击的数据对象,然后将其赋值给一个临时变量,进行修改后再将修改后的数据赋值回去。同时需要确保不改变数据的id。 下面是一个可能的实现方式: <template> <div class="content"> <div class="row"> <div class="list"> <ul> <li>序号</li> <li>权限</li> <li>角色</li> <li>账号</li> <li>编辑</li> </ul> </div> </div> <div class="row"> <div class="lists"> <ul v-for="item in dataList" :key="item.id"> <li>{{ item.userid }}</li> <li>{{ item.authority }}</li> <li>{{ item.role }}</li> <li>{{ item.username }}</li> <li @click="edit(item)">编辑</li> </ul> </div> </div> </div> </template> <script setup> import { ref, onMounted } from "vue"; import { getList } from "@/api/user"; const dataList = ref([]); const editedData = ref(null); onMounted(async () => { try { const response = await getList(); dataList.value = response.data; } catch (error) { console.error(error); } }); const edit = (data) => { editedData.value = { ...data }; // 弹出编辑框,让用户修改数据 // ... } const save = () => { // 将修改后的数据赋值回去 const index = dataList.value.findIndex((item) => item.id === editedData.value.id); if (index >= 0) { dataList.value[index] = { ...editedData.value }; } // 隐藏编辑框 // ... } </script> 在 edit 方法中,我们将当前被点击的数据对象赋值给了 editedData 变量,这样在编辑框中修改数据时,就修改的是这个临时变量中的数据。在 save 方法中,我们根据 editedData 变量中的 id 找到原始数据中对应的索引,然后将修改后的数据赋值回去。这样就实现了对数据的修改而不改变 id 的要求。

补全代码 <div id="box"> <!-- <my-component :stuList="list"></my-component> --> <my-component : ="list" @ ="doDel"></my-component> </div> <script> Vue.component('my-component', { props: ['stuList'], template: <div> <ul> <li v-for="(stu,index) in " :key="index"> {{stu.name}} - {{stu.age}} <button @click="del(index)">删除</button> </li> </ul> </div>, methods: { del: function(value){ this. ('delid', ); } } }); var vm = new Vue({ el: '#box', data: { list: [ { name: '张三', age: 20 }, { name: '李四', age: 21 }, { name: '王五', age: 19 } ] }, methods: { doDel: function(value){ this.list.splice(value, 1); } } }) </script>

box', data: { list: [{name: '张三', age: 18}, {name: '李四', age: 20}, {name: '王五', age: 22}] }, methods: { doDel: function(value){ this. ('list', ); } } }) </script> <div id="box"> <my-component :stuList="list" @doDel="doDel"></my-component> </div> <script> Vue.component('my-component', { props: ['stuList'], template: `<div> <ul> <li v-for="(stu,index) in stuList" :key="index"> {{stu.name}} - {{stu.age}} <button @click="del(index)">删除</button> </li> </ul> </div>`, methods: { del: function(index){ this.$emit('doDel', index); } } }); var vm = new Vue({ el: '#box', data: { list: [{name: '张三', age: 18}, {name: '李四', age: 20}, {name: '王五', age: 22}] }, methods: { doDel: function(index){ this.list.splice(index,1); } } }) </script>
阅读全文

相关推荐

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="new_file.vue"></script> </head> <body> <button @click="reset">还原</button> 商品名称价格操作 {{good.name}} {{good.price|filterPrice }} 删除 <script> const goodsMixin = { data(){ return{ goodsList:[ {name:'电饭煲',price:200.133232}, {name:'电视机',price:880.998392}, {name:'电冰箱',price:650.2034}, {name:'电脑',price:4032.9930}, {name:'电磁炉',price:210.4322} ] } }, methods: { delGood(index){ this.goodsList.splice(index,1) }, reset(){ this.goodsList = [ {name:'电饭煲',price:200.133232}, {name:'电视机',price:880.998392}, {name:'电冰箱',price:650.2034}, {name:'电脑',price:4032.9930}, {name:'电磁炉',price:210.4322} ] } }, filters:{ filterPrice(value){ let newValue = [] newValue = value.toLocaleString().split('.') newValue[0] = (newValue[0] + '').replace(/\d{1,3}(?=(\d{3})+$)/g,'$&') return newValue[0] + '.' + newValue[1]/slice(0,2); } } } new Vue({ el:'app', mixins:[goodsMixin], directives:{ nodata:{ inserted(el,binding){ const noData = document.createElement('div'); noData.classList = 'noData' noData.innerHTML = '暂无数据'; el.appendChild(noData) const{goodsList} = binding.value; noData.style.display = goodsList.length === 0 ?'blick' : 'none' }, updata(el,binding){ const{goodsList} = binding.value; el.querySelector('.noData').style.display = goodsList.length === 0 ?'blick' : 'none'; } } }, data(){ return{} } }) </script> <style> #app ul li{ list-style: none; width: 400px; display: flex; justify-content: space-between; } .noData{ width: 400px; text-align: center; margin-left: 40px; } </style> </body> </html>纠错

最新推荐

recommend-type

vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作

v-for="(item, index) in lists" @click="clickAdd(index)" :key="index" :class="{red: i === index}"&gt; &lt;div&gt;{{item.name}}&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/template&gt; ``` 这段代码中,`v-for`遍历`lists`数组,...
recommend-type

使用Vue中 v-for循环列表控制按钮隐藏显示功能

&lt;li v-for="(list, index) in lists" @click="show(index)"&gt; &lt;span v-show="index !== i"&gt;{{ list }}&lt;/span&gt; &lt;/li&gt; &lt;/ul&gt; &lt;script&gt; new Vue({ el: '#app', data: { lists: [1, 1, 1], i: -1 }, methods: {...
recommend-type

vue如何通过id从列表页跳转到对应的详情页

&lt;li v-for="item in items" :key="item.id" @click="goToDetail(item.id)"&gt; {{ item.title }} &lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/template&gt; &lt;script&gt; export default { data() { return { items: [{ id: 1, title: '...
recommend-type

教师节主题班会.pptx

教师节主题班会.pptx
recommend-type

正整数数组验证库:确保值符合正整数规则

资源摘要信息:"validate.io-positive-integer-array是一个JavaScript库,用于验证一个值是否为正整数数组。该库可以通过npm包管理器进行安装,并且提供了在浏览器中使用的方案。" 该知识点主要涉及到以下几个方面: 1. JavaScript库的使用:validate.io-positive-integer-array是一个专门用于验证数据的JavaScript库,这是JavaScript编程中常见的应用场景。在JavaScript中,库是一个封装好的功能集合,可以很方便地在项目中使用。通过使用这些库,开发者可以节省大量的时间,不必从头开始编写相同的代码。 2. npm包管理器:npm是Node.js的包管理器,用于安装和管理项目依赖。validate.io-positive-integer-array可以通过npm命令"npm install validate.io-positive-integer-array"进行安装,非常方便快捷。这是现代JavaScript开发的重要工具,可以帮助开发者管理和维护项目中的依赖。 3. 浏览器端的使用:validate.io-positive-integer-array提供了在浏览器端使用的方案,这意味着开发者可以在前端项目中直接使用这个库。这使得在浏览器端进行数据验证变得更加方便。 4. 验证正整数数组:validate.io-positive-integer-array的主要功能是验证一个值是否为正整数数组。这是一个在数据处理中常见的需求,特别是在表单验证和数据清洗过程中。通过这个库,开发者可以轻松地进行这类验证,提高数据处理的效率和准确性。 5. 使用方法:validate.io-positive-integer-array提供了简单的使用方法。开发者只需要引入库,然后调用isValid函数并传入需要验证的值即可。返回的结果是一个布尔值,表示输入的值是否为正整数数组。这种简单的API设计使得库的使用变得非常容易上手。 6. 特殊情况处理:validate.io-positive-integer-array还考虑了特殊情况的处理,例如空数组。对于空数组,库会返回false,这帮助开发者避免在数据处理过程中出现错误。 总结来说,validate.io-positive-integer-array是一个功能实用、使用方便的JavaScript库,可以大大简化在JavaScript项目中进行正整数数组验证的工作。通过学习和使用这个库,开发者可以更加高效和准确地处理数据验证问题。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【损失函数与随机梯度下降】:探索学习率对损失函数的影响,实现高效模型训练

![【损失函数与随机梯度下降】:探索学习率对损失函数的影响,实现高效模型训练](https://img-blog.csdnimg.cn/20210619170251934.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjc4MDA1,size_16,color_FFFFFF,t_70) # 1. 损失函数与随机梯度下降基础 在机器学习中,损失函数和随机梯度下降(SGD)是核心概念,它们共同决定着模型的训练过程和效果。本
recommend-type

在ADS软件中,如何选择并优化低噪声放大器的直流工作点以实现最佳性能?

在使用ADS软件进行低噪声放大器设计时,选择和优化直流工作点是至关重要的步骤,它直接关系到放大器的稳定性和性能指标。为了帮助你更有效地进行这一过程,推荐参考《ADS软件设计低噪声放大器:直流工作点选择与仿真技巧》,这将为你提供实用的设计技巧和优化方法。 参考资源链接:[ADS软件设计低噪声放大器:直流工作点选择与仿真技巧](https://wenku.csdn.net/doc/9867xzg0gw?spm=1055.2569.3001.10343) 直流工作点的选择应基于晶体管的直流特性,如I-V曲线,确保工作点处于晶体管的最佳线性区域内。在ADS中,你首先需要建立一个包含晶体管和偏置网络
recommend-type

系统移植工具集:镜像、工具链及其他必备软件包

资源摘要信息:"系统移植文件包通常包含了操作系统的核心映像、编译和开发所需的工具链以及其他辅助工具,这些组件共同作用,使得开发者能够在新的硬件平台上部署和运行操作系统。" 系统移植文件包是软件开发和嵌入式系统设计中的一个重要概念。在进行系统移植时,开发者需要将操作系统从一个硬件平台转移到另一个硬件平台。这个过程不仅需要操作系统的系统镜像,还需要一系列工具来辅助整个移植过程。下面将详细说明标题和描述中提到的知识点。 **系统镜像** 系统镜像是操作系统的核心部分,它包含了操作系统启动、运行所需的所有必要文件和配置。在系统移植的语境中,系统镜像通常是指操作系统安装在特定硬件平台上的完整副本。例如,Linux系统镜像通常包含了内核(kernel)、系统库、应用程序、配置文件等。当进行系统移植时,开发者需要获取到适合目标硬件平台的系统镜像。 **工具链** 工具链是系统移植中的关键部分,它包括了一系列用于编译、链接和构建代码的工具。通常,工具链包括编译器(如GCC)、链接器、库文件和调试器等。在移植过程中,开发者使用工具链将源代码编译成适合新硬件平台的机器代码。例如,如果原平台使用ARM架构,而目标平台使用x86架构,则需要重新编译源代码,生成可以在x86平台上运行的二进制文件。 **其他工具** 除了系统镜像和工具链,系统移植文件包还可能包括其他辅助工具。这些工具可能包括: - 启动加载程序(Bootloader):负责初始化硬件设备,加载操作系统。 - 驱动程序:使得操作系统能够识别和管理硬件资源,如硬盘、显卡、网络适配器等。 - 配置工具:用于配置操作系统在新硬件上的运行参数。 - 系统测试工具:用于检测和验证移植后的操作系统是否能够正常运行。 **文件包** 文件包通常是指所有这些组件打包在一起的集合。这些文件可能以压缩包的形式存在,方便下载、存储和传输。文件包的名称列表中可能包含如下内容: - 操作系统特定版本的镜像文件。 - 工具链相关的可执行程序、库文件和配置文件。 - 启动加载程序的二进制代码。 - 驱动程序包。 - 配置和部署脚本。 - 文档说明,包括移植指南、版本说明和API文档等。 在进行系统移植时,开发者首先需要下载对应的文件包,解压后按照文档中的指导进行操作。在整个过程中,开发者需要具备一定的硬件知识和软件开发经验,以确保操作系统能够在新的硬件上正确安装和运行。 总结来说,系统移植文件包是将操作系统和相关工具打包在一起,以便于开发者能够在新硬件平台上进行系统部署。了解和掌握这些组件的使用方法和作用是进行系统移植工作的重要基础。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依