整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

很实用的干货|浮动固定菜单与楼层导航实践

很实用的干货|浮动固定菜单与楼层导航实践

必很多人已经见过浮动固定菜单和楼层导航的案例,浮动固定菜单的场景非常的常见,人人都是产品经理的产品经理导航(http://dh.woshipm.com/)就是一个典型的浮动固定菜单的场景,当窗口向下滚动超过一定距离时,菜单栏固定在浏览器窗口的最上方:

当一个页面内容较多时,我们又经常以楼层的方式快速导航,并且在页面的右下角有一个返回到顶部的按钮。单击对应的楼层按钮,快速定位到该楼层,这在一些电商网站中出现较多,例如京东网首页:

今天,我们结合浮动固定菜单栏和楼层导航,实现同一界面内的锚点定位,完成后的效果图如下:

单击这里

从这个例子里,我们可以掌握的知识点有如下几个:

  • 关于动态面板“固定到浏览器”属性的应用
  • 浮动固定菜单栏的设置技巧
  • 滚动到元件动作的应用
  • 窗口滚动时事件的处理
  • 自动适应窗口宽度的设置

一、界面布局

1、标题栏

添加一个无边框灰色矩形框,大小1250*66,命名title,位置在(0,80),模拟菜单栏。

复制这个矩形框,命名为menu,模拟位于顶部的浮动固定菜单,位置在(0,0)右键转换为动态面板,命名为float_title,右键设置顺序为置于顶层,完成后的效果如下:

2、楼层导航按钮

添加一个矩形框,大小80*50,双击设置文字为“一楼”,右键设置交互样式鼠标经过时填充色为深灰色:

再设置选中状态的样式为蓝底白字:

复制这个按钮7个,分别修改文字内容为“二楼”到“八楼”,自上而下顺序排列:

给8个按钮分别命名button1到button8,选中这8个矩形,右键设置选项组为buttons:

然后再右键转换为动态面板,命名为float_panel,放在(0,475)处。

3、楼层内容

我们使用大的矩形块来模拟每一个楼层,添加一个矩形框,大小900*220,双击设置文字内容为“一楼”,命名为floor1,复制floor1总共7个(复制这么多是让窗口在垂直方向有足够多的楼层,让页面出现垂直滚动条),修改名称分别为“二楼”到“八楼”,依次从上到下排列,间距设置为60。选中这8个矩形,右键转换为动态面板,命名为floors,放在(160,185)处,完成后的效果图如下:

4、返回顶部按钮

添加一个矩形,大小70*60,右键转换为动态面板,命名为back_top,移动(1100,754)处,完成后的效果图如下:

在初始状态下,顶部浮动固定菜单栏和回到顶部按钮是不可见的,只有在窗口向下滚动一定距离后才出现,因此我们先将这两个动态面板隐藏起来(浅黄色部分是隐藏的动态面板):

到这里我们已经完成示例中所有的布局部分,下面来开始处理事件。

二、动态面板属性设置

有几个动态面板的“固定到浏览器”属性需要设置一下,以便于在显示时能按照设置的属性显示。

顶部菜单栏的“固定到浏览器”属性:水平居中,垂直居上

左侧楼层导航按钮的“固定到浏览器”属性:水平居左,垂直居中

返回顶部按钮的“固定到浏览器”属性:水平居右,边距20,垂直居下,边距20

三、事件处理

这里包括以下几个事件需要处理:

1、页面载入时事件

为了界面更加美观点,在页面初始化事件里,我们将菜单栏设置和当前窗口一样的大小,将楼层内容的大小设置为比窗口宽度小一点并且居中显示。

因为有8个楼层,我们通过一个全局变量来设置一下值,所有楼层宽度减去这个值,设置统一宽度,全局变量名为distance,默认值为400:

在页面空白处点击,在右侧属性里给页面添加页面载入时事件:

  1. 添加页面载入时事件
  2. 先显示左侧的楼层导航动态面板
  3. 设置菜单栏title和隐藏的浮动菜单栏的menu的大小,宽度为窗口宽度Window.width,高度66保持不变
  4. 设置8个楼层的宽度为窗口宽度关于distance值,即[[Window.width-distance]],高度保持不变为220。
  5. 移动8个楼层所在的动态面板位置在水平中央位置
  6. 通过变量设置楼层的水平位置
  7. 添加局部变量LVAR1,指向楼层所在的动态面板
  8. 水平位置计算方式为[[(Window.width-LVAR1.width)/2]],即窗口宽度减去楼层宽度再除以2

2、窗口滚动事件

窗口在滚动起过标题栏的位置后,显示浮动固定菜单栏和返回顶部按钮:

  1. 添加窗口滚动时事件
  2. 添加条件,如果窗口滚动距离Window.scrollY>=80
  3. 则显示浮动固定菜单栏和回到顶部的按钮
  4. 触发控制按钮control的单击事件(见后面说明)

否则就隐藏浮动固定菜单栏和回到顶部的按钮:

添加个热点区域control,大小10*10,添加单击事件,判断窗口滚动位置,设置对应按钮为选中状态:

3、楼层导航按钮单击事件

给楼层导航的第一个按钮添加单击事件,单击后滚动元件到顶部菜单title,配合线性动画:

  1. 选择导航一楼按钮
  2. 添加鼠标单击事件
  3. 设置滚动到元件动作
  4. 选择滚动到floor1
  5. 设置仅垂直滚动,配合线性动画
  6. 设置当前按钮为选中状态

其它7个按钮依次选择滚动到floor2到floor8。

4、回到顶部单击事件

回到顶部按钮事件与导航按钮事件相同,只是滚动到标题栏title:

四、F5预览

所有布局和事件都已经处理完成,可以F5预览一下看看效果了!

如果觉得有帮助就赞一下哦^_^

本文由 @原型设计工场 原创发布于人人都是产品经理。未经许可,禁止转载。

天南地北大拜年# 一起领红包>根据您提供的代码,这是一个使用 jQuery 来实现网页导航栏动态位置调整、滚动到特定内容区域时高亮导航项,以及用户留言和评价功能的网页。下面是对这些功能的报告:

### 1. 导航栏位置调整

- **功能描述**: 导航栏的位置会根据浏览器窗口的大小动态调整,以确保它在视觉上居中显示。

- **实现方法**: 使用 jQuery 监听 `resize` 事件,实时计算导航栏的宽度,并动态设置其 `right` CSS属性。

### 2. 滚动导航高亮

- **功能描述**: 当用户滚动到网页的某个特定内容区域时,对应的导航项会被高亮显示。

- **实现方法**: 首先,获取每个内容区域的位置顶部值并存入数组。然后,监听 `scroll` 事件,根据滚动位置判断当前处于哪个内容区域,并使用 `.addClass("selected")` 来高亮当前导航项。

### 3. 用户留言功能

- **功能描述**: 用户可以在网页上留下自己的意见或建议。

- **实现方法**: 使用 HTML 的 `` 元素创建一个多行文本输入框,并通过 jQuery 监听按钮点击事件来处理留言的提交。

### 4. 星级评价功能

- **功能描述**: 用户可以通过点击星星图标来对网页进行评价。

- **实现方法**: HTML 使用 `` 元素创建星星图标,并通过 jQuery 来监听点击事件,根据点击的星星图标更新页面上的评级显示。

### 5. 功能完善建议

- **用户体验**: 增加留言提交后的反馈机制,如提示用户留言成功或出现错误。

- **交互设计**: 对于星级评价,可以增加更多的交互效果,如星星点击效果,以及评价后的结果展示。

- **响应式设计**: 确保网页在不同设备上均有良好的显示效果,包括手机和平板电脑。

- **性能优化**: 对于 `scroll` 和 `resize` 事件,应考虑节流(throttle)或防抖(debounce)技术,以避免过度事件处理导致的性能问题。

### 6. 错误和警告

- **代码错误**: 在您的代码中,有几个问题需要解决。比如,变量 `sectionHeightArray` 应该在 `$(window).scroll` 事件处理函数外部声明,否则它可能无法正确引用。此外,按钮点击事件处理函数没有提供,需要补充相应的代码来处理用户的交互。

- **跨浏览器兼容性**: 需要确保所有的 jQuery 代码在不同的浏览器上都能正常工作,特别是旧版本的浏览器。

### 7. 安全性

- **XSS防范**: 确保从用户那里收集的数据在插入到网页上之前进行了适当的清理,以防止跨站脚本(XSS)攻击。

整体而言,该网页的交互功能对于用户参与和反馈提供了良好的基础,但在发布前需要进行详细的测试和优化以确保最佳的用户体验和性能。类图(15分):

主题:智能家居控制系统

描述:为一个智能家居控制系统绘制组件图,展示系统中各个组件如用户界面、数据存储、设备控制等的关系

机端左右滑动导航,html正常写,css超出不换行,隐藏滚动条