mirror of
https://gitee.com/ElemeFE/element.git
synced 2024-11-29 18:57:36 +08:00
Add card component
This commit is contained in:
parent
37ebca5ba7
commit
e0a6241675
@ -148,5 +148,8 @@
|
||||
],
|
||||
"message": [
|
||||
"./packages/message/index.js"
|
||||
],
|
||||
"card": [
|
||||
"./packages/card/index.js"
|
||||
]
|
||||
}
|
||||
|
BIN
examples/assets/images/hamburger.png
Normal file
BIN
examples/assets/images/hamburger.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
119
examples/docs/card.md
Normal file
119
examples/docs/card.md
Normal file
@ -0,0 +1,119 @@
|
||||
<script>
|
||||
import fecha from 'packages/date-picker/src/util/fecha.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
currentDate: fecha.format(new Date(), 'yyyy-MM-dd HH:mm')
|
||||
};
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.text {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.time {
|
||||
font-size: 13px;
|
||||
color: #999;
|
||||
display: block;
|
||||
margin-top: 13px;
|
||||
}
|
||||
|
||||
.item {
|
||||
padding: 18px 0;
|
||||
}
|
||||
|
||||
.button {
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
## 基础用法
|
||||
包含标题, 内容和操作
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-card>
|
||||
<div slot="header" style="display: flex; align-items: center;">
|
||||
<div style="flex: 1; color: #20a0ff;">卡片名称</div>
|
||||
<el-button type="primary">操作按钮</el-button>
|
||||
</div>
|
||||
<div v-for="o in 4" class="text item">
|
||||
{{'列表内容 ' + o }}
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
```html
|
||||
<el-card>
|
||||
<div slot="header" style="display: flex; align-items: center;">
|
||||
<div style="flex: 1; color: #20a0ff;">卡片名称</div>
|
||||
<el-button type="primary">操作按钮</el-button>
|
||||
</div>
|
||||
<div v-for="o in 4" class="text item">
|
||||
{{'列表内容 ' + o }}
|
||||
</div>
|
||||
</el-card>
|
||||
```
|
||||
|
||||
## 简单卡片
|
||||
卡片可以只有内容区域
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-card>
|
||||
<div v-for="o in 4" class="text item">
|
||||
{{'列表内容 ' + o }}
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
```html
|
||||
<el-card>
|
||||
<div v-for="o in 4" class="text item">
|
||||
{{'列表内容 ' + o }}
|
||||
</div>
|
||||
</el-card>
|
||||
```
|
||||
|
||||
|
||||
## 带图片
|
||||
可配置定义更丰富的内容展示
|
||||
|
||||
<el-row>
|
||||
<el-col :span="8" v-for="(o, index) in 2" :offset="index > 0 ? 2 : 0">
|
||||
<el-card :body-style="{ padding: '0px' }">
|
||||
<img src="~examples/assets/images/hamburger.png" width="100%" style="display: block;">
|
||||
<div style="padding: 14px; display: flex; align-items: flex-end;">
|
||||
<div style="flex: 1">
|
||||
<span>好吃的汉堡</span>
|
||||
<time class="time">{{ currentDate }}</time>
|
||||
</div>
|
||||
<el-button type="text" class="button">操作按钮</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
```html
|
||||
<el-card :body-style="{ padding: '0px' }">
|
||||
<img src="~examples/assets/images/hamburger.png" width="100%" style="display: block;">
|
||||
<div style="padding: 14px; display: flex; align-items: flex-end;">
|
||||
<div style="flex: 1">
|
||||
<span>好吃的汉堡</span>
|
||||
<time class="time">{{ currentDate }}</time>
|
||||
</div>
|
||||
<el-button type="text" class="button">操作按钮</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
```
|
||||
|
||||
## API
|
||||
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
||||
|---------- |-------- |---------- |------------- |-------- |
|
||||
| header | 设置 header,也可以通过 `slot#header` 传入 DOM | string| | |
|
||||
| body-style | 设置 body 的样式| object| | { padding: '20px' } |
|
@ -92,6 +92,12 @@
|
||||
"name": "加载 (loading)",
|
||||
"title": "loading 加载",
|
||||
"description": "加载数据时显示"
|
||||
},
|
||||
{
|
||||
"path": "/card",
|
||||
"name": "卡片 (card)",
|
||||
"title": "card 卡片",
|
||||
"description": "将信息聚合在卡片容器中展示"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
31
packages/card/cooking.conf.js
Normal file
31
packages/card/cooking.conf.js
Normal file
@ -0,0 +1,31 @@
|
||||
var cooking = require('cooking');
|
||||
var path = require('path');
|
||||
|
||||
cooking.set({
|
||||
entry: {
|
||||
index: path.join(__dirname, 'index.js')
|
||||
},
|
||||
dist: path.join(__dirname, 'lib'),
|
||||
template: false,
|
||||
format: 'umd',
|
||||
moduleName: 'ElCard',
|
||||
extractCSS: 'style.css',
|
||||
|
||||
extends: ['vue', 'saladcss']
|
||||
});
|
||||
|
||||
cooking.add('resolve.alias', {
|
||||
'main': path.join(__dirname, '../../src'),
|
||||
'packages': path.join(__dirname, '../../packages')
|
||||
});
|
||||
|
||||
cooking.add('externals', {
|
||||
vue: {
|
||||
root: 'Vue',
|
||||
commonjs: 'vue',
|
||||
commonjs2: 'vue',
|
||||
amd: 'vue'
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = cooking.resolve();
|
7
packages/card/index.js
Normal file
7
packages/card/index.js
Normal file
@ -0,0 +1,7 @@
|
||||
const Card = require('./src/main');
|
||||
|
||||
Card.install = function(Vue) {
|
||||
Vue.component(Card.name, Card);
|
||||
};
|
||||
|
||||
module.exports = Card;
|
15
packages/card/package.json
Normal file
15
packages/card/package.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "el-card",
|
||||
"version": "0.0.0",
|
||||
"description": "A card component for Vue.js.",
|
||||
"keywords": [
|
||||
"element",
|
||||
"vue",
|
||||
"component"
|
||||
],
|
||||
"main": "./lib/index.js",
|
||||
"repository": "https://github.com/element-component/element/tree/master/packages/card",
|
||||
"author": "elemefe",
|
||||
"license": "MIT",
|
||||
"dependencies": {}
|
||||
}
|
18
packages/card/src/main.vue
Normal file
18
packages/card/src/main.vue
Normal file
@ -0,0 +1,18 @@
|
||||
<template>
|
||||
<div class="el-card">
|
||||
<div class="el-card__header" v-if="$slots.header">
|
||||
<slot name="header">{{ header }}</slot>
|
||||
</div>
|
||||
<div class="el-card__body" :style="bodyStyle">
|
||||
<slot></slot>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'el-card',
|
||||
|
||||
props: ['header', 'bodyStyle']
|
||||
};
|
||||
</script>
|
23
packages/theme-default/src/card.css
Normal file
23
packages/theme-default/src/card.css
Normal file
@ -0,0 +1,23 @@
|
||||
@charset "UTF-8";
|
||||
@import "./common/var.css";
|
||||
|
||||
@component-namespace el {
|
||||
@b card {
|
||||
border: 1px solid var(--card-border-color);
|
||||
border-radius: var(--card-border-radius);
|
||||
background-color: #fff;
|
||||
overflow: hidden;
|
||||
box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, .12),
|
||||
0px 0px 6px 0px rgba(0, 0, 0, .04);
|
||||
|
||||
@e header {
|
||||
padding: calc(var(--card-padding) - 2) var(--card-padding);
|
||||
border-bottom: 1px solid var(--card-border-color);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@e body {
|
||||
padding: var(--card-padding);
|
||||
}
|
||||
}
|
||||
}
|
@ -353,4 +353,10 @@
|
||||
--dropdown-menu-box-shadow: 0 0 6px 0 rgba(0,0,0,.12), 0 2px 4px 0 rgba(0,0,0,.12);
|
||||
--dropdown-menuItem-hover-fill: #e5e9f2;
|
||||
--dropdown-menuItem-hover-color: #475669;
|
||||
|
||||
/*Card
|
||||
--------------------------*/
|
||||
--card-border-color: var(--disabled-border-base);
|
||||
--card-border-radius: 4px;
|
||||
--card-padding: 20px;
|
||||
}
|
||||
|
@ -32,3 +32,4 @@
|
||||
@import "./row.css";
|
||||
@import "./col.css";
|
||||
@import "./spinner.css";
|
||||
@import "./card.css";
|
||||
|
Loading…
Reference in New Issue
Block a user