You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
937 lines
22 KiB
937 lines
22 KiB
<template>
|
|
<!-- 组合组件 -->
|
|
<view class="page_count tui-skeleton" :data-theme="theme">
|
|
<!--logo-->
|
|
<view class="bg-img" :style="{'background-image': bgColor}">
|
|
<img :src="bgColor" alt="">
|
|
<view class="maskBg" :style="[maskBgStyle]"></view>
|
|
</view>
|
|
<!--头部-->
|
|
<view :class="{scrolled:isScrolled, 'my-main': true}" :style="{ height: myMainHeight+'px' }">
|
|
<!--搜索-->
|
|
<!-- #ifdef H5 -->
|
|
<view class="header">
|
|
<view class="serch-wrapper acea-row">
|
|
<view v-if="logoConfig" class="logo skeleton-rect">
|
|
<image :src="logoUrl" mode="scaleToFill"></image>
|
|
</view>
|
|
<navigator v-if="hotWords.length > 0" :url="'/pages/goods/goods_search/index?searchVal='+searchVal"
|
|
:style="[searchBoxStyle]" :class="logoConfig ? 'input' : 'uninput'" hover-class="none"
|
|
class="input">
|
|
<view class='swiperTxt'>
|
|
<swiper :indicator-dots="indicatorDots" :autoplay="true" :interval="interval"
|
|
:duration="duration" vertical="true" circular="true" @change="textChange">
|
|
<block v-for="(item,index) in hotWords" :key='index'>
|
|
<swiper-item catchtouchmove='catchTouchMove'>
|
|
<view class=''>
|
|
<view class='text'>
|
|
<view class='newsTitle line1'><text
|
|
class="iconfont icon-sousuo"></text><text>{{item.val}}</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</swiper-item>
|
|
</block>
|
|
</swiper>
|
|
</view>
|
|
</navigator>
|
|
<navigator v-else :style="[searchBoxStyle]" :class="logoConfig ? 'input' : 'uninput'"
|
|
url="/pages/goods/goods_search/index" class="input" hover-class="none">
|
|
<text class="iconfont icon-sousuo8"></text>
|
|
<text class="line1">{{placeWords}}</text>
|
|
</navigator>
|
|
</view>
|
|
</view>
|
|
<!-- #endif -->
|
|
<!-- #ifdef MP || APP-PLUS-->
|
|
<view class="mp-header">
|
|
<view class="sys-head" :style="{ height: `${isSmallPage?0:statusBarHeight}px`}"></view>
|
|
<!-- #ifdef MP -->
|
|
<view class="serch-box" :style="{ 'margin-top': `${searchTop}px`,'height': `${searchHeight}px`}">
|
|
<!-- #endif -->
|
|
<!-- #ifdef APP-PLUS -->
|
|
<view class="serch-box" style="margin-top: 9px;margin-right: 2px;">
|
|
<!-- #endif -->
|
|
<view class="serch-wrapper acea-row">
|
|
<view v-if="logoConfig" class="logo tui-skeleton-rect">
|
|
<image :src="logoUrl" mode="scaleToFill"></image>
|
|
</view>
|
|
<navigator v-if="hotWords.length > 0"
|
|
:url="'/pages/goods/goods_search/index?searchVal='+searchVal" :style="[searchBoxStyle]"
|
|
hover-class="none" class="input" :class="logoConfig&&!isSmallPage ? 'input' : 'uninput'">
|
|
<view class='swiperTxt'>
|
|
<swiper :indicator-dots="indicatorDots" :autoplay="true" :interval="interval"
|
|
:duration="duration" vertical="true" circular="true" @change="textChange">
|
|
<block v-for="(item,index) in hotWords" :key='index'>
|
|
<swiper-item catchtouchmove='catchTouchMove'>
|
|
<view class='acea-row row-between-wrapper text-box'>
|
|
<view class='text'>
|
|
<view class='newsTitle line1'><text
|
|
class="iconfont icon-sousuo"></text><text>{{item.val}}</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</swiper-item>
|
|
</block>
|
|
</swiper>
|
|
</view>
|
|
</navigator>
|
|
<navigator v-else :style="[searchBoxStyle]" :class="logoConfig ? 'input' : 'uninput'"
|
|
url="/pages/goods/goods_search/index" class="input" hover-class="none">
|
|
<text class="iconfont icon-sousuo8"></text>
|
|
<text class="line1">{{placeWords}}</text>
|
|
</navigator>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<!-- #endif -->
|
|
<view v-if="tabShowConfig" class="navTabBox tabNav tui-skeletonpictrue acea-row" :style="'top:'+isTop">
|
|
<view class="longTab">
|
|
<scroll-view scroll-x="true" style="white-space: nowrap; display: flex;" scroll-with-animation
|
|
:scroll-left="tabLeft" show-scrollbar="true">
|
|
<view class="longItem" :data-index="index" v-for="(item,index) in tabList" :key="index"
|
|
:id="'id'+index" @click="longClick(index,item)"
|
|
:class="tabClick === index? 'navChecked':''">
|
|
<view class="acea-row row-middle">
|
|
<view class="name tui-skeleton-rect">{{item.title}}</view>
|
|
<view class="underlineBox" v-if="index===tabClick">
|
|
<!-- <view class="underline"></view> -->
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
</scroll-view>
|
|
</view>
|
|
<view class="category">
|
|
<text v-if="isShow" class="iconfont icon-xiangshang" @click="isShow=false"></text>
|
|
<text v-if="!isShow" class="iconfont icon-xiangxia" @click="isShow=true"></text>
|
|
</view>
|
|
</view>
|
|
<view v-if="isShow" class="navChangeBox" catchtouchmove="true" :style="'top:'+isTop">
|
|
<view class="navChange">
|
|
<block v-for="(item,index) in tabList" :key="index">
|
|
<view class="titleBox">
|
|
<text :class="tabClick === index ? 'checkColor' : 'textColor' " class="title line1"
|
|
:id="'id'+index" @click="longClick(index,item)">{{item.title}}</text>
|
|
</view>
|
|
</block>
|
|
</view>
|
|
<view class="mask" @touchmove.prevent :hidden="!isShow" @click="isShow=false"></view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- banner -->
|
|
<view class="swiperBg" :style="{ marginTop: swiperTop+'px'}">
|
|
<view class="swiper page_swiper" v-if="navIndex === 0">
|
|
<swiper :autoplay="true" :circular="circular" :interval="intervalBanner" :duration="duration"
|
|
:previous-margin="swiperType==0?'30rpx':''" :next-margin="swiperType==0?'30rpx':''"
|
|
:current="swiperCur" @change="swiperChange">
|
|
<block v-for="(item,index) in banner" :key="index">
|
|
<swiper-item :style="[contentStyleBanner]" :class="{ active: index == swiperCur }"
|
|
class="scalex">
|
|
<view @click="menusTap(item.info[1].value)"
|
|
class='slide-navigator acea-row row-between-wrapper tui-skeleton-rect'
|
|
:class="swiperType==0?'row-between-wrapper-1':'row-between-wrapper-2'">
|
|
<image mode="aspectFill" :style="[contentStyleBanner]" :src="item.img"
|
|
class="slide-image aa"></image>
|
|
</view>
|
|
</swiper-item>
|
|
</block>
|
|
</swiper>
|
|
<view v-if="docType === 0" class="dots" :style="[dotStyle]">
|
|
<block v-for="(item,index) in banner" :key="index">
|
|
<view class="dot-item"
|
|
:style="{'background-color': swiperCur === index ? (dataConfig.themeStyleConfig.tabVal?dataConfig.docColor.color[0].item:themeColor) : ''}">
|
|
</view>
|
|
</block>
|
|
</view>
|
|
<view v-if="docType === 1" class="dots" :style="[dotStyle]">
|
|
<block v-for="(item,index) in banner" :key="index">
|
|
<view class="dot"
|
|
:style="{'background-color': swiperCur === index ? (dataConfig.themeStyleConfig.tabVal?dataConfig.docColor.color[0].item:themeColor) : ''}">
|
|
</view>
|
|
</block>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
// +----------------------------------------------------------------------
|
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|
// +----------------------------------------------------------------------
|
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|
// +----------------------------------------------------------------------
|
|
let app = getApp();
|
|
import {
|
|
goPage
|
|
} from '@/libs/iframe.js'
|
|
import animationType from '@/utils/animationType.js'
|
|
export default {
|
|
name: 'homeComb',
|
|
props: {
|
|
dataConfig: {
|
|
type: Object,
|
|
default: () => {}
|
|
},
|
|
//判断首页显示内容,1显示分类页和商品,0首页
|
|
navIndex: {
|
|
type: Number,
|
|
default: 0
|
|
},
|
|
//是否开始滚动
|
|
isScrolled: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
//是否为微页面
|
|
isSmallPage: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
//页面设置信息
|
|
bgInfo: {
|
|
type: Object,
|
|
default: () => {}
|
|
},
|
|
},
|
|
data() {
|
|
return {
|
|
myMainHeight: 0, //头部tab切换页和搜索按钮的高度和
|
|
indicatorDots: false,
|
|
circular: true,
|
|
autoplay: false,
|
|
duration: 500,
|
|
searchH: 0,
|
|
swiperTop: 0,
|
|
statusBarHeight: app.globalData.statusBarHeight, //手机端头部显示时间位置的高度
|
|
swiperCur: 0,
|
|
showSkeleton: true,
|
|
tabClick: 0, //导航栏被点击
|
|
isLeft: 0, //导航栏下划线位置
|
|
isWidth: 0, //每个导航栏占位
|
|
mainWidth: app.globalData.mainWidth,
|
|
theme: app.globalData.theme,
|
|
tabLeft: 0,
|
|
bgColor: '',
|
|
isTop: 0,
|
|
navHeight: 0,
|
|
isShow: false,
|
|
marTop: 0,
|
|
searchVal: '',
|
|
intervalBanner: 2500,
|
|
themeColor:this.$options.filters.filterTheme(app.globalData.theme),
|
|
searchTop:0,
|
|
searchRight:0,
|
|
searchHeight:0,
|
|
statusWidth:0,
|
|
};
|
|
},
|
|
watch: {
|
|
banner: {
|
|
handler(val) {
|
|
this.bgColor = val[0].img;
|
|
},
|
|
immediate: true
|
|
},
|
|
},
|
|
computed: {
|
|
//分类是否展示,0展示,1不展示
|
|
tabShowConfig() {
|
|
return this.dataConfig.tabShowConfig.tabVal == 0;
|
|
},
|
|
//搜索提示语
|
|
placeWords() {
|
|
return this.dataConfig.placeWords.val;
|
|
},
|
|
//轮播切换时间
|
|
interval() {
|
|
return this.dataConfig.titleConfig.val * 1000
|
|
},
|
|
//指示器类型,0圆,1直,2无
|
|
docType() {
|
|
return this.dataConfig.docConfig.tabVal
|
|
},
|
|
//轮播图样式
|
|
swiperType() {
|
|
return this.dataConfig.swiperStyleConfig.tabVal
|
|
},
|
|
//搜索热词列表
|
|
hotWords() {
|
|
return this.dataConfig.hotWords.list
|
|
},
|
|
//分类选中颜色
|
|
lineColor() {
|
|
return {
|
|
backgroundColor: this.dataConfig.checkColor.color[0].item
|
|
}
|
|
},
|
|
maskBgStyle() {
|
|
return {
|
|
background: this.bgInfo.isBgColor=='1' ?
|
|
`linear-gradient(180deg, rgba(245, 245, 245, 0) 0%, ${this.bgInfo.colorPicker} 100%)` :
|
|
`linear-gradient(180deg, rgba(245, 245, 245, 0) 0%, #f5f5f5 100%)`,
|
|
}
|
|
},
|
|
//判断logo图是否展示
|
|
logoConfig() {
|
|
return this.dataConfig.logoConfig.url && this.dataConfig.searConfig.tabVal === 1
|
|
},
|
|
//logo图
|
|
logoUrl() {
|
|
if (this.isScrolled && this.dataConfig.logoFixConfig.url) {
|
|
return this.dataConfig.logoFixConfig.url
|
|
} else {
|
|
return this.dataConfig.logoConfig.url
|
|
}
|
|
},
|
|
//标签文字颜色
|
|
textColor() {
|
|
return this.dataConfig.fontColor.color[0].item;
|
|
},
|
|
//分类列表
|
|
tabList() {
|
|
//type=0微页面,1分类,2首页
|
|
let tabList = this.dataConfig.listConfig.list;
|
|
tabList.unshift({
|
|
title: '首页',
|
|
type: 2,
|
|
val: 0
|
|
})
|
|
return tabList
|
|
},
|
|
//轮播列表
|
|
banner() {
|
|
return this.dataConfig.swiperConfig.list
|
|
},
|
|
//搜索框样式
|
|
searchBoxStyle() {
|
|
return {
|
|
borderRadius: this.dataConfig.contentStyle.val ? this.dataConfig.contentStyle.val + 'px' : '0',
|
|
backgroundColor: this.dataConfig.borderColor.color[0].item,
|
|
color: this.dataConfig.textColor.color[0].item,
|
|
textAlign: this.dataConfig.textPosition.list[this.dataConfig.textPosition.tabVal].style,
|
|
// #ifdef MP
|
|
height:this.searchHeight + 'px',
|
|
flex:!this.isSmallPage?1:'',
|
|
marginRight:!this.isSmallPage?(this.statusWidth + this.searchRight+'px'):'',
|
|
// #endif
|
|
}
|
|
},
|
|
//指示器样式
|
|
dotStyle() {
|
|
return {
|
|
padding: '0 40rpx',
|
|
justifyContent: this.dataConfig.txtStyle.tabVal === 1 ? 'center' : this.dataConfig.txtStyle
|
|
.tabVal === 2 ? 'flex-end' : 'flex-start'
|
|
}
|
|
},
|
|
//轮播图圆角
|
|
contentStyleBanner() {
|
|
return {
|
|
'borderRadius': this.dataConfig.contentStyleBanner.val ? this.dataConfig.contentStyleBanner
|
|
.val + 'px' : '0'
|
|
}
|
|
},
|
|
},
|
|
created() {
|
|
// #ifdef MP || APP-PLUS
|
|
this.isTop = (this.isSmallPage ? 0 : this.statusBarHeight) + 48 + 'px' //分类的top值
|
|
// this.tabShowConfig,true有分类,false无分类
|
|
if (!this.tabShowConfig) {
|
|
this.myMainHeight = (this.isSmallPage ? 0 : this.statusBarHeight) + 40 + 10; //头部tab切换页和搜索按钮的高度和,10是下边距
|
|
} else {
|
|
this.myMainHeight = (this.isSmallPage ? 0 : this.statusBarHeight) + 40 + 42; //头部tab切换页和搜索按钮的高度和
|
|
}
|
|
// #endif
|
|
|
|
// #ifdef MP
|
|
const res = uni.getMenuButtonBoundingClientRect()
|
|
const statusHeight = res.top //胶囊距离顶部
|
|
const statusRight = res.right //胶囊右边界坐标
|
|
const jnHeight = res.height //胶囊高度
|
|
this.statusWidth= res.width
|
|
this.searchTop=statusHeight-this.statusBarHeight
|
|
this.searchHeight=jnHeight
|
|
//搜索框宽度计算
|
|
uni.getSystemInfo({
|
|
success:res=>{
|
|
this.searchRight=res.windowWidth-statusRight
|
|
}
|
|
})
|
|
// #endif
|
|
|
|
// #ifdef H5
|
|
this.isTop = 0
|
|
this.myMainHeight = 'auto';
|
|
|
|
// #endif
|
|
|
|
this.isWidth = (this.mainWidth - 65) / 4;
|
|
setTimeout((e) => {
|
|
const query = uni.createSelectorQuery().in(this);
|
|
query.select('.header').boundingClientRect(res => {
|
|
if (res) this.marTop = res.height //头部的高度
|
|
}).exec();
|
|
|
|
//展示与不展示分类的距离值判断
|
|
if (!this.tabShowConfig) {
|
|
// 不展示分类
|
|
query.select('.swiperBg').boundingClientRect(res => {
|
|
// #ifdef H5
|
|
this.swiperTop = this.navHeight + this.marTop + this.statusBarHeight +
|
|
4; //轮播图的top值
|
|
//#endif
|
|
// #ifndef H5
|
|
if (this.isSmallPage) {
|
|
this.swiperTop = this.statusBarHeight; //轮播图的top值
|
|
} else {
|
|
this.swiperTop = this.statusBarHeight + 48; //轮播图的top值
|
|
}
|
|
//#endif
|
|
}).exec();
|
|
} else {
|
|
//展示分类
|
|
query.select('.navTabBox').boundingClientRect(data => {
|
|
this.navHeight = data.height //元素navHeight的高度
|
|
// #ifdef H5
|
|
this.swiperTop = this.navHeight + this.marTop + this.statusBarHeight +
|
|
4; //轮播图的top值
|
|
//#endif
|
|
// #ifndef H5
|
|
if (this.isSmallPage) {
|
|
this.swiperTop = 85; //轮播图的top值
|
|
} else {
|
|
this.swiperTop = this.statusBarHeight + 85; //轮播图的top值
|
|
}
|
|
//#endif
|
|
}).exec();
|
|
}
|
|
|
|
}, 200)
|
|
},
|
|
methods: {
|
|
//轮播图跳转
|
|
menusTap(url) {
|
|
this.$util.navigateTo(url);
|
|
},
|
|
swiperChange(e) {
|
|
let {
|
|
current,
|
|
source
|
|
} = e.detail;
|
|
if (source === 'autoplay' || source === 'touch') {
|
|
this.swiperCur = e.detail.current;
|
|
this.bgColor = this.banner[e.detail.current]['img']
|
|
}
|
|
},
|
|
textChange(e) {
|
|
let {
|
|
current,
|
|
source
|
|
} = e.detail;
|
|
if (source === 'autoplay' || source === 'touch') {
|
|
this.searchVal = this.hotWords[e.detail.current]['val']
|
|
}
|
|
},
|
|
// 导航栏点击
|
|
longClick(index, item) {
|
|
this.tabClick = index; //设置导航点击了哪一个
|
|
this.$nextTick(() => {
|
|
let id = 'id' + index;
|
|
this.tabLeft = (index - 2) * this.isWidth //设置下划线位置
|
|
this.$emit('changeTab', index, item);
|
|
})
|
|
},
|
|
parentEmit(id, index) {
|
|
this.$emit('changeTab', id, index);
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.uninput {
|
|
/* #ifdef MP */
|
|
width: 510rpx !important;
|
|
/* #endif */
|
|
/* #ifndef MP */
|
|
width: 100% !important;
|
|
/* #endif */
|
|
}
|
|
|
|
.icon-sousuo8 {
|
|
font-size: 15px;
|
|
|
|
}
|
|
|
|
.bgwhite {
|
|
background-color: #fff !important;
|
|
}
|
|
|
|
.mask {
|
|
z-index: 999;
|
|
top: 260rpx;
|
|
}
|
|
|
|
.navChangeBox {
|
|
position: relative;
|
|
}
|
|
|
|
.navChange {
|
|
background-color: #fff;
|
|
position: absolute;
|
|
z-index: 999999;
|
|
width: 100%;
|
|
border-radius: 0px 0px 16rpx 16rpx;
|
|
padding: 24rpx 20rpx;
|
|
display: grid;
|
|
grid-template-rows: auto;
|
|
grid-template-columns: repeat(5, 1fr);
|
|
grid-column-gap: 10rpx;
|
|
grid-row-gap: 20rpx;
|
|
|
|
.nobg {
|
|
background-color: #fff !important;
|
|
}
|
|
|
|
.titleBox {
|
|
height: 58rpx;
|
|
background: #F2F2F2;
|
|
border-radius: 8rpx;
|
|
text-align: center;
|
|
}
|
|
|
|
.title {
|
|
margin: 0 auto;
|
|
display: inline-block;
|
|
width: 118rpx;
|
|
height: 58rpx;
|
|
line-height: 58rpx;
|
|
text-align: center;
|
|
|
|
opacity: 1;
|
|
color: #333333;
|
|
font-size: 24rpx;
|
|
}
|
|
|
|
.titleBox:nth-child(5n) {
|
|
margin-right: 0;
|
|
}
|
|
|
|
.titleBox:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.changed {
|
|
border-radius: 8rpx;
|
|
@include cate-two-btn(theme);
|
|
@include coupons_border_color(theme);
|
|
|
|
.title {
|
|
@include main_color(theme);
|
|
}
|
|
}
|
|
}
|
|
|
|
.row-middle {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.navTabBox {
|
|
width: 100%;
|
|
height: 66rpx;
|
|
color: rgba(255, 255, 255, 1);
|
|
position: relative;
|
|
padding: 0 24rpx 0 24rpx;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
z-index: 9;
|
|
|
|
&.isFixed {
|
|
z-index: 10;
|
|
position: fixed;
|
|
left: 0;
|
|
width: 100%;
|
|
/* #ifdef H5 */
|
|
top: 0;
|
|
/* #endif */
|
|
}
|
|
|
|
.click {
|
|
color: white;
|
|
}
|
|
|
|
.longTab {
|
|
width: 94%;
|
|
|
|
.longItem {
|
|
//height: 72rpx;
|
|
display: inline-block;
|
|
// line-height: 52rpx;
|
|
text-align: center;
|
|
font-size: 28rpx;
|
|
color: #fff;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
margin-right: 42rpx;
|
|
|
|
&.click {
|
|
font-weight: bold;
|
|
font-size: 30rpx;
|
|
color: #fff;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.name {
|
|
height: 48rpx;
|
|
}
|
|
}
|
|
|
|
.underlineBox {
|
|
margin-top: 8rpx;
|
|
height: 3px;
|
|
transition: .5s;
|
|
|
|
.underline {
|
|
width: 33rpx;
|
|
height: 4rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
.category {
|
|
height: 66rpx;
|
|
line-height: 46rpx;
|
|
z-index: 3;
|
|
|
|
// padding: 0 15rpx 0 25rpx;
|
|
.iconfont {
|
|
font-size: 24rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
.swiperBg {
|
|
z-index: 1;
|
|
margin-top: 10rpx;
|
|
|
|
.colorBg {
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
height: 130rpx;
|
|
width: 100%;
|
|
}
|
|
|
|
.page_swiper {
|
|
position: relative;
|
|
width: 100%;
|
|
height: auto;
|
|
margin: 0 auto;
|
|
border-radius: 10rpx;
|
|
overflow: hidden;
|
|
z-index: 8;
|
|
padding: 0rpx 20rpx 0rpx;
|
|
|
|
image {
|
|
width: 100%;
|
|
height: 310rpx;
|
|
margin: 0 auto;
|
|
border-radius: 10rpx;
|
|
}
|
|
|
|
.acea-row.row-between-wrapper {
|
|
height: 310rpx;
|
|
margin: 0 auto;
|
|
border-radius: 10rpx;
|
|
}
|
|
|
|
.acea-row.row-between-wrapper-1 {
|
|
width: 100%;
|
|
}
|
|
|
|
.acea-row.row-between-wrapper-2 {
|
|
width: 97%;
|
|
}
|
|
|
|
swiper {
|
|
width: 100%;
|
|
display: block;
|
|
height: 310rpx;
|
|
|
|
&.scalex {
|
|
/deep/.uni-swiper-slide-frame {
|
|
transform: translate(0, 0) !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
image {
|
|
transform: scale(0.96);
|
|
transition: all 0.6s ease;
|
|
}
|
|
|
|
/deep/ swiper-item.active {
|
|
image {
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
/*用来包裹所有的小圆点 */
|
|
.dots {
|
|
display: flex;
|
|
flex-direction: row;
|
|
position: absolute;
|
|
bottom: 40rpx;
|
|
align-items: center;
|
|
width: 100%;
|
|
}
|
|
|
|
.dot-item {
|
|
width: 10rpx;
|
|
height: 10rpx;
|
|
background-color: rgba(255, 255, 255, .4);
|
|
border-radius: 50%;
|
|
margin: 0 6rpx;
|
|
}
|
|
|
|
/*未选中时的小圆点样式 */
|
|
.dot {
|
|
width: 16rpx;
|
|
height: 6rpx;
|
|
border-radius: 6rpx;
|
|
margin-right: 6rpx;
|
|
background-color: rgba(255, 255, 255, .4);
|
|
}
|
|
}
|
|
}
|
|
|
|
.scrolled {
|
|
z-index: 5000;
|
|
position: fixed;
|
|
left: 0;
|
|
top: 0;
|
|
width: 100%;
|
|
background-color: #fff !important;
|
|
color: #000 !important;
|
|
transition: background-color .5s ease;
|
|
|
|
.longItem,
|
|
.click,
|
|
.category text {
|
|
color: #000 !important;
|
|
}
|
|
|
|
.btn .iconfont {
|
|
color: #333 !important;
|
|
}
|
|
|
|
.iconnum {
|
|
background: #333 !important;
|
|
}
|
|
|
|
.underline {
|
|
background: #000 !important;
|
|
}
|
|
|
|
.click {
|
|
&::after {
|
|
background-color: #fff !important;
|
|
}
|
|
}
|
|
|
|
.input,
|
|
.uninput {
|
|
|
|
background-color: #eee !important;
|
|
}
|
|
}
|
|
|
|
.page_count {
|
|
position: relative;
|
|
overflow: hidden;
|
|
background-repeat: no-repeat;
|
|
|
|
|
|
.bg-img {
|
|
position: absolute;
|
|
width: 100%;
|
|
height: 100%;
|
|
top: 0;
|
|
/* #ifdef MP || APP-PLUS */
|
|
z-index: -1;
|
|
/* #endif */
|
|
/* #ifdef H5 */
|
|
z-index: 0;
|
|
/* #endif */
|
|
z-index: 0;
|
|
filter: blur(0);
|
|
overflow: hidden;
|
|
|
|
img {
|
|
width: 100%;
|
|
height: 100%;
|
|
filter: blur(30rpx);
|
|
transform: scale(1.5);
|
|
}
|
|
|
|
.maskBg {
|
|
position: absolute;
|
|
bottom: 0;
|
|
width: 100%;
|
|
height: 136px;
|
|
background: linear-gradient(180deg, rgba(245, 245, 245, 0) 0%, #f5f5f5 100%);
|
|
}
|
|
}
|
|
}
|
|
|
|
.my-main {
|
|
left: 0;
|
|
position: fixed;
|
|
top: 0;
|
|
width: 100%;
|
|
z-index: 30;
|
|
transition: background-color .5s ease;
|
|
}
|
|
|
|
.page_count {
|
|
|
|
.header {
|
|
width: 100%;
|
|
padding: 24rpx;
|
|
|
|
.serch-wrapper {
|
|
align-items: center;
|
|
|
|
.logo {
|
|
width: 118rpx;
|
|
margin-right: 24rpx;
|
|
}
|
|
|
|
image {
|
|
width: 118rpx;
|
|
height: 42rpx;
|
|
}
|
|
|
|
.input {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 546rpx;
|
|
height: 55rpx;
|
|
padding-left: 20rpx;
|
|
font-size: 26rpx;
|
|
padding-right: 4rpx;
|
|
box-sizing: border-box;
|
|
|
|
.iconfont {
|
|
margin-right: 4rpx;
|
|
font-size: 26rpx;
|
|
color: #666666;
|
|
}
|
|
}
|
|
}
|
|
|
|
.tabNav {
|
|
padding-top: 24rpx;
|
|
}
|
|
}
|
|
|
|
/* #ifdef MP || APP-PLUS */
|
|
.mp-header {
|
|
z-index: 999;
|
|
position: fixed;
|
|
left: 0;
|
|
top: 0;
|
|
width: 100%;
|
|
/* #ifdef H5 */
|
|
padding-bottom: 20rpx;
|
|
/* #endif */
|
|
|
|
.serch-wrapper {
|
|
height: 100%;
|
|
align-items: center;
|
|
padding: 0 24rpx 0 24rpx;
|
|
|
|
image {
|
|
width: 118rpx;
|
|
height: 42rpx;
|
|
margin-right: 30rpx;
|
|
}
|
|
|
|
.input {
|
|
display: flex;
|
|
align-items: center;
|
|
/* #ifdef MP */
|
|
width: 365rpx;
|
|
/* #endif */
|
|
/* #ifndef MP */
|
|
width: 546rpx;
|
|
/* #endif */
|
|
/* #ifdef APP-PLUS */
|
|
flex: 1;
|
|
/* #endif */
|
|
height: 50rpx;
|
|
padding-left: 20rpx;
|
|
font-size: 28rpx;
|
|
box-sizing: border-box;
|
|
|
|
.iconfont {
|
|
margin-right: 20rpx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* #endif */
|
|
.swiperTxt {
|
|
width: 100%;
|
|
height: 100%;
|
|
line-height: 52rpx;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.swiperTxt .text {
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
.swiperTxt .text .label {
|
|
font-size: 20rpx;
|
|
color: #ff4c48;
|
|
width: 64rpx;
|
|
height: 30rpx;
|
|
border-radius: 40rpx;
|
|
text-align: center;
|
|
line-height: 28rpx;
|
|
border: 2rpx solid #ff4947;
|
|
}
|
|
|
|
.swiperTxt .text .newsTitle {
|
|
font-size: 24rpx;
|
|
}
|
|
|
|
.swiperTxt swiper {
|
|
height: 100%;
|
|
}
|
|
}
|
|
|
|
.navChecked {
|
|
font-size: 32rpx !important;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.checkColor {
|
|
@include main_color(theme);
|
|
}
|
|
.text-box{
|
|
height: 100%;
|
|
}
|
|
</style>
|