js下 Day19、综合案例
一.吸顶楼层
效果图:

功能思路分析:
1. 面向对象框架


2. 渲染导航
\1. 数据

\2. 对象结构的数据用for in遍历
\3. 渲染时将属性名设为锚点(a标签的href)

3. 渲染车系
\1. 车系分类是对象的数据结构,外层渲染用for in
\2. 每个分类的内容是数组的数据结构,内层渲染map().join(‘’)
\3. 渲染时将每个字母的分类设为id名,配合导航里的锚点

4. 导航吸顶
\1. 绑定滚动事件(window.addEventListener(‘scroll’,fn))
\2. 获取滚动距离( document.documentElement.scrollTop || document.body.scrollTop)
\3. 判断滚动距离是否大于导航的offsetTop
\4. 是则变成固定定位( fixed ),否则取消固定定位(static)

5. 楼层滚动
\1. 滚动事件中,拿到每一层楼的offsetTop 跟 滚动距离比较
\2. 滚动距离大于楼层的offsetTop则当前楼层对应的导航高亮

#二.星级评分
效果图:

功能思路分析:
1. 面向对象框架

2. 星级评分
\1. 为所有的小星星绑定mouseover事件:
\2. 将经过的那一个及之前的所有小星星变为红色,将之后的小星星变为灰色

\3. 为所有的小星星绑定mouseout事件:
\4. 获取当前选中的星星的下标,获取父元素的自定义属性(getAttribute())
\5. 如果有选中的小星星,则将选中星星及之前的小星星显示为红色,之后的显示为灰色
\6. 如果没有选中的小星星,则将所有的小星星变为灰色

\7. 为所有的小星星绑定click事件:
\8. 将点击的那一个及之前的所有小小变为红色,将之后的小星星变为灰色
并给父元素添加一个自定义属性(setAttribute()),存储点击的这颗小星星的下标

3. 选中标签
点击标签,选中高亮,再次点击取消选中状态**(classList.toggle())**

4. 添加标签
\1. 点击提交按钮,创建节点( document.createElement() )
\2. 设置内容为文本框的value值
\3. 追加到ul中**(添加节点appendChild() )**

5. 字数统计功能
1. 给文本框绑定input事件
\2. 获取它的value值,将value用正则将汉字替换成两个单字节字符,replace(/[\u4e00-\u9fa5]/g,‘aa’)
\3. 替换后获取字符的个数,即length
\4. 用140-length为还可以输入的字数显示到页面中

#三.今日小结
\1. 滚动事件: **window.addEventListener( ** ‘scroll’)
\2. 滚动距离: document.documentElement.scrollTop || document.body.scrollTop
\3. 鼠标事件**: mouseover滑过 mouseout离开**
\4. 中文正则: /[\u4e00-\u9fa5]/
\5. 创建节点: document.createElement()
\6. 追加节点: 父元素.appendChild()
#四.作业 -- 购物车
效果图:

功能思路分析:
1. 模拟数据
2. 渲染数据
3. 产品数量加减
通过事件委托给购物车大盒子绑定点击事件,判断事件源,实现商品数据加减,商品数量加减的同时,后面的小计跟着变化
4. 商品选中
单个商品选中后计算总计
5. 总计方法
\1. 封装一个总计方法
\2. 拿到所有被选中的商品的数量累加在一起
\3. 拿到所有被选中的商品的价格累加在一个
\6. 删除商品
点击商品后面的删除能够删除商品
js下 Day19、综合案例的更多相关文章
- JS 下拉菜单案例
css代码 .nav { width: 300px; height: 400px; list-style: none; padding:; margin: 0 auto; } .nav>li { ...
- js下 Day12、案例
一.垃圾分类 效果图: 功能思路分析: 1. 鼠标按下 (1) 获取鼠标到元素的距离(e.offsetX) (2) 开启开关变量 (3) 获取事件源 (4) 记录垃圾初始位置 2. 鼠标移动 ( ...
- js下 Day11、案例
一.成绩分类 效果图: 功能思路分析: 1. 渲染数据 2. 鼠标按下开启拖拽 \1. 给成绩盒子绑定鼠标按下事件(mousedown),用事件委托做多个标签的拖拽 \2. 开启控制拖拽的变量 \3. ...
- Ext.js入门:常用组件与综合案例(七)
一:datefield简单示例 二:timefield简单示例 三:numberfield简单示例 四:FormPanel提交 datefield简单示例: <html xmlns=&quo ...
- js上 二十、综合案例
二十.综合案例 题目一: **1. ** 数组随机 描述,写randomArray函数,传递一个数组,传递一个数值,返回一个指定个数的随机的新数组,不允许有重复数据 用例: randomArray([ ...
- js上 十九、综合案例
十九.综合案例 题目一: 封装一个函数equal(a1,a2),传入两个一维数组,判断两个数组是否包含相同的元素,如果相等,函数的返回值为true, 不相等,函数的返回值为false 1)例:arr1 ...
- JavaScript:综合案例-表单验证
综合案例:表单验证 开发要求: 要求定义一个雇员信息的增加页面,例如页面名称为"emp_add.htmnl",而后在此页面中要提供有输入表单,此表单定义要求如下: .雇员编号:必须 ...
- 黑马eesy_15 Vue:04.综合案例(前端Vue实现)
黑马eesy_15 Vue:02.常用语法 黑马eesy_15 Vue:03.生命周期 黑马eesy_15 Vue:04.Vue案例(ssm环境搭建) 黑马eesy_15 Vue:04.综合案例(前端 ...
- JQuery:JQuery基本语法,JQuery选择器,JQuery DOM,综合案例 复选框,综合案例 随机图片
知识点梳理 课堂讲义 1.JQuery快速入门 1.1.JQuery介绍 jQuery 是一个 JavaScript 库. 框架:Mybatis (jar包) 大工具 插件:PageHelper (j ...
随机推荐
- 【建议收藏】阿里P7总结的Spring注解笔记,把组件注册讲的明明白白
环境搭建 注解的方式是通过配置类的方式来注入组件,注解注入要比XML注入的方式简单,注解注入也需要在前者的基础上,添加一个spring-context的包,也是实际开发中常用的方式. 准备所需Jar包 ...
- 吉他软件Guitar Pro入门
Guitar Pro是一款优秀的吉他学习软件,初学者可以依靠其学习理论知识,也可以通过和弦添加.曲谱导出等功能来提升弹奏能力.今天,小编就给大家简略地介绍下吉他软件Guitar Pro. 乐谱编辑功能 ...
- 听法国设计师大卫·维森特讲述他与CorelDRAW的渊源
在这次采访中,我们采访了法国插画家兼平面设计师大卫·维森特(David Vicente),他的特殊风格与Old-School美学,尤其是疯狂摇滚派有着密切的联系.在他精心制作的插图中,充满了细节和强烈 ...
- Jmeter(一)发送http请求
Jmeter中发请求的步骤 1.添加线程组 2.添加http消息头管理器 3.添加http请求 一.线程组: 1.添加路径: 2.字段解释 ①线程数(Number of Threads): : 设置发 ...
- mybatis中的一些标签使用
主要有两个配置文件,一个是主配置文件SqlConfig.xml, 还有一个是dao接口实现类相对应的mapper的配置文件 .比如userDao的userDao.xml配置文件. 1.resultTy ...
- 【海思】Hi3531A SPI功能的详细配置以及使用
目录 一.前言 二.SPI管脚信息获取 2.1 SPI_SCLK.SPI_SDI.SPI_SDO管脚复用寄存器 2.2 片选SPI_CSN0-SPI_CSN3管脚寄存器 三.配置和使能与SPI相关的管 ...
- Linux 学习笔记02丨Linux 概述、常用快捷键、apt命令
Chapter 1. Linux 概述 Linux 是一种自由和开放源码的 Unix 操作系统, 是一个基于 POSIX 和 UNIX 的多用户.多任务.支持多线程和多CPU的操作系统.只要遵循 GN ...
- C语言讲义——链表完整代码
#include <stdio.h> #include <stdlib.h> #include <string.h> struct Node { int _id; ...
- C语言入门最后一阶,掌握这门知识,你就进入提高阶段~
哈喽,伙伴们,我们前面讲了C语言的发展史,基本数据类型,变量与常量,表达式,基本结构等等,今天是作为C语言基础入门的最后一个阶段:输入与输出. 以上这些知识你能够掌握好,就可以开始进入C语言的进阶提高 ...
- cookie 与session
Django 操作cookie,session HTTP协议四大特性: 1.基于TCP.IP作用与应用层的协议 2.基于请求响应 3.无连接 4.无状态 无状态的意思是每次请求都是独立的,它的执行情况 ...