news.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991
  1. <!-- 底部-话题 -->
  2. <template>
  3. <view class="topic">
  4. <view class="topic-head">
  5. <header-logo></header-logo>
  6. <div class="bar flex">
  7. <div class="flex" @click="stepBack">
  8. <u-icon name="arrow-left" color="#ffffff" size="16px" bold></u-icon>
  9. <!-- More -->
  10. {{ $t('more.lab') }}
  11. </div>
  12. </div>
  13. <!-- <view class="header">
  14. <view class="topic-avatar">
  15. <u--image
  16. :showLoading="true"
  17. class="u-skeleton-circle"
  18. @click="homeShow = true"
  19. :src="info.avatar || '/static/image/match/teams_avatar_ico@2x.png'"
  20. width="50rpx"
  21. height="50rpx"
  22. shape="circle"
  23. ></u--image>
  24. </view>
  25. <u-tabs
  26. :list="tabList"
  27. @click="change"
  28. lineWidth="180rpx"
  29. lineHeight="0"
  30. lineColor="#DC3C23"
  31. :scrollable="false"
  32. :itemStyle="{height: '60rpx'}"
  33. :activeStyle="{
  34. color: '#fff',
  35. fontSize: '32rpx',
  36. fontWeight: 'Bold',
  37. }"
  38. :inactiveStyle="{ color: '#fff', fontSize: '32rpx' }"
  39. ></u-tabs>
  40. </view> -->
  41. <view class="topip-tabs flex">
  42. <view class="ullist" :class="{ 'flex-center': current == 1 }">
  43. <view class="li-content">
  44. <view
  45. class="ulli"
  46. :class="{ active: index == tabsIndex }"
  47. v-for="(item, index) in classList"
  48. :key="index"
  49. @click="setClass(item, index)"
  50. >
  51. {{ item.name }}
  52. </view>
  53. </view>
  54. </view>
  55. <!-- <image
  56. src="/static/image/news/more.png"
  57. mode=""
  58. @click="toUrl('./list?type=' + current)"
  59. ></image> -->
  60. </view>
  61. </view>
  62. <view class="" v-if="current == 0">
  63. <view class="topic-swiper" :class="{'fadeInBtm': animationLoaded}" v-if="tabsIndex == 0 && list.length != 0">
  64. <swiper class="swiper" circular :indicator-dots="false" :autoplay="true" :interval="2000"
  65. :duration="500">
  66. <swiper-item v-for="(item, index) in list" :key="index">
  67. <u--image
  68. mode="scaleToFill"
  69. :showLoading="true"
  70. :src="item.img"
  71. width="100%"
  72. height="60vw"
  73. >
  74. <template v-slot:loading>
  75. <image class="loading-banner-img" src="/static/image/common/loading-banner.png"></image>
  76. </template>
  77. </u--image>
  78. </swiper-item>
  79. </swiper>
  80. </view>
  81. <!-- :style="{marginTop:show1?'204rpx':'100rpx'}" -->
  82. <view
  83. class="topic-list"
  84. :class="{'fadeInTop': animationLoaded}"
  85. v-if="current == 0"
  86. :style="{ marginTop: tabsIndex != 0 ? '18rpx' : '18rpx' }"
  87. >
  88. <view
  89. class="list-li flex"
  90. v-for="(item, index) in Headlist.data"
  91. :key="index"
  92. @click="$toUrl('./news-detail?id=' + item.id)"
  93. >
  94. <view class="list-li-left flex-wrap">
  95. <view class="list-li-left-nav text-clamp2">{{ item.title }}</view>
  96. <view class="list-li-left-bot flex-start">
  97. <!-- <text :style="{color:index == 0?'#CC374A':'#999'}">置顶</text> -->
  98. <text style="color: #cc374a; width: 90rpx" v-if="item.is_top == 1"
  99. >{{ $t('news.lab6') }}</text
  100. >
  101. <view
  102. class="flex-start"
  103. style="width: 90rpx"
  104. v-if="item.comment_count != 0"
  105. >
  106. <image
  107. src="/static/image/news/topic11.png"
  108. mode="aspectFill"
  109. ></image>
  110. <text>{{
  111. item.comment_count >= 1000000
  112. ? (item.comment_count % 1000000) + "M"
  113. : item.comment_count
  114. }}</text>
  115. </view>
  116. <text>{{ item.addtime }}</text>
  117. </view>
  118. </view>
  119. <u--image
  120. :showLoading="true"
  121. class="list-li-logo"
  122. radius="12"
  123. :src="item.img"
  124. width="240rpx"
  125. height="136rpx"
  126. >
  127. <template v-slot:loading>
  128. <image class="loading-list-img" src="/static/image/common/loading-banner.png"></image>
  129. </template>
  130. </u--image>
  131. <image
  132. src="../../static/image/news/hot.png"
  133. v-if="item.comment_count > 1000000"
  134. mode=""
  135. style="width: 25px;height: 20px;position: relative;right: 18px;top: -31px;"></image>
  136. <!-- <image class="list-li-logo" :src="item.img ?item.img:require('../../static/image/common/none-img.png')" mode="aspectFill"></image> -->
  137. </view>
  138. </view>
  139. <u-empty
  140. v-if="Headlist.data.length == 0"
  141. mode="data"
  142. width="474"
  143. height="312"
  144. textSize="28"
  145. marginTop="100"
  146. :text="$t('common.nodata')"
  147. icon="/static/image/common/nodata.png"
  148. >
  149. </u-empty>
  150. </view>
  151. <view class="Community" v-else>
  152. <view class="hot" v-if="current == 1 && tabsIndex == 0">
  153. <view class="hot-title">
  154. {{ $t("news.title") }}
  155. </view>
  156. <!-- <image src="../../static/image/news/hot-title.png" class="hot-title" mode=""></image> -->
  157. <view class="ul flex-start">
  158. <view
  159. class="li"
  160. v-for="(item, index) in luntanTitle"
  161. :key="index"
  162. @click="$toUrl('./news-list?id=' + item.id)"
  163. >
  164. <image :src="item.icon" mode=""></image>
  165. <view class="font24">
  166. {{ item.name }}
  167. </view>
  168. </view>
  169. </view>
  170. </view>
  171. <view
  172. class="tips font24 flex-start"
  173. v-if="current == 1 && tabsIndex == 0"
  174. >
  175. <text class="t">
  176. <!-- Fine paste -->
  177. {{ $t('news.lab7') }}
  178. </text>
  179. <text>
  180. <!-- Important reading: community management norms and user
  181. instructions -->
  182. {{ $t('news.lab8') }}
  183. </text>
  184. </view>
  185. <view class="u-demo-block__content">
  186. <u-empty
  187. v-if="luntanList.length == 0"
  188. mode="data"
  189. width="474"
  190. height="312"
  191. textSize="28"
  192. marginTop="100"
  193. :text="$t('common.nodata')"
  194. icon="/static/image/common/nodata.png"
  195. >
  196. </u-empty>
  197. <view
  198. class="album"
  199. @click="$toUrl('./community-detail?id=' + item.id)"
  200. v-for="(item, index) in luntanList"
  201. :key="index"
  202. >
  203. <view class="album_top flex-start">
  204. <image class="logo" :src="item.avatar" mode=""></image>
  205. <view class="">
  206. <u--text :text="item.user_nickname" bold size="32"></u--text>
  207. <u--text
  208. margin="6px 0 0 0"
  209. size="26"
  210. color="#999"
  211. :text="item.addtime"
  212. ></u--text>
  213. </view>
  214. </view>
  215. <!-- <view class="nav font28 text-clamp3" :ref="'text'+index" :style="{'-webkit-line-clamp':lunIndex == index?'initial':3}">
  216. {{item.title}}
  217. </view> -->
  218. <mote-lines-divide
  219. :line="3"
  220. @click.stop=""
  221. :expandText="$t('news.full')"
  222. :foldHint="$t('news.collapsed')"
  223. >
  224. {{ item.title }}
  225. </mote-lines-divide>
  226. <!-- <view class="more" :style="{display:getLength(index)?'none':''}" @click.stop="setLunIndex(index)">
  227. Full text
  228. </view> -->
  229. <!-- item.is_flie_type文件格式:1视频 0图片 -->
  230. <view class="album__content" v-if="item.is_flie_type == 0">
  231. <u-album multipleSize="200" space="16" :urls="item.img"></u-album>
  232. </view>
  233. <view class="album__content" v-else>
  234. <image
  235. v-if="item.video[0]"
  236. :src="item.video[0].img + '?vframe/jpg/offset/0'"
  237. style="width: 100%"
  238. mode=""
  239. ></image>
  240. <image
  241. class="play"
  242. src="/static/image/match/play.png"
  243. mode=""
  244. ></image>
  245. </view>
  246. <view class="types flex-start">
  247. <image :src="item.classification_icon" mode=""></image>
  248. {{ item.classification_name }}
  249. </view>
  250. <view class="flex tabbar">
  251. <view class="">
  252. <image src="/static/image/news/topic2.png" mode=""></image>
  253. <u--text color="#999" size="24" :text="item.favorites"></u--text>
  254. </view>
  255. <view class="">
  256. <image src="/static/image/news/topic7.png" mode=""></image>
  257. <u--text color="#999" size="24" :text="item.comment"></u--text>
  258. </view>
  259. <view class="">
  260. <image src="/static/image/news/topic6.png" mode=""></image>
  261. <u--text color="#999" size="24" :text="item.click"></u--text>
  262. </view>
  263. </view>
  264. </view>
  265. </view>
  266. </view>
  267. <image
  268. src="/static/image/news/topic-top.png"
  269. class="topic-top"
  270. mode="aspectFill"
  271. @click="go(4)"
  272. v-if="current == 1"
  273. ></image>
  274. <!-- <image src="/static/image/news/topic-top.png" class="topic-top" mode="aspectFill" @click="$toUrl('./publish')" v-else></image> -->
  275. <u-popup :show="homeShow" mode="left" @close="close" @open="open">
  276. <view class="home">
  277. <view @click="userClick">
  278. <view class="home-info flex-start">
  279. <image
  280. :src="
  281. info.avatar || '/static/image/match/teams_avatar_ico@2x.png'
  282. "
  283. mode="aspectFill"
  284. >
  285. </image>
  286. <view class="font32">
  287. <!-- Graeme van Buuren -->
  288. {{ isLogin == 1 ? info.user_nickname : "" }}
  289. </view>
  290. </view>
  291. </view>
  292. <view class="home-ui">
  293. <template v-for="(item, index) in homeList">
  294. <view
  295. class="home-li flex-start"
  296. @click="go(index)"
  297. v-if="index != 0"
  298. :key="index"
  299. >
  300. <image
  301. :src="'/static/image/match/my-' + index + '.png'"
  302. mode=""
  303. ></image>
  304. <view class="font32">
  305. {{ item }}
  306. </view>
  307. </view>
  308. </template>
  309. </view>
  310. <button
  311. v-if="isLogin == 1"
  312. type="default"
  313. class="size28 logout"
  314. @click="logOut"
  315. >
  316. {{ $t("member.out") }}
  317. </button>
  318. <button v-else type="default" class="size28 logout" @click="logIn">
  319. <!-- Log In -->
  320. {{ $t('login.login') }}
  321. </button>
  322. </view>
  323. </u-popup>
  324. <div class="news-install">
  325. <install></install>
  326. </div>
  327. </view>
  328. </template>
  329. <script>
  330. // 路径自行修改
  331. import MoteLinesDivide from "@/components/mote-lines-divide/mote-lines-divide";
  332. import animationMixin from '@/pages/mixins/animation'
  333. import install from "@/components/install/install.vue";
  334. export default {
  335. components: {
  336. MoteLinesDivide,
  337. install,
  338. },
  339. mixins: [animationMixin],
  340. data() {
  341. return {
  342. show: false,
  343. lunIndex: null,
  344. homeShow: false,
  345. tokenIsLogin: "",
  346. urls2: [
  347. "https://cdn.uviewui.com/uview/album/1.jpg",
  348. "https://cdn.uviewui.com/uview/album/2.jpg",
  349. "https://cdn.uviewui.com/uview/album/3.jpg",
  350. "https://cdn.uviewui.com/uview/album/4.jpg",
  351. "https://cdn.uviewui.com/uview/album/5.jpg",
  352. "https://cdn.uviewui.com/uview/album/6.jpg",
  353. "https://cdn.uviewui.com/uview/album/7.jpg",
  354. "https://cdn.uviewui.com/uview/album/8.jpg",
  355. "https://cdn.uviewui.com/uview/album/9.jpg",
  356. "https://cdn.uviewui.com/uview/album/10.jpg",
  357. ],
  358. homeList: [
  359. "Streamer application",
  360. this.$t("member.concerns"),
  361. this.$t("member.message"),
  362. this.$t("member.settings"),
  363. ],
  364. bannerList: [
  365. {
  366. img: "/static/images/topic/banner.jpg",
  367. },
  368. ],
  369. tabsIndex: 0,
  370. page: 1,
  371. status1: "more",
  372. status2: "more",
  373. luntanPage: 1,
  374. swCurrent: 0,
  375. Headlist: {
  376. data: [],
  377. },
  378. tabsTitle: [],
  379. HeadlinesList: {},
  380. current: 0,
  381. list: [],
  382. luntanTitle: [],
  383. luntanList: [],
  384. classList: [],
  385. };
  386. },
  387. computed: {
  388. show1: {
  389. get() {
  390. return this.$store.state.show;
  391. },
  392. set() {
  393. // this.$store.state.info.midMask = !this.$store.state.info.midMask
  394. },
  395. },
  396. info() {
  397. return this.$store.state.info;
  398. },
  399. isLogin() {
  400. return this.$store.state.isLogin;
  401. },
  402. tabList() {
  403. let arr = [
  404. {
  405. name: this.$t("news.tab1"),
  406. },
  407. // {
  408. // name: this.$t("news.tab2"),
  409. // },
  410. ];
  411. return arr;
  412. },
  413. },
  414. mounted() {
  415. this.getclassification();
  416. this.getLuntan();
  417. let { token } = this.$store.state.qiuNiu;
  418. // 判断是否登录
  419. this.tokenIsLogin = token;
  420. },
  421. onReachBottom() {
  422. //触底加载
  423. if (this.current == 0) {
  424. if (JSON.stringify(this.HeadlinesList) == "{}") return;
  425. if (this.status1 == "more") {
  426. this.getHeadlines();
  427. }
  428. } else {
  429. if (this.status2 == "more") {
  430. this.getLuntan();
  431. }
  432. }
  433. },
  434. methods: {
  435. // 跳转个人中心
  436. userClick() {
  437. uni.navigateTo({
  438. url: "../../pages/Match/member/infomation",
  439. });
  440. },
  441. /* 退出登录 */
  442. logOut() {
  443. this.homeShow = false;
  444. this.$common.del("information");
  445. this.$common.del("imTouristAccount");
  446. this.$store.state.isLogin = 2;
  447. },
  448. logIn() {
  449. this.homeShow = false;
  450. this.$toUrl('/pages/login/login')
  451. },
  452. getLength(i) {
  453. this.$nextTick((res) => {
  454. // let text = this.$refs['text'+i];
  455. setTimeout((res1) => {
  456. console.log(this.$refs["text" + i][0]);
  457. }, 100);
  458. // let rows = this.$refs.text.getClientRects().length // 文本行数
  459. // let txt = this.introduceOld // 文本
  460. });
  461. },
  462. setLunIndex(i) {
  463. this.lunIndex = this.lunIndex == i ? null : i;
  464. console.log(this.lunIndex);
  465. },
  466. // 获取论坛的分类
  467. getLuntan() {
  468. this.status2 = "loading";
  469. uni.$u.http
  470. .get("/api/circle/index", { params: { page: this.luntanPage } })
  471. .then((res) => {
  472. this.luntanTitle = res.classification;
  473. if (this.luntanPage == 1) {
  474. this.luntanList = res.list.data;
  475. } else {
  476. this.luntanList = [...this.luntanList, ...res.list.data];
  477. }
  478. if (res.list.total > this.luntanList.length) {
  479. this.luntanPage++;
  480. this.status2 = "more";
  481. } else {
  482. this.status2 = "nomore";
  483. }
  484. });
  485. },
  486. /* 获取关注的圈子 */
  487. getAttentionList() {
  488. uni.showLoading({
  489. title: this.$t('common.lab'),
  490. });
  491. uni.$u.http.get("/api/Circle/attentionList", {}).then((res) => {
  492. uni.hideLoading();
  493. this.luntanList = res.data;
  494. });
  495. },
  496. // 获取头条分类列表
  497. getclassification() {
  498. uni.$u.http.get("/api/Headlines/classification", {}).then((res) => {
  499. this.classList = res;
  500. this.classList.unshift({ name: this.$t("news.hot"), id: 0 });
  501. this.tabsTitle = this.classList;
  502. this.getHeadlines();
  503. // this.$db.set('system'.res.data)
  504. // this.HeadlinesList = res
  505. // this.Headlist.data = [...this.Headlist.data,...res.list.data]
  506. });
  507. },
  508. /* 选择头条分类 */
  509. setClass(item, i) {
  510. this.tabsIndex = i;
  511. if (this.current == 0) {
  512. this.page = 1;
  513. this.getHeadlines();
  514. } else {
  515. this.luntanPage = 1;
  516. uni.pageScrollTo({
  517. duration: 0,
  518. scrollTop: 0,
  519. });
  520. if (i == 0) {
  521. //热门圈子
  522. this.getLuntan();
  523. } else {
  524. //关注圈子
  525. this.getAttentionList();
  526. }
  527. }
  528. },
  529. // 置顶
  530. top() {
  531. uni.pageScrollTo({
  532. duration: 0,
  533. scrollTop: 0,
  534. });
  535. },
  536. open() {},
  537. close(event) {
  538. this.homeShow = false;
  539. },
  540. toUrl(url) {
  541. if (this.isLogin == 2) {
  542. } else {
  543. this.$toUrl(url);
  544. }
  545. },
  546. go(type) {
  547. if (this.isLogin == 2 && type != 5) {
  548. this.$toUrl('/pages/login/login')
  549. return
  550. };
  551. switch (type) {
  552. case 1:
  553. uni.navigateTo({
  554. url: "../Match/member/author",
  555. });
  556. break;
  557. case 2:
  558. uni.navigateTo({
  559. url: "../Match/message/message",
  560. });
  561. break;
  562. case 3:
  563. uni.navigateTo({
  564. url: "../Match/setting/setting",
  565. });
  566. break;
  567. case 4:
  568. uni.navigateTo({
  569. url: "./publish",
  570. });
  571. break;
  572. case 5:
  573. if (this.isLogin == 1) {
  574. this.$toUrl("/pages/Match/member/infomation");
  575. } else {
  576. this.$toUrl('/pages/login/login')
  577. }
  578. }
  579. },
  580. change(e) {
  581. this.current = e.index;
  582. this.tabsIndex = 0;
  583. this.page = 1;
  584. this.luntanPage = 1;
  585. if (e.index == 0) {
  586. this.classList = this.tabsTitle;
  587. this.getHeadlines();
  588. } else {
  589. this.classList = [
  590. { name: this.$t("news.popular") },
  591. { name: this.$t("news.follow") },
  592. ];
  593. this.getLuntan();
  594. }
  595. },
  596. // 轮播切换
  597. change1(e) {
  598. // console.log(e);
  599. this.swCurrent = e;
  600. },
  601. // 点击轮播
  602. detail(e) {
  603. // uni.navigateTo({
  604. // url:'./detail?id=' + this.HeadlinesList.banner[e].id
  605. // })
  606. console.log(e);
  607. },
  608. //获取头条列表
  609. getHeadlines() {
  610. this.status1 = "loading";
  611. uni.$u.http
  612. .get("/api/Headlines/getList", {
  613. params: { page: this.page, cid: this.classList[this.tabsIndex].id },
  614. })
  615. .then((res) => {
  616. // this.$db.set('system'.res.data)
  617. this.HeadlinesList = res;
  618. if (this.page == 1) {
  619. this.list = res.banner || [];
  620. this.Headlist.data = res.list.data;
  621. } else {
  622. this.Headlist.data = [...this.Headlist.data, ...res.list.data];
  623. }
  624. if (res.list.total > this.Headlist.data.length) {
  625. this.page++;
  626. this.status1 = "more";
  627. } else {
  628. this.status1 = "nomore";
  629. }
  630. }).finally(() => {
  631. if (this.animationLoaded) {
  632. return
  633. }
  634. this.animationLoaded = true
  635. this.$nextTick(() => {
  636. this.scrollFun()
  637. })
  638. })
  639. },
  640. stepBack() {
  641. uni.switchTab({
  642. url: '/pages/more/index'
  643. })
  644. }
  645. },
  646. };
  647. </script>
  648. <style lang="scss" scoped>
  649. .topic {
  650. color: #333;
  651. min-height: 100vh;
  652. padding-bottom: 130rpx;
  653. background-color: #f3f3f7;
  654. }
  655. .bar {
  656. background-color: #262E4A;
  657. height: 40px;
  658. font-weight: 500;
  659. font-size: 16px;
  660. padding: 0 16px;
  661. color: #fff;
  662. .u-icon {
  663. margin-right: 10px;
  664. }
  665. }
  666. .news-install {
  667. position: fixed;
  668. left: 0;
  669. right: 0;
  670. bottom: var(--window-bottom);
  671. z-index: 200;
  672. }
  673. .topip-tabs {
  674. font-weight: 500;
  675. font-size: 14px;
  676. color: #000;
  677. line-height: 1;
  678. background-color: #f3f3f7;
  679. image {
  680. width: 60rpx;
  681. height: 60rpx;
  682. // margin-left: ;
  683. }
  684. .ullist {
  685. // flex: 1;
  686. width: 100%;
  687. // overflow: auto;
  688. overflow-y: scroll;
  689. // padding-right: 100rpx;
  690. }
  691. .li-content {
  692. width: max-content;
  693. }
  694. .ulli {
  695. display: inline-block;
  696. // width: 100rpx;
  697. text-align: center;
  698. padding: 12px 16px;
  699. border-bottom: 2px solid transparent;
  700. }
  701. .active {
  702. border-bottom-color: #FF3300;
  703. }
  704. }
  705. .Community {
  706. overflow: hidden;
  707. padding: 0 24rpx;
  708. .tips {
  709. padding: 16rpx 20rpx;
  710. border-radius: 12rpx;
  711. background-color: white;
  712. margin-top: 22rpx;
  713. .t {
  714. color: $color2;
  715. padding: 14rpx 12rpx;
  716. border-radius: 12rpx;
  717. margin-right: 20rpx;
  718. border: 2rpx solid $color2;
  719. }
  720. }
  721. .hot {
  722. margin-top: 24rpx;
  723. border-radius: 12rpx;
  724. background-color: white;
  725. padding: 82rpx 0 20rpx 0;
  726. position: relative;
  727. .hot-title {
  728. color: #fff;
  729. width: 250rpx;
  730. height: 54rpx;
  731. padding-left: 12rpx;
  732. line-height: 54rpx;
  733. position: absolute;
  734. top: 0;
  735. left: 0;
  736. z-index: 1;
  737. background: url(/static/image/news/hot-title.png) center top / 100% 100%
  738. no-repeat;
  739. }
  740. .ul {
  741. overflow-x: scroll;
  742. .li {
  743. width: 254rpx;
  744. text-align: center;
  745. }
  746. image {
  747. width: 72rpx;
  748. height: 72rpx;
  749. margin-bottom: 16rpx;
  750. }
  751. }
  752. }
  753. .album {
  754. margin-top: 20rpx;
  755. padding: 32rpx 24rpx;
  756. border-radius: 12rpx;
  757. background-color: white;
  758. .types {
  759. width: fit-content;
  760. // display: inline-block;
  761. color: #e3ac72;
  762. font-size: 28rpx;
  763. margin-top: 24rpx;
  764. padding: 10rpx 16rpx;
  765. background-color: #fff1e0;
  766. border-radius: 6rpx;
  767. image {
  768. width: 32rpx;
  769. height: 32rpx;
  770. margin-right: 10rpx;
  771. }
  772. }
  773. .logo {
  774. width: 72rpx;
  775. height: 72rpx;
  776. border-radius: 50%;
  777. margin-right: 16rpx;
  778. }
  779. .nav {
  780. padding-top: 20rpx;
  781. }
  782. .album__content {
  783. position: relative;
  784. margin-top: 30rpx;
  785. image {
  786. border-radius: 10rpx;
  787. }
  788. .play {
  789. position: absolute;
  790. top: 40%;
  791. left: 50%;
  792. margin-left: -60rpx;
  793. width: 80rpx;
  794. height: 80rpx;
  795. }
  796. }
  797. .tabbar {
  798. margin-top: 22rpx;
  799. padding: 0 22rpx;
  800. image {
  801. width: 48rpx;
  802. height: 48rpx;
  803. }
  804. view {
  805. display: flex;
  806. align-items: center;
  807. justify-content: flex-start;
  808. }
  809. }
  810. }
  811. }
  812. .topic-head {
  813. position: sticky;
  814. top: 0;
  815. // left: 0;
  816. // right: 0;
  817. z-index: 9;
  818. // padding: 0 200rpx;
  819. .header {
  820. position: relative;
  821. display: flex;
  822. align-items: center;
  823. padding-left: 20rpx;
  824. }
  825. .topic-avatar {
  826. // padding: 0 20rpx;
  827. // position: absolute;
  828. // top: 0;
  829. // left: 0;
  830. z-index: 999;
  831. }
  832. }
  833. .topic-swiper {
  834. position: relative;
  835. .topic-swiper-title {
  836. width: 90%;
  837. color: #fff;
  838. position: absolute;
  839. left: 24rpx;
  840. bottom: 20rpx;
  841. font-size: 28rpx;
  842. }
  843. .swiper {
  844. height: 60vw;
  845. }
  846. .loading-banner-img {
  847. display: block;
  848. width: 100%;
  849. height: 60vw;
  850. }
  851. }
  852. .topic-list {
  853. margin: 0 18rpx;
  854. padding: 0 24rpx;
  855. border-radius: 12rpx;
  856. background-color: white;
  857. .list-li {
  858. padding: 32rpx 0;
  859. border-bottom: 2rpx solid #f0f0f0;
  860. }
  861. .list-li-logo {
  862. width: 242rpx;
  863. height: 136rpx;
  864. margin-left: 32rpx;
  865. border-radius: 12rpx;
  866. }
  867. .loading-list-img {
  868. width: 242rpx;
  869. height: 136rpx;
  870. border-radius: 12rpx;
  871. }
  872. .list-li-left {
  873. flex: 1;
  874. display: flex;
  875. flex-wrap: wrap;
  876. height: 136rpx;
  877. image {
  878. width: 28rpx;
  879. height: 24rpx;
  880. margin-right: 8rpx;
  881. }
  882. .list-li-left-nav {
  883. color: #333;
  884. font-size: 32rpx;
  885. align-self: flex-start;
  886. }
  887. }
  888. .list-li-left-bot {
  889. width: 95%;
  890. font-size: 24rpx;
  891. // margin: 0 auto;
  892. margin-left: 20rpx;
  893. align-self: flex-end;
  894. text {
  895. color: #999;
  896. // margin-right: 32rpx;
  897. }
  898. view {
  899. text {
  900. color: #999;
  901. }
  902. }
  903. }
  904. }
  905. .topic-top {
  906. position: fixed;
  907. bottom: 192rpx;
  908. right: 32rpx;
  909. width: 96rpx;
  910. height: 96rpx;
  911. }
  912. .home {
  913. width: 80vw;
  914. .home-info {
  915. color: #fff;
  916. padding: 39rpx 29rpx;
  917. background: url(/static/image/match/home-bg.png) center top / 100% auto
  918. no-repeat;
  919. image {
  920. width: 120rpx;
  921. height: 120rpx;
  922. border-radius: 50%;
  923. margin-right: 24rpx;
  924. }
  925. view {
  926. font-weight: bold;
  927. }
  928. }
  929. .home-ui {
  930. overflow: hidden;
  931. margin: 0 28rpx;
  932. .home-li {
  933. color: #333;
  934. margin-top: 50rpx;
  935. image {
  936. width: 36rpx;
  937. height: 36rpx;
  938. margin-right: 17rpx;
  939. }
  940. }
  941. }
  942. .logout {
  943. height: 108rpx;
  944. background-color: #fff;
  945. margin: 80rpx 20rpx;
  946. line-height: 108rpx;
  947. color: #ff7b7f;
  948. }
  949. }
  950. </style>