场景
实际开发过程中,发送请求需要时间,在请求的数据未返来时,页面会处于空白状态 => 用户体验不好
需求
封装一个 v-loading 指令,实现加载中的效果
分析
- 本质 loading效果就是一个蒙层,盖在了盒子上
- 数据请求中,开启loading状态,添加蒙层
- 数据请求完毕,关闭loading状态,移除蒙层
实现
1.准备一个 loading类,通过伪元素定位,设置宽高,实现蒙层
利用伪元素添加的好处就是添加和移除会方便一些,如果准备dom元素,则添加和移除需要把这个节点添加和移除。但如果是伪元素,只需要添加和移除类就行了。
2.开启关闭 loading状态(添加移除蒙层),本质只需要添加移除类即可
3.结合自定义指令的语法进行封装复用
- .loading:before {
- content: "";
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- background: #fff url("./loading.gif") no-repeat center;
- }
复制代码 核心思绪:
- 准备类名 loading,通过伪元素提供遮罩层
- 添加或移除类名,实现loading蒙层的添加移除
- 利用指令语法,封装 v-loading 通用指令
inserted 钩子中,binding.value 判断指令的值,设置默认状态
update 钩子中,binding.value 判断指令的值,更新类名状态
代码示例
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |