Vue组件化开发之通用型弹出框的实现示例

  介绍

小编给大家分享一下Vue组件化开发之通用型弹出框的实现示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

相信很多刚入门的小伙伴,经常会写很多重复的代码,而这些代码一般情况下也都是大同小异,在这种情况下,如何让开发和学习变得更加高效、组件化的思想就显得尤为重要。这里通过设计一个简单的弹出框,给小伙伴们分享组件化的应用。

<强>组件,组件化

组件化是对某些可以进行复用的功能进行封装的标准化工作。组件一般会内含自身的内部UI元素,样式和JS逻辑代码,它可以很方便的在应用的任何地方进行快速的嵌入。组件内部可以使用其他组件来构成更复杂的组件。

在实际的开发中,我们应该避免去编写重复的代码,将精力放在更加核心的部分,因此就需要将这些重复的代码抽取出来,封装成公共的组件,提高开发效率,但同时也要注意组件的健壮性和可复用性,让它能够尽可能适应更多的场景。

<>强基本结构

首先是弹出框的基本结构

& lt; div 类=癿odal"比;   ,,& lt; div 类=癿ask"祝辞& lt;/div>   ,,& lt; div 类=癿odal-dialog"比;   ,,,& lt; div 类=癿odal-header"比;   ,,,,& lt; span>标题& lt;/span>   ,,,,& lt; a  href=癹avascript:“, rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow",类=癷con-close"祝辞& lt;/a>   ,,,& lt;/div>   ,,,& lt; div 类=癿odal-body"比;   ,,,,& lt; slot  name=癰ody"祝辞& lt;/slot>   ,,,& lt;/div>   ,,,& lt; div 类=癿odal-footer"比;   ,,,,,& lt; a  href=癹avascript:“, rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow",类=癰tn"祝辞确定& lt;/a>   ,,,,,& lt; a  href=癹avascript:“, rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow", rel=癳xternal  nofollow",类=癰tn  btn-default"在取消& lt;/a>   ,,,,& lt;/div>   ,,,& lt;/div>   ,,& lt;/div>   & lt;才能/div>

,基本结构很简单,稍微注意一点的就是,槽插槽,如果没有提供的名字属性,它将有一个隐含的名字违约,并且在父组件如果没有指定,槽的,v-slot属性的话,内容会传给默认插槽。

在这里定义了,槽的名字属性,身体,这种的叫做具名插槽,会匹配,v-slot:身体的内容。

注意,在父组件中调用需要用,& lt; template>包裹,并且,& lt; template>元素中的所有内容都将被传入相应的插槽。

给弹出框加点样式

.modal  {   位置:大敌;固定;   ,上图:0;   ,左:0;   ,宽度:100%;   ,高度:100%;   ,.mask  {   位置:才能,固定;   ,,:0;   ,,左:0;   ,,宽度:100%;   ,,身高:100%;   ,,背景颜色:# 000000;   ,,不透明度:0.5;   ,}   ,.modal-dialog  {   位置:才能,绝对;   ,,:40%;   ,,左:50%;   ,,宽度:560 px;   ,高度:大敌;汽车;   ,,背景颜色:# ffffff;   变换才能:翻译(-50%,-50%);   .modal-header {才能   ,,,身高:60 px;   ,,,背景颜色:# F5F5F5;   ,,,填充:0,25 px;   ,,,行高:60 px;   ,,,字体大小:16 px;   ,,.icon-close  {   ,,,位置:,绝对;   ,,,:,23 px;   ,,,右:,25 px;   ,,,宽度:,14 px;   ,,,身高:,14 px;   ,,,背景:,url(“/静态/img/icon-close.png"), no-repeat 中心;   ,,,background-size:,包含;   ,,}   ,,}   .modal-body {才能   ,,,填充:42 px  40 px  54 px;   ,,,字体大小:14 px;   ,,}   .modal-footer {才能   ,,,身高:82 px;   ,,,行高:82 px;   ,,,text-align:中心;   ,,,背景颜色:# F5F5F5;   ,,}   ,}   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Vue组件化开发之通用型弹出框的实现示例