使用Vue.js制作仿Metronic高级表格(一)静态设计

Metronic高级表格是Metonic框架中自行实现的表格,其底层是Datatables,本教程将主要使用Vue实现交互部分,使用Bootstrap做样式库,jQuery做部分用户交互(弹窗)。

使用到的库:Vue 2.0,Bootstrap3、jQuery2、font-awesome4,均可在CDN下载

需要注意的是,Vue最好使用开发版本

一、需求和原型设计

产品目标是一个图书管理表格,书籍字段:书籍名称、分类、价格、更新时间。

需求:

① 书籍信息的增删改

② 分页功能,并且能自行选择页容量

③ 能展示 根据任一字段进行关键字匹配后的条目

④ 能自动保存本次操作的数据

原型:

原型说明:

① 页码区提供 上一页、页码列表、下一页 按钮

② 点击修改时,上部表单内容为原始数据,“添加”按钮变为“修改”,此时点击修改,才将数据保存生效;如果此时点击重新填写则是放弃修改。

③ 点击删除时弹框提示是否删除

二、准备工作

① 搭建运行环境

不建议使用浏览器直接打开网页,建议搭建一个Web环境来进行测试。

建议使用WAMP、XAMPP等集成环境,安装简便易于操作

② 引入各类库

<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="/static/vue.js"></script>

注意vue.js的路径,下载到本地进行引入(此处使用的是web绝对路径‘/static/vue.js‘)

③ 进行最简单的Vue测试

<div id="content">
    {{msg}}
</div>
<script>
    window.onload = function () {
        var vm = new Vue({
            el:‘#content‘,
            data: {
                msg:‘hello vue‘
            }
        });
    }
</script>

值得注意的是,el选项不能为‘body’或‘html’,否则会提示警告信息并且不能正常渲染。

生产版本的vue则不会产生警告信息,并且不能正常渲染

三、数据输入(添加、修改)

按照原型图:

写出表单:

<form action="" class="col-md-4 col-md-offset-4 form-horizontal">
    <div class="form-group">
        <label class="col-md-3 control-label" >书名: </label>
        <div class="col-md-9">
            <input type="text" class="form-control" placeholder="请输入书名">
        </div>
    </div>
    <div class="form-group">
        <label class="col-md-3 control-label" >类别: </label>
        <div class="col-md-9" >
            <select class="form-control">
                <option value="0">科技</option>
                <option value="1">文化</option>
                <option value="2">经济</option>
            </select>
        </div>
    </div>
    <div class="form-group">
        <label class="col-md-3 control-label" >价格: </label>
        <div class="col-md-9">
            <input type="text" class="form-control" placeholder="请输入价格">
        </div>
    </div>
    <div class="form-group text-right">
        <input type="button" class="btn btn-primary" value="添加">
        <input type="reset" class="btn btn-default" value="重新填写">
    </div>
</form>

值得关注的是:

① ‘form-control‘ 这个class样式会独占一行。要使label和input在一行,利用bootstrap的栅格化布局即可,经过调整得出3:9的布局是比较合适的。

② ‘form-horizontal‘ 样式作用于form元素可以美化表格。它可以让每个form-group之间留出间隙,变得不那么紧凑;还可以使label的内容居中。

③ ‘col-md-4 col-md-offset-4’ 可以使一个元素居中,并且宽度是‘col-md-4’

四、展示

① 表头

<div class="form-horizontal">
    <div class="form-group col-md-6 ">
        <label class="col-md-2 control-label" >每页</label>
        <div class="col-md-3">
            <select class="form-control">
                <option value="5">5条</option>
                <option value="10">10条</option>
                <option value="15">15条</option>
                <option value="20">20条</option>
            </select>
        </div>
    </div>
    <div class="form-group col-md-6">
        <label class="col-md-3 col-md-offset-3 control-label" >搜索: </label>
        <div class="col-md-6">
            <input type="text" class="form-control" placeholder="请输入关键字">
        </div>
    </div>
</div>

这部分较简单,这里依然使用到了‘form-horizontal’来调整布局

② 主体

<table class="table table-bordered table-hover table-striped">
    <thead>
    <tr>
        <td width="50">序号</td>
        <td>书名</td>
        <td>类别</td>
        <td>价格(元)</td>
        <td>更新时间</td>
        <td width="140">操作</td>
    </tr>
    </thead>
    <tbody >
    <tr>
        <td>1</td>
        <td>标准日本语</td>
        <td>文化</td>
        <td>¥ 31.00</td>
        <td>2017年04月16日14:26:43</td>
        <td>
            <button class="btn btn-info btn-xs">
                <i class="fa fa-pencil"></i>
                修改
            </button>
            <button class="btn btn-danger btn-xs">
                <i class="fa fa-trash"></i>
                删除
            </button>
        </td>
    </tr>
    </tbody>
</table>

① ‘table-bordered‘ 添加单元格的边框

② ’table-hover‘ 鼠标悬停一行有样式

③ ‘table-striped‘ 斑马线效果

五、删除

删除弹窗,原型图没给出,所以自行发挥想象力。

模态框:

<div id="general_dialog" class="modal fade bs-example-modal-sm" role="dialog">
    <div class="modal-dialog modal-sm" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button class="close" data-dismiss="modal" >&times;</button>
                <h4 class="modal-title">提示</h4>
            </div>
            <div class="modal-body">
                您确认要删除xxx吗?
            </div>
            <div class="modal-footer text-right">
                <button class="btn btn-default" data-dismiss="modal">取消</button>
                <button class="btn btn-danger" data-dismiss="modal">删除</button>
            </div>
        </div>
    </div>
</div>

这样写,初始是不会出来的,在删除按钮元素上添加:

data-toggle="modal" data-target="#general_dialog"

那么点击按钮的时候,就会弹出来(此处需要引入bootstrap.js哦)

① ‘fade‘ 表示模态框是淡入淡出的

② ‘bs-example-modal-sm‘ 是指模态框的大小是’sm‘

③ ’&times;‘是一个实体标记,代表是 ×

五步完成后,样子是:

(额这个录屏的工具貌似吧table-striped的效果抹去了。。。)

时间: 2024-10-23 06:22:51

使用Vue.js制作仿Metronic高级表格(一)静态设计的相关文章

Vue.js高仿饿了么外卖App 前端框架Vue.js 1.0升级2.0

课程目录:第1章 课程简介介绍课程的学习目标和学习内容.第2章 Vuejs介绍从前端开发趋势分析开始,引入 MVVM 开发框架和 Vue.js,接着对比流行框架Angular 和 React,最后详细介绍 Vue.js 的核心思想-数据驱动和组件化.第3章 Vue-cli 开启 Vuejs 项目介绍 Vue 项目的脚手架,如何安装,对脚手架生成的目录文件做介绍,介绍 Vue 组件的编写方法,最后运行 demo 项目并介绍 webpack 构建脚本来说明 demo 的运行原理.第4章 项目实战-准

Vue.js 高仿饿了么外卖APP

第1章 课程简介介绍课程的学习目标和学习内容.1-1 课程简介1-2 课程安排 第2章 Vuejs介绍从前端开发趋势分析开始,引入 MVVM 开发框架和 Vue.js,接着对比流行框架Angular 和 React,最后详细介绍 Vue.js 的核心思想-数据驱动和组件化.2-1 Vuejs介绍-近年来前端开发趋势2-2 Vuejs介绍-MVVM框架2-3 Vuejs介绍-什么是Vuejs及Vuejs生态2-4 Vuejs介绍-对比Angular.React2-5 Vuejs介绍-Vuejs核心

Vue.js高仿饿了么外卖App 2016最火前端框架

第1章 课程导学(二期)-15号开放 包括课程概述.核心模块.核心技术.课程安排.课程收获.讲授方式.学习前提等方面的介绍,最后演示了整个外卖App的功能,让同学们对课程项目有一个直观的了解. 1-1 导学(必看) 第2章 项目准备工作(二期)-15号开放 包括项目需求分析.Vue-cli 3.0 脚手架介绍.cube-ui 介绍.目录模块分析.api 接口 mock 等. 2-1 Vue-cli 3.0 介绍 2-2 目录介绍 & cube-ui 安装 2-3 api 接口 mock 第3章

Vue.js中 watch 的高级用法

假设有如下代码: <div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type="text" v-model="firstName"></p> </div> new Vue({ el: '#root', data: { firstName: 'Dawei', lastName: 'Lou', fullName: '' },

[从零开始]使用Vue.js制作俄罗斯方块小游戏(一)创建项目

一.创建项目 开发环境:win10 开发的前置操作:安装npm. 首先在命令行里进入一个文件夹A,然后输入vue init webpack tetris tetris是文件夹的名字,可以随便定义,但不能有大写字母 接下来全部按回车就好. 接下来,我们进入tetris,并运行 cd tetris npm run dev 就会出现这样一个界面. 然后我们根据提示打开浏览器,在地址栏输入http://localhost:8080 就会出现如下界面. 这样我们的项目就搭建好了! 原文地址:https:/

[从零开始]使用Vue.js制作俄罗斯方块小游戏(四)ui实现

STEP ONE:设计游戏规则. 作为一个合格的游戏,我们肯定要设计一个合理的游戏规则. 以下是我的方案: 得分=已固定的方块数*1+已消除的行数*50 方块掉落速度=1+已消除的行数*0.05 方块下落的时间间隔=500/方块掉落速度 ok! STEP TWO:ui实现. 这一步我们放在Index.vue里实现. // 当一个方块固定 squareOk () { this.data.cur_points++ if (this.data.cur_points > this.data.max_po

Vue.JS 对比其他框架

Angular 选择 Vue 而不选择 Angular,有下面几个原因,当然不是对每个人都适合: 在 API 与设计两方面上 Vue.js 都比 Angular 简单得多,因此你可以快速地掌握它的全部特性并投入开发. Vue.js 是一个更加灵活开放的解决方案.它允许你以希望的方式组织应用程序,而不是任何时候都必须遵循 Angular 制定的规则.它仅仅是一个视图层,所以你可以将它嵌入一个现有页面而不一定要做成一个庞大的单页应用.在配合其他库方面它给了你更大的的空间,但相应,你也需要做更多的架构

使用vue.js仿一个链家

Vue全家桶+localstorage+socket.io简单仿一个链家 在线预览地址首先上项目和预览地址 https://luxroid.com/lianjia/#/Github地址 https://github.com/mixihome/lianjia 注意 如果要在本地运行安装完依赖之后如果报错请手动使用淘宝镜像安装node-sass和sass-loader 确保可以运行建议使用F12移动端模式预览???? 使用到的技能点Vue.js : 前端页面展示Vuex : 全局状态通信axios

Vue.js 实践(2):实现多条件筛选、搜索、排序及分页的表格功能

与上周的第一篇实践教程一样,在这篇文章中,我将继续从一种常见的功能--表格入手,展示Vue.js中的一些优雅特性.同时也将对filter功能与computed属性进行对比,说明各自的适用场景,也为vue2.0版本中即将删除的部分filter功能做准备. 需求分析 还是先从需求入手,想想实现这样一个功能需要注意什么.大致流程如何.有哪些应用场景. 表格本身是一种非常常用的组件,用于展示一些复杂的数据时表现很好. 当数据比较多时,我们需要提供一些筛选条件,让用户更快列出他们关注的数据. 除了预设的一