123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- <template>
- <view class="">
- <u-navbar title-color="#fff" back-icon-color="#ffffff"
- :is-fixed="isFixed" :is-back="isBack"
- :background="background"
- :back-text-style="{color: '#fff'}" :title="title"
- :back-icon-name="backIconName" :back-text="backText"
- >
- <view class="slot-wrap" v-if="useSlot">
- <view class="search-wrap" v-if="search">
- <!-- 如果使用u-search组件,必须要给v-model绑定一个变量 -->
- <u-search v-model="keyword" :show-action="showAction" height="56" :action-style="{color: '#fff'}"></u-search>
- </view>
- <view class="navbar-right" v-if="rightSlot">
- <view class="message-box right-item">
- <u-icon name="chat" size="38"></u-icon>
- <u-badge count="18" size="mini" :offset="[-15, -15]"></u-badge>
- </view>
- <view class="dot-box right-item">
- <u-icon name="calendar-fill" size="38"></u-icon>
- <u-badge size="mini" :is-dot="true" :offset="[-6, -6]"></u-badge>
- </view>
- </view>
- <view class="map-wrap" v-if="custom">
- <u-icon name="map" color="#ffffff" size="24"></u-icon>
- <text class="map-wrap-text">轻舟已过万重山</text>
- <u-icon name="arrow-down-fill" color="#ffffff" size="22"></u-icon>
- </view>
- </view>
- <view class="navbar-right" slot="right" v-if="slotRight">
- <view class="message-box right-item">
- <u-icon name="chat" size="38"></u-icon>
- <u-badge count="18" size="mini" :offset="[-15, -15]"></u-badge>
- </view>
- <view class="dot-box right-item">
- <u-icon name="calendar-fill" size="38"></u-icon>
- <u-badge size="mini" :is-dot="true" :offset="[-6, -6]"></u-badge>
- </view>
- </view>
- </u-navbar>
- <view class="u-demo">
- <view class="u-demo-wrap">
- <view class="u-demo-title">演示效果</view>
- <view class="u-demo-area">
- <u-toast ref="uToast"></u-toast>
- <view class="u-no-demo-here">查看顶部导航栏效果</view>
- </view>
- </view>
- <view class="u-config-wrap">
- <view class="u-config-title u-border-bottom">
- 参数配置
- </view>
- <view class="u-config-item">
- <view class="u-item-title">标题长度</view>
- <u-subsection :list="['短', '中', '长']" @change="titleChange"></u-subsection>
- </view>
- <view class="u-config-item">
- <view class="u-item-title">隐藏左侧返回区域</view>
- <u-subsection current="1" :list="['是', '否']" @change="backChange"></u-subsection>
- </view>
- <view class="u-config-item">
- <view class="u-item-title">自定义左侧内容</view>
- <u-subsection current="1" :list="['是', '否']" @change="leftChange"></u-subsection>
- </view>
- <view class="u-config-item">
- <view class="u-item-title">自定义右侧内容</view>
- <u-subsection :current="slotRightCurrent" :list="['是', '否']" @change="rightChange"></u-subsection>
- </view>
- <view class="u-config-item">
- <view class="u-item-title">传入整体slot</view>
- <u-subsection :list="['无', '搜索框', '搜索+按钮', '搜索+图标']" @change="searchChange"></u-subsection>
- </view>
- <view class="u-config-item">
- <view class="u-item-title">完全自定义传入内容</view>
- <u-subsection current="1" :list="['是', '否']" @change="customChange"></u-subsection>
- </view>
- <view class="u-config-item">
- <view class="u-item-title">背景色</view>
- <u-subsection :list="['渐变', '#39CCCC', '#B471CC', '#001f3f']" @change="bgColorChange"></u-subsection>
- </view>
- </view>
- </view>
- </view>
- </template>
- <script>
- export default {
- data() {
- return {
- title: '新闻',
- backText: '返回',
- backIconName: 'nav-back',
- right: false,
- showAction: false,
- rightSlot: false,
- useSlot: false,
- background: {
- 'background-image': 'linear-gradient(45deg, rgb(28, 187, 180), rgb(141, 198, 63))'
- },
- isBack: true,
- search: false,
- custom: false,
- isFixed: true,
- keyword: '',
- // #ifdef MP
- slotRight: false,
- // #endif
- // #ifndef MP
- slotRight: true
- // #endif
- }
- },
- computed: {
- slotRightCurrent() {
- return this.slotRight ? 0 : 1;
- }
- },
- methods: {
- titleChange(index) {
- this.useSlot = false;
- this.title = index == 0 ? '新闻' : index == 1 ? '新闻列表' : '雨打梨花深闭门,忘了青春,误了青春';
- },
- leftChange(index) {
- if(index == 0) {
- this.backText = '';
- this.backIconName = 'arrow-leftward';
- } else {
- this.backText = '返回';
- this.backIconName = 'arrow-left';
- }
- },
- searchChange(index) {
- this.title = null;
- this.useSlot = true;
- this.search = false;
- this.custom = false;
- if(index == 0) {
- this.title = '新闻';
- this.useSlot = false;
- this.rightSlot = false;
- } else if(index == 1) {
- this.showAction = false;
- this.useSlot = true;
- this.rightSlot = false;
- this.search = true;
- this.slotRight = false;
- } else if(index == 2) {
- this.useSlot = true;
- this.showAction = true;
- this.rightSlot = false;
- this.search = true;
- this.slotRight = false;
- } else {
- this.useSlot = true;
- this.search = true;
- this.showAction = false;
- this.rightSlot = true;
- this.slotRight = false;
- }
- },
- backChange(index) {
- this.isBack = !!index;
- },
- bgColorChange(index) {
- this.background = {};
- if(index == 0) {
- this.background = {
- 'background-image': 'linear-gradient(45deg, rgb(28, 187, 180), rgb(141, 198, 63))'
- }
- } else {
- let color = index == 1 ? '#39CCCC' : index == 2 ? '#B471CC' : '#001f3f';
- this.background = {
- background: color
- }
- }
-
- },
- rightChange(index) {
- if(index == 0) {
- this.slotRight = true;
- this.useSlot = false;
- } else {
- this.slotRight = false;
- }
- },
- customChange(index) {
- this.search = false;
- this.rightSlot = false;
- if(index == 0) {
- this.custom = true;
- this.title = null;
- this.isBack = false;
- this.useSlot = true;
- } else {
- this.useSlot = false;
- this.title = '新闻';
- this.isBack = true;
- }
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .u-demo {
- //height: 200vh;
- height: calc(100% - 44px);
- height: calc(100% - 44px - constant(safe-area-inset-top));
- height: calc(100% - 44px - env(safe-area-inset-top));
- }
-
- .wrap {
- padding: 24rpx;
- }
-
- .navbar-right {
- margin-right: 24rpx;
- display: flex;
- }
-
- .search-wrap {
- margin: 0 20rpx;
- flex: 1;
- }
-
- .right-item {
- margin: 0 12rpx;
- position: relative;
- color: #ffffff;
- display: flex;
- }
-
- .message-box {
-
- }
-
- .slot-wrap {
- display: flex;
- align-items: center;
- flex: 1;
- }
-
- .map-wrap {
- display: flex;
- align-items: center;
- padding: 4px 6px;
- background-color: rgba(240,240, 240, 0.35);
- color: #fff;
- font-size: 22rpx;
- border-radius: 100rpx;
- margin-left: 30rpx;
- }
-
- .map-wrap-text {
- padding: 0 6rpx;
- }
- </style>
|