douyin/src/pages/home/SearchPage.vue
2023-02-15 00:57:01 +08:00

1245 lines
38 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>
<div class="Search">
<div class="header">
<dy-back mode="light" @click="$back" class="mr1r"></dy-back>
<BSearch placeholder="搜索用户名字/抖音号"
:isShowRightText="true"
rightTextColor="white"
@notice="$no"
>
<img class="scan" src="../../assets/img/icon/scan-gray.png" @click.stop="$nav('/scan')">
</BSearch>
</div>
<div class="content">
<div class="history">
<div class="row" v-for="(item,index) in lHistory">
<div class="left">
<img src="../../assets/img/icon/home/time-white.png" alt="">
<span> {{ item }}</span>
</div>
<dy-back img="close" mode="gray" @click="history.splice(index,1)" scale=".7"></dy-back>
</div>
<div v-if="history.length>2" class="history-expand" @click="toggle">
{{ isExpand ? '清除全部搜索记录' : '展开全部' }}
</div>
</div>
<div class="guess">
<div class="title">
<div class="left">猜你想搜</div>
<div class="right">
<img class="scan" src="../../assets/img/icon/home/refresh-gray.png" @click.stop="refresh">
<span>换一换</span>
</div>
</div>
<div class="keys">
<div class="key" v-for="(item,index ) in randomGuess">
<span class="desc">{{ item.name }}</span>
<img v-if="item.type === 1" src="../../assets/img/icon/home/new.webp" alt="" class="type">
</div>
</div>
</div>
<div class="rank-list">
<div class="indicator">
<div class="tab" :class="{active:slideIndex === 0}" @click="slideIndex = 0">抖音热榜</div>
<div class="tab" :class="{active:slideIndex === 1}" @click="slideIndex = 1">直播榜</div>
<div class="tab" :class="{active:slideIndex === 2}" @click="slideIndex = 2">音乐榜</div>
<div class="tab" :class="{active:slideIndex === 3}" @click="slideIndex = 3">品牌榜</div>
</div>
<!-- TODO 滚动到下面的时候应该禁止slide-move因为第个slideitem的高度不一样高的切到矮的会闪屏-->
<SlideRowList v-model:active-index="slideIndex" :style="slideListHeight">
<SlideItem>
<div class="slide0" ref="slide0">
<div class="l-row">
<div class="rank-wrapper">
<img src="../../assets/img/icon/home/to-top-yellow.png" class="rank">
</div>
<div class="right">
<div class="center">
<div class="desc">专题嘻嘻嘻哈哈瞄瞄嘻嘻嘻</div>
</div>
</div>
</div>
<div class="l-row" v-for="(item,index) in hotRankList">
<div class="rank-wrapper">
<img v-if="index === 0" src="../../assets/img/icon/home/hot1.webp" alt="" class="rank">
<img v-else-if="index === 1" src="../../assets/img/icon/home/hot2.webp" alt="" class="rank">
<img v-else-if="index === 2" src="../../assets/img/icon/home/hot3.webp" alt="" class="rank">
<div v-else class="rank">{{ index + 1 }}</div>
</div>
<div class="right">
<div class="center">
<div class="desc">{{ item.name }}</div>
<img v-if="item.type === 1" src="../../assets/img/icon/home/new.webp" alt="" class="type">
<img v-if="item.type === 0" src="../../assets/img/icon/home/hot.webp" alt="" class="type">
</div>
<div class="count">999w</div>
</div>
</div>
<div class="more" @click="$no">查看完整热点榜 ></div>
</div>
</SlideItem>
<SlideItem>
<div class="slide1" ref="slide1">
<div class="l-row" v-for="(item,index) in liveRankList">
<div class="rank-wrapper">
<div class="rank" :class="{top:index<3}">{{ index + 1 }}</div>
</div>
<div class="right">
<div class="center">
<div class="avatar-wrapper">
<img src="../../assets/img/icon/avatar/1.png" alt="" class="avatar">
</div>
<div class="desc">{{ item.name }}</div>
<div v-if="item.type === 0" class="live-type">
<img class="type1" src="../../assets/img/icon/home/pk.webp">
<span>PK</span>
</div>
<div v-if="item.type === 1" class="live-type">
<img class="type2" src="../../assets/img/icon/home/redpack.png">
<span>红包</span>
</div>
</div>
<div class="count">999w人气</div>
</div>
</div>
<div class="more" @click="$no">查看完整直播榜 ></div>
</div>
</SlideItem>
<SlideItem>
<div class="slide2" ref="slide2">
<div class="l-row" v-for="(item,index) in musicRankList" @click="$nav('/home/music-rank-list')">
<div class="rank-wrapper">
<div class="rank" :class="{top:index < 3}">{{ index + 1 }}</div>
</div>
<div class="right">
<div class="center">
<div class="avatar-wrapper">
<img v-lazy="$imgPreview(item.cover)" alt="" class="avatar">
</div>
<div class="desc">{{ item.name }}</div>
</div>
<div class="count">
<img src="../../assets/img/icon/home/hot-gray.png" alt="">
<span>{{ formatNumber(item.use_count) }}</span>
</div>
</div>
</div>
<div class="more" @click="$nav('/home/music-rank-list')">查看完整音乐榜 ></div>
</div>
</SlideItem>
<SlideItem>
<div class="slide3" ref="slide3">
<div class="slide4-wrapper">
<div class="brands">
<div class="brand"
@click="toggleKey(key)"
:class="{active:key === selectBrandKey}"
v-for="key in Object.keys(brandRankList)">
{{ key }}
</div>
</div>
<div class="l-row" v-for="(item,index) in selectBrandList">
<div class="rank-wrapper">
<div class="rank" :class="{top:index < 3}">{{ index + 1 }}</div>
</div>
<div class="right">
<div class="center">
<div class="avatar-wrapper" :class="item.living ? 'living':''">
<div class="avatar-out-line"></div>
<img v-lazy="$imgPreview(item.logo)" alt="" class="avatar">
<!-- <img :src="item.logo" class="avatar">-->
</div>
<div class="desc">{{ item.name }}</div>
</div>
<div class="count">
<img src="../../assets/img/icon/home/hot-gray.png" alt="">
<span>{{ formatNumber(item.hot_count) }}</span>
</div>
</div>
</div>
<div class="more" @click="$no">查看完整品牌榜 ></div>
</div>
<SlideRowList
:autoplay="true"
indicatorType="bullets"
>
<SlideItem>
<div class="ad">AD1</div>
</SlideItem>
<SlideItem>
<div class="ad">AD2</div>
</SlideItem>
<SlideItem>
<div class="ad">AD3</div>
</SlideItem>
<SlideItem>
<div class="ad">AD4</div>
</SlideItem>
<SlideItem>
<div class="ad">AD5</div>
</SlideItem>
<SlideItem>
<div class="ad">AD6</div>
</SlideItem>
<SlideItem>
<div class="ad">AD7</div>
</SlideItem>
<SlideItem>
<div class="ad">AD8</div>
</SlideItem>
</SlideRowList>
</div>
</SlideItem>
</SlideRowList>
</div>
</div>
</div>
</template>
<script>
import Search from "../../components/Search";
import _ from 'lodash'
import Dom from "../../utils/dom";
import {nextTick} from "vue";
export default {
name: "SearchPage",
components: {
'BSearch': Search
},
data() {
return {
isExpand: false,
history: [
'历史记录1',
'历史记录2',
'历史记录3',
'历史记录4',
'历史记录5',
'历史记录6',
'历史记录7',
'历史记录8',
'历史记录9',
'历史记录10',
],
guess: [
{name: '少年透明人', type: -1},
{name: '花呗分批次接入征信', type: -1},
{name: '新娘婚礼上跪求悔婚', type: -1},
{name: '当你想换iPhone13时', type: -1},
{name: 'Ling OS灵犀系统', type: -1},
{name: '桑塔纳2022款', type: -1},
{name: '透明人', type: -1},
{name: '恒大集团凌晨发公告', type: 0},
{name: '2022款日产GT-R', type: 1},
{name: '四川双一流大学名单', type: -1},
{name: '一公司放假通知走红', type: -1},
{name: '成都新全优教育倒闭', type: -1},
{name: '当代女生社交现状', type: -1},
{name: '恒大集团凌晨发公告', type: -1},
],
randomGuess: [],
hotRankList: [
{name: '国内手机厂商最大的软肋就是 android 系统!', type: 0},
{name: '大家的官网订单现在什么状态', type: -1},
{name: '库克不愧是供应链管理大师, A15 一鱼三吃', type: -1},
{name: '找到了 iOS 被怀疑淘宝窃听的可能原因', type: 1},
{name: 'rebase 还是 merge', type: -1},
{name: '十一出游西安,西安的大佬们能给些建议吗?', type: 0},
{name: '领克 01燃油还是 phev', type: 1},
{name: '为什么要抢购新手机呢?', type: -1},
{name: '拼多多官方处理问题跟京东真的没法比', type: -1},
{name: '百度输入法 VS 搜狗输入法', type: -1},
{name: '关于 ios 上 app 检测代理', type: 0},
{name: 'iPadmini6 到货以后,要不要换路由器', type: 1},
{name: '现在有推荐的同步盘么?', type: -1},
{name: '大哥们, mac 电池鼓包你们都咋修的。。', type: -1},
{name: '发现一个特别赞的同步盘方案 Resilio Sync', type: -1},
{name: '得鼻炎了, 说下症状和应对吧', type: 1},
{name: '打翻了一瓶矿泉水在 MacBook Pro 上,赶紧用鼠标关机了,等多久可以尝试开机?', type: 0},
{name: '筋膜枪哪个牌子好啊?', type: -1},
{name: '最近在学理财小白基础知识,然后请教大家办哪个证券账户比较好呀', type: -1},
{name: '有没有长期使用 sidecar 功能的 V 友,这个东西长期的稳定性如何?', type: 0},
{name: '犹豫是否要年年焕新', type: -1},
{name: '请问如何在国内给 AppStore HK/TW 区充值.', type: 0},
{name: '最近感觉一个妹子不错,不过我比她大 5 岁', type: 1},
{name: '12mini 1 月 20 号购入,现在电池健康 92%,正常现象?', type: -1},
{name: '现在新 iphone12/128 啥价格比较合适啊?', type: -1},
{name: 'iOS 15 不改地区就能看到全球所有交通卡', type: -1},
{name: '求推荐拼车/打车软件', type: 1},
{name: '如何比较方便的杀死 nohup 起的进程及其所有子进程?', type: 0},
{name: '换了新工作,好像又掉坑里了。', type: 0},
{name: '有没有这样一款记账软件?', type: 1},
],
liveRankList: [
{name: '毛三岁(收女徒弟)', type: 0},
{name: '广州表哥', type: -1},
{name: '一只扬儿', type: -1},
{name: '沈酒', type: -1},
{name: '客家婷子', type: 1},
{name: '三斤.9237', type: -1},
{name: '虎哥说车', type: -1},
{name: '爆笑三江锅(永不言败)', type: -1},
{name: '子豪(尊师胜仔5点扛把子', type: 1},
{name: '琪琪', type: -1},
{name: '战神土牛(征战全网)', type: 0},
{name: '小鲁班下午5点直播', type: -1},
{name: '惠子ssica', type: -1},
{name: '大狼狗郑建鹏&言真夫妇', type: -1},
{name: '一条小团团', type: -1},
{name: '高火火', type: -1},
{name: '郭聪明', type: -1},
{name: '罗永浩', type: 1},
{name: '陈赫', type: 0},
{name: '摩登兄弟', type: -1},
{name: '浪老师', type: -1},
{name: '陈死狗cnh', type: -1},
{name: '杨驴驴y', type: -1},
{name: 'imxiaoxin', type: 0},
{name: '丶才子欧巴', type: -1},
{name: '旭旭宝宝', type: -1},
{name: 'pigff', type: -1},
{name: '正经人令北', type: -1},
{name: '雨神丶', type: -1},
{name: '智勋勋勋勋', type: 0},
],
musicRankList: [
{
name: '龙卷风',
"mp3": "http://im5.tongbu.com/rings/singerring/zt_uunGo_1/5605.mp3",
cover: new URL('../../assets/img/music-cover/1.png', import.meta.url).href,
author: '周杰伦',
duration: 99,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '爱在西元前',
mp3: 'https://m3.8js.net:99/1916/501204165042405.mp3',
cover: new URL('../../assets/img/music-cover/2.png', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '蜗牛',
mp3: 'http://im5.tongbu.com/rings/singerring/zt_uunGo_1/3684.mp3',
cover: new URL('../../assets/img/music-cover/3.png', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '半岛铁盒',
mp3: 'https://m3.8js.net:99/2016n/46/94745.mp3',
cover: new URL('../../assets/img/music-cover/4.png', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '轨迹',
mp3: 'https://m3.8js.net:99/1832/411204324135934.mp3',
cover: new URL('../../assets/img/music-cover/5.png', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '七里香',
mp3: 'https://m3.8js.net:99/2016n/14/53717.mp3',
cover: new URL('../../assets/img/music-cover/6.png', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '发如雪',
mp3: 'https://m3.8js.net:99/2014/211204142150965.mp3',
cover: new URL('../../assets/img/music-cover/7.png', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '霍元甲',
mp3: 'https://m3.8js.net:99/1921/261204212643140.mp3',
cover: new URL('../../assets/img/music-cover/8.png', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '千里之外(周杰伦/费玉清)',
mp3: 'http://im5.tongbu.com/rings/singerring/zt_uunGo_1/121.mp3',
cover: new URL('../../assets/img/music-cover/9.png', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '菊花台',
mp3: 'http://im5.tongbu.com/rings/singerring/zt_uunGo_1/2022.mp3',
cover: new URL('../../assets/img/music-cover/10.png', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '不能说的秘密',
mp3: 'http://im5.tongbu.com/rings/singerring/zt_uunGo_1/165.mp3',
cover: new URL('../../assets/img/music-cover/11.png', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '牛仔很忙',
mp3: 'http://im5.tongbu.com/rings/singerring/zt_uunGo_1/219.mp3',
cover: new URL('../../assets/img/music-cover/12.png', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '给我一首歌的时间',
mp3: 'https://m3.8js.net:99/1938/041204380445445.mp3',
cover: new URL('../../assets/img/music-cover/13.jpg', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '烟花易冷',
mp3: 'https://m3.8js.net:99/1828/051204280535192.mp3',
cover: new URL('../../assets/img/music-cover/14.jpg', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '惊叹号',
mp3: 'https://m3.8js.net:99/20111103/150.mp3',
cover: new URL('../../assets/img/music-cover/15.jpg', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '明明就',
mp3: 'https://m3.8js.net:99/2016n/27/96537.mp3',
cover: new URL('../../assets/img/music-cover/16.jpg', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '算什么男人',
mp3: 'https://m3.8js.net:99/20150107/429.mp3',
cover: new URL('../../assets/img/music-cover/17.jpg', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
{
name: '告白气球',
mp3: 'https://m3.8js.net:99/20161016/481.mp3',
cover: new URL('../../assets/img/music-cover/18.jpg', import.meta.url).href,
author: '周杰伦',
duration: 60,
use_count: 37441000,
is_collect: false,
is_play: false,
},
],
brandRankList: {
'汽车': [
{
name: '五菱汽车',
logo: 'https://www.wuling.com/favicon.ico',
hot_count: 1395,
living: false
},
{
name: '宝马',
logo: 'https://www.bmw.com.cn/etc/clientlibs/digitals2/clientlib/media/img/BMW_Grey_Logo.svg',
hot_count: 1395,
living: true
},
{
name: '吉利汽车',
logo: 'http://www.cargc.com/uploads/allimg/200828/1401364511-2.jpg',
hot_count: 1395,
living: false
},
{
name: '一汽大众-奥迪',
logo: 'https://www.audi.cn/bin/nemo.static.20210916063431/cms4i-nemo/assets/icons/favicon/favicon-v4.ico',
hot_count: 1395,
living: false
},
{
name: '一汽-大众',
logo: 'https://www.vw.com.cn/favicon.ico',
hot_count: 1395,
living: false
},
],
'手机': [
{
name: '华为',
logo: 'https://isesglobal.com/wp-content/uploads/2021/01/Huawei.jpg',
hot_count: 1395,
living: false
},
{
name: '小米',
logo: 'https://s01.mifile.cn/favicon.ico',
hot_count: 1395,
living: true
},
{
name: 'vivo',
logo: 'http://wwwstatic.vivo.com.cn/vivoportal/web/dist/img/common/favicon_ecf768e.ico',
hot_count: 1395,
living: false
},
{
name: 'oppo',
logo: 'https://code.oppo.com/etc.clientlibs/global-site/clientlibs/clientlib-design/resources/icons/favicon.ico',
hot_count: 1395,
living: false
},
{
name: '三星',
logo: 'https://www.samsung.com/etc.clientlibs/samsung/clientlibs/consumer/global/clientlib-common/resources/images/Favicon.png',
hot_count: 1395,
living: false
},
],
'美妆': [
{
name: '巴黎欧莱雅',
logo: 'https://oap-cn-prd-cd.e-loreal.cn/-/media/project/loreal/brand-sites/oap/apac/cn/identity/image-2020-06-19-20-48-00-996.png',
hot_count: 1395,
living: false
},
{
name: '花西子',
logo: 'https://www.haoyunbb.com/img/allimg/210607/001I43462-0.png',
hot_count: 1395,
living: false
},
{
name: '完美日记',
logo: 'http://5b0988e595225.cdn.sohucs.com/images/20200412/9c6caafca79e438f98d98d3986ebce4d.png',
hot_count: 1395,
living: false
},
{
name: '雅诗兰黛',
logo: 'https://vipyidiancom.oss-cn-beijing.aliyuncs.com/vipyidian.com/article/1_150918143107_1.png',
hot_count: 1395,
living: false
},
{
name: 'COLORKEY珂拉琪',
logo: 'https://www.80wzbk.com/uploads/logo/20210129/20210129104015_541.jpg',
hot_count: 1395,
living: false
},
]
},
selectBrandKey: '汽车',
selectBrandKeyIndex: 0,
slideIndex: 0,
timer: null,
slideItemHeight: null
}
},
computed: {
lHistory() {
if (this.isExpand) {
if (this.history.length > 10) return this.history.slice(0, 10)
return this.history
} else {
if (this.history.length > 2) return this.history.slice(0, 2)
return this.history
}
},
selectBrandList() {
return this.brandRankList[this.selectBrandKey]
},
brandListKeys() {
return Object.keys(this.brandRankList)
},
slideListHeight() {
return {height: this.slideItemHeight ? (this.slideItemHeight + 'px') : '100%'}
}
},
watch: {
slideIndex: {
handler(newVal) {
nextTick(() => {
// console.log(this.$refs[`slide${newVal}`])
this.slideItemHeight = new Dom(`.slide${newVal}`).css('height')
// console.log(this.slideItemHeight)
this.slideItemHeight = parseFloat(this.slideItemHeight) + 50
})
if (newVal === 3) {
this.timer = setInterval(() => {
if (this.selectBrandKeyIndex === this.brandListKeys.length - 1) {
this.selectBrandKeyIndex = 0
} else {
this.selectBrandKeyIndex++
}
this.selectBrandKey = this.brandListKeys[this.selectBrandKeyIndex]
}, 3000)
} else {
clearInterval(this.timer)
}
},
immediate: true
}
},
created() {
this.history = this.history.reverse()
this.refresh()
},
methods: {
toggleKey(key) {
this.selectBrandKey = key
clearInterval(this.timer)
},
refresh() {
this.randomGuess = _.sampleSize(this.guess, 6)
},
toggle() {
if (this.isExpand) {
this.$showSimpleConfirmDialog('是否清空历史记录?', () => {
this.history = []
}, null, '确定', '取消')
} else {
this.isExpand = true
}
}
}
}
</script>
<style scoped lang="less">
@import "../../assets/less/index";
.Search {
position: fixed;
left: 0;
right: 0;
bottom: 0;
top: 0;
overflow: auto;
color: white;
font-size: 14rem;
.type {
display: flex;
align-items: center;
justify-content: center;
height: 16rem;
width: 16rem;
font-size: 12rem;
margin-left: 5rem;
border-radius: 2rem;
&.hot {
background: @primary-btn-color;
}
&.new {
background: rgb(186, 51, 226);
}
}
.header {
z-index: 4;
background: @main-bg;
height: 60rem;
font-size: 14rem;
padding: 0 @padding-page;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid @line-color;
position: fixed;
width: 100vw;
box-sizing: border-box;
top: 0;
.search-ctn {
flex: 1;
}
.scan {
transform: scale(2);
height: 10rem;
width: 10rem;
}
}
.content {
padding-top: 60rem;
.history {
.row {
min-height: 40rem;
}
.history-expand {
text-align: center;
padding: 10rem;
color: @second-text-color;
}
}
.guess {
padding: 0 @padding-page;
.title {
font-size: 14rem;
padding: 10rem 0;
display: flex;
align-items: center;
justify-content: space-between;
.right {
color: @second-text-color;
display: flex;
align-items: center;
img {
margin-right: 5rem;
width: 13rem;
height: 13rem;
}
}
}
.keys {
font-size: 16rem;
display: flex;
flex-wrap: wrap;
.key {
box-sizing: border-box;
padding: 8rem 0;
width: 49%;
display: flex;
align-items: center;
.desc {
max-width: 80%;
font-size: 14rem;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
}
}
}
.rank-list {
.indicator {
padding: 15rem;
display: flex;
align-items: center;
font-size: 14rem;
.tab {
color: @second-text-color;
margin-right: 20rem;
&.active {
transform: scale(1.2);
color: white;
}
&:nth-child(1) {
&.active {
font-weight: bold;
background: linear-gradient(to right, rgb(255, 165, 71), rgb(218, 77, 115));
-webkit-background-clip: text;
color: transparent;
}
}
}
}
.slide0 {
box-sizing: border-box;
margin: 0 @padding-page 50rem @padding-page;
background: linear-gradient(to right, rgb(32, 29, 36), rgb(50, 29, 38));
padding: @padding-page;
border-radius: 10rem;
.l-row {
font-size: 14rem;
display: flex;
margin-bottom: 16rem;
align-items: center;
color: @second-text-color;
.rank-wrapper {
display: flex;
align-items: center;
.rank {
width: 18rem;
height: 18rem;
line-height: 18rem;
text-align: center;
margin-right: 15rem;
}
}
.right {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
.center {
width: calc(100vw - 140rem);
box-sizing: border-box;
//padding: 0 1rem;
//flex: 1;
display: flex;
align-items: center;
font-size: 14rem;
color: white;
.desc {
max-width: 85%;
font-size: 14rem;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
}
.count {
font-size: 12rem;
}
}
}
}
.slide1 {
box-sizing: border-box;
margin: 0 @padding-page 50rem @padding-page;
background: rgb(20, 22, 34);
border: 1px solid rgba(31, 34, 52, 0.5);
padding: @padding-page;
border-radius: 10rem;
.l-row {
font-size: 14rem;
display: flex;
margin-bottom: 10rem;
align-items: center;
color: @second-text-color;
&:active {
opacity: .5;
}
.rank-wrapper {
display: flex;
align-items: center;
.rank {
width: 18rem;
height: 18rem;
line-height: 18rem;
text-align: center;
margin-right: 15rem;
&.top {
color: yellow;
}
}
}
.right {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
.center {
width: calc(100vw - 160rem);
box-sizing: border-box;
//padding: 0 1rem;
//flex: 1;
display: flex;
align-items: center;
font-size: 14rem;
color: white;
.avatar-wrapper {
@width: 35rem;
margin-right: 10rem;
display: flex;
align-items: center;
justify-content: center;
width: @width;
height: @width;
border-radius: 50%;
background: @primary-btn-color;
.avatar {
width: @width - 0.3;
border-radius: 50%;
padding: 1rem;
background: black;
}
}
.desc {
max-width: 55%;
font-size: 14rem;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.live-type {
height: 22rem;
padding: 0 5rem;
display: flex;
align-items: center;
justify-content: center;
font-size: 10rem;
color: @second-text-color;
margin-left: 5rem;
border-radius: 2rem;
background: @second-btn-color-tran;
.type2 {
margin-right: 2rem;
width: 10rem;
height: 10rem;
}
.type1 {
margin-right: 2rem;
width: 15rem;
height: 10rem;
}
}
}
.count {
font-size: 12rem;
}
}
}
}
.slide2 {
box-sizing: border-box;
margin: 0 @padding-page 50rem @padding-page;
background: rgb(20, 22, 34);
border: 1px solid rgba(31, 34, 52, 0.5);
padding: @padding-page;
border-radius: 10rem;
.l-row {
font-size: 14rem;
display: flex;
margin-bottom: 10rem;
align-items: center;
color: @second-text-color;
&:active {
opacity: .5;
}
.rank-wrapper {
display: flex;
align-items: center;
.rank {
width: 18rem;
height: 18rem;
line-height: 18rem;
text-align: center;
margin-right: 15rem;
&.top {
color: yellow;
}
}
}
.right {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
.center {
width: calc(100vw - 150rem);
box-sizing: border-box;
//padding: 0 1rem;
//flex: 1;
display: flex;
align-items: center;
font-size: 14rem;
color: white;
.avatar-wrapper {
margin-right: 10rem;
.avatar {
width: 30rem;
height: 30rem;
border-radius: 2rem;
}
}
.desc {
max-width: 95%;
font-size: 14rem;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
}
.count {
display: flex;
align-items: center;
font-size: 12rem;
img {
margin-right: 2rem;
width: 15rem;
height: 15rem;
}
}
}
}
}
.slide3 {
box-sizing: border-box;
margin: 0 @padding-page 50rem @padding-page;
border-radius: 10rem;
.slide4-wrapper {
padding: 5rem @padding-page;
.brands {
color: @second-text-color;
font-size: 12rem;
margin-bottom: 15rem;
display: flex;
.brand {
border-radius: 2rem;
margin-right: 10rem;
padding: 5rem 10rem;
background: @second-btn-color-tran;
&.active {
color: white;
background: @second-btn-color;
}
}
}
.l-row {
font-size: 14rem;
display: flex;
margin-bottom: 10rem;
align-items: center;
color: @second-text-color;
&:active {
opacity: .5;
}
.rank-wrapper {
display: flex;
align-items: center;
.rank {
width: 18rem;
height: 18rem;
line-height: 18rem;
text-align: center;
margin-right: 15rem;
&.top {
color: yellow;
}
}
}
.right {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
.center {
width: calc(100vw - 150rem);
box-sizing: border-box;
//padding: 0 1rem;
//flex: 1;
display: flex;
align-items: center;
font-size: 14rem;
color: white;
.avatar-wrapper {
@width: 35rem;
margin-right: 10rem;
&.living {
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: @width;
height: @width;
border-radius: 50%;
background: @primary-btn-color;
.avatar-out-line {
width: @width;
height: @width;
position: absolute;
background: transparent;
border-radius: 50%;
border: 2rem solid @primary-btn-color;
animation: avatar-out-line 1s infinite;
@keyframes avatar-out-line {
from {
padding: 0;
}
to {
opacity: 0;
padding: 2rem;
}
}
}
.avatar {
padding: 1rem;
animation: avatar 1s infinite alternate;
}
}
.avatar {
position: relative;
z-index: 2;
width: @width - 0.3;
height: @width - 0.3;
border-radius: 50%;
background: black;
box-sizing: border-box;
@keyframes avatar {
from {
padding: 1rem;
}
to {
padding: 2rem;
}
}
}
}
.desc {
max-width: 95%;
font-size: 14rem;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
}
.count {
display: flex;
align-items: center;
font-size: 12rem;
img {
margin-right: 2rem;
width: 15rem;
height: 15rem;
}
}
}
}
}
.ad {
background: @second-btn-color-tran;
display: flex;
align-items: center;
justify-content: center;
height: 100rem;
}
}
.more {
margin-bottom: 20rem;
font-size: 12rem;
padding: 10rem 10rem 0 10rem;
text-align: center;
color: yellow;
}
}
}
}
</style>