基于jQuery实现手风琴布局的完整代码与原理详解

作者:页面旅途

时间:2026-10-22

浏览:604

本文详细介绍如何使用HTML、CSS和jQuery实现手风琴页面效果。通过解析DOM结构、样式设置及核心JavaScript代码,重点讲解stop()方法控制动画过渡以及animate()实现宽度动态变化的原理,帮助开发者快速掌握该交互组件的开发细节。

文章目录

首先展示最终实现的手风琴效果预览图。

HTML结构构建

HTML结构构建

HTML结构构建

第一步,构建基础的HTML文档结构。


<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8" />
  <title>手风琴2</title>
  <link rel="stylesheet" type="text/css" href="css/new_file.css" rel="external nofollow" />
  <script src="js/jquery-1.10.2.min.js"></script>
  <script src="js/new_file.js"></script>
 </head>
 <body>
  <div id="gs">
   <div class="gs gs1">
    <div class="txt">
     <p class="p1">我的旅行记1我的旅行记3</p>
     <p class="p2">空山之旅我的旅行记3</p>
    </div>
   </div>
   <div class="gs gs2">
    <div class="txt">
     <p class="p1">我的旅行记2我的旅行记3</p>
     <p class="p2">沙漠之旅我的旅行记3</p>
    </div>
   </div>
   <div class="gs gs3">
    <div class="txt">
     <p class="p1">我的旅行记3我的旅行记3</p>
     <p class="p2">拉沙之旅我的旅行记3</p>
    </div>
   </div>
   <div class="gs gs4">
    <div class="txt">
     <p class="p1">我的旅行记4我的旅行记3</p>
     <p class="p2">雪山之旅我的旅行记3</p>
    </div>
   </div>
  </div>
 </body>
</html>

CSS样式定义

第二步,编写对应的CSS样式代码以定义外观。


*{
 padding: 0px;
 margin: 0px;
 font-family: "微软雅黑";
}

#gs {
 width: 1100px;
 height: 429px;
 
}

.gs {
 width: 100px;
 height: 429px;
 float: left;
}

.gs4 {
 width: 789px;
 height: 429px;
}

.gs1 {
 background: url(../img/img/1.jpg) repeat scroll top left;
}
.gs2 {
 background-image: url(../img/img/2.jpg);
}
.gs3 {
 background-image: url(../img/img/3.jpg);
}
.gs4 {
 background-image: url(../img/img/4.jpg);
}

.txt {
 width: 100px;
 height: 429px;
 /*margin: 15px;*/
 background: rgba(0,0,0,0.5);
 cursor: pointer;
}

/*.txt p {
 float: left;
 width: 20px;
 height: 429px;
 color: #fff;
 font-size: 20px;
 margin: 14px;
}*/

.txt p {
 color: #fff;
 float: left;
 margin: 15px;
}

.txt .p1 {
 font-size: 14px;
 width: 14px;
}

.txt .p2 {
 font-size: 12px;
 width: 12px;
}

JavaScript交互逻辑

第三步,添加JavaScript逻辑代码以实现交互功能。


$(function(){
 $(".txt").mouseover(function(){
  $(this).parent().stop(true).animate({"width":"789px"},500).siblings().stop(true).animate({"width":"100px"},500);
 });
});

关键技术点解析

核心实现要点如下:

a. 字体垂直排列技巧:将字体大小(font-size)设置为与包含该字体的标签宽度(width)一致,从而实现文字的竖向显示。

b. jQuery中的stop()方法用于控制动画队列:调用stop()表示结束当前动画并允许过渡效果完成。

c. 调用stop(true)表示立即暂停当前动画,清除后续队列中的动画。

d. 调用stop(true, true)表示立即结束当前动画并跳转到最终状态,不执行过渡效果。

e. parent()方法用于获取当前元素的上一级父节点。

f. siblings()方法用于选取当前元素之外的所有同级兄弟元素。

g. animate()方法用于执行自定义的动画效果,如改变元素宽度。

以上内容涵盖了手风琴效果的核心实现逻辑,希望能为读者提供有益参考。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章