首页/ mobileweb/ 小草娱乐直播/ 代码预览

💻 代码预览 · 小草娱乐直播

mw_ent · 上传者 小草网络
← 返回详情
app.js · 约 6016 字符
1// 小草娱乐直播 · 交互逻辑
2function $(id){return document.getElementById(id)}
3const liveCard = l => `
4  <a class="live-card" href="live.html?id=${l.id}" style="--c1:${l.c1};--c2:${l.c2}">
5    <div class="lc-cover">${l.emoji}</div>
6    <span class="lc-tag">${l.tag}</span>
7    <span class="lc-online">🟢 ${l.online}</span>
8    <div class="lc-info">
9      <div class="lc-av">${l.host.slice(0,1)}</div>
10      <div style="flex:1;min-width:0">
11        <div class="lc-name">${l.host}</div>
12        <div class="lc-title">${l.title}</div>
13      </div>
14      <span class="lc-views">👁 ${l.views}</span>
15    </div>
16  </a>`;
17
18// 首页
19let liveCat = '推荐';
20function renderIndex(){
21  const cs = $('cat-scroll');
22  cs.innerHTML = CATS.map(c=>`<a class="${c===liveCat?'active':''}" onclick="setLiveCat('${c}')">${c}</a>`).join('');
23  renderLives();
24  $('rank-list').innerHTML = RANK.map((r,i)=>`
25    <div class="rank-item">
26      <span class="rk-num ${r.top?'top':''}">${i+1}</span>
27      <div class="rk-av">${r.av}</div>
28      <div class="rk-info"><b>${r.name}</b><span>${r.top?'今日热门':'本周新锐'}</span></div>
29      <span class="rk-gift">${r.gift}</span>
30    </div>`).join('');
31  $('video-list').innerHTML = VIDEOS.slice(0,2).map(v=>`
32    <a class="video-feed" href="short.html" style="height:220px;margin:0 12px 12px">
33      <span style="font-size:56px">${v.emoji}</span>
34      <div class="vf-title">${v.title}</div>
35      <div class="vf-user">${v.user}</div>
36      <div class="vf-actions">
37        <div class="va"><span class="vi">👍</span>${v.likes}</div>
38        <div class="va"><span class="vi">💬</span>${v.cmts}</div>
39      </div>
40    </a>`).join('');
41}
42function setLiveCat(c){ liveCat=c; renderIndex(); }
43function renderLives(){
44  const list = liveCat==='推荐' ? LIVES : LIVES.filter(l=>l.cat===liveCat);
45  $('live-list').innerHTML = list.length ? list.map(liveCard).join('') :
46    '<div class="empty"><div class="eicon">📺</div><div>该分类暂无直播</div></div>';
47}
48
49// 直播间
50let curGift = 2;
51function renderLive(){
52  $('l-title').textContent = LIVES[0].title;
53  $('danmu').innerHTML = [
54    '<div class="dm-item"><b>甜甜酱</b>:欢迎新来的朋友,点个关注不迷路~</div>',
55    '<div class="dm-item"><b>夜风</b>:唱得太好听了!</div>',
56    '<div class="dm-item"><b>小鹿</b>:<span class="dm-gift">送出 🚗 跑车</span></div>',
57    '<div class="dm-item"><b>阿明</b>:主播唱首周董的歌吧</div>',
58    '<div class="dm-item"><b>甜甜酱</b>:好的,下一首《晴天》送给大家 🎵</div>',
59  ].join('');
60  $('gift-grid').innerHTML = GIFTS.map((g,i)=>`
61    <div class="gift-item ${i===curGift?'active':''}" onclick="pickGift(${i})">
62      <span class="gi">${g.icon}</span><b>${g.name}</b><span>${g.price}钻</span>
63    </div>`).join('');
64}
65function pickGift(i){ curGift=i; renderLive(); }
66function sendDm(){
67  const txt = $('dm-input').value.trim();
68  if(!txt){ return; }
69  $('danmu').insertAdjacentHTML('beforeend', `<div class="dm-item"><b>我</b>:${txt}</div>`);
70  $('dm-input').value='';
71  $('danmu').scrollTop = $('danmu').scrollHeight;
72}
73function followHost(btn){
74  btn.textContent = '✓ 已关注';
75  btn.style.background = 'rgba(255,255,255,.2)';
76}
77
78// 短视频
79let videoIdx = 0;
80function renderShort(){
81  renderVideo();
82  document.addEventListener('keydown', e=>{ if(e.key==='ArrowDown'){ videoIdx=(videoIdx+1)%VIDEOS.length; renderVideo(); } });
83}
84function renderVideo(){
85  const v = VIDEOS[videoIdx];
86  $('video-feed').innerHTML = `
87    <div class="video-feed" onclick="likeVideo(this)">
88      <span style="font-size:72px">${v.emoji}</span>
89      <div class="vf-title">${v.title}</div>
90      <div class="vf-user">${v.user}</div>
91      <div class="vf-actions">
92        <div class="va"><span class="vi">👍</span>${v.likes}</div>
93        <div class="va"><span class="vi">💬</span>${v.cmts}</div>
94        <div class="va"><span class="vi">↗️</span>${v.shares}</div>
95      </div>
96      <div class="vf-swipe">↑ 上滑切换视频 · 双击点赞 ↓</div>
97    </div>`;
98}
99function likeVideo(el){ alert('👍 已点赞!双击屏幕也能点赞哦'); }
100
101// 关注
102function renderFollows(){
103  const on = FOLLOWS.filter(f=>f.online);
104  const off = FOLLOWS.filter(f=>!f.online);
105  const item = f => `
106    <div class="follow-item">
107      <div class="fl-av">${f.av}</div>
108      <div class="fl-info"><b>${f.name}</b><span>${f.desc}</span></div>
109      <span class="fl-status ${f.online?'on':'off'}">${f.online?'直播中':'未开播'}</span>
110    </div>`;
111  $('on-list').innerHTML = on.map(item).join('') || '<div class="empty"><div class="eicon">📺</div><div>暂无直播中的关注</div></div>';
112  $('off-list').innerHTML = off.map(item).join('') || '<div class="empty"><div class="eicon">💤</div><div>暂无未开播关注</div></div>';
113}
114
115// 充值
116let curRC = 1;
117function renderRecharge(){
118  $('c-coins').textContent = MEMBER.coins + ' 钻';
119  $('rc-grid').innerHTML = RECHARGE.map((r,i)=>`
120    <div class="rc-item ${i===curRC?'active':''}" onclick="pickRC(${i})">
121      <b>${r.coins}</b><span>${r.price}</span>
122      ${r.tag?`<div class="rc-tag">${r.tag}</div>`:''}
123    </div>`).join('');
124  $('gift-shop').innerHTML = GIFTS.map(g=>`
125    <div class="gs-item"><span class="gsi">${g.icon}</span><b>${g.name}</b><span>${g.price}钻</span></div>`).join('');
126}
127function pickRC(i){ curRC=i; renderRecharge(); }
128function doRecharge(){
129  const r = RECHARGE[curRC];
130  alert('💎 即将充值 ' + r.coins + '(' + r.price + ')\n演示环境,未发起真实支付');
131}
132
133// 我的
134function renderMine(){
135  $('m-name').textContent = MEMBER.name;
136  $('m-level').textContent = MEMBER.level + ' · 累计获得 ' + MEMBER.points + ' 经验值';
137  $('m-coins').textContent = MEMBER.coins;
138  $('m-follows').textContent = MEMBER.follows;
139  $('m-fans').textContent = MEMBER.fans;
140}
141