element-ui Vue 封装组件按钮工具栏,使用slot插槽

这篇具有很好参考价值的文章主要介绍了element-ui Vue 封装组件按钮工具栏,使用slot插槽。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

封装常用按钮工具栏,方便其它页面调用

缺点:工具栏下面div会显示工具栏下面,下面需要使用margin-top:40px(小学生一个没整明白)希望大神能帮解决

运行效果

        element-ui Vue 封装组件按钮工具栏,使用slot插槽,element ui,vue,vue.js,javascript,前端,elementui

组件代码 tt-btnBar.vue

<template>
    <div>
        <div class="btnbarP">
			<div class="btnbar" :class="isFix=='1'?'fix':''">
				<div class="left">
					<i class="iconfont icon-biaodan" style="cursor: pointer;margin:0 6px"></i>
					{{title}} 
					<!-- slot插槽使用name属性固定显示位置 -->
					<slot name="lbtn"></slot>
					<el-button-group>
						<slot name="lbtngroup"></slot>
					</el-button-group>
				</div>
				<div class="right">
					<slot name="btn"></slot>					
					<el-button-group>
						<slot name="btngroup"></slot>
						<!-- 
							<el-button size="mini" type="primary">保存</el-button>
							<el-button size="mini">打印</el-button>
							<el-button size="mini" type="info">取消</el-button> 
						-->
					</el-button-group>
				</div>
			</div>
		</div>
    </div>
</template>

<script>
    export default {
        props:{
            title: {
				type: String,
				default: ""
			},
			// 默认固定顶部不动,
			isFix:{
				type: String,
				default: "1"
			}
        },
        data() {
            return {
                property: 'value',
            };
        },
    }
</script>

<style lang="scss" scoped>
    /* 固定工具栏 */
.btnbarP{
	/* 父窗占位 */
	width: 100%;
	height: 32px;
	// background-color: #fff; 
}
.btnbar {
	display: flex;
	justify-content: space-between;
	width: 100%;
	height: 32px;
	padding: 2px 10px ;
	line-height: 26px;
	border-radius: 8px 8px 0 0;
	background-color: rgb(212, 211, 211);
	overflow: auto;
	&.fix{
		/* 固定悬浮 */
		position: fixed;
		z-index: 999;
	}	

	.left {
		text-align: left;
	}
	.right {

		text-align: right;
	}
}

</style>

父窗口调用 testbtnbar.vue文章来源地址https://www.toymoban.com/news/detail-785930.html

<template>
    <div>
        <div style="height: 100px;background-color:rebeccapurple">
            <ttbtnbar title='固定到顶部' isFix="1">
                <template slot="lbtn">
                    <span>选择日期 </span>			
                    <el-date-picker class="datebox"
                        style="width: 150px;padding:0px 5px ;" 
                        align="right"
                        v-model="date"
                        type="date" 
                        value-format="yyyy-MM-dd"
                        placeholder="">
                    </el-date-picker>
                </template>

                <template slot="btngroup">
                    <el-button size="mini" @click="msg('11')" type="primary">保存</el-button>
                    <el-button size="mini" @click="msg('12')">打印</el-button>
                    <el-button size="mini" @click="msg('13')" type="info">取消</el-button>
                </template>
            </ttbtnbar>
        </div>

        <div style="display: flex;justify-content: space-between;">
            <div style="height: 100px;width: 60%;margin: 4px;border:2px solid #24941e;background-color: aqua;">
                <ttbtnbar title='不固定-加左右侧按钮' isFix="0">
                    <template slot="lbtngroup">
                        <el-button size="mini" @click="msg('1')">按钮1</el-button>
                        <el-button size="mini" @click="msg('2')">按钮2</el-button>
                        <el-button size="mini" @click="msg('3')">按钮3</el-button>
                    </template>
                    <template slot="btngroup">
                        <el-button size="mini" @click="msg('11')" type="primary">保存</el-button>
                        <el-button size="mini" @click="msg('12')">打印</el-button>
                        <el-button size="mini" @click="msg('13')" type="info">取消</el-button>
                    </template>
                </ttbtnbar>
            </div>
            <div style="height: 100px;width: 40%;margin: 4px;border:2px solid #24941e;background-color: red;">
                <ttbtnbar title='不固定-加左侧按钮' isFix="0">
                    <template slot="lbtn">
                        <el-button size="mini" @click="msg('l1')">按钮1</el-button>
                        <el-button size="mini" @click="msg('l2')">按钮2</el-button>
                        <el-button size="mini" @click="msg('l3')">按钮3</el-button>
                    </template>
                </ttbtnbar>
            </div>
        </div>
        <div style="height: 100px;width: 100%;margin: 4px;border:2px solid #24941e;background-color: red;">
                <ttbtnbar title='不固定-加左侧按钮' isFix="0">
                    <template slot="lbtn">
                        <el-button size="mini" @click="msg('l1')">按钮1</el-button>
                        <el-button size="mini" @click="msg('l2')">按钮2</el-button>
                        <el-button size="mini" @click="msg('l3')">按钮3</el-button>
                    </template>
                    <template slot="lbtngroup">
                        <el-button size="mini" @click="msg('l11')">按钮1</el-button>
                        <el-button size="mini" @click="msg('l22')">按钮2</el-button>
                        <el-button size="mini" @click="msg('l33')">按钮3</el-button>
                    </template>
                </ttbtnbar>
            </div>

        {{ property }}
        <div>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
            <h1>2222</h1>
        </div>
    </div>
</template>

<script>
import ttbtnbar from '@/components/tt-btnBar'
import {getNowDate} from '@/utils/formatTime';
export default {
    components: {
        ttbtnbar
    },
    data() {
        return {
            property: 'btbar测试',
            date:getNowDate()
        };
    },
    methods:{
        msg(str){
            console.log('msg',str);
        }
    }
}
</script>

<style lang="scss" scoped>
.datebox{
		height: 28px ;
		::v-deep .el-input__inner{
			height: 28px ;
		}
		::v-deep .el-input__icon{   
		    line-height: 28px;
		}
	}
</style>

到了这里,关于element-ui Vue 封装组件按钮工具栏,使用slot插槽的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Element-ui自定义组件:可折叠按钮列表

    1、工具栏的功能按钮要超宽不换行,宽度不够折叠进”更多“按钮; 2、下拉菜单按钮和纯图标按钮默认不折叠; 3、折叠前后按钮组顺序保持不变。 1、默认展开全量按钮,并对其宽度进行缓存; 2、循环计算展开按钮的总宽度 与 容器宽度 的差值,并进行按钮的折叠与释放

    2024年02月11日
    浏览(53)
  • Vue2自己封装的基础组件库或基于Element-ui再次封装的基础组件库,如何发布到npm并使用(支持全局或按需引入使用),超详细

    以下我以 wocwin-admin-vue2 项目为例 修改目录结构,最终如下 1、导入组件,组件必须声明 name 2、定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册 3、导出的对象必须具有 install,才能被 Vue.use() 方法安装(全局使用) 4、按需引入 5、packa

    2024年02月08日
    浏览(82)
  • vue+element-ui el-table组件二次封装实现虚拟滚动,解决数据量大渲染DOM过多而卡顿问题

    某些页面不做分页时,当数据过多,会导致页面卡顿,甚至卡死 一、固定一个 可视区域 的大小并且其大小是不变的,那么要做到性能最大化就需要尽量少地渲染 DOM 元素,而这个最小值也就是可视范围内需要展示的内容,而可视区域之外的元素均可以不做渲染。 二、如何计

    2024年02月10日
    浏览(64)
  • 基于element-ui封装上传图片到腾讯云Cos组件

    组件需求 上传图片到腾讯云Cos服务器 可以显示传入的图片地址 可以删除传入的图片地址 可以上传图片到云服务器 上传到腾讯云之后,可以返回图片地址,显示 上传成功之后,可以回调成功函数 需要使用借助一个插件,帮助我们上传图片资源到腾讯云Cos 使用element的el-upl

    2023年04月17日
    浏览(91)
  • 基于Element-ui 封装带分页的下拉选择器组件

    使用 Element-ui的 el-select组件时,如果下拉选项过多,一是查找选项困难,二是数据量超大(比如1w+)组件直接会卡死,所以考虑做一个带分页的下拉选择器(样式还可以再优化)

    2024年02月11日
    浏览(43)
  • VUE2+Element-ui+封装Echarts图表

    封装Echarts图表,如下效果图 Home组件代码块,使用的mock.js模拟数据封装 Echarts图表组件 安装所需依赖 cnpm i axios -S 安装axios接口请求 cnpm i mockjs 或 yarn add mockjs 安装mockjs生成模拟随机数据 cnpm i echarts 或 yarn add echarts 安装echarts图表 cnpm i element-ui -S 安装element-ui组件库 安装less c

    2024年02月08日
    浏览(48)
  • 基于element-ui el-dialog组件封装,可缩放+可移动的弹窗组件

    源码下载 改组件继承el-dialog组件百分之95属性,可直接对el-dialog进行替换。在项目中我的命名为: vue代码 :搞成组件,路径随意,推荐统一放在组件目录下 拖动及缩放操作js代码: 将skdialog.js注册为指令: 目录: 指令使用:(v-指令名称(SkDialogDrag)) 效果图: 注:吃水

    2024年02月03日
    浏览(61)
  • vue结合element-ui实现(按钮控制)动态增加减少input框功能。

    一、template部分 二、script部分 三、效果展示 这是初始页面  这是点击添加 这是删除的     四、详细说明 v-for=\\\"(item,index)in array\\\" :key = \\\"index\\\" 这个是重点!!! ! 通俗点将,就是用一个div(盒子)将input输入框包括起来,然后在div中使用 v-for=\\\"(item,index)in array\\\" :key = \\\"ind

    2024年02月12日
    浏览(61)
  • element-ui 切换分页条数,触发两次请求-bug记录, 分页组件封装

    前言介绍: 以组件完整功能为例需要配置的参数为current-page、page-sizes、page-size、total: current-page,文档所指为当前页数;显示当前数据所拥有页数 page-sizes,文档所指为每页显示个数选择器的选项设置;对当前页数据显示个数进行配置(以数组形式进行配置,例:[10, 20, 30,

    2024年02月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包