JS仿QQ好友列表展开、收缩功能(第一篇)

yizhihongxing

下面我将详细讲解 “JS仿QQ好友列表展开、收缩功能(第一篇)” 的完整攻略。

简介

本篇文章主要是介绍如何使用 JavaScript 编写一个仿 QQ 好友列表的展开、收缩功能,实现点击好友分组,可以收缩或展开该分组中的好友。

HTML结构

我们先来看一下需要实现的 HTML 结构:

<div class="friend-list">
  <div class="friend-group">
    <div class="group-title">我的好友</div>
    <ul class="friend-items">
      <li class="friend-item">友1</li>
      <li class="friend-item">友2</li>
      <li class="friend-item">友3</li>
      <li class="friend-item">友4</li>
    </ul>
  </div>
  <div class="friend-group">
    <div class="group-title">家人</div>
    <ul class="friend-items">
      <li class="friend-item">父亲</li>
      <li class="friend-item">母亲</li>
      <li class="friend-item">兄弟</li>
      <li class="friend-item">姐妹</li>
    </ul>
  </div>
</div>

CSS样式

为了美观,我们需要对 HTML 结构进行一些样式上的调整。这里仅列出关键代码:

.friend-group .group-title {
  cursor: pointer;
}
.friend-items {
  display: none;
}
.friend-items.show {
  display: block;
}

JavaScript代码

我们主要通过 JavaScript,实现好友分组的展开与收缩。先贴出完整的 JavaScript 代码:

var groups = document.querySelectorAll('.friend-group');  // 获取所有好友分组

for (var i = 0; i < groups.length; i++) {
  var group = groups[i];
  var title = group.querySelector('.group-title');    // 当前分组的标题
  title.onclick = function() {  // 点击标题时切换分组的展开状态
    var items = this.parentNode.querySelector('.friend-items');  // 当前分组所有的好友列表
    if (items.classList.contains('show')) {
      items.classList.remove('show');
    } else {
      items.classList.add('show');
    }
  }
}

我们需要做的是,获取所有好友分组,并且为每个分组的标题添加一个点击事件。当点击标题时,我们需要切换分组的展开状态。

先获取当前分组下所有的好友列表,再判断好友列表是否已经展开。如果已经展开,我们需要将其设置为隐藏状态;否则,我们将其设置为显示状态。

示例说明

下面,我们来看两个示例说明,以便更好地理解实现过程。

示例一

那么,我们该如何实现“我的好友”分组的默认展开呢?我们可以在 JavaScript 代码中,手动为“我的好友”分组添加一个 .show 样式,代码如下:

var groups = document.querySelectorAll('.friend-group');  // 获取所有好友分组

for (var i = 0; i < groups.length; i++) {
  var group = groups[i];
  var title = group.querySelector('.group-title');    // 当前分组的标题
  var items = group.querySelector('.friend-items');    // 当前分组所有的好友列表
  if (title.innerHTML === '我的好友') {    // 手动为“我的好友”分组添加.show样式
    items.classList.add('show');
  }
  title.onclick = function() {  // 点击标题时切换分组的展开状态
    var items = this.parentNode.querySelector('.friend-items');  // 当前分组所有的好友列表
    if (items.classList.contains('show')) {
      items.classList.remove('show');
    } else {
      items.classList.add('show');
    }
  }
}

示例二

假设我们现在需要将展开、收缩的效果修改为向上、向下滑动的效果。解决方法很简单:只需将原来的 display:none 改为使用 height: 0overflow: hidden;将原来的 display:block 改为使用 height: auto,代码如下:

.friend-items {
  height: 0;
  overflow: hidden;
}
.friend-items.show {
  height: auto;
}

至此,本篇文章的代码实现过程就介绍完了。该完整攻略可以通过表格形式或者图解的形式呈现出来,但是本示例将文字和代码结合,帮助大家更好地理解实现过程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS仿QQ好友列表展开、收缩功能(第一篇) - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • Message组件实现发财UI 示例详解

    下面是关于“Message组件实现发财UI 示例详解”的完整攻略。 标题 Message组件实现发财UI 示例详解 引言 在现代的前端开发中,UI组件化已经成为了一种趋势,组件的重用程度越高,越能提高项目的开发效率与质量,降低维护难度。而其中,消息提示框信息的实现是常见的需求,本文针对此需求,采用了Vue框架及Element UI组件库,以Message组件…

    css 2023年6月10日
    00
  • 用JS实现图片轮播效果代码(一)

    我将详细讲解“用JS实现图片轮播效果代码(一)”的完整攻略。 一、背景介绍 图片轮播是网站常见的交互效果之一,通过展示一系列图片的滑动切换,吸引用户注意力,并增加页面的互动性和美观性。而使用JS代码实现图片轮播效果,可以提高页面加载速度和动态交互效果,并且具有良好的浏览器兼容性。 二、实现过程 首先,在HTML页面中添加图片轮播所需要的html结构,并设置好…

    css 2023年6月10日
    00
  • div可以输入内容不用input作为输入框屏蔽自动的input样式

    可以使用contenteditable属性使div元素可以输入内容,而且不会有input类型输入框的默认样式。下面是实现的步骤及示例说明: 创建一个div元素,并添加contenteditable属性 <div contenteditable></div> 设置div的样式以样式化输入框 div { width: 200px; hei…

    css 2023年6月10日
    00
  • 宽度百分比单位的转换公式及示例

    转换百分比单位的前提是需要知道相应的基础宽度值。一般情况下,基础宽度值是指参照物的宽度值。下面是宽度百分比单位的转换公式及示例: 宽度百分比单位的转换公式 在CSS中,宽度百分比单位的转换公式如下 宽度(像素) = 宽度百分比 * 参照物宽度(像素) / 100% 宽度百分比单位的示例说明 示例1 假设参照物的宽度为800像素,那么50%的宽度是多少? 宽度…

    css 2023年6月10日
    00
  • js实现滚动条滚动到某个位置便自动定位某个tr

    实现滚动条滚动到某个位置便自动定位某个tr,可以使用jQuery库中的scrollTop和offset方法,以下是详细的步骤: 步骤一:获取需要定位到的元素 首先,需要获取需要定位到的元素,可以使用jQuery中的选择器(如id、class、属性等)选中此元素。例如: var $targetTr = $(‘#target-tr’); 上述代码使用了id选择器…

    css 2023年6月10日
    00
  • CSS实现鼠标滑过文字弹出一段说明文字无JS代码

    要实现鼠标滑过文字弹出一段说明文字无JS代码,可以使用CSS中的:hover伪类和content属性。 步骤如下: 1.首先,需要在HTML中添加包含需要被弹出说明文字的元素(例如span或div)。 示例代码: <p>这是一段需要被注释的文字,<span>这是需要弹出的说明文字</span>。</p> 2.在…

    css 2023年6月10日
    00
  • JS实现div内部的文字或图片自动循环滚动代码

    实现div内部的文字或图片自动循环滚动,可以使用JavaScript来实现。下面是实现的完整攻略: 1. 准备工作 首先需要一个包含滚动内容的div容器,例如: <div id="scroll-container"> <ul> <li><img src="img1.jpg" a…

    css 2023年6月10日
    00
  • 前端项目修改默认滚动条样式(小结)

    下面是详细讲解“前端项目修改默认滚动条样式(小结)”的完整攻略。 什么是默认滚动条样式 在浏览器中,有时候当页面内容太多,无法在页面上完全展示时,就会出现滚动条来帮助用户查看所有的内容。不同浏览器中,滚动条的样式也不同。比如,Chrome浏览器中的滚动条有灰色背景、浅蓝色箭头和条纹状纹理;而Firefox浏览器中的滚动条是圆形、紫色和带有白点的。当然,这些样…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部