JS实战篇之收缩菜单表单布局

JS实战篇之收缩菜单表单布局是一篇介绍如何使用Javascript制作收缩菜单表单布局的一篇技术文章。下面我们来详细讲解一下其完整攻略。

一、需求分析和技术选型

在开始制作收缩菜单表单布局前,我们需要先确定需求和技术选型。本文实现的基本功能如下:

  1. 页面初始状态:左侧为菜单栏,右侧为表单内容。
  2. 点击菜单中的选项,右侧展示相应表单内容。
  3. 点击展开按钮,菜单栏收缩隐藏,表单内容占据整个页面。

技术选型:由于本文实现的功能依赖于DOM操作,因此我们选用纯JavaScript实现。

二、HTML结构和CSS样式

在按照以上需求确定好技术选型后,我们需要在HTML结构和CSS样式中确定开发的基本风格。可以参照如下示例:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>JS实战篇之收缩菜单表单布局</title>
  <style>
    * {margin: 0; padding: 0;}
    body {font-family: 'Arial', sans-serif;}
    .container {width: 100%; margin: 0 auto; overflow: hidden;}
    .menu {float: left; width: 20%; background-color: #f5f5f5; height: 100vh;transition:width 1s;}
.menu a{display: block; padding: 12px; text-decoration: none; color: #222; }
    .menu a:hover {background-color: #dcdcdc;}

    .content {float: right; width: 80%; background-color: #fff; height: 100vh; padding: 20px;}
    .open {display: none; position: absolute; top: 0; left: 0; background-color: #f5f5f5; width: 20%; height: 100vh; z-index: 1;}
    .btn {position: absolute; top: 10px; left: 10px; width: 32px; height: 32px; background: url('open.png') no-repeat center center; background-size: contain; z-index: 2;}
  </style>
</head>

<body>
  <div class="container">
    <div class="menu" id="menu">
      <h2>菜单</h2>
      <a href="#" data-id="form1">表单1</a>
      <a href="#" data-id="form2">表单2</a>
      <a href="#" data-id="form3">表单3</a>
    </div>
    <div class="content">
      <h2>内容</h2>
      <form id="form1" class="forms" style="display:none;">表单1的内容…</form>
      <form id="form2" class="forms" style="display:none;">表单2的内容…</form>
      <form id="form3" class="forms" style="display:none;">表单3的内容…</form>
      <div class="open"></div>
      <div class="btn"></div>
    </div>
  </div>

  <script src="index.js"></script>
</body>
</html>

三、实现交互效果

在完成HTML结构和CSS样式后,接下来我们需要使用JavaScript来实现交互效果。可以参照如下示例:

var menu = document.querySelector('#menu');
var forms = document.querySelectorAll('.forms');
var open = document.querySelector('.open');
var btn = document.querySelector('.btn');

// 初始化
forms[0].style.display = 'block';
menu.querySelector('a').classList.add('selected');

// 菜单点击事件
menu.addEventListener('click', function (event) {
  event.preventDefault();

  var target = event.target;
  if (target.tagName !== 'A') {
    return;
  }

  // 显示对应表单内容
  for (var i = 0; i < forms.length; i++) {
    if (forms[i].id === target.dataset.id) {
      forms[i].style.display = 'block';
    } else {
      forms[i].style.display = 'none';
    }
  }

  // 样式修改
  for (var i = 0; i < menu.children.length; i++) {
    if (menu.children[i].querySelector('a').dataset.id === target.dataset.id) {
      menu.children[i].querySelector('a').classList.add('selected');
    } else {
      menu.children[i].querySelector('a').classList.remove('selected');
    }
  }
});

// 打开菜单
btn.addEventListener('click', function () {
  if (menu.style.width === '20%') {
    menu.style.width = '5%';
    open.style.display = 'block';
  } else {
    menu.style.width = '20%';
    open.style.display = 'none';
  }
});

以上代码实现了如下功能:

  1. 页面加载时,初始化第一个表单被选中,其他表单隐藏。
  2. 菜单的a标签绑定点击事件,用于显示对应表单内容和修改样式。
  3. 点击打开菜单按钮时,菜单栏收缩隐藏,右侧内容区域撑满整个屏幕。

四、总结

以上就是JS实战篇之收缩菜单表单布局的完整攻略。通过HTML结构、CSS样式与JavaScript代码的交互组合,可以完成一个漂亮实用的收缩菜单表单布局。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实战篇之收缩菜单表单布局 - Python技术站

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

相关文章

  • 浅谈Flex布局与缩放比例计算

    浅谈Flex布局与缩放比例计算 Flex布局是CSS3中新增的一种布局模式,旨在解决传统布局模式的一些问题。在这种布局模式下,容器可以将其子元素按照特定的比例进行排列和分配空间,从而实现自适应布局的效果。同时,通过计算缩放比例可以让Flex布局更加灵活。 一、Flex布局 1.1 容器和子元素 在Flex布局中,需要设置一个容器来包裹子元素,然后为容器设置f…

    css 2023年6月10日
    00
  • 带你深入剖析inline-block属性值的前世今生

    当我们需要在页面上放置多个块级元素时,通常使用float或display: inline-block属性。其中,inline-block属性在使用过程中可能会遇到一些奇怪的问题,因此我们需要深入剖析这个属性值的前世今生。 1. inline-block基本属性 display:inline-block是将元素显示为内联对象,但可以保留其内部的块级属性,比如设…

    css 2023年6月9日
    00
  • JavaScript变量详解

    JavaScript变量是指在程序中用来存储数据的容器。在JavaScript中,变量的声明需要使用关键字var、let或const来标识。 1. 变量声明和赋值 变量声明和赋值可以在同一行完成,也可以分开进行。 使用var声明变量: var age; age = 30; 或者在同一行完成: var age = 30; 使用let声明变量: let age;…

    Web开发基础 2023年3月30日
    00
  • 用CSS设置表格Table的细边框的比较好用的方法

    设置表格Table的细边框是CSS样式表中经常使用的基本技能。下面是一些可以帮助您轻松设置表格边框的方法。 使用border-collapse属性设置表格边框 在CSS中使用这个属性可以设置表格单元格之间的边界线是否合并。使用border-collapse: collapse属性可以将相邻单元格的边框合并为一条,这样不仅精简代码,还能让表格更美观。 tabl…

    css 2023年6月10日
    00
  • JavaScript 事件监听实例代码[兼容IE,firefox] 含注释

    这里为大家详细讲解“JavaScript 事件监听实例代码[兼容IE,firefox] 含注释” 的完整攻略。 1. 事件监听的概念 在 HTML 中,JavaScript 可以接收在页面上发生的事件,如用户单击按钮或者鼠标移动,处理这些事件就需要使用到事件监听器。 在理解事件监听之前,先来介绍一下事件的冒泡和捕获的概念。 1.1 事件的冒泡和捕获 事件冒泡…

    css 2023年6月9日
    00
  • html5如何及时更新缓存文件(js、css或图片)

    HTML5通过使用缓存清单(Cache Manifest)功能,可以实现对于JavaScript、CSS、图片等静态资源的缓存更新。下面是步骤: 创建缓存清单文件 通过在HTML文档头部添加manifest属性引用缓存清单文件。缓存清单文件是一个文本文件,以“.appcache”扩展名结尾,其中包含需要缓存的资源以及清单信息。请注意,缓存清单文件必须在Web…

    css 2023年6月9日
    00
  • HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)

    HTML5作为现代Web开发的基础,提供了众多实用的API接口,为Web应用的开发提供了更多的便利和补充。本篇攻略将介绍HTML5中5个简单实用的API,包括全屏、可见性、拍照、预加载和电池状态。 一、全屏API 全屏API可以让网页全屏展示,提升用户的使用体验。目前已经在所有主流浏览器中被广泛支持。 1. 进入全屏模式 // 获取全屏元素 const el…

    css 2023年6月10日
    00
  • 分享几个实用的CSS代码块

    让我们来详细讲解如何分享几个实用的CSS代码块。 步骤一:选择实用的CSS代码块 首先,我们需要选择一些实用的CSS代码块,这些代码块可以帮助我们快速实现一些常见的效果或功能。例如,我们可以选择一些在前端开发中常用的CSS属性或选择器,或者是一些细节优化的小技巧。 以下是几个示例: 代码块一:水平居中 有时候,我们需要将一个元素水平居中,可以使用如下代码: …

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