帮我用vue 和css写一个类似微信通讯录的界面

时间: 2024-04-05 15:32:11 浏览: 13
好的,我可以给你提供一个简单的思路来实现类似微信通讯录的界面,使用 Vue 和 CSS 来实现。 首先,你需要创建一个 Vue 组件来表示通讯录界面。在这个组件中,你可以使用 Vue 的 data 属性来存储通讯录中的联系人信息,例如姓名、头像、电话号码等。 然后,你可以使用 CSS 来布局和样式化你的通讯录界面。你可以使用 flexbox 布局来创建一个列布局,每列表示一个字母,用于分组显示联系人。你可以使用 CSS 样式来设计每个联系人的卡片,包括头像、姓名和电话号码等信息。 为了实现搜索功能,你可以在组件中添加一个搜索框,使用 Vue 的 computed 属性来过滤联系人信息,只显示与搜索关键字匹配的联系人。 最后,你可以添加一些交互效果,例如当用户点击一个联系人时,该联系人的详细信息会在侧边栏中显示出来。 以下是一个简单的代码示例,用于实现类似微信通讯录的界面: ``` <template> <div class="contacts"> <div class="search"> <input type="text" v-model="searchKeyword" placeholder="Search..."> </div> <div class="columns"> <div v-for="letter in letters" :key="letter" class="column"> <div class="letter">{{ letter }}</div> <div v-for="contact in filteredContacts" :key="contact.id" class="contact"> <img :src="contact.avatar" alt="Avatar"> <div class="info"> <div class="name">{{ contact.name }}</div> <div class="phone">{{ contact.phone }}</div> </div> </div> </div> </div> <div v-if="selectedContact" class="sidebar"> <img :src="selectedContact.avatar" alt="Avatar"> <div class="info"> <div class="name">{{ selectedContact.name }}</div> <div class="phone">{{ selectedContact.phone }}</div> </div> </div> </div> </template> <script> export default { data() { return { contacts: [ { id: 1, name: 'Alice', phone: '123-456-7890', avatar: 'https://randomuser.me/api/portraits/women/1.jpg' }, { id: 2, name: 'Bob', phone: '456-789-0123', avatar: 'https://randomuser.me/api/portraits/men/2.jpg' }, { id: 3, name: 'Charlie', phone: '789-012-3456', avatar: 'https://randomuser.me/api/portraits/men/3.jpg' }, // ... ], selectedContact: null, searchKeyword: '' } }, computed: { letters() { const letters = new Set() this.contacts.forEach(contact => { letters.add(contact.name.charAt(0).toUpperCase()) }) return Array.from(letters).sort() }, filteredContacts() { if (!this.searchKeyword) { return this.contacts } const keyword = this.searchKeyword.toLowerCase() return this.contacts.filter(contact => { return contact.name.toLowerCase().indexOf(keyword) !== -1 }) } }, methods: { selectContact(contact) { this.selectedContact = contact } } } </script> <style> .contacts { display: flex; flex-direction: row; justify-content: center; align-items: center; height: 100vh; font-size: 16px; } .search { margin-bottom: 16px; } .columns { display: flex; flex-direction: row; justify-content: center; align-items: flex-start; flex-wrap: wrap; width: 80%; } .column { display: flex; flex-direction: column; margin-right: 16px; } .letter { font-weight: bold; margin-bottom: 8px; } .contact { display: flex; flex-direction: row; align-items: center; margin-bottom: 8px; cursor: pointer; } .contact:hover { background-color: #eee; } .contact img { width: 48px; height: 48px; border-radius: 50%; margin-right: 16px; } .info { display: flex; flex-direction: column; } .name { font-weight: bold; } .phone { color: #888; } .sidebar { position: fixed; top: 0; right: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; width: 20%; height: 100%; background-color: #f7f7f7; box-shadow: 0 0 16px rgba(0, 0, 0, 0.1); } .sidebar img { width: 128px; height: 128px; border-radius: 50%; margin-bottom: 16px; } .sidebar .info { display: flex; flex-direction: column; align-items: center; } .sidebar .name { font-size: 24px; font-weight: bold; margin-bottom: 8px; } .sidebar .phone { color: #888; } </style> ```

相关推荐

最新推荐

recommend-type

vue使用微信扫一扫功能的实现代码

第一步: 安装weixin-js-sdk 和 jquery 包 npm install weixin-js-sdk jquery 第二部: 配置wx.config (配置都是后端返回来的,菜鸟前端只需要按需传值过去就可) 代码如下 import wx from “weixin-js-sdk”; ...
recommend-type

使用vue完成微信公众号网页小记(推荐)

公司最近有一个H5页面的功能,比较简单的一个调查表功能,嵌套在我们微信公众号里面。这篇文章主要介绍了使用vue完成微信公众号网页小记,需要的朋友可以参考下
recommend-type

vue+web端仿微信网页版聊天室功能

主要介绍了vue+web端仿微信网页版聊天室功能,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
recommend-type

使用Vue组件实现一个简单弹窗效果

主要介绍了使用Vue组件实现一个简单弹窗效果,本文主要内容会涉及到弹窗遮罩的实现, slot 插槽的使用方式,props 、 $emit 传参,具体组件代码也传上去了。需要的朋友可以参考下
recommend-type

vue 开发企业微信整合案例分析

主要介绍了vue 开发企业微信整合,结合具体案例形式分析了vue.js使用企业微信JSSDK实现手机端程序可以和企业微信进行整合功能的相关操作技巧,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

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

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。