element-ui练习使用总结
阅读原文时间:2023年07月10日阅读:4
    <el-row>  
        <el-col class="borderRed" :span="24">  
            <div class="grid-content bg-purple height">&nbsp;</div>  
        </el-col>  
    </el-row>  
    <el-row>  
        <el-col class="borderRed" :span="12">  
            <div class="grid-content bg-purple">&nbsp;</div>  
        </el-col>  
        <el-col class="borderRed" :span="12">  
            <div class="grid-content bg-purple">&nbsp;</div>  
        </el-col>  
    </el-row>  
    <!-- 间隔分栏 gutter指定栏之间的间隔-->  
    <el-row :gutter="20">  
        <el-col class="borderRed" :span="6"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
        <el-col class="borderRed" :span="6"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
        <el-col class="borderRed" :span="6"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
        <el-col class="borderRed" :span="6"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
    </el-row>  
    <!-- 偏移 offset指向右的偏移量-->  
    <el-row :gutter="20">  
        <el-col class="borderRed" :span="12" :offset="6"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
    </el-row>  
    <!-- flex对齐方式 -->  
    <el-row type="flex" justify="end">  
        <el-col class="borderRed" :span="6"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
        <el-col class="borderRed" :span="6"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
        <el-col class="borderRed" :span="6"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
    </el-row>  
    <el-row type="flex" justify="space-between">  
        <el-col class="borderRed" :span="6"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
        <el-col class="borderRed" :span="6"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
        <el-col class="borderRed" :span="6"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
    </el-row>  
    <!-- 响应式布局 xs sm md lg xl-->  
    <el-row :gutter="10">  
        <el-col class="borderRed" :xs="8" :sm="6" :md="4" :lg="3" :xl="1"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
        <el-col class="borderRed" :xs="4" :sm="6" :md="8" :lg="9" :xl="11"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
        <el-col class="borderRed" :xs="4" :sm="6" :md="8" :lg="9" :xl="11"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
        <el-col class="borderRed" :xs="8" :sm="6" :md="4" :lg="3" :xl="1"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
    </el-row>  
    <!-- 响应式 用栅格实现列偏移的妙用 -->  
    <el-row :gutter="0">  
        <el-col :xs="0" :md="6"><div class="grid-content">&nbsp;</div></el-col>  
        <el-col class="borderRed" :xs="24" :md="12"><div class="grid-content bg-purple">&nbsp;</div></el-col>  
    </el-row>

container布局(flex布局,注意兼容性!!!)

    <el-container>  
        <el-header>Header</el-header>  
        <el-container>  
            <el-aside width="200px">Aside</el-aside>  
            <el-container>  
                <el-main>Main</el-main>  
                <el-footer>Footer</el-footer>  
            </el-container>  
        </el-container>  
    </el-container>

style

.el-header, .el-footer {
background-color: #B3C0D1;
color: #333;
text-align: center;
line-height: 60px;
}

.el-aside {
background-color: #D3DCE6;
color: #333;
text-align: center;
line-height: 200px;
}

.el-main {
background-color: #E9EEF3;
color: #333;
text-align: center;
line-height: 160px;
}

body > .el-container {
margin-bottom: 40px;
}

.el-container:nth-child(5) .el-aside,
.el-container:nth-child(6) .el-aside {
line-height: 260px;
}

.el-container:nth-child(7) .el-aside {
line-height: 320px;
}

icon图

    <i class="el-icon-edit"></i>  
    <i class="el-icon-share"></i>  
    <i class="el-icon-delete"></i>  
    <el-button type="primary" icon="el-icon-search">搜索</el-button>

按钮

使用typeplainroundcircle

    <el-row>  
        <el-button>默认按钮</el-button>  
        <el-button type="primary">主要按钮</el-button>  
        <el-button type="success">成功按钮</el-button>  
        <el-button type="info">信息按钮</el-button>  
        <el-button type="warning">警告按钮</el-button>  
        <el-button type="danger">危险按钮</el-button>  
    </el-row>

链接文字

默认链接 主要链接 成功链接 警告链接 危险链接 信息链接

radio单选框 和按钮框

要使用 Radio 组件,只需要设置v-model绑定变量,选中意味着变量的值为相应 Radio label属性的值,label可以是StringNumberBoolean

    <template>  
        <el-radio v-model="radio" label="1">备选项</el-radio>  
        <el-radio v-model="radio" disabled label="2">备选项</el-radio>  
        <el-radio v-model="radio" label="3" border size="medium">备选项</el-radio>  
        <el-radio v-model="radio" label="4" border size="small">备选项</el-radio>  
    </template>  
    <input type="text" v-model="radio" >  
    <el-radio-group v-model="radio1" @change="aa(radio1)">  
        <el-radio-button label="上海" ></el-radio-button>  
        <el-radio-button label="北京" ></el-radio-button>  
        <el-radio-button label="广州"></el-radio-button>  
        <el-radio-button label="深圳"></el-radio-button>  
    </el-radio-group>  
    <input type="text" v-model="radio1">

多选按钮

    <template>  
        <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>  
        <div style="margin: 15px 0;"></div>  
        <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">  
            <el-checkbox v-for="city in cities" :label="city" :key="city">{{city}}</el-checkbox>  
        </el-checkbox-group>  
    </template>

注释:       在group上绑定:min="num"   或  :max="num"  可以限制最大选择数量和最小选择数量

输入框的使用

写一个响应式(宽度)的输入框(必须要双向绑定值,否则不能用)

    <el-row>  
        <el-col :xs="0" :md="6">&nbsp;</el-col>  
        <el-col :xs="24" :md="12">  
            <el-input v-model="input" placeholder="请输入内容"></el-input>  
        </el-col>  
    </el-row>

下面是一个 前后加icon图  可以清空内容  可以查看密码的  输入框  (比较全面的功能)

    <el-row>  
        <el-col :xs="0" :md="6">&nbsp;</el-col>  
        <el-col :xs="24" :md="12">  
            <el-input  
                v-model="input"  
                suffix-icon="el-icon-date"  
                prefix-icon="el-icon-search"  
                clearable  
                show-password  
                placeholder="请输入内容"></el-input>  
        </el-col>  
    </el-row>

文本域

    <el-row>  
        <el-col :span="12" :offset="6">  
            <el-input  
                type="textarea"  
                :rows="2"  
                placeholder="请输入内容"  
                v-model="textarea">  
            </el-input>  
            <!-- 自适应高度 只加autosize属性就行   设置最小行和最大行时需要绑定值 -->  
            <el-input  
                type="textarea"  
                :autosize="{ minRows: 2, maxRows: 4}"  
                placeholder="请输入内容"  
                v-model="textarea2">  
                </el-input>  
        </el-col>  
    </el-row>

复合型输入框

    <div>  
        <el-input placeholder="请输入内容" v-model="input1">  
            <template slot="prepend">Http://</template>  
        </el-input>  
        </div>  
        <div style="margin-top: 15px;">  
        <el-input placeholder="请输入内容" v-model="input2">  
            <template slot="append">.com</template>  
        </el-input>  
        </div>  
        <div style="margin-top: 15px;">  
        <el-input placeholder="请输入内容" v-model="input3" class="input-with-select">  
            <el-select v-model="select" slot="prepend" placeholder="请选择">  
            <el-option label="餐厅名" value="1"></el-option>  
            <el-option label="订单号" value="2"></el-option>  
            <el-option label="用户电话" value="3"></el-option>  
            </el-select>  
            <el-button slot="append" icon="el-icon-search"></el-button>  
        </el-input>  
    </div>

可通过 size 属性指定输入框的尺寸,除了默认的大小外,还提供了 large、small 和 mini 三种尺寸。

也可以做带提示的输入框,可以参考文档

选择框的使用

    <el-select v-model="value" placeholder="请选择" @change="aa">  
        <el-option  
            v-for="item in options"  
            :key="item.value"  
            :label="item.label"  
            :value="item.value">  
            </el-option>  
    </el-select>

data

      options: \[{  
            value: '选项1',  
            label: '黄金糕'  
            }, {  
            value: '选项2',  
            label: '双皮奶'  
            }, {  
            value: '选项3',  
            label: '蚵仔煎'  
            }, {  
            value: '选项4',  
            label: '龙须面'  
            }, {  
            value: '选项5',  
            label: '北京烤鸭'  
            }  
        \],  
        value: ''

methods

    aa(a){  
        console.log(a)  
    } 

可设置 多选!!!而且所选的值 显示在框内!!

联级选择器

    <div class="block">  
        <span class="demonstration">默认 click 触发子菜单</span>  
        <el-cascader  
            v-model="value"  
            :options="options"  
            @change="handleChange"></el-cascader>  
        </div>  
        <div class="block">  
        <span class="demonstration">hover 触发子菜单</span>  
        <el-cascader  
            v-model="value"  
            :options="options"  
            :props="{ expandTrigger: 'hover' }"  
            @change="handleChange"></el-cascader>  
    </div>

data

        value: \[\],  
        options: \[{  
            value: 'zhinan',  
            label: '指南',  
            children:\[  
                {  
                    value:"二级值",  
                    label:"二级label",  
                    children:\[  
                        {  
                            value:"三级值",  
                            label:"三级label"  
                        }  
                    \]  
                }  
            \]  
        }\]

methods

    handleChange(value) {  
        console.log(value);  
    } 

可以通过设置  仅显示最后一项的值  请查文档

也可以单选 或多选 任意一级选项   查文档

swicth开关!!

    <el-tooltip :content="'Switch value: ' + value" placement="top">  
        <el-switch  
            v-model="value"  
            active-color="#13ce66"  
            inactive-color="#ff4949"  
            active-value="100"  
            inactive-value="0">  
        </el-switch>  
    </el-tooltip>

    <el-switch  
        v-model="value1"  
        active-text="按月付费"  
        inactive-text="按年付费">  
        </el-switch>  
    <el-switch  
        style="display: block"  
        v-model="value2"  
        active-color="#13ce66"  
        inactive-color="#ff4949"  
        active-text="按月付费"  
        inactive-text="按年付费">  
    </el-switch>

data

        value: '100',  
        value1: true,  
        value2: true

有change事件

upload上传(兼容性不咋滴)

    <el-upload  
        class="upload-demo"  
        action="https://jsonplaceholder.typicode.com/posts/"  
        :on-preview="handlePreview"  
        :on-remove="handleRemove"  
        :before-remove="beforeRemove"  
        multiple  
        :limit="3"  
        :on-exceed="handleExceed"  
        :file-list="fileList">  
        <el-button size="small" type="primary">点击上传</el-button>  
        <div slot="tip" class="el-upload\_\_tip">只能上传jpg/png文件,且不超过500kb</div>  
    </el-upload>

data

       fileList: \[  
            {  
                name: 'food.jpeg',  
                url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'  
            },  
            {  
                name: 'food2.jpeg',  
                url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'  
            }  
        \]

methods

    handleRemove(file, fileList) {  
        console.log(file, fileList);  
    },  
    handlePreview(file) {  
        console.log(file);  
    },  
    handleExceed(files, fileList) {  
        this.$message.warning(\`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件\`);  
    },  
    beforeRemove(file, fileList) {  
        return this.$confirm(\`确定移除 ${ file.name }?\`);  
    } 

表格

    <el-table  
        :data="tableData"  
        style="width: 100%"  
        stripe  
        border  
        height="250">  
        <el-table-column  
            prop="date"  
            label="日期"  
            width="100"  
            fixed>  
        </el-table-column>  
        <el-table-column  
            prop="name"  
            label="姓名"  
            width="100">  
        </el-table-column>  
        <el-table-column  
            prop="address"  
            label="地址"  
            fixed="right">  
        </el-table-column>  
    </el-table>

data

       tableData: \[  
            {  
                date: '2016-05-02',  
                name: '王小虎',  
                address: '上海市普陀区金沙江路 1518 弄'  
            },  
            {  
                date: '2016-05-04',  
                name: '王小虎',  
                address: '上海市普陀区金沙江路 1517 弄'  
            },  
            {  
                date: '2016-05-01',  
                name: '王小虎',  
                address: '上海市普陀区金沙江路 1519 弄'  
            }  
        \]

表格还有其它非常强大的功能  但是只支持pc端。。 PC端的话可以去查文档 尽情使用(折叠,树形)

tag标签

    <el-tag>标签一</el-tag>  
    <el-tag type="success">标签二</el-tag>  
    <el-tag type="info">标签三</el-tag>  
    <el-tag type="warning">标签四</el-tag>  
    <el-tag type="danger">标签五</el-tag>  
    <!-- 动态编辑标签 -->  
    <el-tag  
        :key="tag"  
        v-for="tag in dynamicTags"  
        closable  
        :disable-transitions="false"  
        @close="handleClose(tag)">{{tag}}</el-tag>  
    <el-input  
        class="input-new-tag"  
        v-if="inputVisible"  
        v-model="inputValue"  
        ref="saveTagInput"  
        size="small"  
        @keyup.enter.native="handleInputConfirm"  
        @blur="handleInputConfirm"  
        ></el-input>  
    <el-button v-else class="button-new-tag" size="small" @click="showInput">+ New Tag</el-button>

data

        dynamicTags: \['标签一', '标签二', '标签三'\],  
        inputVisible: false,  
        inputValue: ''

methods

    handleClose(tag) {  
        this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);  
    },

    showInput() {  
        this.inputVisible = true;  
        this.$nextTick(\_ => {  
        this.$refs.saveTagInput.$refs.input.focus();  
        });  
    },

    handleInputConfirm() {  
        let inputValue = this.inputValue;  
        if (inputValue) {  
        this.dynamicTags.push(inputValue);  
        }  
        this.inputVisible = false;  
        this.inputValue = '';  
    }

感觉很不错

进度条

树形控件

导航

    <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect">  
        <el-menu-item index="1">处理中心</el-menu-item>  
        <el-submenu index="2">  
            <template slot="title">我的工作台</template>  
            <el-menu-item index="2-1">选项1</el-menu-item>  
            <el-menu-item index="2-2">选项2</el-menu-item>  
            <el-menu-item index="2-3">选项3</el-menu-item>  
            <el-submenu index="2-4">  
                <template slot="title">选项4</template>  
                <el-menu-item index="2-4-1">选项1</el-menu-item>  
                <el-menu-item index="2-4-2">选项2</el-menu-item>  
                <el-menu-item index="2-4-3">选项3</el-menu-item>  
                </el-submenu>  
            </el-submenu>  
        <el-menu-item index="3" disabled>消息中心</el-menu-item>  
        <el-menu-item index="4"><a href="https://www.ele.me" target="\_blank">订单管理</a></el-menu-item>  
    </el-menu>

    <div class="line"></div>

    <el-menu  
        :default-active="activeIndex2"  
        class="el-menu-demo"  
        mode="horizontal"  
        @select="handleSelect"  
        background-color="#545c64"  
        text-color="#fff"  
        active-text-color="#ffd04b">  
        <el-menu-item index="1">处理中心</el-menu-item>  
        <el-submenu index="2">  
            <template slot="title">我的工作台</template>  
            <el-menu-item index="2-1">选项1</el-menu-item>  
            <el-menu-item index="2-2">选项2</el-menu-item>  
            <el-menu-item index="2-3">选项3</el-menu-item>  
            <el-submenu index="2-4">  
            <template slot="title">选项4</template>  
            <el-menu-item index="2-4-1">选项1</el-menu-item>  
            <el-menu-item index="2-4-2">选项2</el-menu-item>  
            <el-menu-item index="2-4-3">选项3</el-menu-item>  
            </el-submenu>  
        </el-submenu>  
        <el-menu-item index="3" disabled>消息中心</el-menu-item>  
        <el-menu-item index="4"><a href="https://www.ele.me" target="\_blank">订单管理</a></el-menu-item>  
    </el-menu>

data

        activeIndex: '1',  
        activeIndex2: '1'

methods

    handleSelect(key, keyPath) {  
        console.log(key, keyPath);  
    }

tabs标签页

    <el-tabs v-model="activeName" @tab-click="handleClick">  
        <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>  
        <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>  
        <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>  
        <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>  
    </el-tabs>

data

activeName: 'second'

methods

    handleClick(tab, event) {  
        console.log(tab, event);  
    }

form表单

    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">  
        <el-form-item label="活动名称haaa的冯绍峰" prop="name">  
            <el-input v-model="ruleForm.name"></el-input>  
        </el-form-item>  
        <el-form-item label="活动区域" prop="region">  
            <el-select v-model="ruleForm.region" placeholder="请选择活动区域">  
            <el-option label="区域一" value="shanghai"></el-option>  
            <el-option label="区域二" value="beijing"></el-option>  
            </el-select>  
        </el-form-item>  
        <el-form-item label="活动时间" required>  
            <el-col :span="11">  
            <el-form-item prop="date1">  
                <el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.date1" style="width: 100%;"></el-date-picker>  
            </el-form-item>  
            </el-col>  
            <el-col class="line" :span="2">-</el-col>  
            <el-col :span="11">  
            <el-form-item prop="date2">  
                <el-time-picker placeholder="选择时间" v-model="ruleForm.date2" style="width: 100%;"></el-time-picker>  
            </el-form-item>  
            </el-col>  
        </el-form-item>  
        <el-form-item label="即时配送" prop="delivery">  
            <el-switch v-model="ruleForm.delivery"></el-switch>  
        </el-form-item>  
        <el-form-item label="活动性质" prop="type">  
            <el-checkbox-group v-model="ruleForm.type">  
            <el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox>  
            <el-checkbox label="地推活动" name="type"></el-checkbox>  
            <el-checkbox label="线下主题活动" name="type"></el-checkbox>  
            <el-checkbox label="单纯品牌曝光" name="type"></el-checkbox>  
            </el-checkbox-group>  
        </el-form-item>  
        <el-form-item label="特殊资源" prop="resource">  
            <el-radio-group v-model="ruleForm.resource">  
            <el-radio label="线上品牌商赞助"></el-radio>  
            <el-radio label="线下场地免费"></el-radio>  
            </el-radio-group>  
        </el-form-item>  
        <el-form-item label="活动形式" prop="desc">  
            <el-input type="textarea" v-model="ruleForm.desc"></el-input>  
        </el-form-item>  
        <el-form-item>  
            <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>  
            <el-button @click="resetForm('ruleForm')">重置</el-button>  
        </el-form-item>  
    </el-form>

data

       ruleForm: {  
            name: '',  
            region: '',  
            date1: '',  
            date2: '',  
            delivery: false,  
            type: \[\],  
            resource: '',  
            desc: ''  
            },  
        rules: {  
            name: \[  
                { required: true, message: '请输入活动名称', trigger: 'blur' },  
                { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }  
            \],  
            region: \[  
                { required: true, message: '请选择活动区域', trigger: 'change' }  
            \],  
            date1: \[  
                { type: 'date', required: true, message: '请选择日期', trigger: 'change' }  
            \],  
            date2: \[  
                { type: 'date', required: true, message: '请选择时间', trigger: 'change' }  
            \],  
            type: \[  
                { type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }  
            \],  
            resource: \[  
                { required: true, message: '请选择活动资源', trigger: 'change' }  
            \],  
            desc: \[  
                { required: true, message: '请填写活动形式', trigger: 'blur' }  
            \]  
        }

methods

    submitForm(formName) {  
        this.$refs\[formName\].validate((valid) => {  
        if (valid) {  
            alert('submit!');  
        } else {  
            console.log('error submit!!');  
            return false;  
        }  
        });  
    },  
    resetForm(formName) {  
        this.$refs\[formName\].resetFields();  
    }