二次开发
样式修改
ijijin-view的样式由基础级样式(ijijin_builder/stylebuild)、模块化样式(ijijin_builder/stylebuild)、全局组件样式(ijijin-view/vue/less)、部分组件样式(ijijin-view/vue/less)组成,默认引入基础级样式、模块化样式及全局组件样式,可通过引ijijin-view/vue/index.nostyle.js避免基础样式、模块化样式及全局组件样式的引入而自定义样式。
组件样式修改
组件css样式均通过class设置,格式为vu-组件名称,各组件根class如下
- Alert弹窗:
vu-alert; - Button按钮:
vu-btn; - Toast通知:
vu-toast; - Icon图标:
vu-iconfont; - TabHead标签页头:
vu-tab-head; - TabBody标签页容器:
vu-tab-body; - TabBodyItem标签页:
vu-tab-body-item; - Slider轮播图容器:
vu-slider; - SliderItem轮播图项:
vu-silder-item; - HorseRaceLamp滚动通知:
vu-horse-race-lamp; - Input输入框:
vu-input; - Picker选择器:
vu-picker; - PickerGroup联动选择器:
vu-picker-group; - PullRefresh下拉刷新:
vu-pull-refresh; - PullRefresh上拉窗口:
vu-pull-window;
引用
模块样式修改(不推荐)
模块类名命名规则(可见ijijin_builder/stylebuild),熟悉模块样式可提高样式开发效率。
- 功能(.f-) 常用样式的使用,通常这些选择器具有固定样式表现,比如清除浮动等;
- 元件(.u-) 组件,不涉及到外部布局,比如按钮、icon等;
- 模块(.m-) 一个语义化的较大的整体,通常与业务相关,比如导航、登录、列表等;
- 布局(.g-) 外部布局相关样式的整体,比如相对定位;
- 状态(.z-) 不同状态展示不同形态;
- 动画(.a-) 动画类;
- JS操作(.j-) 涉及到JS操作的节点,通常做样式处理。
如下列stylebuild中部分样式
.f-ellipsis {
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
overflow: hidden;
}
.u-w10{
width: 0.133rem;
}
.m-win_bg{
position: fixed;
z-index: 18;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 100%;
}
.g-box_b{
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.z-hide {
display: none !important;
}
.a-fade {
-webkit-animation: fade 1s 1 ease;
animation: fade 1s 1 ease;
}
*ijijin-view中包含!important样式:z-disabled(Button)、f-cr_red、f-cr_green、f-cr_blue、f-ft_base、f-ft_base2、f-ft_sub、f-ft_sub_、z-hide。z-index层级最高级:19。
组件混合、拓展
ijijin-view中的所有组件可通过引入进行二次封装。
如下结合Mask、Picker进一步开发封装选择器(效果可见"表单组件"右侧效果页"底部选择器"模块)
<template>
<transition name="vu-trans-win">
<section class="vu-bottom-picker" v-if="show">
<div class="vu-bottom-picker-content">
<div class="vu-bottom-picker-content-operate u-p10">
<v-button type="white" @click="close">取消</v-button>
<v-button type="white" class="f-cr_blue" @click="ensure">确认</v-button>
</div>
<picker :data="data" v-model="value"></picker>
</div>
</section>
</transition>
</template>
<script>
import Mask from 'ijijin-view/vue/Mask'
import Picker from 'ijijin-view/vue/Picker'
export default {
name: "BottomPicker",
mixins: [Mask],
props: {
data: {
type: Array,
required: true
},
show: Boolean,
index: {
type: Number,
default: 0
}
},
data() {
return {
value: this.index
}
},
components: {
Picker
},
methods: {
close() {
this.$emit('close')
},
ensure() {
this.$emit('ensure', this.value)
}
}
}
</script>
<style lang="less">
.vu-bottom-picker {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 19;
-webkit-transition: 0.5s;
transition: 0.5s;
}
.vu-bottom-picker-content {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
padding-bottom: 20px;
background-color: #fff;
.vu-bottom-picker-content-operate {
display: flex;
display: -webkit-flex;
justify-content: space-between;
-webkit-justify-content: space-between;
}
}
.vu-trans-win-enter, .vu-trans-win-leave-active {
-webkit-transform: translate3d(0, 12rem, 0) !important;
transform: translate3d(0, 12rem, 0) !important;
}
</style>
调用方式
<template>
<section>
<bottom-picker :show="show" :data="pickerData" :index="value" @leftClick="close" @rightClick="ensure"> </bottom-picker>
</section>
</template>
<script>
import BottomPicker from '@/components/BottomPicker'
export default {
name: "BottomPickers",
data() {
return {
pickerData: ['A', 'B', 'C', 'D', 'E', 'F'],
show: true,
value: 0
}
},
components: {
BottomPicker
},
methods: {
close() {
this.show = false
},
ensure(data) { // 返回选择的值
this.value = data;
},
showPicker(){
this.show = true;
}
}
}
</script>
2.API
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| index | Number | 0 | 初始化默认选择项 |
| data | Array | 必填 | 选择器数据 |
| show | Boolean | 必填 | 控制显示隐藏 |
| rightText | String | ‘确定’ | 右边按钮显示文案 |
| leftText | String | ‘取消’ | 左边按钮显示文案 |
3.Event
| 参数 | 说明 |
|---|---|
| leftClick | 点击右边按钮触发 |
| rightClick | 点击左边确认触发 |