轮播图-动态响应轮播图-动态渲染 |学习笔记

简介: 快速学习 轮播图-动态响应轮播图-动态渲染

开发者学堂课程【移动 Web 前端开发:轮播图-动态响应轮播图-动态渲染 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/594/detail/8461


轮播图-动态响应轮播图-动态渲染


第一步在做以下这些之前,要先获取/*获取需要操作的元素*/

banner();

});

var banner = function(){

/*

*1.模拟数据(从后台回去数据) [{},{}]

* 2.判断当前设备 768px

* 3.根据当前设备把数据转换成html 拼接字符串

* 3.1点容器内容需要动态生成

* 3.2图片容器内容需要动态生成

* 4.渲染到页面当中 html.追加

* 5.测试能否响应两种设备 监听页面尺寸改变重新渲染

* 6.移动端手势切换功能 左滑右滑

* */

};

第一个想到的应该是轮播图大容器想拿到它声明一个 $banner

切换到 index.html 页面可以分为里面的 div 和外面的 div

里面的 div 是一个完整的 banner这是一个完整的轮播图
id= " carousel- example- generic' class="carousel slide data-ride= " carouse">

外面的 banner 也可以外面只是一个容器包裹住它

不找外面的,只找里面的 carousel。代码如下

/*轮播图组件*/

var $banner = $(' .carousel' );

点容器和图片容器需要动态渲染,$只是分明 carousel 的对象没有其他用处

/*点容器*/

这时要在 index.html 页面往里找找到 carousel-indicators 点容器

var $point = $banner.find( '.carousel-indicators');

/*图片容器*/

找到图片容器进行渲染,在 index.html 页面找到 carouse1-inner。

var $image = $banner.find( '.carouse1-inner" )

要获取到当前对象的宽度要获取到 windows 对象

/*窗口对象*/

var $window= $(window) ;

拿它的目的是要获取当前浏览器的宽度当前窗口的宽度

完成以上是第一步需求

/*模拟数据(从后台回去数据[{},{}]*/

宿主中包含对象,对象中包含两组图片,根据当前设备选择使用哪种图片。

var data = [

{

pcSrc: " images/slide_o1_200ox410.jpg ,  pc 端的图片地址可以从 index.html 页面直接复制

mSrc : " images/slide_o1_640x340.jpg'   m 的图片地址可以从 index.html 页面直接复制

},

]

现在有四张图,现在先按之前的来后面也可以多加一张进行动态渲染所以复制三份写入:

{

pcSrc: " images/slide_o1_200ox410.jpg ,

mSrc : " images/slide_o1_640x340.jpg'

},

{

pcSrc: " images/slide_o1_200ox410.jpg ,

mSrc : " images/slide_o1_640x340.jpg'

},

{

pcSrc: " images/slide_o1_200ox410.jpg ,

mSrc : " images/slide_o1_640x340.jpg'

}

这组数据的抽象过程。有四张图每一张图有两种图片按照当前设备使用哪一张图片

第二步判断当前设备转化成 html 然后再让html 渲染到页面当中

* 2.判断当前设备 768px

* 3.根据当前设备把数据转换成 html 拼接字符串

* 3.1点容器内容需要动态生成

* 3.2图片容器内容需要动态生成

* 4.渲染到页面当中 html.追加

整个2.3.4这过程统一可以认为是一个渲染过程因为渲染要根据设备根据设备转化到页面当中整个就是一个渲染流程就可以统一认为渲染操作

/*渲染操作*/

var render = function(){  定一个渲染方法在这个方法当中完成这个渲染

要判断当前设备要获取当前设备的宽度当前设备的宽度已经拿到 window 了

/* 2.判断当前设备 768px* /

拿到当前宽度如果大于或者如果小于768,那么 true否则 false

var isMobile = $window.width() < 768 ? true : false;

如果获取到的宽度小于768,那么就是移动端,否则不是。判断好了当前设备

/*根据当前设备把数据转换成 html   拼接字符串*/

/*3.1容器内容需要动态生成*/ 根据data进行生成

var pointHtml =‘ ‘;

/*3.2图片容器内容需要动态生成*/

var imageHtml = ‘;

/*根据数据来拼接*/   现在数据是一个数组需要去建立变量data之后会有回调回调函数当中对应的是iitem或者是kv这里可以随便来更改变量变量之后要把每一组数据拼接按照原本已经是静态的代码如果要拼接点容器里面的内容点容器内容代码如下

data-slide-to="0" class="active">

根据这一条内容认为是一个小模版参照这个小模版变量

$.each(data,function(k,v){

pointHtml +=

to="e”" class="active">  

这里内容需要变为动态,所以在 data-slide-to= 后加 ‘+k+k是当前图片的索引还有一个地方需要索引只有一个元素才有 active。

data-slide-to="e" class="active">

这一段代码只有第一个元素有 active其它元素没有这个地方要有逻辑判断这里要根据当前索引进行拼接如果当前k==0,那么就可以追加一个 class="active ,否则就是空这样就达到了想要的效果索引要动态生成active 要动态控制

Console.log(pointhtml)输出一下,但现在声明的方法没有调用,所以在下方调用一下:

Render();

在页面控制台找到 console 刷新页面,没有打印出来,在 index.html 中引入:

这时打印出来:

=#rcarousel-excample-generic"

data-slide-to=0" class= *actve">

data-slide-to"2”>

第一句代码有 active

第二句代码没有 active

第三句代码没有 active

没有问题这样就完成了点内容的拼接。

把这段代码带入到 pointhtml 盒子里面就可以了这样就完成了动态拼接动态生成

/*点内容的拼接*/

pointHtml +='

'+(

/*图片内容的拼接*/  在 index.html 中找到模版代码长一句一句加先加开头的标签再加结束的标签中间再加 a但是有两个 a所以要选择性的加进去根据当前设备选择但是其实 div 也有一个地方需要动态渲染是 active只有第一个 div 才有所以在这里需要拼接一次如果 k=0,就追加 active否则为空

根据当前设备需要选择渲染哪一张图片

imageHtml += '

)+ ">;   

/*按需追加图片*/

if(isMobile){

imageHtml += ‘’

}else{

imageHtml +=‘</div>’;

在 index.html 中复制两个a在这个位置都是静态的里面的内容需要替换掉地址需要换成动态的再看使用的响应式内容hideen-lg hidden-md hidden-sm 将响应式工具去掉因为已经是第二次判断当前设备所以没有用当是移动端时image 要变成动态的后面的 alt 可要也可无删掉现在应该是第一张图片中移动端图片现在第一张图片用 v 代表v 里面包含两张图一张 pcsrcmsrc因为是 data所以要拿到 v.msrc

imageHtml +=

src=""+(v.mSrc)+'”/>'; ’;

移动端的动态图就渲染好了

pc 端的动态图也需要渲染把 images/slide 01 2000x410. jpg) 去掉,+v.pcSrc+,href=# 是 a 的链接

imageHtml+=‘helf+“#

style="background-image: ur1( '+v.pcSrc+');"> ';

}

imageHtml += '

' ;

拼接完之后

console. log(imageHtml);

保存打印,当前是非移动屏幕,渲染大图打印了两句代码,第一个

有 active,第二个代码没有 active

在 index.html 页面中粘贴看到 p c_imagebox,加载的是大图没问题后拿掉pc渲染没问题

切换到移动端看一下把之前的删掉再进行刷新页面又会初始化一边可以再看一下这个图把它复制粘贴在 index.html 页面格式化一下第一个 active其他没有现在加的是 m_imagebox里面是640的图片没有问题动态拼接好字符串了。

可以把以下代码删掉:

=#rcarousel-excample-generic"

data-slide-to=0" class= *actve">

data-slide-to"2”>

pc_imagebox 和 m_imagebox 的代码也可以删掉。

既然可以打印出来就可以用了渲染到页面当html 追加:

$point.html(pointHtml);.

$image.html (imageHtml);

这样就完成了渲染已经提前把容器拿到了

放到移动端刷新

在页面中刷新,轮播图不动将图片轮播更改顺序:

{

pcSrc: " images/slide_o1_200ox410.jpg ,

mSrc : " images/slide_o1_640x340.jpg'

}

{

pcSrc: " images/slide_o2_200ox410.jpg ,

mSrc : " images/slide_o2_640x340.jpg'

}

{

pcSrc: " images/slide_o3_200ox410.jpg ,

mSrc : " images/slide_o3_640x340.jpg'

}

{

pcSrc: " images/slide_o4_200ox410.jpg ,

mSrc : " images/slide_o4_640x340.jpg'

}

这时候轮播图就开始切换了

第一张图

image.png

第二张图

image.png

第三张图

image.png

第四张图

image.png

这就是动态渲染过程渲染操作2.3.4就好了这时候页面上的点靠得太近,字符串没有空格,只需要加上空格

\n‘

刷新即可看到页面上的点已经被隔开。\n 是转译符转译空格的意思

image.png

到现在轮播图的动态渲染就成功了但是还差两步一个是测试一个是移动端滑动。

相关文章
|
JavaScript 定位技术
原生 js 实现类 3d 地图大屏展示自动高亮轮播、显示悬浮提示 tootip 的方案:svg + popper.js 定位引擎
原生 js 实现类 3d 地图大屏展示自动高亮轮播、显示悬浮提示 tootip 的方案:svg + popper.js 定位引擎
331 0
原生 js 实现类 3d 地图大屏展示自动高亮轮播、显示悬浮提示 tootip 的方案:svg + popper.js 定位引擎
|
3月前
|
前端开发 JavaScript 机器人
中后台前端开发问题之动态标注组件渲染到界面上如何解决
中后台前端开发问题之动态标注组件渲染到界面上如何解决
33 0
|
4月前
|
JavaScript
vue【解决方案】页面/路由跳转后,滚动条消失,页面无法滚动
vue【解决方案】页面/路由跳转后,滚动条消失,页面无法滚动
185 0
|
6月前
|
存储 JavaScript 数据处理
uniapp获取接口数据并渲染至页面中
uniapp获取接口数据并渲染至页面中
373 0
|
JavaScript 数据库 UED
Vue 的动态菜单表格数据展示以及分页查询实现
Vue 的动态菜单表格数据展示以及分页查询实现
147 0
|
存储 前端开发 容器
uniapp瀑布流:他的数据是纵向渲染,怎么实现动态上拉加载数据?
uniapp瀑布流:他的数据是纵向渲染,怎么实现动态上拉加载数据?
142 0
|
容器
ivx页面(3)轮播图的动态数据绑定实现以及轮播图点击跳转页面
ivx页面(3)轮播图的动态数据绑定实现以及轮播图点击跳转页面
211 0
|
前端开发
如何对ajax请求的后台数据添加到swiper轮播图并展示到页面
如何对ajax请求的后台数据添加到swiper轮播图并展示到页面
144 0
函数方式渲染页面
函数方式渲染页面
46 0
|
前端开发 JavaScript
前端动画(动态)图标库收集
前端动画(动态)图标库收集
151 0