# Tabs 选项卡 
统一封装
# 基础用法
<template>
<div>
<qinui-text :content="`当前选中: ${theNow}`" />
<qinui-tabs
:data="data1"
v-model="theNow"
/>
</div>
</template>
<script>
export default {
data() {
return {
theNow: 'eq',
data1: [
{
label: '关注',
value: 'ey',
},
{
label: '推荐',
value: 'et',
},
{
label: '电影',
value: 'er',
},
{
label: '科技科技',
value: 'ee',
},
{
label: '音乐',
value: 'ew',
},
{
label: '美食',
value: 'eq',
},
{
label: '文化',
value: 'ed',
},
{
label: '财经',
value: 'es',
},
{
label: '手工',
value: 'ea',
},
],
};
},
};
</script>
# 粘性布局
<template>
<qinui-affix>
<qinui-tabs
:data="data1"
v-model="theNow"
/>
</qinui-affix>
</template>
<script>
export default {
data() {
return {
theNow: 'er',
data1: [
{
label: '关注',
value: 'ey',
},
{
label: '推荐',
value: 'et',
},
{
label: '电影',
value: 'er',
},
{
label: '科技科技',
value: 'ee',
},
{
label: '音乐',
value: 'ew',
},
{
label: '美食',
value: 'eq',
},
{
label: '文化',
value: 'ed',
},
{
label: '财经',
value: 'es',
},
{
label: '手工',
value: 'ea',
},
],
};
},
};
</script>
# 滑块宽度不跟随文字多少
设置 :auto-line-width="false"
<template>
<qinui-tabs
:data="data1"
:auto-line-width="false"
v-model="theNow"
/>
</template>
<script>
export default {
data() {
return {
theNow: 'ey',
data1: [
{
label: '关注',
value: 'ey',
},
{
label: '推荐',
value: 'et',
},
{
label: '电影',
value: 'er',
},
{
label: '科技科技',
value: 'ee',
},
{
label: '音乐',
value: 'ew',
},
{
label: '美食',
value: 'eq',
},
{
label: '文化',
value: 'ed',
},
{
label: '财经',
value: 'es',
},
{
label: '手工',
value: 'ea',
},
],
};
},
};
</script>
# 禁止滚动
设置 :scrollable="false"
<template>
<qinui-tabs
:data="data1"
:scrollable="false"
v-model="theNow"
/>
</template>
<script>
export default {
data() {
return {
theNow: 'ey',
data1: [
{
label: '关注',
value: 'ey',
},
{
label: '推荐',
value: 'et',
},
{
label: '电影',
value: 'er',
},
{
label: '科技科技',
value: 'ee',
},
{
label: '音乐',
value: 'ew',
},
{
label: '美食',
value: 'eq',
},
{
label: '文化',
value: 'ed',
},
{
label: '财经',
value: 'es',
},
{
label: '手工',
value: 'ea',
},
],
};
},
};
</script>
# 自定义滑块和选项内边距样式
设置 lineWidth="30rpx" :autoLineWidth="false" lineBg="#0f0" itemStyle="height: 100px;"
<template>
<qinui-tabs
:data="data1"
v-model="theNow"
lineWidth="30rpx"
:autoLineWidth="false"
lineBg="#0f0"
itemStyle="height: 100px;"
/>
</template>
<script>
export default {
data() {
return {
theNow: 'ey',
data1: [
{
label: '关注',
value: 'ey',
},
{
label: '推荐',
value: 'et',
},
],
};
},
};
</script>
# 微笑的 iconfont
设置 type="iconfont"
<template>
<qinui-tabs
:data="data4"
type="iconfont"
v-model="theNow"
/>
</template>
<script>
export default {
data() {
return {
theNow: 'ey',
data1: [
{
label: '关注',
value: 'ey',
},
{
label: '推荐',
value: 'et',
},
],
};
},
};
</script>
# 滑块设置背景图
设置 lineWidth="20px" lineHeight="7px" :lineBg="\url(${lineBg}) 100% 100%`"`
<template>
<qinui-tabs
:data="data1"
v-model="theNow"
lineWidth="20px"
lineHeight="7px"
:lineBg="`url(${theLineBg}) 100% 100%`"
/>
</template>
<script>
const theLineBg =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAOCAYAAABdC15GAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAFxSURBVHgBzZNRTsJAEIb/WTW+lpiY+FZPIDew3ABP4GJ8hxsI9zBpOYHeQDwBPQI+mRiRvpLojtPdYhCorQqF/6GdbGd2vvwzBXZcNAt4oj1ANeUoAT5iqkUjbEFLHNmhD1YPEvpZ3ghkGlVDCkc94/BmHMq998I5ONiY1ZBfpKAyuOtgAc5yOEDmYEWNh32BHF91sGHZHmwW4azciN9aQwnz3SJEgOmte+R2tdLprTYoa50mvuomlLpD4Y3oQZnov6D2RzCqI93bWOHaEmAGqQUyRBlZR1WfarcD/EJ2z8DtzDGvsMCwpm8XOCfDUsVOCYhiqRxI/CTQo4UOvjzO7Pow18vfywneuUHHUUxLn55lLw5JFpZ8bEUcY8oXdOLWiHLTxvoGpLqoUmy6dBT15o/ox3znpoycAmxUsiJTbs1cmxeVKp+0zmFIS7bGWiVghC7Vwse8jFKAX9eljh4ggKLLv7uaQvG9/F59Oo2SouxPu7OTCxN/s8wAAAAASUVORK5CYII=';
export default {
data() {
return {
theLineBg,
theNow: 'ey',
data1: [
{
label: '关注',
value: 'ey',
},
{
label: '推荐',
value: 'et',
},
],
};
},
};
</script>
# 右侧自定义插槽
设置 :autoLineWidth="false"
<template>
<qinui-tabs :data="data1" v-model="theNow">
<template v-slot:right>
<view style="padding: 6rpx 12rpx 0">
<qinui-iconfont iconName="icon-yuyue" />
</view>
</template>
</qinui-tabs>
</template>
<script>
export default {
data() {
return {
theNow: 'ey',
data1: [
{
label: '关注',
value: 'ey',
},
{
label: '推荐',
value: 'et',
},
{
label: '电影',
value: 'er',
},
{
label: '科技科技',
value: 'ee',
},
{
label: '音乐',
value: 'ew',
},
{
label: '美食',
value: 'eq',
},
{
label: '文化',
value: 'ed',
},
{
label: '财经',
value: 'es',
},
{
label: '手工',
value: 'ea',
},
],
};
},
};
</script>
# 右侧自定义插槽
设置 :autoLineWidth="false"
<template>
<qinui-tabs
v-model="theNow"
:data="data1"
yesTextStyle="color: blue;font-size:60rpx;"
noTextStyle="font-size:36rpx;"
/>
</template>
<script>
export default {
data() {
return {
theNow: 'ey',
data1: [
{
label: '关注',
value: 'ey',
},
{
label: '推荐',
value: 'et',
},
{
label: '电影',
value: 'er',
},
{
label: '科技科技',
value: 'ee',
},
{
label: '音乐',
value: 'ew',
},
{
label: '美食',
value: 'eq',
},
{
label: '文化',
value: 'ed',
},
{
label: '财经',
value: 'es',
},
{
label: '手工',
value: 'ea',
},
],
};
},
};
</script>
# 下面的描述
数据中有 desc 属性
<template>
<qinui-tabs v-model="theNow" :data="data1" />
</template>
<script>
export default {
data() {
return {
theNow: 'a4',
data1: [
{
label: '关注',
value: 'a1',
desc: '06月07日',
},
{
label: '推荐',
value: 'a2',
desc: '06月02日',
},
{
label: '电影',
value: 'a3',
desc: '06月27日',
},
{
label: '科技',
value: 'a4',
desc: '06月17日',
},
{
label: '文化',
value: 'b7',
desc: '06月1日',
},
{
label: '财经',
value: 'b8',
desc: '06月4日',
},
],
};
},
};
</script>
# API
# Props
| 参数 | 说明 | 类型 | 默认值 | 可选值 | 版本 |
|---|---|---|---|---|---|
| modelValue (v-model) | 选中的值 | String | NUmber | 0 | - | - |
| scroll | 是否横向滚动 | Boolean | true | - | - |
| data | 数据,字段参考 | Array | - | - | - |
| fieldNames | 字段映射,参考 | Object | { disabled: 'disabled', value: 'value', label: 'label', } | - | - |
| autoLineWidth | 是否自动算滑块宽度 | Boolean | true | - | - |
| lineWidth | 滑块宽度 | String | 40rpx | - | - |
| lineHeight | 滑块高度 | String | - | - | - |
| lineBg | 滑块颜色 | String | - | - | - |
| lineBgSize | 滑块背景显示大小,当滑块背景设置为图片时使用 | String | cover | - | - |
| itemStyle | 菜单样式 | String | height:110rpx | - | - |
| diyStyle | 自定义外部样式,如:设置边框等样式 | String | - | - | - |
| diyLineStyle | 因为 tabs 的爷爷节点有边距可能定位便宜,新增自定义线样式,如:设置往左挪点样式 | String | - | - | 1.17.0+ |
| yesTextStyle | 高亮样式 | String | - | - | - |
| noTextStyle | 普通样式 | String | - | - | - |
| type | 选中样式, line 线条 | iconfont 字体图标 | String | line | line 线条 | iconfont 字体图标 | - |
| iconfontName | 字体名字 | String | qin-ui-a-smilesmall | - | - |
| iconfontSize | 字体大小 | String | 40rpx | - | - |
| iconfontColor | 字体颜色 | String | var(--qinuiPrimaryColor, #ff361f) | - | - |
| iconFontFamily | 字体颜色 | String | qin-ui-iconfont | - | - |
# Data Props
| 参数 | 说明 | 类型 | 默认值 | 可选值 | 版本 |
|---|---|---|---|---|---|
| value | 选中的值 | String | - | - | - |
| label | 中文 | String | - | - | - |
| desc | 描述 | String | - | - | 1.16.0+ |
# FieldNames Props
| 参数 | 说明 | 类型 | 默认值 | 可选值 | 版本 |
|---|---|---|---|---|---|
| value | 选中的值 | String | value | - | - |
| label | 中文 | String | label | - | - |
| desc | 中文 | String | desc | - | 1.16.0+ |
| disabled | 禁用 | String | disabled | - | - |
| count | 徽章显示的书 | String | Number | count | - | - |
# Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| @change | 改变状态触发 | - |
| @inited | 初始化之后触发 | - |