最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue手寫dialog組件模態(tài)框過程詳解

 更新時間:2023年02月10日 15:18:36   作者:tjq11111  
這篇文章主要介紹了Vue手寫dialog組件模態(tài)框過程,dialog組件為模態(tài)框,因此應(yīng)該是固定定位到頁面上面的,并且需要留一定的插槽來讓使用者自定義顯示內(nèi)容

在vue項目下創(chuàng)建文件dialog

實現(xiàn)思路

1、dialog組件為模態(tài)框,因此應(yīng)該是固定定位到頁面上面的,并且需要留一定的插槽來讓使用者自定義顯示內(nèi)容

2、難點在于如何一句話打開dialog,也就是下面的index.js文件的內(nèi)容:導(dǎo)入我們已經(jīng)寫好的組件(可以先寫一個及其簡單的),模塊暴露出一個函數(shù)(DiaLog)用于生成dialog,這里主要利用到vue中的createApp函數(shù),createApp創(chuàng)建應(yīng)用,將應(yīng)用掛載到我們的新建div標(biāo)簽上,隨著用戶觸發(fā)點擊事件,將div標(biāo)簽銷毀即可

index.js文件

import dialog from './index.vue'
import { createApp} from 'vue'
export const DiaLog = (obj) => {
	const app = createApp(dialog, {
		...obj,
		on_click: (flg) => {
			console.log(flg);
			div.remove()
		},
	})
	const div = document.createElement('div')
	app.mount(div)
	document.body.appendChild(div)
}

使用

<template>
  <div class="app">
    <button @click="DiaLog({_title:'我不想起標(biāo)題'})">起飛</button>
  </div>
</template>
<script setup>
import { DiaLog } from './package/dialog/index.js'
</script>
<style scoped lang="scss">
.app {
  height: 1200px;
}
</style>

index.vue文件

<template>
	<div class="dialog">
		<h1 v-if="props._title">{{ props._title }}</h1>
		<div>
			<slot></slot>
		</div>
		<div class="btn">
			<button @click="emitFn(false)">取消</button>
			<button @click="emitFn(true)" class="success">確認(rèn)</button>
		</div>
	</div>
	<div class="background" v-if="props._background"></div>
</template>
<script setup>
const props = defineProps({
	_title: {
		type: String,
		default: '無標(biāo)題'
	},
	_background: {
		type: Boolean,
		default: true
	}
})
const emit = defineEmits([
	'_click'
])
const emitFn = (boolean) => {
	emit('_click', boolean)
}
</script>
<style scoped lang="scss">
.dialog {
	background-color: white;
	z-index: 999;
	position: fixed;
	width: 400px;
	min-height: 200px;
	left: 50%;
	top: 50%;
	border: 1px solid rgba(0, 0, 0, 0.5);
	transform: translateX(-50%) translateY(-50%);
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	padding: 15px;
	h1 {
		font-size: 20px;
		font-weight: 400;
		padding: 0;
		margin: 0;
	}
	.btn {
		display: flex;
		justify-content: end;
		button {
			padding: 5px 15px;
			border-radius: 5px;
			border: 2px solid #E2E2E2;
			font-size: 14px;
			cursor: pointer;
		}
		.success {
			color: white;
			background-color: #36AD6A;
			margin-left: 20px;
		}
	}
}
.background {
	width: 100vw;
	height: 100vh;
	position: fixed;
	left: 0;
	// display: none;
	top: 0;
	background-color: rgba(0, 0, 0, 0.5);
	z-index: 99;
}
</style>

到此這篇關(guān)于Vue手寫dialog組件模態(tài)框過程詳解的文章就介紹到這了,更多相關(guān)Vue dialog組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用mint-ui開發(fā)項目的一些心得(分享)

    使用mint-ui開發(fā)項目的一些心得(分享)

    下面小編就為大家?guī)硪黄褂胢int-ui開發(fā)項目的一些心得(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • vue3 自定義指令詳情

    vue3 自定義指令詳情

    這篇文章主要介紹了 vue3 自定義指令詳情,自定義指令分為全局和局部兩種類型,大家并不陌生。今天我們就講講在 vue3 中,自定義指令定義、使用以及鉤子函數(shù)都有哪些變化?,需要的朋友可以參考一下
    2021-11-11
  • vue簡單練習(xí) 桌面時鐘的實現(xiàn)代碼實例

    vue簡單練習(xí) 桌面時鐘的實現(xiàn)代碼實例

    這篇文章主要介紹了vue簡單練習(xí) 桌面時鐘的實現(xiàn)代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值的相關(guān)資料,需要的朋友可以參考下
    2019-09-09
  • vue設(shè)置全局變量5種方法(讓你的數(shù)據(jù)無處不在)

    vue設(shè)置全局變量5種方法(讓你的數(shù)據(jù)無處不在)

    這篇文章主要給大家介紹了關(guān)于vue設(shè)置全局變量的5種方法,通過設(shè)置的方法可以讓你的數(shù)據(jù)無處不在,在項目中經(jīng)常會復(fù)用一些變量和函數(shù),比如用戶的登錄token,用戶信息等,這時將它們設(shè)為全局的就顯得很重要了,需要的朋友可以參考下
    2023-11-11
  • vue easytable組件使用詳解

    vue easytable組件使用詳解

    Vue Easytable是一個基于Vue.js的數(shù)據(jù)表格組件庫,它提供豐富的功能和靈活的配置,幫助開發(fā)者快速搭建復(fù)雜的數(shù)據(jù)表格界面,這篇文章主要介紹了vue easytable組件使用,需要的朋友可以參考下
    2023-09-09
  • Vue使用echarts的完整步驟及解決各種報錯

    Vue使用echarts的完整步驟及解決各種報錯

    最近在項目中需要對數(shù)據(jù)進(jìn)行可視化處理,而眾所周知echarts是非常強大的插件,下面這篇文章主要給大家介紹了關(guān)于Vue使用echarts的完整步驟及解決各種報錯的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 解決vue-quill-editor上傳內(nèi)容由于圖片是base64的導(dǎo)致字符太長的問題

    解決vue-quill-editor上傳內(nèi)容由于圖片是base64的導(dǎo)致字符太長的問題

    vue-quill-editor默認(rèn)插入圖片是直接將圖片轉(zhuǎn)為base64再放入內(nèi)容中,如果圖片較多,篇幅太長,就會比較煩惱,接下來通過本文給大家介紹vue-quill-editor上傳內(nèi)容由于圖片是base64的導(dǎo)致字符太長的問題及解決方法,需要的朋友可以參考下
    2018-08-08
  • 解決vue prop傳值default屬性如何使用,為何不生效的問題

    解決vue prop傳值default屬性如何使用,為何不生效的問題

    這篇文章主要介紹了解決vue prop傳值default屬性如何使用,為何不生效的問題。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue中組件的過渡動畫及實現(xiàn)代碼

    vue中組件的過渡動畫及實現(xiàn)代碼

    這篇文章主要介紹了vue中組件的過渡動畫,并通過實例代碼給大家介紹了過渡動畫的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • Vue.js中NaiveUI組件文字漸變的實現(xiàn)

    Vue.js中NaiveUI組件文字漸變的實現(xiàn)

    這篇文章主要介紹了Vue.js中NaiveUI組件文字漸變的實現(xiàn),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07

最新評論

宜君县| 临漳县| 南靖县| 东乡族自治县| 桃江县| 惠州市| 太白县| 平泉县| 清徐县| 陵水| 奈曼旗| 尉氏县| 汤阴县| 木兰县| 佛坪县| 荥经县| 潍坊市| 邻水| 西乌珠穆沁旗| 海原县| 奇台县| 南通市| 攀枝花市| 莒南县| 永泰县| 万年县| 昌宁县| 泌阳县| 苏州市| 义乌市| 永年县| 安泽县| 明星| 织金县| 丰城市| 偃师市| 尚义县| 曲周县| 江陵县| 丹东市| 黔西县|