618快到了送上自制前端小项目(html css js)
🚩
🏠
✨
🎃
前言:这些小项目全都是自创的。 博主联系,感谢你们的理解,
1.自定义播放器
在页面中放置26个div,每个div中写一个字 母。html结构中引入8个音频结构。给每个 div绑定点击键盘事件。根据键盘的每个 keyCode的不同来动态绑定对应的音频文件。 当按下对应的键盘字母,增添css样式, 音频播放。放开时,存储点击的事件, 将对应的音频存储在一个数组中。 点击按钮,循环播放存储的音频数组
html:
<div id="container"> <div data-key="81" class="key"> <kbd>Q</kbd> <span class="sound">clap</span> </div> <div data-key="87" class="key"> <kbd>W</kbd> <span class="sound">clap</span> </div> <div data-key="69" class="key"> <kbd>E</kbd> <span class="sound">clap</span> </div> <div data-key="82" class="key"> <kbd>R</kbd> <span class="sound">clap</span> </div> <div data-key="84" class="key"> <kbd>T</kbd> <span class="sound">clap</span> </div> <div data-key="89" class="key"> <kbd>Y</kbd> <span class="sound">clap</span> </div> <div data-key="85" class="key"> <kbd>U</kbd> <span class="sound">clap</span> </div> <div data-key="73" class="key"> <kbd>I</kbd> <span class="sound">clap</span> </div> <div data-key="79" class="key"> <kbd>O</kbd> <span class="sound">clap</span> </div> <div data-key="80" class="key"> <kbd>P</kbd> <span class="sound">clap</span> </div> <div data-key="65" class="key"> <kbd>A</kbd> <span class="sound">clap</span> </div> <div data-key="83" class="key"> <kbd>S</kbd> <span class="sound">clap</span> </div> <div data-key="68" class="key"> <kbd>D</kbd> <span class="sound">clap</span> </div> <div data-key="70" class="key"> <kbd>F</kbd> <span class="sound">clap</span> </div> <div data-key="71" class="key"> <kbd>G</kbd> <span class="sound">clap</span> </div> <div data-key="72" class="key"> <kbd>H</kbd> <span class="sound">clap</span> </div> <div data-key="74" class="key"> <kbd>J</kbd> <span class="sound">clap</span> </div> <div data-key="75" class="key"> <kbd>K</kbd> <span class="sound">clap</span> </div> <div data-key="76" class="key"> <kbd>L</kbd> <span class="sound">clap</span> </div> <div data-key="90" class="key"> <kbd>Z</kbd> <span class="sound">clap</span> </div> <div data-key="88" class="key"> <kbd>X</kbd> <span class="sound">clap</span> </div> <div data-key="67" class="key"> <kbd>C</kbd> <span class="sound">clap</span> </div> <div data-key="86" class="key"> <kbd>V</kbd> <span class="sound">clap</span> </div> <div data-key="66" class="key"> <kbd>B</kbd> <span class="sound">clap</span> </div> <div data-key="78" class="key"> <kbd>N</kbd> <span class="sound">clap</span> </div> <div data-key="77" class="key"> <kbd>M</kbd> <span class="sound">clap</span> </div> </div> <div id=btn>提交数据</div> <audio data-key="81" src="sounds/clap.wav"></audio> <audio data-key="87" src="sounds/hihat.wav"></audio> <audio data-key="69" src="sounds/kick.wav"></audio> <audio data-key="82" src="sounds/openhat.wav"></audio> <audio data-key="84" src="sounds/boom.wav"></audio> <audio data-key="89" src="sounds/ride.wav"></audio> <audio data-key="85" src="sounds/snare.wav"></audio> <audio data-key="73" src="sounds/tom.wav"></audio> <audio data-key="79" src="sounds/tink.wav"></audio> <audio data-key="80" src="sounds/clap.wav"></audio> <audio data-key="83" src="sounds/hihat.wav"></audio> <audio data-key="68" src="sounds/kick.wav"></audio> <audio data-key="65" src="sounds/openhat.wav"></audio> <audio data-key="71" src="sounds/boom.wav"></audio> <audio data-key="72" src="sounds/ride.wav"></audio> <audio data-key="74" src="sounds/snare.wav"></audio> <audio data-key="75" src="sounds/tom.wav"></audio> <audio data-key="76" src="sounds/tink.wav"></audio> <audio data-key="70" src="sounds/clap.wav"></audio> <audio data-key="90" src="sounds/hihat.wav"></audio> <audio data-key="88" src="sounds/kick.wav"></audio> <audio data-key="67" src="sounds/openhat.wav"></audio> <audio data-key="86" src="sounds/openhat.wav"></audio> <audio data-key="66" src="sounds/boom.wav"></audio> <audio data-key="78" src="sounds/ride.wav"></audio> <audio data-key="77" src="sounds/snare.wav"></audio>
css:
*{ margin:0; padding:0; } .top{ width:100%; height:100px; } .top i{ font-size: 24px; } .top-left{ width:20%; height:100%; float:left; text-align: center; line-height: 100px; position: relative; } .top-left .cls5{ position: absolute; left:40px; } .top-middle{ width:50%; height:100%; float:left; text-align: center; line-height: 100px; position:relative; } .top-middle .cls1{ position: absolute; left:30px; } .top-middle .cls2{ position: absolute; left:60px; } .top-middle .cls3{ position: absolute; right:500px; } .top-middle .container{ width:300px; height:40px; border:1px solid whitesmoke; border-radius: 10px; position:absolute; left:100px; top:30px; text-align: center; line-height: 40px; } .top-middle .container .cls4{ position: absolute; left:20px; } .top-right{ width:30%; height:100%; float:right; } .top-right ul{ list-style: none; text-align: center; height:100px; line-height:100px ; } .top-right ul li{ float:right; margin:0 20px 0 20px; } .bottom{ width:100%; height:100px; margin-top:710px; } .bottom i{ font-size: 24px; } .bottom-left{ width:20%; height:100px; line-height: 100px; float:left; text-align: center; } .bottom-left ul{ list-style: none; } .bottom-left ul li{ float:left; margin:0 30px 0 30px; } .bottom-mid{ width:50%; height:100px; line-height: 100px; float:left; } .bottom-mid ul{ list-style: none; } .bottom-mid ul li{ float:left; margin: auto 50px; } .bot-mid-top{ width:100%; height:60px; text-align: center; line-height: 50px; } .bot-mid-top .clf1{ margin-left:250px; } .bot-mid-bot{ width:100%; height:40px; line-height: 40px; } .bot-mid-bot .item{ width:80%; border:1px solid #333; border-radius: 3px; height:9px; margin-top:12px; margin-left:100px; } .bottom-right{ width:30%; height:100px; line-height: 100px; float:left; } .bottom-right ul{ list-style: none; } .bottom-right ul li{ float:left; margin:0 30px 0 30px; } .bottom-right ul .clf2{ margin-left:200px; }
js:
let audioArr = [] function removeClass(e) { let key = document.querySelector(`div[data-key="${e.keyCode}`) let audio = document.querySelector(`audio[data-key="${e.keyCode}"]`) key.classList.remove(playing) audioArr.push(audio) } function playAudio(e) { let key = document.querySelector(`div[data-key="${e.keyCode}`) let audio = document.querySelector(`audio[data-key="${e.keyCode}"]`) key.classList.add(playing) //audio.currentTime = 0; // 每次播放之后都使音频播放进度归零 if (!audio) return; audio.play() } window.addEventListener(keydown, e => playAudio(e)) window.addEventListener(keyup, e => removeClass(e)) const btn = document.getElementById(btn) function Play() { const self=this const item1=setInterval(function(){ self.i++ console.log(self.i) audioArr[self.i-2].play() if(self.i>audioArr.length){ clearInterval(item1) } }, 200); } let obj={ i:1 } function bind(){ Play.call(obj) } btn.addEventListener("click",bind)
2.图片自动消失
一张图片,在其右上角放置一个div ,分别得到那个元素,在div中插入数字 开启一个定时器,每隔一段时间减一。 直到为0.图片消失
<style> .ad{ width:400px; height:400px; background-image: url(img/1.jpg); position:relative; margin:200px auto; } #sj{ display:block; width:40px; height:40px; line-height:30px; border-radius:50%; border:1px solid red; position:absolute; top:20px; right:20px; text-decoration: none; text-align: center; line-height: 40px; font-size: 20px; } </style> </head> <body> <div id="gg" class="ad"> <a href="" > <span id="sj">5</span></a> </div> <script> var gg=document.getElementById("gg"); var sj=document.getElementById("sj") var time=setInterval(function(){ sj.innerHTML-=1; if(sj.innerHTML==0){ gg.style.display="none"; clearInterval(time); } },1000); </script> </body>
yy3.小轮播图
放置三张图片,移动到那个图片, 改变他的偏移量。
*{ padding:0; margin:0; } body,html{ width:100%; overflow:hidden; } #wrap1{ width:100%; position:absolute; bottom:0; left:0; text-align: center; } #wrap1>img{ width:64px; } </style> </head> <body> <div id="wrap1"> <img src="img/1.png" /> <img src="img/2.png" /> <img src="img/3.png" /> <img src="img/4.png" /> <img src="img/5.png" /> </div> <script type="text/javascript"> window.onload=function(){ var r=320 var imgNodes=document.querySelectorAll("#wrap1>img") document.onmousemove=function(ev){ ev=ev||event for(var i=0;i<imgNodes.length;i++){ var a= imgNodes[i].getBoundingClientRect().top+imgNodes[i].offsetHeight/2-ev.clientY var b= imgNodes[i].getBoundingClientRect().right+ imgNodes[i].offsetWidth/2-ev.clientX var c=Math.sqrt(a*a+b*b) if(c>=r){ c=r } imgNodes[i].style.width=128-c*0.2+px } } } </script>
4.旋转音乐盒
旋转音乐盒
旋转音乐盒放置六张图片,将他们绝对定位。 根据所学css来对每一张图片进行定位 然后就是当点击哪一个图片时,播放 对应的音频音乐。
css:
*{ padding:0; margin:0; } .cube{ width:200px; height:200px; position: relative; margin:200px auto; //使效果呈现3d效果 transform-style: preserve-3d; animation: rotate 30s infinite linear; } @keyframes rotate{ from{ transform:rotateX(0deg) rotateY(0deg); } to{ transform: rotateX(360deg) rotateY(360deg); } } html{ //屏幕与我们的视距 perspective: 10000px; } .cube>div{ width:200px; height:200px; position:absolute; opacity: 0.7; } img{ width:200px; height:200px; } .box1{ transform: rotateX(90deg) translateZ(100px); } .box2{ transform: rotateX(-90deg) translateZ(100px); } .box3{ transform: rotateY(0deg) translateZ(100px); } .box4{ transform: rotateY(180deg) translateZ(100px); } .box5 { transform: rotateY(90deg) translateZ(100px); } .box6 { transform: rotateY(-90deg) translateZ(100px); } .change{ transform: translateZ(50px); } </style>
html:
<div class="cube"> <div class="box1" data-key="1"><img src="./img/imgs/1.jpg"></div> <div class="box2" data-key="2"><img src="./img/imgs/2.jpg"></div> <div class="box3" data-key="3"><img src="./img/imgs/3.jpg"></div> <div class="box4" data-key="4"><img src="./img/imgs/4.jpg"></div> <div class="box5" data-key="5"><img src="./img/imgs/5.jpg"></div> <div class="box6" data-key="6"><img src="./img/imgs/6.jpg"></div> </div> <audio src="./img/audio/1.mp3" data-key="1"></audio> <audio src="./img/audio/2.mp3" data-key="2"></audio> <audio src="./img/audio/3.mp3" data-key="3"></audio> <audio src="./img/audio/4.mp3" data-key="4"></audio> <audio src="./img/audio/5.mp3" data-key="5"></audio>
js:
let divs=document.querySelectorAll(.cube>div) let audios=document.querySelectorAll(audio) for(let i=0;i<divs.length;i++){ for(let j=0;j<audios.length;j++){ if(divs[i].dataset.key===audios[j].dataset.key){ divs[i].onclick=function(){ audios[j].play() } } } }
✍在最后,如果觉得博主写的还行