前言
在项目中封装过自己的组件但是一直没有尝试封装过公共的组件,恰巧这次做集团官网项目前辈封装了三个组件顶部导航组件、底部组件、侧边按钮。接着这次机会,学习一下前辈封装组件的处理方法。
侧边按钮
说一下侧边按钮吧相对来说简单一点的组件,直接贴上代码:
<template>
<div class="new-fixed-icon">
<el-tooltip v-show="showbackold && (top <= 300)" class="back-oldPage" content="返回旧版" effect="light" popper-class="popper-old" placement="left">
<a href="www.baidu.com">
<img src="https://www.baidu.com/favicon.ico" alt="">
</a>
</el-tooltip>
<div class="service-entry">
<el-tooltip content="员工通道" effect="light" popper-class="popper-old" placement="left">
<a href="" target="_blank">
<img src="https://www.baidu.com/favicon.ico" alt="" class="gxh">
</a>
</el-tooltip>
<el-tooltip content="联系客服" effect="light" popper-class="popper-old" placement="left">
<a target="_blank" href="www.baidu.com">
<img src="https://www.baidu.com/favicon.ico" alt="" class="kf">
</a>
</el-tooltip>
</div>
<div @click="scrollToTop" v-show="top > 300" class="to-top justify-center align-center cursor">
<img src="https://www.baidu.com/favicon.ico" alt="">
</div>
</div>
</template>
<script>
export default {
props: ['top', 'showbackold'],
data() {
return {
}
},
methods: {
scrollToTop() {
window.scroll(0,0)
}
}
}
</script>
<style lang="scss">
.new-fixed-icon {
z-index: 998;
position: fixed;
right: 10px;
top: 50%;
transform: translateY(-50%);
.popper-old {
font-size: 12PX;
color: #555555;
}
.back-oldPage {
width: 48px;
height: 48px;
background: #FFFFFF;
box-shadow: 2px 2px 10px 0px rgba(0, 0, 0, 0.08);
border-radius: 24px;
border: 1px solid #ECECEC;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 16px;
img {
width: 24px;
height: 24px;
}
}
.service-entry {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 48px;
padding: 14px 0;
box-sizing: border-box;
background: #FFFFFF;
box-shadow: 2px 2px 10px 0px rgba(0, 0, 0, 0.08);
border-radius: 30px;
border: 1px solid #ECECEC;
.kf {
z-index: 2;
width: 24px;
height: 24px;
}
a {
img {
width: 24px;
height: 24px;
}
margin-bottom: 16px;
&:last-child {
margin-bottom: 0;
}
}
}
.to-top {
width: 48px;
height: 48px;
margin-top: 16px;
background: #FFFFFF;
box-shadow: 2px 2px 10px 0px rgba(0,0,0,0.08);
border-radius: 24px;
opacity: 1;
border: 1px solid #ECECEC;
img {
width: 24px;
}
}
}
</style>
简单分析一下:
这里接收了两个值,top、showbackold ,top控制着组件显示的时机,showbackold控制着对应内容是否显示
在页面中使用:
// 传递两个变量
<rightFixedIcon :top="scrollTop" :showbackold="false"></rightFixedIcon>
传递两个值就可以进行使用
这个组件结合了element中tooltip组件一起使用的节省了很多代码。
效果图入下:
总结:
相对来说,前辈封装的三个组件挺类似的,但总体是组件内处理样式和数据,通过props进行数据上的传递,以此达到想要的效果。
扫描二维码关注公众号,回复:
17363223 查看本文章