是一個朋友前天剛接觸這個行業不久問我的一個問題,我網上也查了一些,看了下代碼,不喜歡;所以
自己動手做了這個小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小時內與您取得聯系。