how2j.cn


10分59秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)

步骤 1 : homePage.html 的复杂性   
步骤 2 : homePage.html 代码讲解   
步骤 3 : homePage.html 所包含页面关系   
步骤 4 : categoryAndcarousel.html   
步骤 5 : categoryMenu.html   
步骤 6 : productsAsideCategorys.html   
步骤 7 : carousel.html   
步骤 8 : homepageCategoryProducts.html   
步骤 9 : 总结   

步骤 1 :

homePage.html 的复杂性

edit
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
步骤 2 :

homePage.html 代码讲解

edit
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
<div th:fragment="html"> <script> function showProductsAsideCategorys(cid){ $("div.eachCategory[cid="+cid+"]").css("background-color","white"); $("div.eachCategory[cid="+cid+"] a").css("color","#87CEFA"); $("div.productsAsideCategorys[cid="+cid+"]").show(); } function hideProductsAsideCategorys(cid){ $("div.eachCategory[cid="+cid+"]").css("background-color","#e2e2e3"); $("div.eachCategory[cid="+cid+"] a").css("color","#000"); $("div.productsAsideCategorys[cid="+cid+"]").hide(); } function homePageRegisterListeners(){ $("div.eachCategory").mouseenter(function(){ var cid = $(this).attr("cid"); showProductsAsideCategorys(cid); }); $("div.eachCategory").mouseleave(function(){ var cid = $(this).attr("cid"); hideProductsAsideCategorys(cid); }); $("div.productsAsideCategorys").mouseenter(function(){ var cid = $(this).attr("cid"); showProductsAsideCategorys(cid); }); $("div.productsAsideCategorys").mouseleave(function(){ var cid = $(this).attr("cid"); hideProductsAsideCategorys(cid); }); $("div.rightMenu span").mouseenter(function(){ var left = $(this).position().left; var top = $(this).position().top; var width = $(this).css("width"); var destLeft = parseInt(left) + parseInt(width)/2; $("img#catear").css("left",destLeft); $("img#catear").css("top",top-20); $("img#catear").fadeIn(500); }); $("div.rightMenu span").mouseleave(function(){ $("img#catear").hide(); }); var left = $("div#carousel-of-product").offset().left; $("div.categoryMenu").css("left",left-20); $("div.categoryWithCarousel div.head").css("margin-left",left); $("div.productsAsideCategorys").css("left",left-20); $("div.productsAsideCategorys div.row a").each(function(){ var v = Math.round(Math.random() *6); if(v == 1) $(this).css("color","#87CEFA"); }); } $(function(){ var data4Vue = { uri:'forehome', categories: [] }; //ViewModel var vue = new Vue({ el: '#workingArea', data: data4Vue, mounted:function(){ //mounted 表示这个 Vue 对象加载成功了 linkDefaultActions(); this.load(); }, methods: { load:function(){ var url = this.uri; axios.get(url).then(function(response) { vue.categories = response.data; vue.$nextTick(function(){ //要等渲染结束之后,才来进行监听,否则他们都没有被创建出来,监听也没有意义呀 homePageRegisterListeners(); }) }); } }, filters:{ subTitleFilter:function(value) { if (!value) return ''; //如果为空,则返回空字符串 return value.split(" ")[0]; //根据空格拆分,并且只获取数组第一个值 } } }); }); </script> <title>模仿天猫官网</title> <div class="homepageDiv"> <div th:replace="include/fore/home/categoryAndcarousel::html" ></div> <div th:replace="include/fore/home/homepageCategoryProducts::html" ></div> </div> </div>
步骤 3 :

homePage.html 所包含页面关系

edit
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
homePage.html 所包含页面关系
步骤 4 :

categoryAndcarousel.html

edit
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
categoryAndcarousel.html
<div th:fragment="html"> <img src="img/site/catear.png" id="catear" class="catear"/> <div class="categoryWithCarousel"> <div class="headbar show1"> <div class="head "> <span style="margin-left:10px" class="glyphicon glyphicon-th-list"></span> <span style="margin-left:10px" >商品分类</span> </div> <div class="rightMenu"> <span><a href=""><img src="img/site/chaoshi.png"/></a></span> <span><a href=""><img src="img/site/guoji.png"/></a></span> <span v-for="c,index in categories" v-if='index<=3'> <a :href="'category?cid='+c.id">{{c.name}}</a> </span> </div> </div> <div style="position: relative"> <div th:replace="include/fore/home/categoryMenu::html" ></div> </div> <div style="position: relative;left: 0;top: 0;"> <div th:replace="include/fore/home/productsAsideCategorys::html" ></div> </div> <div th:replace="include/fore/home/carousel::html" ></div> <div class="carouselBackgroundDiv"> </div> </div> </div>
步骤 5 :

categoryMenu.html

edit
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
categoryMenu.html
<div th:fragment="html"> <div class="categoryMenu"> <div :cid="c.id" class="eachCategory" v-for="c in categories"> <span class="glyphicon glyphicon-link"></span> <a :href="'category?cid='+c.id"> {{c.name}} </a> </div> </div> </div>
<div th:fragment="html"> 	
	<div class="categoryMenu">
				<div :cid="c.id" class="eachCategory" v-for="c in categories">
					<span class="glyphicon glyphicon-link"></span>
					<a :href="'category?cid='+c.id">
						{{c.name}}
					</a>
				</div>
	</div>  
</div>
步骤 6 :

productsAsideCategorys.html

edit
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
productsAsideCategorys.html
<div th:fragment="html"> <div :cid="c.id" class="productsAsideCategorys" v-for="c in categories"> <div class="row show1" v-for="ps in c.productsByRow"> <a :href="'product?pid='+p.id" v-for="p in ps" v-if="p.subTitle.length!=0"> {{p.subTitle | subTitleFilter}} </a> <div class="seperator"></div> </div> </div> </div>
<div th:fragment="html"> 
	<div  :cid="c.id" class="productsAsideCategorys" v-for="c in categories">
		<div class="row show1" v-for="ps in c.productsByRow">
					<a :href="'product?pid='+p.id" v-for="p in ps" v-if="p.subTitle.length!=0">
						{{p.subTitle | subTitleFilter}}
					</a>		
					<div class="seperator"></div>
		</div>
	</div>
</div>
	
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
carousel.html
<div th:fragment="html"> <div id="carousel-of-product" class="carousel-of-product carousel slide1" data-ride="carousel"> <!-- Indicators --> <ol class="carousel-indicators"> <li data-target="#carousel-of-product" data-slide-to="0" class="active"></li> <li data-target="#carousel-of-product" data-slide-to="1"></li> <li data-target="#carousel-of-product" data-slide-to="2"></li> <li data-target="#carousel-of-product" data-slide-to="3"></li> </ol> <!-- Wrapper for slides --> <div class="carousel-inner" role="listbox"> <div class="item active"> <img class="carousel carouselImage" src="img/lunbo/1.jpg" > </div> <div class="item"> <img class="carouselImage" src="img/lunbo/2.jpg" > </div> <div class="item"> <img class="carouselImage" src="img/lunbo/3.jpg" > </div> <div class="item"> <img class="carouselImage" src="img/lunbo/4.jpg" > </div> </div> </div>
步骤 8 :

homepageCategoryProducts.html

edit
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
homepageCategoryProducts.html
<div th:fragment="html"> <div class="homepageCategoryProducts"> <div class="eachHomepageCategoryProducts" v-for="c in categories"> <div class="left-mark"></div> <span class="categoryTitle">{{c.name}}</span> <br> <div class="productItem" v-for="p,index in c.products" v-if="index<5" > <a :href="'product?pid='+p.id"> <img width="100px" :src="'img/productSingle_middle/'+p.firstProductImage.id+'.jpg'"> </a> <a class="productItemDescLink" href="'product?pid='+p.id"> <span class="productItemDesc">[热销] {{p.name | subStringFilter(0,20)}} </span> </a> <span class="productPrice"> {{p.promotePrice | formatMoneyFilter}} </span> </div> <div style="clear:both"></div> </div> <img id="endpng" class="endpng" src="img/site/end.png"> </div> </div>
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2019-10-22 站长,vue执行mounted()函数能否保证所有的dom挂载和渲染完成?
啊啊222

使用Vue.nextTick()能保证dom全部加载渲染完成后执行其方法体里的函数,但是我看网上好多解释说执行到mounted钩子函数时,其挂载的dom都已经全部渲染完毕了,如果是这样的话,那使用vue.nextTick()是不是有点多余了




1 个答案

how2j
答案时间:2019-10-22
实践出真知嘛,仅仅用 mounted, 并不能达到dom渲染效果嘛。



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2019-10-10 | 代表的意思
smile_yws

{{p.subTitle | subTitleFilter}} 站长,vue里边“| ”代表的意思是什么呢?貌似在知识点里边没找到这块的讲解,难道是赋值的意思?,还请站长解答下子。




3 个答案

Orchid_G
答案时间:2019-11-04
上面那位老哥这和Java没关系,这是过滤器 你定义一个过滤器然后通过{{ value | filter }}这种方式来引用

庄胜文
答案时间:2019-10-31
在Java位运算符里,|(按位或)

how2j
答案时间:2019-10-11
讲了的,在vue.js 的系列教材里,这是过滤器: http://how2j.cn/k/vuejs/vuejs-filter/1752.html



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2019-09-03 homepageCategoryProducts.html 的12行缺少一个 ' :'
2019-08-28 如截图
2019-08-25 如果让分类下的产品一个挨着一个输出
2019-08-24 前端页面布局乱了
2019-08-14 浏览器显示异常!!
2019-07-22 问下比较困惑的问题
2019-07-11 为啥homepageCategoryProducts.html中图片的连接用属性绑定跳转,文字的连接不用呢
2019-07-07 说实话,很奇怪
2019-05-31 数据库问题
2019-05-22 hibernate打印出来的sql语句阅读性真是极差
2019-05-10 首页轮播图怎么没有小圆点,和左右切换的点?
2019-03-13 商品分类下的内容无法显示
2019-03-03 新增类别后 样式就出问题了
2018-12-01 前端页面问题




提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 实践项目-天猫整站Springboot-homePage.html 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 881555796
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图