当前位置:网站首页>简易轮播图和打地鼠
简易轮播图和打地鼠
2022-07-25 14:59:00 【盖玥希圈外男友(섭소우)】
目录
轮播图
需求
仍然是没有活的实习生......所以写个最简单的轮播图玩玩。具体要求就是,使用display:none隐藏图片,实现图片的轮播。
思路
结构
具体结构就是,父容器中盛放若干图片,这些图片横向或者纵向排列都行(因为这里使用的是display实现,如果是使用定位实现就需要注意横向或者纵向了)。每一时刻只有一张图片display为block,其余都是none,这样就能保证只有一张图片显示。图片的宽高跟父容器一样,并且设置父容器overflow:hidden(同样,因为是display实现,所以也不需要一定设置这个,但是为了加载时效果正常,还是设置上比较好)。
这就是html和css的基本结构。然后轮播效果需要借助JavaScript实现,一定要用到定时器。为了在同一时刻只有一张图片显示,我们需要一个变量index记录当前显示的是第几张图片。封装一个方法,只显示第index张图片,并且使index递增,然后使用定时器,每隔一段时间调用这个方法即可。
基本轮播图的功能就这样实现。
还可以在图片两侧加上两个按钮,作为显示上一张和下一张的按钮。点击上一张按钮时,先清除定时器,以免引起混乱,然后修改index并让第index张图片显示,再重新开启定时器。下一张按钮的逻辑类似。
代码实现
html部分
<!-- container用来装图片 -->
<div class="container">
<img src="pictures/1.jpg" class="picture">
<img src="pictures/2.jpg" class="picture">
<img src="pictures/3.jpg" class="picture">
<img src="pictures/4.jpg" class="picture">
<img src="pictures/5.jpg" class="picture">
<img src="pictures/6.jpg" class="picture">
<div class="btn last">上</div>
<div class="btn next">下</div>
</div>PS:图片都是盖玥希照片,盖盖太好看了呜呜呜呜......
css部分
.container {
display: flex;
width: 400px;
height: 400px;
overflow-x: hidden;
margin: 200px auto;
/* 相对定位 */
position: relative;
}
.container .picture {
width: 400px;
height: 400px;
}
.container .btn {
position: absolute;
height: 30px;
width: 30px;
line-height: 30px;
text-align: center;
background-color: aliceblue;
border-radius: 50%;
cursor: pointer;
}
.container .last {
left: 20px;
top: 50%;
transform: translateY(-50%);
}
.container .next {
right: 20px;
top: 50%;
transform: translateY(-50%);
}JavaScript部分
// 当前显示第几张图片
let index = 0;
// 获取所有图片
let img_list = document.getElementsByClassName('picture')
// 显示图片
function showImg() {
// 这时候index递增,这样能保证index确实是正在显示的图片
index = (index + 1) % 6
// 除了第index张外全部display:none
for (let i = 0; i < img_list.length; i++) {
img_list[i].style.display = "none"
}
img_list[index].style.display = "block"
}
// 开启定时器
let timer = setInterval(showImg, 1500);
// 点击上一张按钮
function last() {
clearInterval(timer)
if (index === 0) {
index = 5
} else {
index--
}
// 除了第index张外全部display:none
for (let i = 0; i < img_list.length; i++) {
img_list[i].style.display = "none"
}
img_list[index].style.display = "block"
timer = setInterval(showImg, 1500);
}
// 点击下一张图片
function next() {
clearInterval(timer)
index = (index + 1) % 6
// 除了第index张外全部display:none
for (let i = 0; i < img_list.length; i++) {
img_list[i].style.display = "none"
}
img_list[index].style.display = "block"
timer = setInterval(showImg, 1500);
}
let btns = document.getElementsByClassName('btn')
btns[0].onclick = last;
btns[1].onclick = next;实现效果
轮播图演示
总结
本文只是简单用display属性实现了轮播图,效果上并没有定位好一些,以后有时间再做吧。
打地鼠
需求
继续无事......写个打地鼠玩玩。
思路分析
结构
结构其实非常简单。我设计一个九宫格,每个九宫格内随机出现地鼠图片。具体实现方法就是,父元素div中包含9个div,并给父元素开启BFC,便于子元素浮动。子元素全部向左浮动,并且设置好border、width、height,每行三个,形成九宫格。每个子元素都是item类,设置一些统一的样式。有打地鼠的子元素,设置为mouse类。
说完了HTML和css,就该设计JavaScript。
逻辑就是,开启定时器,每次产生与上一次不同的0-8的随机数position,然后设置第position个子元素为mouse、item类,其余都仅仅是item类。然后,给每个item都绑定点击事件回调函数,判断event的目标元素,即event.target,它的class中有没有mouse。如果有mouse,则击中得分。
思路不是很难,行云流水般就可以写出来了。
代码实现
html部分
<div class="count_wrapper">0分</div>
<div class="container">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>在container中放置九个子元素。
css部分
.count_wrapper {
width: 100px;
height: 100px;
margin: 0 auto;
line-height: 100px;
text-align: center;
font-size: 30px;
}
.container {
width: 600px;
height: 600px;
margin: 0 auto;
background-color: antiquewhite;
/* 开启BFC */
overflow: hidden;
}
.container .item {
float: left;
border: 1px solid rgb(211, 209, 209);
width: 198px;
height: 198px;
}
/* 显示地鼠的item */
.mouse {
cursor: pointer;
background-image: url('./pictures/mouse.jpg');
background-size: cover;
background-position: center;
}JavaScript部分
// 随机显示地鼠的地方
let position = 0
// 所有位置
let mouses = document.getElementsByClassName('item')
// 当前得分
let count = 0;
// 得分元素
let count_wrapper = document.getElementsByClassName('count_wrapper')[0]
// 显示地鼠
function showMouse() {
for (let i = 0; i < mouses.length; i++) {
mouses[i].className = 'item'
}
mouses[position].className += " mouse"
}
// 随机显示地鼠
function randomShowMouse() {
let new_position = Math.floor(Math.random() * 9)
// 找到新的随机点
while (new_position == position) {
new_position = Math.floor(Math.random() * 9)
}
position = new_position
// 显示地鼠
showMouse()
}
setInterval(randomShowMouse, 600);
let items = document.getElementsByClassName('item')
for (let i in items) {
items[i].onclick = function (e) {
if (e.target.className.indexOf('mouse') > -1) {
count++
count_wrapper.innerText = count + '分'
}
}
}实现效果
打地鼠演示
总结
打地鼠是个简单有趣的小游戏,也很容易实现。
边栏推荐
- [MySQL series] - how much do you know about the index
- MySQL 45讲 | 06 全局锁和表锁 :给表加个字段怎么有这么多阻碍?
- 39 simple version of millet sidebar exercise
- SQL优化的一些建议,希望可以帮到和我一样被SQL折磨的你
- "How to use" observer mode
- Browser based split screen reading
- 43 盒子模型
- EDA chip design solution based on AMD epyc server
- 河源市区推出消防安全主题奶茶 助推夏季火灾防控
- 44 新浪导航 ,小米边栏 练习
猜你喜欢

基于AMD EPYC服务器的EDA芯片设计解决方案

ESXI6.7.0 升级到7.0U3f(2022年7月12 更新)
[Android] recyclerview caching mechanism, is it really difficult to understand? What level of cache is it?

41 picture background synthesis - colorful navigation map

Raft of distributed consistency protocol

直播课堂系统05-后台管理系统

27 classification of selectors

32 chrome调试工具的使用

Ssh server rejected password

L1 and L2 regularization
随机推荐
阿里云技术专家邓青琳:云上跨可用区容灾和异地多活最佳实践
L1和L2正则化
awk从入门到入土(24)提取指令网卡的ip
关于RDBMS和非RDBMS【数据库系统】
Number of high-quality number pairs [bit operation characteristics + abstract ability evaluation + grouping fast statistics]
System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏
When using jetty to run items, an error is reported: form too large or form too many keys
37 元素模式(行内元素,块元素,行内块元素)
解决asp.net上传文件时文件太大导致的错误
51 single chip microcomputer learning notes (2)
Add the jar package under lib directory to the project in idea
awk从入门到入土(20)awk解析命令行参数
06、类神经网络
Detailed explanation of lio-sam operation process and code
IP address classification, which determines whether a network segment is a subnet supernetwork
Awk from getting started to digging in (21) awk script debugging
As methods for viewing and excluding dependencies
sql server强行断开连接
Live classroom system 05 background management system
ESXI6.7.0 升级到7.0U3f(2022年7月12 更新)