js之真心話大冒險
真心話還是大冒險?相信大家基本上都做過這個遊戲,我們一般都是通過卡牌抽取當前是真心話還是大冒險,那麼向這種卡牌抽取的方式,使用簡單的js也能實現類似卡牌的效果~如下面效果圖:
翻轉卡牌就可以看到自己選擇的是真心話還是大冒險~那麼接下來我們一起來看一下如何實現的吧!
最初只有一張卡牌,通過點選開始,出現多張卡牌
首先,我們要來修飾好卡牌開始的樣子,結構和修飾如下程式碼:
<!-- 存放卡牌的容器 -->
<div class="wrap">
<!-- 開始的卡牌 -->
<div class="card">
<p>開始</p>
<!-- 開始卡牌下方疊加的陰影 -->
<div class="bottom"></div>
<div class="bottom"></div>
<div class="bottom"></div>
</div>
</div>
*{margin: 0;padding: 0;}
body{ background: #ccc;padding-top: 30px;}
.wrap{margin: 0 auto;position:relative;} /* 存放卡牌的容器 */
.card{width: 222px;height: 311px;background: url(img/project_front_bg.png) no-repeat;position:absolute;}
.card p{font-size: 50px;color: #000;text-align: center;line-height: 311px;}
.bottom{width:222px;height:66px;background: url(img/project_card_bot_bg.png) no-repeat;position: absolute;bottom: -3px;left: 0;z-index: -1;transition: all .2s;}
.bottom+.bottom{bottom: -6px;z-index: -2;}
.bottom+.bottom+.bottom{bottom: -9px;z-index: -3;}
.card:hover .bottom{bottom: -8px;}
.card:hover .bottom+.bottom{bottom: -13px;}
.card:hover .bottom+.bottom+.bottom{bottom: -18px;}
在這裡我們設想不同螢幕開啟的卡牌在每排擺放的數量不同,所以不給wrap設定寬度,通過js獲取當前螢幕的寬度在設定寬度
window.onload = function(){
var html = document.querySelector("html");
var oWrap = document.getElementsByClassName('wrap')[0];
//在當前螢幕下一排可以放置幾張卡牌
var num = Math.floor(html.offsetWidth * 0.95 / (222 + 20));
//設定卡牌容器的寬度
oWrap.style.width = num * (222 + 20) + 'px';
}
接下來,要通過給定真心話和大冒險的條數建立卡牌,並調整卡牌所在的位置。卡牌的樣式可以通過css修飾設定好:
/* 卡牌 */
.box{width: 222px;height: 311px;margin-right: 20px;margin-bottom: 20px;position: absolute;display:none;}
/* 卡牌正面 */
.white{width: 222px;height: 311px;background: url(img/project_card_bg.png) no-repeat;backface-visibility: hidden;transition: all 1s cubic-bezier(0.68,-.55,.265,1.55);}
/* 卡牌反面 */
.black{width: 222px;height: 311px;background: url(img/project_back_bg.png) no-repeat;position: absolute;top: 0;left: 0;font-size: 30px;color: #fff;transform: rotateY(180deg);backface-visibility: hidden;transition: all 1s cubic-bezier(0.68,-.55,.265,1.55);}
/* 卡牌反面文字 */
.black p{font-size: 30px;color: #fff;margin-top: 80px;text-align: center;padding: 20px;}
/* 劃過卡牌翻轉 */
.box:hover .white{transform: rotateY(180deg);}
.box:hover .black{transform: rotateY(0deg);}
卡牌的數量需要根據真心話和大冒險的條數動態的建立,可以任意選擇真心話還是大冒險哦~
var str = ['抓著鐵門大喊,放我出去','做自己最性感、最嫵媚的表情或動作','繞著旗杆跳鋼管舞。','繞操場跑一圈,邊跑邊喊,我再也不尿床了。','做一個大家都滿意的鬼臉','跳草裙舞','大喊 燃燒吧,小宇宙~','站起來,大喊"我是超人,我要回家了!"','唱跳RAP混合表演'] ;
//創造卡牌
for(var i = 0;i < str.length;i ++){
var oBox = document.createElement('div');
var oWhite = document.createElement('div');
var oBlack = document.createElement('div');
var oP = document.createElement('p')
oP.innerText = str[i];
oBlack.classList.add('black')
oWhite.classList.add('white')
oBox.classList.add('box')
oBox.appendChild(oWhite)
oBlack.appendChild(oP)
oBox.appendChild(oBlack)
oWrap.appendChild(oBox)
}
接下來,當點選開始卡牌的時候,讓帶有真心話和大冒險的卡牌擺到相應的位置就ok~
// count用來計數一排放幾張卡牌
var count = 1;
// rowCount用來計數總共卡牌有幾行
var rowCount = 0;
oCard.onclick = function(){
var oBox = document.getElementsByClassName('box')
for(var i = 0;i < oBox.length;i ++){
oBox[i].style.display = 'block';
if(count % num == 0){ // 一行放滿卡牌後,下一行卡牌left的位置
count = 0;
oBox[i].style.left = '0px'
rowCount ++
}else{
oBox[i].style.left = (222 + 20) * count + 'px'
}
//一行放滿卡牌後,下一行卡牌top的位置
if(rowCount > 0){
oBox[i].style.top = (311 + 20) * rowCount + 'px'
}
count ++
}
oCard.onclick = null;
}
好了,快動手寫一寫,拿去一起跟其他小夥伴一起玩耍吧~
再也不怕聚會的時候當低頭族了呢!
相關文章
- 稀疏陣列真心話大冒險陣列
- 嚐鮮用 React Hook + Parcel 構建真心話大冒險簡單頁面ReactHook
- 關於飛書大裁員,冒險說幾句大實話。。
- Windows Containers 大冒險: 裝備WindowsAI
- 冒險遊戲已逝?冒險遊戲萬歲!遊戲
- 位元組跳動的遊戲大冒險遊戲
- 《星際火狐大冒險》開發往事
- 《健身環大冒險》開發者訪談
- 學習 PixiJS — 小精靈冒險JS
- 當了程式設計師之後?(真心話)程式設計師
- 遇見最初的冒險! 《冒險島:楓之傳說》騰訊遊戲釋出會宣佈定檔遊戲
- H5 遊戲開發:指尖大冒險H5遊戲開發
- 兀十三的星露谷冒險
- Sneaky Sasquatch Mac(搗蛋大腳怪搞怪冒險遊戲)Mac遊戲
- 【Python】 Python小遊戲-貪吃蛇大冒險Python遊戲
- 設計模式大冒險第一關:觀察者模式設計模式
- JavaScript非同步程式設計大冒險: Async/AwaitJavaScript非同步程式設計AI
- 紙藝歷險Papetura Mac - 點選冒險遊戲Mac遊戲
- 人氣聯機遊戲《只只大冒險》登陸WeGame遊戲GAM
- Sneaky Sasquatch Mac(搗蛋大腳怪生存冒險類遊戲)Mac遊戲
- 冒險島無敵掛小思路
- 基礎互動冒險譚
- 在《JOJO的奇妙冒險》裡,我們能看到哪些冒險遊戲的設計要素?遊戲
- 【潛力新遊】來一場華麗的猜拳大冒險吧!
- 深度解析冒險遊戲必不可少的幾大元素,它們讓“冒險”更有遊戲性遊戲
- 《冒險之門》9月10日App Store首發,一起趣萌動冒險吧APP
- 科幻偵探冒險遊戲《地平線之間》正式發售遊戲
- 《拉吉:遠古傳奇》評測:從古印度神話故事走出的冒險
- 一首古詩帶來的圖資料庫大冒險資料庫
- 冒險島IP正版新作《冒險島:聯盟的意志》來襲,預約就送扎昆套!
- (十九)冒險和預測,解決危險就能抓住機會
- 我為什麼冒險寫QuarkAdmin!
- 動作冒險遊戲俠盜獵車手遊戲
- 冒險島IP正版新作《冒險島:聯盟的意志》“集結測試”定檔10月11日
- 《波利大冒險》如何用激勵視訊廣告優化遊戲體驗?優化遊戲
- 【新遊關注】來一場靈動的異界大冒險吧!
- 安卓內測開啟 《星月-命運之輪》萌趣冒險伴你前行安卓
- 國產動作冒險遊戲《微光之鏡》現提供免費試玩Demo遊戲