广州总部电话:020-85564311
广州总部电话:020-85564311

广州网站建设-小程序商城开发-广州小程序开发-企业微信开发公司-网站建设高端品牌-优网科技

20年
互联网应用服务商
请输入搜索关键词
知识库 知识库

优网知识库

探索行业前沿,共享知识宝库

小米商城项目:运用JavaScript提升用户体验的全功能电商前端设计
发布日期:2025-05-17 13:45:03 浏览次数: 804 来源:码农集享阁

一、引言

        随着电子商务的发展,用户对在线购物平台的要求也越来越高。小米商城作为一个知名的电商平台,不仅提供丰富的产品选择,还通过先进的前端技术为用户提供流畅、便捷的购物体验。本文将探讨在小米商城项目中,如何利用JavaScript实现多种交互功能,以增强用户体验。

二、首页功能详解

1. 搜索栏模糊查询

        在小米商城首页,用户可以通过搜索栏快速找到所需商品。当用户输入关键字时,系统会实时匹配并显示与关键字相关的建议结果。这项功能是通过DOM操作和数组遍历实现的,确保了即使用户输入不完全准确,也能获得相关产品推荐。

let keyword = document.querySelector('.keyword');//获取输入框let searchHelper = document.querySelector('.search-helper'); // 获取搜索的下拉列表
//定义数组,存搜索的内容let searchArr =['小米手机', '小米手表', '小米电脑', '小米电视', '小米平板', '红米手机', '红米显示器', '红米笔记本'];
keyword.oninput=function(){ searchHelper.innerHTML='';//在遍历显示之前 要把旧的之前显示的都清除掉 for(let i=0;i<searchArr.length;i++){ if(searchArr[i].indexOf(keyword.value)!=-1){ searchHelper.innerHTML +='<p>'+searchArr[i]+'</p>'; searchHelper.style.display='block'; } }}keyword.onblur=function(){ //鼠标失去交点之后就取消掉显示 searchHelper.style.display='none';}

2. 搜索功能实现

        当用户点击搜索按钮后,系统使用GET请求将关键词发送至小米官方商城的后端接口,并展示相应的搜索结果。这种即时反馈机制大大提升了用户的搜索效率。

let search = document.getElementById('search');
search.onclick = function () { location.href="https://www.mi.com/shop/search?keyword="+keyword.value;}

3. 轮播图切换广告/海报

        首页的轮播图每3秒自动切换一次广告,同时支持手动切换至上一张或下一张。鼠标悬停在图片上时,播放暂停,移开后继续播放。这一功能增强了页面的动态性和吸引力。

let box =document.querySelector('.banner-box');let prev = document.querySelector('.prev');let next = document.querySelector('.next');let imgArr =['https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/b3d1c941b152d5d41042f9c1e1b7509a.jpg?w=2452&h=920',    'https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/19f12ce5a1770c2a23188f1055258967.jpg?thumb=1&w=2452&h=920&f=webp&q=90',    'https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/918820682e4a490221cfd92b24c14b86.jpg?thumb=1&w=2452&h=920&f=webp&q=90'];let i=0;//切换图片的函数function banner(){    //设置图片路径    box.style.backgroundImage="url('"+imgArr[i]+"')";}//自动切换的方法function autoBanner(){    if(++i>imgArr.length-1){        i=0;    }    banner();}//设置定时器,3秒调用自动切换函数let timer = setInterval(autoBanner,3000);//鼠标移入就停止定时器box.onmouseover = function(){    clearInterval(timer);}//鼠标移开开始定时器box.onmouseout = function(){    timer = setInterval(autoBanner,3000);}//下一张next.onclick=function(){    if(++i>imgArr.length-1){        i=0;    }    //设置图片路径    banner();}//上一张prev.onclick=function(){    if(--i<0){        i=imgArr.length-1;    }    //设置图片路径    banner();}

4. 秒杀倒计时功能

        针对限时秒杀活动,页面展示了精确到秒的倒计时。基于设定的结束时间,系统计算剩余时间并更新页面上的显示,激发用户的购买欲望。

var hour=document.getElementById('hour');var minute=document.getElementById('minute');var second=document.getElementById('second');//停止时间var date = new Date('2022-12-5 00:00:00');//执行函数function fCountDown() {    //现在的时间    var now=new Date();    //结束减去现在的时间    var times = (date-now)/1000;    //差的小时    var h=parseInt(times/60/60%24);    h=h<10?'0'+h:h;    hour.innerHTML=h;    //差的分钟    var m=parseInt(times/60%60);    m=m<10?'0'+m:m;    minute.innerHTML=m;    //差的小时    var s=parseInt(times%60);    s=s<10?'0'+s:s;    second.innerHTML=s;}
//上来先执行一次 如果只有定时器 1s后执行用户体验不好fCountDown();//设置定时器 没1000毫秒执行这个函数setInterval(fCountDown,1000);

5. 吸顶效果

        顶部标签的搜索栏随页面滚动而固定,确保用户随时可以访问搜索功能。这不仅提高了易用性,也提升了网站的专业形象。

var nav=document.querySelector('.nav');//给页面绑定滚动监听事件window.onscroll=function(){    //获取滚动条距上面的距离    let top=document.documentElement.scrollTop || document.body.scrollTop;    nav.style.position='fixed';    //吸顶效果    if(top>=400){        nav.style.position='fixed';        nav.style.top='0';        nav.style.borderBottom='1px solid #333';        nav.style.animation='searchTop .5s ease-in-out';    }else{        nav .style.position='relative';        nav.style.borderBottom='0px solid #333';        nav.style.animation='';    }}

三、商品详情页面外观

放大镜功能

        当用户将鼠标悬停在商品主图上时,会出现一个放大的视图,使用户能够查看更详细的图像信息。此功能增强了产品的可视化呈现,帮助用户做出更好的购买决策。

//获取小盒子var smallBox=document.getElementsByClassName('img-left')[0];//阴影var shadow=document.getElementsByClassName('shadow')[0];//大盒子var bigBox=document.getElementsByClassName('img-big')[0];//大图片var bigImg=document.getElementById('bigImg');//主盒子节点var main = document.getElementById('glass');
//给小盒子加鼠标移入事件smallBox.onmouseover=function() { shadow.style.display='block'; bigBox.style.display='block';}
//鼠标移动改变阴影位置和大图片显示smallBox.onmousemove=function( e ) { //当前鼠标的位置-盒子距离浏览器左侧的偏移-阴影宽度的一半 var x=e.clientX-main.offsetLeft-shadow.offsetWidth/2; var y=e.clientY-main.offsetTop-shadow.offsetHeight/2;
//限制阴影的移动范围 if(x<0){ x=0; }else if(x>smallBox.offsetWidth-shadow.offsetWidth){ x=smallBox.offsetWidth-shadow.offsetWidth; } if(y<0){ y=0; }else if(y>smallBox.offsetHeight-shadow.offsetHeight){ y=smallBox.offsetHeight-shadow.offsetHeight; }
//赋值 shadow.style.left=x+'px'; shadow.style.top=y+'px';
//大图片的位置 bigImg.style.left = -x*2+'px'; bigImg.style.top = -y*2+'px';}
//鼠标移出 影藏大图片smallBox.onmouseout=function () { shadow.style.display='none'; bigBox.style.display='none';}

四、购物车页面功能分析

        购物车页面允许用户全选或单选商品,并根据所选项自动计算总数量和总价。此外,用户可以直接编辑商品数量,系统会即时更新小计金额。还提供了删除商品及确认购买等功能,极大地简化了购物流程。

//所有复选框var check=document.querySelectorAll('.check');var checkLen=check.length;//获取到单个复选框var single=document.querySelectorAll('.single');//获取每一行var itemBox = document.querySelectorAll('.goods');var itemBoxLen = itemBox.length;var buy=document.getElementById('buy');var remove=document.getElementById('remove');
//全选 让每个选择框都选上for(var i=0;i<checkLen;i++){
check[i].onclick=function (e) { //选择的记录数 var count=0; if (e.target.getAttribute('id')=='all'){ //判断得到全选框 //遍历每个元素 把全选的选择状态赋值给他们 for(var j=0;j<single.length;j++){ single[j].checked = this.checked; //监听全选然后循环遍历赋值给每个元素 } }
//遍历所有选择框是不是全选 如果不是全选框不选 for(var k=0;k<single.length;k++){ if( single[k].checked){ count++; } if(count==single.length){ check[0].checked=true; }else{ check[0].checked=false; } }
//每次改完就调用这个计算总数量和总价格 fTotal(); }}
//给商品每行添加事件for(var i=0;i<itemBoxLen;i++){ //点击事件 itemBox[i].onclick = function (e) { var input = this.getElementsByTagName('input')[1]; switch (e.target.className) { case "add": input.value=parseInt(input.value)+1; fTotalSum(this); //要把点击的这行传进去 break; case 'reduce': input.value=parseInt(input.value)-1<=1 ? 1 : parseInt(input.value)-1; fTotalSum(this); break; case 'btn1': var con=confirm('确定要删除这件商品吗'); if(con){ this.parentNode.removeChild(this); //删除该节点 用父节点删除子节点 } break; } //计算总数量和总价格 fTotal(); } //输入数量 itemBox[i].onkeyup=function (e) { fTotalSum(this); fTotal(); }}
buy.onclick=function () { var con=confirm('确定要购买选择的这些商品吗'); if(con){ //获取每一行的商品 var itemBox = document.querySelectorAll('.goods'); var itemBoxLen = itemBox.length; for (var i=0;i<itemBoxLen;i++){ if(itemBox[i].getElementsByTagName('input')[0].checked){ itemBox[i].parentNode.removeChild(itemBox[i]); } } }}
remove.onclick=function () { var con=confirm('确定要清除的这些商品吗'); if(con){ //获取每一行的商品 var itemBox = document.querySelectorAll('.goods'); var itemBoxLen = itemBox.length; for (var i=0;i<itemBoxLen;i++){ if(itemBox[i].getElementsByTagName('input')[0].checked){ itemBox[i].parentNode.removeChild(itemBox[i]); } } }}
//计算小计function fTotalSum(That) { //That参数就是this表示商品的每一行 //获取到当前行的数量 var num=parseInt(That.getElementsByTagName('input')[1].value); //获取当前行的单价 var price=parseInt(That.getElementsByClassName('singlePrice')[0].innerHTML); //算出结果赋值 That.getElementsByClassName('singlePriceTotal')[0].innerHTML= num * price+"";}
//总数量 和 合计function fTotal() { //获取总价节点 var totalPrice=document.getElementById('totalPrice'); //获取总件节点 var totalNum=document.getElementById('totalNum'); //数量总合 var num=0; //总价 var price=0; //获取每一行的商品 var itemBox = document.querySelectorAll('.goods'); var itemBoxLen = itemBox.length; for (var i=0;i<itemBoxLen;i++){ if(itemBox[i].getElementsByTagName('input')[0].checked){ num+=parseInt(itemBox[i].getElementsByTagName('input')[1].value); price+=parseInt(itemBox[i].getElementsByClassName('singlePriceTotal')[0].innerHTML); } } totalNum.innerHTML=num; totalPrice.innerHTML=price;}

五、注册表单校验

        为了保证数据的有效性和安全性,注册表单中的每个输入框都经过严格的验证。通过正则表达式判断用户输入是否符合规范,如用户名格式、邮箱地址等,不符合要求的信息将被标记,指导用户进行修正。

六、结论

        通过对小米商城项目的介绍,我们可以看到JavaScript在现代Web开发中的关键作用。它不仅仅用于实现基本的交互功能,更是提升用户体验、增加用户粘性的有效工具。从小米商城的具体案例中,我们学习到了如何巧妙地应用这些技术来创建更加友好、高效的用户界面。未来,随着技术的不断进步,我们有理由相信,更多的创新功能将会被引入到电子商务平台中,进一步改变我们的购物方式。

七、源码获取
如果您觉得该项目对您有帮助,创作不易,希望通过赞赏支持我们(任意金额即可)。完成赞赏后,系统会自动发送项目源码下载链接
八、联系作者

优网科技,优秀企业首选的互联网供应服务商

优网科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!

优网科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。优网科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、DIY体验、720全景展厅及3D虚拟仿真)、移动端应用(手机站APP开发)、微信定制开发(微信官网、微信商城、企业微信)、微信小程序定制开发等一系列互联网应用服务。


我要投稿

姓名

文章链接

提交即表示你已阅读并同意《个人信息保护声明》

专属顾问 专属顾问
扫码咨询您的优网专属顾问!
专属顾问
马上咨询
联系专属顾问
联系专属顾问
联系专属顾问
扫一扫马上咨询
扫一扫马上咨询

扫一扫马上咨询

和我们在线交谈!