文章目录
- 📚实现效果
- 📚模块实现解析
- 🐇html
- 🐇css
- 🐇javascript
📚实现效果
- 绘制单词卡片效果,实现点击左半部分上翻,点击右半部分下翻。
📚模块实现解析
🐇html
- 搭个框架
<!-- 左边 --> <div class="count"> <!-- 易混词 --> <div id="cloudtitle">那些讨厌的<span>易混词</span></div> <p style="font-size: 0.9vw; color: #575656;">点击<span class="hint">左</span>半部分<span class="hint">上</span>翻,点击<span class="hint">右</span>半部分<span class="hint">下</span>翻。</p> <div class="flashcard-container"> <div class="flashcard"> <h3>compliment</h3> <p>n.致意,问候;赞美,称赞</p> <p>v.赞扬;称赞</p> <h3>complement</h3> <p>v.补充,补足,使完美</p> <p>n.补充物;补足物</p> <h3>implement</h3> <p>v.实施,贯彻,执行;使生效</p> <P>n.工具,器具;户外用具</P> <br> <h3>AI造句助记</h3> <p>当你成功<span>implement</span>了一项计划,你会发现它<span>complements</span>你的整体工作,而你的努力也会得到<span>compliments</span>。</p> </div> <div class="flashcard"> <h3>executive</h3> <p>n.经理,主管,行政部门</p> <p>adj.执行的,行政的;高级的</p> <h3>exclusive</h3> <p>adj.独占的;高档的;排斥的</p> <p>adj.不包括...的</p> <p>n.独家新闻,独家报道</p> <h3>excessive</h3> <p>adj.过分的,过多的</p> <br> <h3>AI造句助记</h3> <p>这家俱乐部对于特定的高管和商界精英开放,是一个<span>exclusive</span>的社交圈子。他们在这里能够享受到奢华待遇,符合他们高<span>executive</span>级别的身份,但有时<span>excessive</span>的奢侈也让人担忧。</p> </div> </div> </div>
- 新一组单词即新增一组
flashcard
,对应flashcard
可参照下述prompt进行快速生成↓<div class="flashcard"> <h3>executive</h3> <p>n.经理,主管,行政部门</p> <p>adj.执行的,行政的;高级的</p> <h3>exclusive</h3> <p>adj.独占的;高档的;排斥的</p> <p>adj.不包括...的</p> <p>n.独家新闻,独家报道</p> <h3>excessive</h3> <p>adj.过分的,过多的</p> <br> <h3>AI造句助记</h3> <p>这家俱乐部对于特定的高管和商界精英开放,是一个<span>exclusive</span>的社交圈子。他们在这里能够享受到奢华待遇,符合他们高<span>executive</span>级别的身份,但有时<span>excessive</span>的奢侈也让人担忧。</p> </div>
- 请参照上述格式,生成confess、congress、compress的对应词卡,我希望最后的AI造句是将上述四个单词按上述形式串联成一句语义连贯的话。返回↓
<div class="flashcard"> <h3>confess</h3> <p>v.坦白,供认</p> <p>v.忏悔</p> <h3>congress</h3> <p>n.国会</p> <p>n.代表大会,会议</p> <h3>compress</h3> <p>v.压缩,浓缩</p> <p>n.紧缩</p> <br> <h3>AI造句助记</h3> <p>他最终不得不<span>confess</span>了自己的罪行,在国际<span>congress</span>上他公开承认了错误。为了节省空间,他需要<span>compress</span>所有的数据,在这场会议上只能说重点。</p> </div>
- 请参照上述格式,生成confess、congress、compress的对应词卡,我希望最后的AI造句是将上述四个单词按上述形式串联成一句语义连贯的话。返回↓
🐇css
- 实现卡片效果(圆角 + 字体设置)
body{ margin: 0; padding: 0; background-color: #f5f3f2; } .count{ margin: 0 auto; /* background-color: pink; */ /* height: 200vh; */ position: absolute; left: 3%; top:8%; width: 28%; font-family: serif; font-size: 1.5vw; text-align: center; } /* 标题 */ #cloudtitle{ margin: 0 auto; margin-top: 35px; } #cloudtitle span{ font-size: 1.5vw; margin-bottom: 3px; font-weight: bold; color: #2966cf; } /* 易混词 */ .hint{ font-family: 'serif'; color: #ecbc41; font-size: 1vw; font-weight: bold; } .flashcard-container { width: 70%; margin: 0 auto; background: linear-gradient(to bottom, #dbedfb, #f6f9e4); border-radius: 30px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); display: flex; flex-direction: column; align-items: center; padding: 20px; transition: transform 0.5s ease; } .flashcard { width: 100%; padding: 10px; background-color: #fff; color: #333; display: flex; flex-direction: column; align-items: center; border-radius: 30px; text-align: center; } .flashcard h3 { margin: 0; margin-top: 1.3vw; font-size: 1.3vw; color: #5698c3; } .flashcard p { font-size: 1.2vw; margin: 1.2px 0; } .flashcard span{ font-size: 1.2vw; color: #ecbc41; font-weight: bold; }
🐇javascript
- 实现点击翻页效果
const flashcardContainer = document.querySelector('.flashcard-container'); const flashcards = document.querySelectorAll('.flashcard'); let index = 0; let startY; function showCard(index) { flashcards.forEach((card, idx) => { if (idx === index) { card.style.display = 'flex'; } else { card.style.display = 'none'; } }); } flashcardContainer.addEventListener('click', function (e) { const rect = flashcardContainer.getBoundingClientRect(); const clickX = e.clientX - rect.left; const containerWidth = rect.width; if (clickX < containerWidth / 2) { index = (index - 1 + flashcards.length) % flashcards.length; } else { index = (index + 1) % flashcards.length; } showCard(index); }); showCard(index);
- 补充滚轮翻页(但由于只适配电脑端,最后没有应用)
flashcardContainer.addEventListener('wheel', function (e) { if (e.target.closest('.flashcard-container') === flashcardContainer) { const deltaY = e.deltaY > 0 ? 1 : -1; index = (index + deltaY + flashcards.length) % flashcards.length; showCard(index); e.preventDefault(); } })
e.preventDefault();
排除词卡滚动翻页对整体页面的干扰影响。