需求
项目需要自定义字段,但是有个样式不太好实现,记录一下。
最初效果
优化后效果
html
<template>
<el-dialog title="新建字段" :visible.sync="visible" width="50%" :before-close="handleClose">
<div class="tabs-box">
<div class="tabs-title">
<span class="tabs-title-type">选择字段类型</span>
<span class="tabs-title-stats">字段属性</span>
</div>
<el-tabs :tab-position="'left'" type="card" style="height: calc(100% - 50px);">
<el-tab-pane label="单行文本"></el-tab-pane>
<el-tab-pane label="多行文本">多行文本</el-tab-pane>
<el-tab-pane label="下拉列表">下拉列表</el-tab-pane>
<el-tab-pane label="单选">单选</el-tab-pane>
<el-tab-pane label="多选">多选</el-tab-pane>
<el-tab-pane label="日期">日期</el-tab-pane>
<el-tab-pane label="数字">数字</el-tab-pane>
<el-tab-pane label="附件">附件</el-tab-pane>
</el-tabs>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose">取 消</el-button>
<el-button type="primary" @click="onSubmit">确 定</el-button>
</span>
</el-dialog>
</template>
js
<script>
export default {
props: {
visible: {
type: Boolean
}
},
data() {
return {
}
},
methods: {
// 确认
onSubmit() {
const data = {}
this.$emit('submit', data)
},
// 关闭弹窗
handleClose() {
this.$emit('close')
}
}
}
</script>
css
<style lang="scss" scoped>
.tabs-box {
height: 100%;
box-sizing: border-box;
.tabs-title {
width: 100%;
height: 50px;
line-height: 50px;
font-size: 14px;
font-weight: 900;
color: #000;
.tabs-title-type {
display: inline-block;
width: 130px;
}
.tabs-title-stats {
display: inline-block;
margin-left: 20px;
/* 设置竖线 */
&::before {
content: "";
position: absolute;
display: inline-block;
background: #e4e7ed;
height: 450px; /* 设置竖线高度 */
width: 1px;
left: 150px;
top: 54px;
}
}
}
}
</style>
<style scoped lang="scss">
::v-deep {
.el-dialog {
display: flex;
flex-direction: column;
margin: 0 !important;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
min-height: 500px;
max-height: calc(100% - 30px);
max-width: calc(100% - 30px);
.el-dialog__body {
flex: 1;
overflow: auto;
padding-top: 0;
height: 100%;
box-sizing: border-box;
}
}
.el-tabs__item {
text-align: center !important;
width: 130px;
text-overflow: ellipsis;
/* 溢出显示省略号 */
overflow: hidden;
/* 溢出隐藏 */
white-space: nowrap;
/* 强制不换行 */
}
}
</style>