是一个朋友前天刚接触这个行业不久问我的一个问题,我网上也查了一些,看了下代码,不喜欢;所以
自己动手做了这个小demo;希望大家可以借鉴一下
首先页面布局:其中最主要的是对类wrapper设置position:relative;overflow:hidden;
类items设置:position:absolute等属性;
接下来就事分析如何轮播:
我的思路是:点击下一页的时候:items的animate向左移动
animate({"marginLfet":"-800px"},1000,function(){});其中function({})里执行的方法:
首先将item-1放到$(".items li")最后面,然后items({marginLeft:0})
【一开始在想,将item-1追加到$(".items li")最后面之后,那么一开始item-1是不是要移除掉呢,
然后我观察了下一页的方法执行后的页面元素,才发现这个担心是多余的】
下面是执行下一页之后的页面元素:
【大家发现了没有,第一个li元素跑到最后面了,然后接下来点击上一页的时候,我们只需要取最后一个li元素就行了】
思路:点击上一页的时候,items的css向左移动({"marginLfet":0}),然后$(".items li").eq(3)放在items第一个位置里,然后动画aniamte({"marginLeft":0},1000);
这时候大家脑补一下:items的css向左移动({"marginLfet":0})和$(".items li").eq(3)[即item-1]放在items第 一个位置里都是瞬间完成,人眼是看不出来的;所以再之后执行aniamte({"marginLeft":0},1000)时候,发现item-1慢悠悠从左侧出来
js代码如下:
接下来就是定时器了:自动轮播
【timer一定去做下判断,不然会导致连续点击的时候,图片移动会越来越快】
还有最后一个setTimeout这个:在点击上下一页的时候,我会清除定时器,所有我会在其事件里添加它,然后三秒之后再执行show(),自动轮播;
最后点击事件:
总体页面展示:
者:紫云飞
转发链接:https://zhuanlan.zhihu.com/p/38251413
握:如何在浏览器中无缝集成Ant Design of Vue,打造高性能前端应用
在当前复杂多变的Web开发环境中,构建高效、美观且易于维护的前端应用显得尤为重要。Ant Design of Vue(以下简称“AoV”)作为一款基于Vue.js的高质量UI组件库,以其严谨的设计规范、丰富的组件体系以及出色的性能表现,为开发者提供了构建企业级中后台应用的强大工具。本篇文章将带领您深入理解AoV的核心特性,并详细演示如何在浏览器中无缝集成AoV,以打造高性能的前端应用。
1. **统一设计语言与规范**:AoV遵循Ant Design的设计体系,提供一致的视觉风格和交互体验,使您的应用具备高度的一致性和专业感。
2. **丰富且易用的组件库**:包含表格、表单、按钮、图标、布局、提示、对话框等近200种组件,满足各类业务场景需求。每个组件均提供详尽的API文档和示例,便于快速上手。
3. **响应式设计与无障碍支持**:AoV组件天然支持移动端适配,确保在不同设备上的良好展示效果。同时,其对无障碍访问(a11y)的重视,让应用更具包容性。
4. **灵活的定制与主题化**:通过Less变量和CSS预处理器,AoV允许开发者轻松调整或替换主题样式,实现个性化定制。
5. **高性能优化**:AoV通过组件懒加载、虚拟滚动、异步加载数据等技术手段,有效提升大型应用的性能表现。
1. 环境准备
确保已安装以下环境:
- Node.js(推荐使用最新LTS版本)
- Vue CLI(用于项目初始化)
2. 创建Vue项目
bash
vue create my-app
cd my-app
使用Vue CLI创建新项目:
3. 安装Ant Design of Vue
bash
npm install ant-design-vue --save
在项目根目录下运行以下命令:
1. 引入全局样式
javascript
import 'ant-design-vue/dist/antd.css';
import { createApp } from 'vue';
import App from './App.vue';
const app = createApp(App);
// ...其他配置
app.mount('#app');
2. 配置按需加载
javascript
module.exports = {
plugins: [
['import', {
libraryName: 'ant-design-vue',
libraryDirectory: 'es',
style: true, // 导入对应组件的css
}, 'ant'],
],
};
为了减小打包体积,推荐使用`babel-plugin-import`实现组件的按需加载。首先安装该插件:
html
<template>
<a-layout>
<a-layout-sider collapsible>
<a-menu mode="inline" :defaultSelectedKeys="['1']">
<!-- 菜单项... -->
</a-menu>
</a-layout-sider>
<a-layout>
<a-layout-header>
<!-- 顶部导航栏... -->
</a-layout-header>
<a-layout-content>
<!-- 页面主体内容... -->
</a-layout-content>
<a-layout-footer>
<!-- 底部版权信息... -->
</a-layout-footer>
</a-layout>
</a-layout>
</template>
利用AoV的布局组件,快速搭建一个响应式的侧边导航布局:
2. 表格组件:Table
html
<template>
<a-table :columns="columns" :data-source="dataSource" :pagination="pagination" :row-selection="{ type: 'checkbox' }">
<!-- 其他表格配置... -->
</a-table>
</template>
<script>
export default {
data() {
return {
columns: [...], // 列定义
dataSource: [...], // 数据源
pagination: {
pageSizeOptions: ['10', '20', '50', '100'],
showSizeChanger: true,
showQuickJumper: true,
},
};
},
methods: {
handleTableChange(pagination, filters, sorter) {
// 处理表格变化,如分页、排序、筛选
},
},
};
</script>
实现一个带有分页、排序、筛选功能的数据表格:
html
<template>
<a-form :form="form" @submit="handleSubmit">
<a-form-item label="用户名">
<a-input v-model="form.username" />
</a-form-item>
<a-form-item label="性别">
<a-select v-model="form.gender">
<a-select-option value="male">男</a-select-option>
<a-select-option value="female">女</a-select-option>
</a-select>
</a-form-item>
<a-form-item label="出生日期">
<a-date-picker v-model="form.birthday" format="YYYY-MM-DD" />
</a-form-item>
<a-button type="primary" html-type="submit">提交</a-button>
</a-form>
</template>
<script>
export default {
data() {
return {
form: this.$form.createForm(this),
model: {
username: '',
gender: '',
birthday: null,
},
};
},
methods: {
handleSubmit(e) {
e.preventDefault();
this.form.validateFields((err, values) => {
if (!err) {
console.log('Received values of form: ', values);
}
});
},
},
};
</script>
构建一个包含输入框、选择器、日期选择器的表单:
1. 组件懒加载
javascript
// router.js
{
path: '/some-page',
component: () => import('@/views/SomePage.vue'),
}
利用Vue的动态导入功能,实现路由级别的组件懒加载:
2. 数据懒加载与虚拟滚动
html
<a-table :columns="columns" :data-source="dataSource" :pagination="pagination" :scroll="{ y: 'calc(100vh - 240px)' }">
<!-- 其他表格配置... -->
</a-table>
并在后端接口中实现分页与数据懒加载。
3. 使用SSR提升首屏加载速度
考虑使用Vue官方推荐的Nuxt.js框架,或自行配置Vue SSR(服务器端渲染),以提升首屏加载速度和SEO效果。
通过本文的学习,您已经掌握了如何在浏览器中无缝集成Ant Design of Vue,充分利用其丰富的组件库、统一的设计规范以及强大的性能优化特性,打造出高性能、高颜值的前端应用。AoV不仅简化了开发流程,更提升了应用的整体质量与用户体验。在实际项目中,持续关注AoV的更新动态,结合最佳实践进行优化,定能使您的前端开发工作事半功倍。
*请认真填写需求信息,我们会在24小时内与您取得联系。