baimacms/pages/index/index.vue

1412 lines
31 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="container">
<!-- 头部搜索与导航 -->
<view class="header">
<view class="search-section">
<view class="search-bar-wrap">
<text class="search-icon">🔍</text>
<input class="search-input" placeholder="输入关键词或粘贴商品标题" placeholder-class="placeholder-style" />
<view class="search-btn-red">搜索</view>
</view>
<image class="search-right-ad" src="https://img.bc.haodanku.com/cms_web/1651735687" mode="aspectFit"></image>
</view>
<scroll-view scroll-x class="nav-scroll" :show-scrollbar="false">
<view class="nav-item" :class="{ 'active': currentTab === index }" v-for="(item, index) in navList" :key="index" @click="switchTab(index)">
<text class="nav-text">{{ item }}</text>
<view class="nav-line" v-if="currentTab === index"></view>
</view>
</scroll-view>
</view>
<scroll-view scroll-y class="main-content" :show-scrollbar="false">
<!-- 轮播图区域 -->
<view class="banner-box">
<swiper class="swiper" circular autoplay indicator-dots indicator-color="rgba(255,255,255,0.5)" indicator-active-color="#ffffff">
<swiper-item v-for="(img, idx) in banners" :key="idx">
<image class="banner-img" :src="img" mode="aspectFill"></image>
</swiper-item>
</swiper>
</view>
<!-- 垂直滚动通知栏 (1:1 还原) -->
<view class="notice-bar">
<view class="notice-icon-box">
<text class="notice-speaker">📢</text>
</view>
<swiper class="notice-swiper" vertical circular autoplay interval="3000">
<swiper-item v-for="(item, idx) in noticeList" :key="idx">
<view class="notice-item">
<image class="notice-avatar" :src="item.avatar"></image>
<text class="notice-text">{{ item.text }}</text>
</view>
</swiper-item>
</swiper>
</view>
<!-- 金刚区 / 导航图标 -->
<view class="grid-menu">
<view class="grid-item" v-for="(menu, idx) in menus" :key="idx">
<image class="menu-icon" :src="menu.icon"></image>
<text class="menu-text">{{ menu.name }}</text>
</view>
</view>
<!-- 活动专区 (胶囊形轮播图) -->
<view class="ad-swiper-box">
<swiper class="ad-swiper" circular autoplay indicator-dots indicator-active-color="#ff416c" indicator-color="rgba(255,255,255,0.6)">
<swiper-item v-for="(ad, idx) in adList" :key="idx">
<image class="ad-swiper-img" :src="ad" mode="aspectFill"></image>
</swiper-item>
</swiper>
</view>
<!-- 今日值得买 (1:1 还原) -->
<view class="worth-buy-card">
<view class="worth-header">
<view class="worth-header-left">
<image class="worth-icon" src="https://cdn-icons-png.flaticon.com/512/3594/3594162.png"></image>
<text class="worth-title">今日值得买</text>
</view>
<view class="worth-header-right">
<view class="avatar-list">
<image class="avatar" src="https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?w=100&q=80"></image>
<image class="avatar" src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=100&q=80"></image>
<view class="avatar-more">...</view>
</view>
<text class="搶購人数">2263人正在抢</text>
</view>
</view>
<view class="worth-subtitle-tag">高性价比好物买TA!</view>
<view class="worth-tabs">
<view class="worth-tab-item" :class="{ 'active': worthTabActive === 0 }" @click="worthTabActive = 0">
<text>推荐</text>
<view class="active-arrow" v-if="worthTabActive === 0"></view>
</view>
<view class="worth-tab-item" :class="{ 'active': worthTabActive === 1 }" @click="worthTabActive = 1">
<text>9.9包邮</text>
<view class="active-arrow" v-if="worthTabActive === 1"></view>
</view>
<view class="worth-tab-item" :class="{ 'active': worthTabActive === 2 }" @click="worthTabActive = 2">
<text>19.9超值</text>
<view class="active-arrow" v-if="worthTabActive === 2"></view>
</view>
</view>
<swiper class="worth-swiper" :indicator-dots="true" indicator-active-color="#ff416c">
<swiper-item v-for="(p, pIdx) in 1" :key="pIdx">
<view class="worth-goods-item" v-for="(item, index) in worthBuyGoods" :key="index">
<image class="worth-goods-img" :src="item.img" mode="aspectFill"></image>
<view class="worth-goods-info">
<view class="worth-goods-title">
<text class="tag-tmall">天猫</text>
{{ item.title }}
</view>
<view class="worth-goods-labels">
<text class="worth-label red">{{ item.label1 }}</text>
<text class="worth-label orange">{{ item.label2 }}</text>
</view>
<view class="worth-price-row">
<view class="worth-price-left">
<text class="worth-price-tip">券后</text>
<text class="worth-price-symbol">¥</text>
<text class="worth-price-val">{{ item.price }}</text>
<text class="worth-old-price">¥{{ item.oldPrice }}</text>
</view>
<view class="worth-coupon-tag">券 {{ item.coupon }}元</view>
</view>
<view class="worth-buy-btn-group">
<view class="worth-btn-left">今日已抢 {{ item.sold }} 件</view>
<view class="worth-btn-right">马上抢 ></view>
</view>
</view>
</view>
</swiper-item>
</swiper>
</view>
<!-- 品牌特卖区 (1:1 还原) -->
<view class="brand-sale-module">
<view class="brand-header">
<view class="brand-header-left">
<image class="brand-tag-icon" src="https://cdn-icons-png.flaticon.com/512/879/879796.png"></image>
<text class="brand-title">品牌特卖</text>
<text class="brand-subtitle-tag">跟着潮流买 限时抢好货</text>
</view>
<text class="brand-more">更多 ></text>
</view>
<!-- 品牌主推位 -->
<view class="brand-highlight">
<image class="highlight-bg" :src="brandFeature.bg" mode="aspectFill"></image>
<view class="highlight-content">
<view class="brand-logo-white-box">
<image class="brand-logo-img" :src="brandFeature.logo" mode="aspectFit"></image>
</view>
<view class="brand-feature-info">
<view class="brand-name-row">
<text>{{ brandFeature.name }}</text>
<text class="arrow">></text>
</view>
<view class="brand-discount-text">{{ brandFeature.desc }}</view>
<view class="brand-promo-tags">
<text class="p-tag">抢限量大额券</text>
<text class="p-tag">霸榜天猫3大榜单</text>
</view>
</view>
</view>
</view>
<!-- 品牌商品分页轮播 -->
<swiper class="brand-goods-swiper" :indicator-dots="true" indicator-active-color="#ff416c">
<swiper-item v-for="(p, pIdx) in 1" :key="pIdx">
<view class="brand-goods-grid">
<view class="brand-grid-item" v-for="(goods, gIdx) in brandGoods" :key="gIdx">
<view class="b-img-wrap">
<view class="anniversary-tag">
<text class="a-icon">🎂</text>
<text>周年庆</text>
</view>
<image class="b-goods-img" :src="goods.img" mode="aspectFill"></image>
<view class="b-sold-overlay">已售{{ goods.sold }}件</view>
</view>
<view class="b-goods-title">{{ goods.title }}</view>
<view class="b-promo-label">{{ goods.promo }}</view>
<view class="b-price-row">
<view class="b-price-blue">¥{{ goods.price }}</view>
<view class="b-coupon-tag">券 {{ goods.coupon }}元</view>
</view>
</view>
</view>
</swiper-item>
</swiper>
</view>
<!-- 平台切换选项卡 -->
<view class="platform-tabs">
<view class="p-tab-item" :class="{ 'active': platformActive === 0 }" @click="platformActive = 0">
<text>淘宝</text>
<view class="p-active-line" v-if="platformActive === 0"></view>
</view>
<view class="p-tab-item" :class="{ 'active': platformActive === 1 }" @click="platformActive = 1">
<text>京东</text>
<view class="p-active-line" v-if="platformActive === 1"></view>
</view>
<view class="p-tab-item" :class="{ 'active': platformActive === 2 }" @click="platformActive = 2">
<text>拼多多</text>
<view class="p-active-line" v-if="platformActive === 2"></view>
</view>
<view class="p-tab-item" :class="{ 'active': platformActive === 3 }" @click="platformActive = 3">
<text>抖音电商</text>
<view class="p-active-line" v-if="platformActive === 3"></view>
</view>
</view>
<!-- 商品列表 (1:1 还原) -->
<view class="goods-list">
<view class="goods-item" v-for="(goods, idx) in goodsList" :key="idx">
<view class="g-img-wrap">
<view class="g-anniversary-tag">
<text class="a-icon">🎂</text>
<text>周年庆</text>
</view>
<view class="g-brand-tag" v-if="goods.brandTag">{{ goods.brandTag }}</view>
<image class="goods-img" :src="goods.image" mode="aspectFill"></image>
<view class="g-bottom-banner" v-if="goods.bottomTag">{{ goods.bottomTag }}</view>
</view>
<view class="goods-info">
<view class="goods-title">
<text class="tag-tmall">天猫</text>
<text class="title-text">{{ goods.title }}</text>
</view>
<view class="goods-lowest-price" v-if="goods.lowestTag">{{ goods.lowestTag }}</view>
<view class="goods-price-row">
<view class="g-price-left">
<text class="g-price-tip">券后</text>
<text class="g-price-val">{{ goods.finalPrice }}</text>
</view>
<view class="g-coupon-tag"> {{ goods.couponValue }}</view>
</view>
<view class="goods-sales">已售 {{ goods.sales }} </view>
</view>
</view>
</view>
<view class="loading-more">-- 到底啦 --</view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
currentTab: 0,
navList: ['精选', '女装', '美食', '美妆', '母婴', '鞋包', '居家', '数码'],
banners: [
'https://images.unsplash.com/photo-1483985988355-763728e1935b?w=800&q=80',
'https://images.unsplash.com/photo-1542291026-7eec264c27ff?w=800&q=80',
'https://images.unsplash.com/photo-1607082348824-0a96f2a4b9da?w=800&q=80'
],
menus: [
{ name: '9.9包邮', icon: 'https://cdn-icons-png.flaticon.com/512/879/879859.png' },
{ name: '疯抢榜', icon: 'https://cdn-icons-png.flaticon.com/512/3594/3594363.png' },
{ name: '聚划算', icon: 'https://cdn-icons-png.flaticon.com/512/3594/3594162.png' },
{ name: '品牌特卖', icon: 'https://cdn-icons-png.flaticon.com/512/879/879796.png' },
{ name: '每日半价', icon: 'https://cdn-icons-png.flaticon.com/512/879/879854.png' }
],
noticeList: [
{ avatar: 'https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?w=100&q=80', text: '用户180****9287在6分钟前下单成功' },
{ avatar: 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=100&q=80', text: '用户135****6621在1分钟前下单成功' },
{ avatar: 'https://images.unsplash.com/photo-1599566150163-29194dcaad36?w=100&q=80', text: '用户130****5746在刚刚下单成功' }
],
adList: [
'https://images.unsplash.com/photo-1607083206968-13611e3d76db?w=800&q=80',
'https://images.unsplash.com/photo-1607082348824-0a96f2a4b9da?w=800&q=80'
],
worthTabActive: 2,
worthBuyGoods: [
{
img: 'https://images.unsplash.com/photo-1595113316349-9fa4ee24f884?w=400&q=80',
title: '雨森桉木浆卷纸18卷4斤加厚...',
label1: '满21减5',
label2: '爆款',
price: '16.93',
oldPrice: '21.93',
coupon: 5,
sold: 0
},
{
img: 'https://images.unsplash.com/photo-1550583724-b2692b85b150?w=400&q=80',
title: '【超值380g约55-60个】豪士...',
label1: '今日热卖前十',
label2: '',
price: '12.8',
oldPrice: '24.8',
coupon: 12,
sold: 3745
}
],
recommendData: {
left: { title: '今日必抢', sub: '爆款直降', img: 'https://images.unsplash.com/photo-1542291026-7eec264c27ff?w=400&q=80' },
topRight: { title: '百亿补贴', sub: '大牌正品', img: 'https://images.unsplash.com/photo-1523275335684-37898b6baf30?w=400&q=80' },
bottomRight: { title: '热销榜单', sub: '闭眼入', img: 'https://images.unsplash.com/photo-1546868871-7041f2a55e12?w=400&q=80' }
},
brandSaleList: [
{ logo: 'https://cdn-icons-png.flaticon.com/512/732/732229.png', image: 'https://images.unsplash.com/photo-1521572163474-6864f9cf17ab?w=400&q=80', price: '39.9', oldPrice: '99' },
{ logo: 'https://cdn-icons-png.flaticon.com/512/882/882730.png', image: 'https://images.unsplash.com/photo-1618354691373-d851c5c3a990?w=400&q=80', price: '59.0', oldPrice: '159' },
{ logo: 'https://cdn-icons-png.flaticon.com/512/732/732244.png', image: 'https://images.unsplash.com/photo-1583743814966-8936f5b7be1a?w=400&q=80', price: '89.0', oldPrice: '299' },
{ logo: 'https://cdn-icons-png.flaticon.com/512/732/732221.png', image: 'https://images.unsplash.com/photo-1511556532299-8f662fc26c06?w=400&q=80', price: '129', oldPrice: '499' }
],
brandFeature: {
bg: 'https://images.unsplash.com/photo-1556228720-195a672e8a03?w=800&q=80',
logo: 'https://images.unsplash.com/photo-1560155016-bd4879ae8f21?w=200&q=80',
name: '贝德美',
desc: '不只4.1折! 婴童洗护心选'
},
brandGoods: [
{
img: 'https://images.unsplash.com/photo-1556228453-efd6c1ff04f6?w=300&q=80',
sold: '1.0万',
title: '【6月+可用】...',
promo: '官方立减10元',
price: '19.9',
coupon: 30
},
{
img: 'https://images.unsplash.com/photo-1556228515-919086f6f273?w=300&q=80',
sold: '70.0万',
title: '【0岁+可用】...',
promo: '立减10元+领10',
price: '24',
coupon: 10
},
{
img: 'https://images.unsplash.com/photo-1594820878367-0676999d734f?w=300&q=80',
sold: '30.0万',
title: '【贝德美】婴...',
promo: '官方立减10元',
price: '24',
coupon: 10
}
],
platformActive: 0,
goodsList: [
{
image: 'https://img.alicdn.com/imgextra/i3/2278533591/O1CN01h1F0Y11cOjO88KGKn_!!2278533591.png_310x310',
brandTag: 'Colorkey/珂拉琪',
title: '任选3件! 珂拉琪官旗唇釉合集',
lowestTag: '48天最低价',
sales: '70.0万',
couponValue: 63,
finalPrice: '49.2'
},
{
image: 'http://img-haodanku-com.cdn.fudaiapp.com/fd_1777010018610_784070_310',
brandTag: '薇诺娜',
bottomTag: '品牌直发 正品保障 假一赔十',
title: '薇诺娜保湿修护精华爽肤水120ml',
lowestTag: '13天最低价',
sales: '1.0万',
couponValue: 40,
finalPrice: '45'
}
]
}
},
methods: {
switchTab(index) {
this.currentTab = index;
}
}
}
</script>
<style scoped>
.container {
display: flex;
flex-direction: column;
height: 100vh;
background-color: #f5f6f8;
}
/* 头部区域 */
.header {
background: linear-gradient(to right, #ff4b2b, #ff416c);
padding-top: var(--status-bar-height, 44px); /* 适配状态栏 */
padding-bottom: 10rpx;
z-index: 100;
}
.placeholder-style {
color: #999;
}
/* 搜索区域 (1:1 还原) */
.search-section {
display: flex;
align-items: center;
padding: 20rpx 30rpx;
justify-content: space-between;
}
.search-bar-wrap {
flex: 1;
height: 72rpx;
background: #ffffff;
border: 2rpx solid #ff416c;
border-radius: 36rpx;
display: flex;
align-items: center;
padding-left: 30rpx;
padding-right: 4rpx; /* 为内部按钮留出微小边距 */
position: relative;
}
.search-icon {
font-size: 30rpx;
color: #ff416c;
margin-right: 16rpx;
}
.search-input {
flex: 1;
font-size: 26rpx;
color: #333;
}
.search-btn-red {
width: 130rpx;
height: 64rpx;
background: linear-gradient(to right, #ff715a, #ff416c);
color: #ffffff;
font-size: 28rpx;
font-weight: bold;
border-radius: 32rpx;
display: flex;
align-items: center;
justify-content: center;
}
.search-right-ad {
width: 100rpx;
height: 80rpx;
margin-left: 20rpx;
}
.nav-scroll {
white-space: nowrap;
padding: 0 20rpx;
}
.nav-item {
display: inline-block;
padding: 10rpx 30rpx;
position: relative;
}
.nav-text {
font-size: 28rpx;
color: rgba(255, 255, 255, 0.8);
transition: all 0.3s;
}
.nav-item.active .nav-text {
color: #ffffff;
font-size: 32rpx;
font-weight: bold;
}
.nav-line {
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 40rpx;
height: 6rpx;
background-color: #ffffff;
border-radius: 6rpx;
}
/* 主体滚动区域 */
.main-content {
flex: 1;
overflow-y: auto;
}
/* 轮播图 */
.banner-box {
padding: 20rpx 30rpx;
}
.swiper {
height: 280rpx;
border-radius: 20rpx;
overflow: hidden;
box-shadow: 0 10rpx 20rpx rgba(255, 65, 108, 0.2);
}
.banner-img {
width: 100%;
height: 100%;
}
/* 垂直通知栏 */
.notice-bar {
margin: 0 30rpx 20rpx;
background-color: #fff0f3;
height: 64rpx;
border-radius: 32rpx;
display: flex;
align-items: center;
padding: 0 24rpx;
}
.notice-icon-box {
margin-right: 16rpx;
display: flex;
align-items: center;
}
.notice-speaker {
font-size: 28rpx;
color: #ff416c;
}
.notice-swiper {
flex: 1;
height: 100%;
}
.notice-item {
height: 100%;
display: flex;
align-items: center;
}
.notice-avatar {
width: 40rpx;
height: 40rpx;
border-radius: 50%;
margin-right: 12rpx;
}
.notice-text {
font-size: 24rpx;
color: #ff416c;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* 金刚区 */
.grid-menu {
display: flex;
flex-wrap: wrap;
padding: 10rpx 20rpx;
background: #ffffff;
margin: 0 30rpx 20rpx;
border-radius: 20rpx;
}
.grid-item {
width: 20%;
display: flex;
flex-direction: column;
align-items: center;
padding: 20rpx 0;
}
.menu-icon {
width: 80rpx;
height: 80rpx;
margin-bottom: 12rpx;
}
.menu-text {
font-size: 24rpx;
color: #333;
}
.ad-img {
width: 100%;
height: 100%;
}
/* 活动专区 - 胶囊轮播图 */
.ad-swiper-box {
margin: 0 30rpx 30rpx;
}
.ad-swiper {
height: 180rpx;
border-radius: 90rpx; /* 高度的一半,形成胶囊形状 */
overflow: hidden;
/* 强制子元素继承圆角 */
transform: translateY(0);
-webkit-mask-image: -webkit-radial-gradient(white, black);
}
.ad-swiper-img {
width: 100%;
height: 100%;
border-radius: 90rpx;
}
/* 修改 swiper 指示点样式 */
.ad-swiper :deep(.uni-swiper-dot) {
width: 12rpx;
height: 6rpx;
border-radius: 4rpx;
}
.ad-swiper :deep(.uni-swiper-dot-active) {
width: 30rpx;
border-radius: 4rpx;
}
/* 今日值得买 (1:1 还原) */
.worth-buy-card {
background-color: #ffffff;
margin: 0 30rpx 20rpx;
border-radius: 24rpx;
padding: 24rpx;
box-shadow: 0 4rpx 20rpx rgba(0,0,0,0.03);
}
.worth-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 12rpx;
}
.worth-header-left {
display: flex;
align-items: center;
}
.worth-icon {
width: 36rpx;
height: 36rpx;
margin-right: 12rpx;
}
.worth-title {
font-size: 34rpx;
font-weight: bold;
color: #333;
}
.worth-header-right {
display: flex;
align-items: center;
}
.avatar-list {
display: flex;
margin-right: 12rpx;
}
.avatar {
width: 40rpx;
height: 40rpx;
border-radius: 50%;
border: 2rpx solid #fff;
margin-right: -12rpx;
}
.avatar-more {
width: 40rpx;
height: 40rpx;
border-radius: 50%;
background: #666;
color: #fff;
font-size: 16rpx;
display: flex;
align-items: center;
justify-content: center;
border: 2rpx solid #fff;
}
.搶購人数 {
font-size: 24rpx;
color: #ff416c;
}
.worth-subtitle-tag {
display: inline-block;
background-color: #f2f2f2;
color: #999;
font-size: 22rpx;
padding: 4rpx 16rpx;
border-radius: 8rpx;
margin-bottom: 24rpx;
}
.worth-tabs {
display: flex;
background-color: #f7f7f7;
border-radius: 12rpx;
height: 80rpx;
margin-bottom: 24rpx;
overflow: visible;
}
.worth-tab-item {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #666;
position: relative;
}
.worth-tab-item.active {
background: linear-gradient(to right, #ff715a, #ff416c);
color: #fff;
border-radius: 12rpx;
font-weight: bold;
}
.active-arrow {
position: absolute;
bottom: -12rpx;
left: 50%;
transform: translateX(-50%);
width: 0;
height: 0;
border-left: 12rpx solid transparent;
border-right: 12rpx solid transparent;
border-top: 12rpx solid #ff416c;
}
.worth-swiper {
height: 840rpx; /* 两项高度加上指示点 */
}
.worth-goods-item {
display: flex;
padding: 20rpx 0;
border-bottom: 1rpx solid #f2f2f2;
}
.worth-goods-item:last-child {
border-bottom: none;
}
.worth-goods-img {
width: 240rpx;
height: 240rpx;
border-radius: 16rpx;
margin-right: 20rpx;
background-color: #f9f9f9;
}
.worth-goods-info {
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.worth-goods-title {
font-size: 28rpx;
color: #333;
line-height: 40rpx;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.worth-goods-labels {
margin-top: 8rpx;
}
.worth-label {
font-size: 20rpx;
padding: 2rpx 10rpx;
border-radius: 6rpx;
margin-right: 12rpx;
}
.worth-label.red {
color: #ff416c;
border: 1rpx solid #ff416c;
}
.worth-label.orange {
color: #ff715a;
border: 1rpx solid #ff715a;
}
.worth-price-row {
display: flex;
justify-content: space-between;
align-items: baseline;
margin-top: 12rpx;
}
.worth-price-tip {
font-size: 24rpx;
color: #ff416c;
margin-right: 4rpx;
}
.worth-price-symbol {
font-size: 24rpx;
color: #ff416c;
font-weight: bold;
}
.worth-price-val {
font-size: 40rpx;
color: #ff416c;
font-weight: bold;
margin-right: 12rpx;
}
.worth-old-price {
font-size: 22rpx;
color: #999;
text-decoration: line-through;
}
.worth-coupon-tag {
background-color: #ff416c;
color: #fff;
font-size: 22rpx;
padding: 4rpx 12rpx;
border-radius: 4rpx;
position: relative;
}
.worth-buy-btn-group {
display: flex;
height: 64rpx;
margin-top: 16rpx;
border-radius: 32rpx;
overflow: hidden;
}
.worth-btn-left {
flex: 1.2;
background: #fff3d6;
color: #8b572a;
font-size: 24rpx;
display: flex;
align-items: center;
justify-content: center;
}
.worth-btn-right {
flex: 1;
background: linear-gradient(to right, #ff715a, #ff416c);
color: #fff;
font-size: 26rpx;
font-weight: bold;
display: flex;
align-items: center;
justify-content: center;
}
/* 推荐页面 */
.recommend-zone {
display: flex;
margin: 0 30rpx 20rpx;
height: 320rpx;
justify-content: space-between;
}
.recommend-left {
width: 48%;
background: linear-gradient(135deg, #fff0f0, #ffe4e4);
border-radius: 20rpx;
padding: 20rpx;
position: relative;
}
.recommend-right {
width: 48%;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.rec-box {
height: 47%;
background: #ffffff;
border-radius: 20rpx;
padding: 16rpx;
display: flex;
align-items: center;
justify-content: space-between;
}
.rec-title {
font-size: 30rpx;
font-weight: bold;
color: #333;
margin-bottom: 6rpx;
}
.rec-sub {
font-size: 22rpx;
color: #ff4b2b;
background: rgba(255, 75, 43, 0.1);
padding: 2rpx 10rpx;
border-radius: 10rpx;
display: inline-block;
}
.rec-img-large {
width: 180rpx;
height: 180rpx;
position: absolute;
bottom: 10rpx;
right: 10rpx;
}
.rec-text-wrap {
flex: 1;
}
.rec-img-small {
width: 100rpx;
height: 100rpx;
}
/* 品牌特卖区 */
.brand-zone {
margin: 0 30rpx 20rpx;
background: #ffffff;
border-radius: 20rpx;
padding: 20rpx;
}
.zone-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20rpx;
}
.zone-title {
font-size: 32rpx;
font-weight: bold;
color: #333;
}
.zone-more {
font-size: 24rpx;
color: #999;
}
.brand-scroll {
white-space: nowrap;
}
.brand-item {
display: inline-block;
width: 180rpx;
margin-right: 20rpx;
text-align: center;
}
.brand-logo {
width: 80rpx;
height: 40rpx;
margin-bottom: 10rpx;
display: block;
margin-left: auto;
margin-right: auto;
}
.brand-goods-img {
width: 180rpx;
height: 180rpx;
border-radius: 12rpx;
background-color: #f5f5f5;
}
.brand-price {
color: #ff416c;
font-size: 28rpx;
font-weight: bold;
margin-top: 10rpx;
}
.brand-old-price {
color: #999;
font-size: 20rpx;
text-decoration: line-through;
}
/* 品牌特卖区 (1:1 还原) */
.brand-sale-module {
margin: 0 30rpx 20rpx;
background: #ffffff;
border-radius: 24rpx;
padding: 24rpx;
box-shadow: 0 4rpx 20rpx rgba(0,0,0,0.03);
}
.brand-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 24rpx;
}
.brand-header-left {
display: flex;
align-items: center;
}
.brand-tag-icon {
width: 32rpx;
height: 32rpx;
margin-right: 12rpx;
}
.brand-title {
font-size: 34rpx;
font-weight: bold;
color: #333;
margin-right: 16rpx;
}
.brand-subtitle-tag {
background-color: #f2f2f2;
color: #999;
font-size: 22rpx;
padding: 4rpx 12rpx;
border-radius: 6rpx;
}
.brand-more {
font-size: 26rpx;
color: #999;
}
.brand-highlight {
height: 220rpx;
position: relative;
border-radius: 20rpx;
overflow: hidden;
margin-bottom: 30rpx;
}
.highlight-bg {
width: 100%;
height: 100%;
filter: brightness(0.9);
}
.highlight-content {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
padding: 0 30rpx;
background: rgba(0,0,0,0.1);
}
.brand-logo-white-box {
width: 160rpx;
height: 160rpx;
background: #ffffff;
border-radius: 16rpx;
display: flex;
align-items: center;
justify-content: center;
margin-right: 24rpx;
box-shadow: 0 4rpx 10rpx rgba(0,0,0,0.1);
}
.brand-logo-img {
width: 120rpx;
height: 120rpx;
}
.brand-feature-info {
flex: 1;
}
.brand-name-row {
color: #fff;
font-size: 32rpx;
font-weight: bold;
display: flex;
align-items: center;
margin-bottom: 8rpx;
}
.brand-name-row .arrow {
margin-left: 10rpx;
font-size: 24rpx;
}
.brand-discount-text {
color: #fff;
font-size: 28rpx;
margin-bottom: 12rpx;
font-weight: 500;
}
.brand-promo-tags {
display: flex;
}
.p-tag {
background: rgba(0,0,0,0.3);
color: #fff;
font-size: 20rpx;
padding: 4rpx 16rpx;
border-radius: 20rpx;
margin-right: 12rpx;
}
.brand-goods-swiper {
height: 440rpx;
}
.brand-goods-grid {
display: flex;
justify-content: space-between;
}
.brand-grid-item {
width: 31%;
}
.b-img-wrap {
position: relative;
width: 100%;
height: 210rpx;
border-radius: 12rpx;
overflow: hidden;
background-color: #f9f9f9;
margin-bottom: 12rpx;
}
.anniversary-tag {
position: absolute;
top: 0;
left: 0;
background: linear-gradient(to right, #ff715a, #ff416c);
color: #fff;
font-size: 18rpx;
padding: 4rpx 10rpx;
border-bottom-right-radius: 12rpx;
display: flex;
align-items: center;
z-index: 1;
}
.a-icon {
font-size: 16rpx;
margin-right: 4rpx;
}
.b-goods-img {
width: 100%;
height: 100%;
}
.b-sold-overlay {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
background: rgba(0,0,0,0.4);
color: #fff;
font-size: 20rpx;
text-align: center;
padding: 4rpx 0;
}
.b-goods-title {
font-size: 24rpx;
color: #333;
line-height: 32rpx;
height: 64rpx;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
margin-bottom: 8rpx;
}
.b-promo-label {
font-size: 20rpx;
color: #4a4aff;
border: 1rpx solid #4a4aff;
padding: 0 8rpx;
border-radius: 4rpx;
display: inline-block;
margin-bottom: 12rpx;
}
.b-price-row {
display: flex;
justify-content: space-between;
align-items: center;
}
.b-price-blue {
color: #4a4aff;
font-size: 32rpx;
font-weight: bold;
}
.b-coupon-tag {
background: #ff416c;
color: #fff;
font-size: 18rpx;
padding: 2rpx 8rpx;
border-radius: 4rpx;
}
/* 平台切换选项卡 */
.platform-tabs {
display: flex;
padding: 20rpx 40rpx;
background-color: #f5f6f8;
}
.p-tab-item {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
position: relative;
}
.p-tab-item text {
font-size: 32rpx;
color: #333;
font-weight: 500;
transition: all 0.3s;
}
.p-tab-item.active text {
color: #ff416c;
font-weight: bold;
font-size: 34rpx;
}
.p-active-line {
width: 40rpx;
height: 4rpx;
background-color: #ff416c;
border-radius: 4rpx;
margin-top: 8rpx;
}
/* 商品列表 (1:1 还原) */
.goods-list {
display: flex;
flex-wrap: wrap;
padding: 10rpx 24rpx;
justify-content: space-between;
}
.goods-item {
width: calc(50% - 12rpx);
background: #ffffff;
border-radius: 20rpx;
overflow: hidden;
margin-bottom: 24rpx;
box-shadow: 0 4rpx 12rpx rgba(0,0,0,0.03);
}
.g-img-wrap {
position: relative;
width: 100%;
height: 340rpx;
background-color: #f9f9f9;
}
.g-anniversary-tag {
position: absolute;
top: 0;
left: 0;
background: linear-gradient(to right, #ff715a, #ff416c);
color: #fff;
font-size: 18rpx;
padding: 4rpx 10rpx;
border-bottom-right-radius: 12rpx;
display: flex;
align-items: center;
z-index: 2;
}
.g-brand-tag {
position: absolute;
top: 0;
right: 0;
background: rgba(138, 93, 255, 0.8);
color: #fff;
font-size: 20rpx;
padding: 4rpx 12rpx;
border-bottom-left-radius: 12rpx;
z-index: 2;
}
.g-bottom-banner {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
background: rgba(0, 200, 83, 0.9);
color: #fff;
font-size: 18rpx;
padding: 6rpx 0;
text-align: center;
z-index: 2;
}
.goods-img {
width: 100%;
height: 100%;
}
.goods-info {
padding: 20rpx 16rpx;
}
.goods-title {
font-size: 28rpx;
color: #333;
line-height: 40rpx;
height: 80rpx;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
margin-bottom: 12rpx;
}
.tag-tmall {
background-color: #ff0036;
color: #fff;
font-size: 20rpx;
padding: 2rpx 8rpx;
border-radius: 6rpx;
margin-right: 8rpx;
display: inline-block;
vertical-align: middle;
}
.goods-lowest-tag {
display: inline-block;
border: 1rpx solid #ff416c;
color: #ff416c;
font-size: 20rpx;
padding: 0 12rpx;
border-radius: 20rpx;
margin-bottom: 16rpx;
opacity: 0.8;
}
/* 修正最低价标签样式 */
.goods-lowest-price {
display: inline-block;
border: 1rpx solid #ffcdd2;
color: #ff416c;
font-size: 22rpx;
padding: 2rpx 16rpx;
border-radius: 20rpx;
margin-bottom: 16rpx;
background: #fff5f5;
}
.goods-price-row {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 12rpx;
}
.g-price-tip {
font-size: 24rpx;
color: #ff416c;
}
.g-price-val {
font-size: 38rpx;
color: #ff416c;
font-weight: bold;
}
.g-coupon-tag {
border: 1rpx solid #ff416c;
color: #ff416c;
font-size: 20rpx;
padding: 0 8rpx;
border-radius: 4rpx;
}
.goods-sales {
font-size: 24rpx;
color: #999;
}
.loading-more {
text-align: center;
color: #999;
font-size: 24rpx;
padding: 30rpx 0 50rpx;
}
</style>