网页|扇形菜单—你不get一下吗?

简介: 网页|扇形菜单—你不get一下吗?

一、扇形菜单介绍

扇形菜单,就是将导航菜单制作成扇形的形状。简单来说就是通过点击一个按钮,弹出一个以这个按钮为圆心的扇形按钮菜单,(可以根据需要添加按钮个数)。可以通过改变一下半径的长度,实现扇形形状的大小。

图1.1 扇形菜单效果图

二、解析思路

通过分析扇形菜单页面,可以归纳总结出如下实现细节 :

(1) 使用带有 touch 功能的 Zepto 文件实现。

(2) 使用类选择器、find()筛选需要的元素。

(3) 使用 hasClass、removeClass、addClass 等方法来判断该扇形菜单是否处于打开状态,如果是打开状态,则关闭扇形菜单;如果是关闭状态,就打开它。hasClass(class)用于检查当前的元素是否含有某个特定的类,如果有,则返回true,class:用于匹配的类名。


三、制作过程

(1)首先当然是引入zepto.min.js文件。

<script type="text/javascript"  src="js/zepto.min.js"></script>

(2)利用h5实现扇形菜单的的基础布局,这里还是使用的bootstrap框架。

<div style="height:1000px;width: 300px;"></div>

<div>

       <div><img src="img/menu.png"  /><span></span></div>

       <div  class="btn btn1" data-num="1"><span>照相</span></div>

       <div  class="btn btn2" data-num="2"><span>定位</span></div>

       <div  class="btn btn3" data-num="3"><span>音乐</span></div>

       <div  class="btn btn4" data-num="4"><span>聊天</span></div>

</div>

(3)添加css样式(其他样式代码已省略)。这里简单介绍一下各种浏览器的属性:-moz代表firefox浏览器私有属性。-ms代表IE浏览器私有属性。-webkit代表chrome、safari私有属性。这种写法主要是为了兼容比较老的版本。

.btn{

       -webkit-transition:bottom  .2s,right .2s;

       -moz-transition:bottom  .2s,right .2s;

       -o-transition:bottom  .2s,right .2s;

       -ms-transition:bottom  .2s,right .2s;

       transition:bottom  .2s,right .2s;

       }

(4)添加js代码实现最后的效果。

这里我们主要使用了hasClass,span.removeClass方法。removeClass([class])从所有匹配的元素中删除全部或者指定的类,class(可选):一个或多个要删除的CSS类名,请用空格分开。addClass(class)为每个匹配的元素添加指定的类名,class:一个或多个要添加到元素中的CSS类名,请用空格分开。

<script type="text/javascript">

$(function(){

       $(".menu").click(function(){

              var  span = $(this).find("span");

              if(span.hasClass("open")){

                     span.removeClass("open").addClass("close");

                     $(".btn").removeClass("open").addClass("close");

              }else{

                     span.removeClass("close").addClass("open");

                     $(".btn").removeClass("close").addClass("open");

              }

       });

});

</script>



目录
相关文章
|
存储 编译器
当调用一个C函数,在内存上发生了什么?
在这个过程中,内存的分配和释放主要发生在调用栈上,包括局部变量和函数调用的参数。这样的设计使得函数调用可以嵌套,每次调用都有自己的局部环境。
163 0
|
12月前
|
小程序 数据可视化 JavaScript
微信小程序:轻松实现时间轴组件
本文介绍了如何在微信小程序中实现一个可视化时间轴组件。该组件适用于展示用户资金流动、投资结算等时间节点,帮助用户直观了解资金去向。时间轴支持自定义节点形状、显示序号、倒序排列等功能,并通过插槽灵活定义动态内容。文中详细介绍了组件的设计与使用方法,以及如何结合动态 slot 实现自定义操作。该组件为展示用户资金信息提供了美观、易用的解决方案。
429 1
微信小程序:轻松实现时间轴组件
|
前端开发 容器
如何利用CSS实现三角形、扇形、聊天气泡框
如何利用CSS实现三角形、扇形、聊天气泡框
462 0
|
Go
Golang语言之数组(array)快速入门篇
这篇文章是关于Go语言中数组的详细教程,包括数组的定义、遍历、注意事项、多维数组的使用以及相关练习题。
280 5
|
Go
Golang语言结构体(struct)面向对象编程进阶篇(封装,继承和多态)
这篇文章是关于Go语言中结构体(struct)面向对象编程进阶篇的教程,涵盖了Go语言如何实现封装、继承和多态,以及结构体内存布局的相关概念和案例。
409 4
|
Dart 前端开发 开发工具
Flutter-VS-Kotlin-跨平台开发市场的最终霸主究竟花落谁家
Flutter-VS-Kotlin-跨平台开发市场的最终霸主究竟花落谁家
|
前端开发 JavaScript C++
【Vue3】解锁Vue3黑科技:探索接口、泛型和自定义类型的前端奇迹
【Vue3】解锁Vue3黑科技:探索接口、泛型和自定义类型的前端奇迹
|
存储 JavaScript 容器
Vue3通信方式之ref、$parent、provide、inject、pinia和slot
Vue3通信方式之ref、$parent、provide、inject、pinia和slot
470 0
|
JavaScript
vue3中$attrs的变化与inheritAttrs的使用
vue3中$attrs的变化与inheritAttrs的使用
|
API Windows
解决echarts.apache.org官网不能访问的问题(主要是用于查看配置项API参数细节说明)
解决echarts.apache.org官网不能访问的问题(主要是用于查看配置项API参数细节说明)