小米官网重构

news/2024/11/8 9:42:18/

目录

前言

一、主页

头部导航栏

二、登录页面

变量和代码简化

错误信息的简化

注册界面

跳转链接

后话

 


前言

学习完全部的jQuery内容之后,用更加便捷简单的jQuery,我实现了更加简单方便的效果。在小米官网里面大量的代码,也被缩减成为几行简单的代码就能解决的内容。这里立我写的代码给大家观察,可以看看我的方法,更加改善自己的jQuery代码。


一、主页

头部导航栏

头部导航栏,也就是选中对应选项,就可以打开对应的内容栏观看,这个内容其实非常的简单。但是实现的时候需要好好规划一下自己要怎么用jQuery实现,说不定你可以写出比我更好的方法。

首先,我们要理解一下jQuery特有的东西:隐式迭代。因为存在隐式迭代的方式,让我们选中的元素,已经在程序里面自动被遍历过一遍了,那么当我们去选择ul里面的li的时候,就会直接全部遍历一遍;然后我们就需要想起,当我们要选择其他的盒子的时候,需要去用序号锁定它的位置,因为都是按一定的循序排列的,我们只需要通过之前生成的序号,放给jQuery让他帮我们选择正确的盒子,那么我们的盒子就可以别选取到了。这就是jQuery遍历带来的便捷性。

说了这么多,我们来看看代码的演示吧:

    // 头部导航栏下拉菜单$(".nav-list .nav_item").on("mouseenter", function() {// 设置序列号var index = $(this).index();// 选中的时候打开下拉菜单$(".header_nav_list").stop().addClass("shadow");// 打开对应序号的菜单,同时隐藏兄弟菜单$(".nav_list_item").stop().eq(index).show().siblings().hide();// 这里是防止选中navlist中没有菜单的选项的时候,下拉菜单不消失的问题$(this).siblings(".nav_item1").on("mouseenter", function() {$(".header_nav_list").stop().removeClass("shadow");});});$(".header_nav_list").on("mouseleave", function() {// 只有离开下拉菜单才会收回去$(".header_nav_list").stop().removeClass("shadow");});

我们可以看到,只需要用index的方法,我们存储了每一个序号的变量,通过eq去选取当前的盒子显示,而它的兄弟结点全部隐藏,我们就实现了这个切换的效果。


二、登录页面

变量和代码简化

我们知道,原生js是需要通过变量将获取的元素存储起来,然后在使用的。而jQuery不需要,直接选取元素放进函数中,是可以生效的,这样节省了很多代码量。其次,可以将需要多次书写的代码放在一条里面写,只要他是同一个对象,同时增加也好,删除也好都是可以一起写的。

我们可以看看代码的演示来理解这个过程:

$(this).on("keyup", function() {if (this.value == '') {$(".user .T_change").stop().addClass("C_change");$(".user .mi-form-field__field").stop().addClass("flaseC").stop().removeClass("trueC");flag0 = 0;// 错误提示if (num == 0) {Error($(".user"), '请输入账号');num = 1;}} else {$(".user .I_change").html(this.value);$(".user .T_change").stop().removeClass("C_change");$(".user .mi-form-field__field").stop().removeClass("flaseC").stop().addClass("trueC");flag0 = 1;// 错误提示if (num == 1) {$(".user .error").stop().remove();num = 0;}}});

这是我进行错误判断的代码,这里我们看到Error函数里面,放入不是变量而是元素本身,也是可以正常执行效果的,因为我们选取的对象就是元素本身,而用jQuery可以让这个过程简化。而且当我们需要对同一个对象进行操作的时候,也不需要重复的进行代码的复写,而是整合到一条里面去解决,简化了代码,而且变得更好去整理结构。

错误信息的简化

function Error(parent, content) {$(parent).append($("<div class='error'>" + content + "</div>"));};

我书写的错误信息函数,之前有三行代码,虽然不是非常长的代码,但是通过jQuery整合一条之后,你可以很快的理解它在做什么,可以更加快捷的知道变量的作用是什么。但是这里需要注意的地方是,原生JS是原生JS,jQuery是jQuery,语法是有区别的,不可以套用。


注册界面

跳转链接

    // 有关于跳转链接的模块var temp = window.location.search.substr(1);// 移动滑块// 进入时执行跳转函数Temp();// 点击名称时进行跳转$(".list_item .item").eq(1).on("click", function() {$(".register1").addClass("offreg");$(".register0").removeClass("offreg");$(".list_item .item").eq(0).children("a").addClass("change");$(".list_item .item").eq(1).children("a").removeClass("change");animate(select, itemW);});$(".list_item .item").eq(0).on("click", function() {$(".register1").removeClass("offreg");$(".register0").addClass("offreg");$(".list_item .item").eq(0).children("a").removeClass("change");$(".list_item .item").eq(1).children("a").addClass("change");animate(select, 0);});// 根据链接跳转函数function Temp() {if (temp === '2') {$(".register1").addClass("offreg");$(".register0").removeClass("offreg");$(".list_item .item").eq(0).children("a").addClass("change");$(".list_item .item").eq(1).children("a").removeClass("change");$(".select").css("left", "68px");}}

虽然我们可以经可能的简化代码,但是我目前学到的jQuery里面没有包含location的跳转链接方法,因此这块内容没有用到jQuery。同时移动滑块的内容,我是用了之前书写的animate的js代码,但是我暂时没有对animate的文件进行修改。我们可以选择去改变一下animate的代码,调整它的内容。这里我给大家一个提示:你可以是用jQuery中自带的animate方法,控制滑块的position实现这个改变的效果。

我这里之所以不改动,是因为我已经用好了这个方法,所以就没有去更改它的方法了(其实是懒)


后话

jQuery还有很多方法有待开发,也许我们再继续研究,还能有更好的简化方法。我的方法有不妥的地方也希望来指正我。感谢大家的观看

 

 


http://www.ppmy.cn/news/333031.html

相关文章

全新的小米,从更流畅,更安全,更智慧的MIUI 14开始

12月11日&#xff0c;在发布小米13旗舰系列的同时&#xff0c;小米还推出了最新的MIUI 14系统。 小米13作为影像旗舰的亮相&#xff0c;固然令人惊艳&#xff0c;但新一代操作系统MIUI 14的价值&#xff0c;丝毫不亚于前者。 一、用户需要什么样的操作系统&#xff1f; 在众…

小米开源

作为一款Android系的产品&#xff0c;小米手机天然具有开源的基因。小米的MIUI系统&#xff0c;被认为是利用开源Android操作系统的成功典范。最新的小米路由器&#xff0c;也使用了路由器端著名的开源OpenWRT系统。除此之外&#xff0c;小米在日志框架、服务框架、HTTP Web框架…

第一个完整页面来啦~小米官网

不知不觉学习前端已经快4个月啦&#xff0c;之前没学JavaScript之前做的项目都只能看不能玩&#xff0c;小米官网这个页面算上写出的第一个相对完整一点的项目&#xff0c;虽然需要进步的地方还有很多&#xff0c;但是未来可期&#xff01; 本篇博客主要是针对在书写这个项目时…

mysql8安装【含mysql安装包】

mysql8安装【含mysql安装包】 安装包等资源安装流程 安装包等资源 安装包下载地址【CSDN免费】&#xff1a;https://download.csdn.net/download/qq_47168235/87881866 如果上面的个下载不了&#xff0c;就通过百度网盘吧 百度网盘连接&#xff1a;https://pan.baidu.com/s/1G…

mysql5安装【含mysql安装包】

mysql5安装【含mysql安装包】 安装包等资源安装流程 安装包等资源 安装包下载地址【CSDN免费】&#xff1a;https://download.csdn.net/download/qq_47168235/87881814 如果上面的个下载不了&#xff0c;就通过百度网盘吧 百度网盘连接&#xff1a;https://pan.baidu.com/s/1G…

算法学习day18

文章目录 513.找树左下角的值递归迭代 112 .路径总和递归迭代 113.路径总和II递归 106.从中序与后序遍历序列构造二叉树递归 105.从前序与中序遍历序列构造二叉树卡尔递归版本递归优化 总结 513.找树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底…

异常数据检测 | Python实现基于高斯概率分布的异常数据检测

文章目录 文章概述模型描述源码分享学习小结参考资料文章概述 高斯分布也称为正态分布。它可以被用来进行异常值检测,不过我们首先要假设我们的数据是正态分布的。不过这个假设不能适应于所有数据集。但如果我们做了这种假设那么它将会有一种有效的方法来发现异常值。 模型描述…

Matlab实现PSO算法(附上6个完整仿真源码)

PSO&#xff08;Particle Swarm Optimization&#xff09;是一种优化算法&#xff0c;它模拟了鸟群或鱼群等动物的集体行为&#xff0c;通过群体智能的方式来解决优化问题。PSO算法最初由Kennedy和Eberhart在1995年提出&#xff0c;近年来得到了广泛的应用。 本文将介绍如何使…