响应式web,这玩意有谁开发过实战项目吗?
我前端做了有十多年了,响应式技术大概2010年出现的,我在这方面案例我经手大概有1000多个。
也正是基于这么多项目,我一直想整理一套快速前端开发框架,我也开发过不少响应式框架,不过近期的这个是我个人最满意的,它是kuapingUI跨屏ui框架
简单介绍一下
它不是一个再造的css框架,几乎没有学习成本,它是基于bootstrap的基础之上开发的大组件框架,比如新闻列表来说,就提供了十几种风格供你选择,非常的方便。
响应式布局
响应式网站主要针对于UI, UE级。响应式顾名思义是Html页面( web为主)可以针对不同设备的不同分辨率做出不同风格得展示形式。比如: PC屏幕分辨率常见的从1366* 768 - 1920*1080,平板,手机这些都有各自的屏幕分辨率。如果同一页面元素布局不做适配就会严重影响用户体验; 故此响应式布局便是主要解决这些问题。接下来我们讲一下具体响应式是如何做到响应的。
响应式布局原理
响应式布局它内部是依据流式布局和自适应布局相结合。这些都是网页端常见的布局种类,那么什么是流式布局还有什么是自适应布局?
- 流式布局
依据 css 的 float(浮动属性),就好比砌墙一样,一行一行的垒砖头。它可以自动的帮你把这些元素堆叠在一起。但是,如果容器宽高变化导致一行容不下子元素,那么子元素会自动排在下一行,然后页面布局就会错乱,这也是它的弊端。
- 自适应布局
依据 css3 的媒体查询 (media),它可以针对不同的分辨率(自行设定) 来展示不同的样式。这样的话就可以弥补流式布局的缺陷,但是它只是强制更改 css 属性使元素达到目的,总得来说延展性不好(需要写很多适配代码)。但这本身并不是它的缺陷,因为它关注的是适配不同设备的分辨率。
- 响应式布局(栅格)
结合前两种,便出现了响应式的布局,这样既能够自动的排列元素,并且可以自动适应不同的容器。将元素按照屏幕分辨率的百分比分成若干份( bootstrap为12,element为24,ant design为 24),然后浮动子元素让其填充容器,配合着媒体查询,将容器的宽度进行自动的更换,然后为不容宽度的容器改变其展示(交互方式)。这就是响应式原理,当然里面还有很多细节,在这就不展开细说。总之,响应式布局是目前主流的布局方式。我们接下来说下其代表:
- bootstrap
以 jquery 为主导的 ui 框架,当然现在也有( vue, react)版。当时几乎各类网站都以它为参考标准进行设计和实现。
当然还有什么 layui, yui, mui等等。
- element UI
以 vue 为主导的UI组件库,目前也是vue项目的主力军,框架也很稳定,当然还有iview 等,而且现在也有针对 react 版本的。
- ant design
以 react 为主导的,里面封装了各类组件库,也有针对企业级的管理组建库也非常值得学习。同样,它也有针对 vue 版本。
总得来说,在jquery为主的时代,bootstrap那时候就是业界标准,但是目前前端框架迭代速度之快,mvvm 的迭代更新进而UI组建也不断地更新迭代,但总得来说都是为了适应业务快速迭代而产出的各类产品。
最后,响应式 web 的原理及相应的组件已经介绍完了,需要了解和掌握其中的机制才能应对现在的各类业务的扩展。
响应式网站,目前市面上模板很多,主打的还是h5,开发起来全是自适应,对于PHP出身的我,骨子里还是很难适应自适应,好比让一个裁缝制作一件男女老少都能穿的橡胶衣服一样,习惯问题。但随着电子设备的多重多样,你不得不主动去适应市场。
所以,比较常用的构架是dede或者thinkphp,这样改起来更加高效,目前市面上模板也多,当然了,你要有一定的规避版权的能力。
怎么把轮播图的图片改成用ajax请求的?
首先,你会用js写轮播图,这就好办了。用js实现的轮播图应该有两种形式:
1. 一个是html里把轮播的图片都组织好,放置在<img>标签中,div包裹好,之后js调用轮播图初始化渲染方法,将这个div中组织好的img标签渲染成轮播图;
2. 另一个是在html里只放置一个标记有ID的div标签,图片的信息都放置在js的数组里,js调用轮播图初始化渲染方法,将这个标记ID的div渲染成轮播图。
那不管是上面的哪种形式,改成ajax的请求方式后,由于请求数据是异步的,首先要想到用户体验,轮播图区域在等待数据填充的时候,先放置一个loading状态图标;同时,发起ajax请求到后端等待返回数据,这里可以使用jQuery提供的ajax请求方法,get或者post方法,如下所示:
$.get("demo.json", function(result){ 这里写轮播图创建方法 }); });
$.post("demo.json",{suggest:txt},function(result){ 这里写轮播图创建方法 }); });
当数据正常返回后:
1. 如果是第一个形式,请将页面里的<img>区块用返回的数据动态创建出来,之后再调用轮播图创建方法;
2. 如果是第二个形式,直接将返回的数据填充到数组中,之后调用轮播图创建方法就可以了。