zoukankan      html  css  js  c++  java
  • vue基础之插槽


    -categories:

    • vue基础
      tags:
    • 插槽
    • element ui

    插槽

    slot 插槽 vue内置组件 做为承载分发内容的出口

    普通插槽

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>插槽使用</title>
    </head>
    <body>
    <div id="app"></div>
    <script src="./vue.js"></script>
    <script>
        // 全局组件
        // 第一个参数是组件名,第二个参数是options
        Vue.component('Vbtn', {
            <!-- slot 插槽 vue内置组件 做为承载分发内容的出口 -->
            template: `
    				<button>
    				<slot></slot>
    </button>
    			`
        });
        // 
        var Header = {
            data() {
                return {}
            },
            template: `
    			<div>我是头部组件</div>
    			`
        };
        var Vcontent = {
            data() {
                return {}
            },
            template: `
    			<div>我是内容组件
    			<Vbtn>登录</Vbtn>
    			<Vbtn>注册</Vbtn>
    			<Vbtn>123</Vbtn>
    			</div>
    			`
        };
        var Slider = {
            data() {
                return {}
            },
            template: `
    			<div>我是侧边栏</div>
    			`
        }
        var App = new Vue({
            el: '#app',
            data() {
                return {}
            },
            components: {
                Header,
                Vcontent,
                Slider
            },
            template:
                `
    			<div>
    			<Header></Header>
    			<Vcontent></Vcontent>
    			<Slider></Slider>
    			</div>
    			`
        })
    </script>
    </body>
    </html>
    

    插槽 + elementUI

    点击element,获取相应按钮样式的代码,写入到style中,并使用插槽调用

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>插槽使用</title>
    	<style>
    /*		设置默认样式*/
    		.default{
    			display: inline-block;
    			line-height: 1;
    			white-space: nowrap;
    			cursor: pointer;
    			background: #fff;
    			border: 1px solid #dcdfe6;
    			color: #606266;
    			-webkit-appearance: none;
    			text-align: center;
    			box-sizing: border-box;
    			outline: none;
    			margin: 0;
    			transition: .1s;
    			font-weight: 500;
    			-moz-user-select: none;
    			-webkit-user-select: none;
    			-ms-user-select: none;
    			padding: 12px 20px;
    			font-size: 14px;
    			border-radius: 4px;
    		}
    		.primary{
    			color: #fff;
    			background-color: #409eff;
    			border-color: #409eff;
    		}
    		.success{
    			color: #fff;
    			background-color: #67c23a;
    			border-color: #67c23a;
    		}
    	</style>
    </head>
    <body>
    <div id="app"></div>
    <script src="./vue.js"></script>
    <script>
        // 全局组件
        // 第一个参数是组件名,第二个参数是options
        Vue.component('Vbtn', {
            <!-- slot 插槽 vue内置组件 做为承载分发内容的出口 -->
            template: `
    				<button class="default" :class="btntype">
    				<slot></slot>
    				</button>
    			`,
    		props:{
                btntype:{
                    type:String,
                },
            }
        });
        //
        var Header = {
            data() {
                return {}
            },
            template: `
    			<div>我是头部组件</div>
    			`
        };
        var Vcontent = {
            data() {
                return {}
            },
            template: `
    			<div>我是内容组件
    			<Vbtn btntype="primary">主要按钮</Vbtn>
    			<Vbtn btntype="success">成功按钮</Vbtn>
    			</div>
    			`
        };
        var Slider = {
            data() {
                return {}
            },
            template: `
    			<div>我是侧边栏</div>
    			`
        }
        var App = new Vue({
            el: '#app',
            data() {
                return {}
            },
            components: {
                Header,
                Vcontent,
                Slider
            },
            template:
                `
    			<div>
    			<Header></Header>
    			<Vcontent></Vcontent>
    			<Slider></Slider>
    			</div>
    			`
        })
    </script>
    </body>
    </html>
    

    插槽的多个标签应用

    <!doctype html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>vue</title>
    </head>
    <body>
    <div id="app"></div>
    <script src="./vue.js"></script>
    <script>
        // 创建全局组件
        // Vue.componnet('name',{option})
        Vue.component('myLi', {
            template: `
               <li>
                    预留的第一个坑
                    <slot name="two"></slot>
                    预留的第二个坑
                    <slot name="three"></slot>
                </li>
               `
        });
        var App = {
            template: `
                <div>
                    <ul>
                    <myLi >
                        <h2 slot="two">我是第一个坑</h2>
                        <h2  slot="three">我是第二个坑</h2>
                    </myLi>
    </ul>
                </div>
    `
        };
        new Vue({
            el: '#app',
            components: {
                App
            },
            template: `<App/>`
        })
    </script>
    </body>
    </html>
    
  • 相关阅读:
    算法笔记_035:寻找最小的k个数(Java)
    (中级篇 NettyNIO编解码开发)第六章-编解码技术
    (入门篇 NettyNIO开发指南)第五章-分隔符和定长解码器使用
    (入门篇 NettyNIO开发指南)第四章-TIP黏包/拆包问题解决之道
    (入门篇 NettyNIO开发指南)第三章-Netty入门应用
    (基础篇 走进javaNIO)第二章-NIO入门
    (基础篇 走进javaNIO)第一章-java的i/o演进之路
    Apache Commons 工具类介绍及简单使用
    SimpleDateFormat使用和线程安全问题
    Calendar使用
  • 原文地址:https://www.cnblogs.com/anyux/p/12202967.html
Copyright © 2011-2022 走看看