elementUI 弹窗居中 并且tabs组件 tab-position=“left“时显示的样式优化

需求

项目需要自定义字段,但是有个样式不太好实现,记录一下。

最初效果

优化后效果

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>
相关推荐
多多米100541 分钟前
初学Vue(2)
前端·javascript·vue.js
柏箱1 小时前
PHP基本语法总结
开发语言·前端·html·php
新缸中之脑1 小时前
Llama 3.2 安卓手机安装教程
前端·人工智能·算法
hmz8561 小时前
最新网课搜题答案查询小程序源码/题库多接口微信小程序源码+自带流量主
前端·微信小程序·小程序
看到请催我学习1 小时前
内存缓存和硬盘缓存
开发语言·前端·javascript·vue.js·缓存·ecmascript
blaizeer2 小时前
深入理解 CSS 浮动(Float):详尽指南
前端·css
编程老船长2 小时前
网页设计基础 第一讲:软件分类介绍、工具选择与课程概览
前端
编程老船长2 小时前
网页设计基础 第二讲:安装与配置 VSCode 开发工具,创建第一个 HTML 页面
前端
速盾cdn2 小时前
速盾:网页游戏部署高防服务器有什么优势?
服务器·前端·web安全
小白求学12 小时前
CSS浮动
前端·css·css3