Skip to content

Border 边框

我们对边框进行统一规范,可用于按钮、卡片、弹窗等组件。

ts
// Border 是 CSS 设计变量,无需引入任何组件。

边框样式

我们提供以下几种边框样式,以供选择。

<template>
  <div class="demo-border-style">
    <div class="demo-border-style__head">
      <span>Name</span>
      <span>Thickness</span>
      <span>Demo</span>
    </div>
    <div v-for="item in items" :key="item.name" class="demo-border-style__row">
      <span>{{ item.name }}</span>
      <span>{{ item.thickness }}</span>
      <div class="demo-border-style__line" :style="item.style" />
    </div>
  </div>
</template>

<script lang="ts" setup>
const items = [
  { name: 'Solid', thickness: '1px', style: { borderTop: '1px solid var(--el-border-color)' } },
  { name: 'Dashed', thickness: '2px', style: { borderTop: '2px dashed var(--el-border-color)' } },
]
</script>

<style scoped>
.demo-border-style {
  display: grid;
  grid-template-columns: 120px 120px 1fr;
  row-gap: 16px;
  align-items: center;
  color: var(--el-text-color-regular);
}
.demo-border-style__head {
  display: contents;
  color: var(--el-text-color-secondary);
  font-size: 12px;
}
.demo-border-style__head > span {
  padding-bottom: 8px;
  border-bottom: 1px solid var(--el-border-color-lighter);
}
.demo-border-style__row {
  display: contents;
}
.demo-border-style__line {
  height: 0;
}
</style>

圆角

我们提供以下几种圆角样式,以供选择。

<template>
  <div class="demo-border-radius">
    <div v-for="item in items" :key="item.name" class="demo-border-radius__item">
      <div class="demo-border-radius__title">{{ item.name }}</div>
      <div class="demo-border-radius__code">border-radius: {{ item.value }}</div>
      <div
        class="demo-border-radius__box"
        :style="{ borderRadius: item.value }"
      />
    </div>
  </div>
</template>

<script lang="ts" setup>
const items = [
  { name: 'No Radius', value: '0px' },
  { name: 'Small Radius', value: 'var(--el-border-radius-small)' },
  { name: 'Large Radius', value: 'var(--el-border-radius-base)' },
  { name: 'Round Radius', value: 'var(--el-border-radius-round)' },
]
</script>

<style scoped>
.demo-border-radius {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 24px;
}
.demo-border-radius__title {
  font-size: 14px;
  color: var(--el-text-color-regular);
  margin-bottom: 6px;
}
.demo-border-radius__code {
  font-family: ui-monospace, Menlo, Consolas, monospace;
  font-size: 12px;
  color: var(--el-text-color-secondary);
  padding: 2px 6px;
  background: var(--el-fill-color-light);
  border-radius: 3px;
  display: inline-block;
  margin-bottom: 12px;
}
.demo-border-radius__box {
  width: 100%;
  height: 48px;
  border: 1px solid var(--el-border-color);
}
</style>

阴影

我们提供以下几种阴影样式,以供选择。

<template>
  <div class="demo-border-shadow">
    <div
      v-for="item in items"
      :key="item.name"
      class="demo-border-shadow__box"
      :style="{ boxShadow: item.value }"
    >
      <div class="demo-border-shadow__title">{{ item.name }}</div>
      <div class="demo-border-shadow__code">box-shadow: {{ item.token }}</div>
    </div>
  </div>
</template>

<script lang="ts" setup>
const items = [
  { name: 'Base', token: '--el-box-shadow', value: 'var(--el-box-shadow)' },
  { name: 'Light', token: '--el-box-shadow-light', value: 'var(--el-box-shadow-light)' },
  { name: 'Lighter', token: '--el-box-shadow-lighter', value: 'var(--el-box-shadow-lighter)' },
  { name: 'Dark', token: '--el-box-shadow-dark', value: 'var(--el-box-shadow-dark)' },
]
</script>

<style scoped>
.demo-border-shadow {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 32px;
  padding: 16px;
}
.demo-border-shadow__box {
  background: var(--el-bg-color);
  border-radius: var(--el-border-radius-base);
  padding: 16px;
  min-height: 72px;
}
.demo-border-shadow__title {
  font-size: 14px;
  color: var(--el-text-color-primary);
  margin-bottom: 6px;
}
.demo-border-shadow__code {
  font-family: ui-monospace, Menlo, Consolas, monospace;
  font-size: 12px;
  color: var(--el-text-color-secondary);
}
</style>

API

边框 CSS 变量

名称默认值
--el-border-width1px
--el-border-stylesolid
--el-border-color#dcdfe6
--el-border-color-light#e4e7ed
--el-border-color-lighter#ebeef5
--el-border-color-extra-light#f2f6fc
--el-border-color-dark#d4d7de
--el-border-color-darker#cdd0d6

圆角 CSS 变量

名称默认值
--el-border-radius-base4px
--el-border-radius-small2px
--el-border-radius-round20px
--el-border-radius-circle100%

阴影 CSS 变量

名称默认值
--el-box-shadow0 12px 32px 4px rgba(0, 0, 0, .04), 0 8px 20px rgba(0, 0, 0, .08)
--el-box-shadow-light0 0 12px rgba(0, 0, 0, .12)
--el-box-shadow-lighter0 0 6px rgba(0, 0, 0, .12)
--el-box-shadow-dark0 16px 48px 16px rgba(0, 0, 0, .08), 0 12px 32px rgba(0, 0, 0, .12), 0 8px 16px -8px rgba(0, 0, 0, .16)

参见 Element Plus Border 文档。