html+css+js 制作表白翻页相册

💛作者主页:静Yu
🧡简介:CSDN全栈优质创作者、华为云享专家、前端知识交流社区创建者
💛社区地址:https://bbs.csdn.net/forums/JingYu
🧡私信我获取源码,点赞、关注、评论

引言

每逢佳节或者女朋友生日是不是不知道该准备什么惊喜、送什么礼物。今天我来教你一手,简单易操作、不需要深度的前端学习,准备一份不一样的礼物。

操作效果

废话不多说,直接上效果视频。

翻页相册

代码学习

1.HTML部分

HTML部分就是通过简单地列表标签和容器标签组成。
项目整体是通过<ul>无序列表标签构成和列表项目标签<li>配合使用,一共为12列,而每一列又定义为一个块,由块级元素<div>完成。
每个<div>标签中是一张照片定义了照片的高度和宽度。
部分源码如下:

       <li>
           <div class='picBox'>
             <div class='show'>
              <img height='180px' width='180px' src='img/pic1.png'>
             </div>
                <div class='hide'>
                        <h3>
                           我❥
                        </h3>
                </div>
            </div>
       </li>
 <li>
                <div class='picBox'>
                    <div class='show'>
                        <img height='180px' width='180px' src='img/pic2.png'>
                    </div>
                    <div class='hide'>
                        <h3>
							好❥
                        </h3>
                    </div>
                </div>
            </li>

2.CSS部分

*{
    margin:0;
}
body{
	background-color: #2F2F2F;
}
.wrapper{
    max-width:900px;
    margin:80px auto;
}
.wrapper li{
    position: relative;
    width: 180px;
    height: 180px;
    list-style:none;
    margin: 5px;
    display: inline-block;
    perspective: 300px;
  }
  .picBox{
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    transform-style: preserve-3d;
    transform-origin: 50% 50% -90px;
    animation: 200ms ease-out 0ms 1 normal forwards;
  }

3.js部分

在HTML部分会引入js文件,代码如下:

   <script src="js/jquery.min.js"></script>
    <script src="js/demo.js"></script>

demo.js

function Index(node) {
    this.node = node;
    this.init();
};
Index.prototype.init = function () {
    var self = this;
    this.nodes = [];
    Array.prototype.slice.call(self.node, 0).forEach(function (item, index) {
        self.nodes.push(self.update(item));
        self.bindEvents(item, index);
    });
};
Index.prototype.update = function (item) {
    return {
        w: item.offsetWidth,
        h: item.offsetHeight,
        l: item.offsetLeft,
        t: item.offsetTop
    }
};
Index.prototype.bindEvents = function (item, index) {
    var self = this;
    $(item).on('mouseenter', function (e) {
        self.addClass(e, item, 'in', index);
        return false;
        
    })
    $(item).on('mouseleave', function (e) {
        self.addClass(e, item, 'out', index);
        return false;
    })
};
Index.prototype.addClass = function (e, item, state, index) {
    var direction = this.getDirection(e, index);
    var class_suffix = '';
    switch (direction) {
        case 0:
            class_suffix = '-top'; 
            break;
        case 1:
            class_suffix = '-right'; 
            break;
        case 2:
            class_suffix = '-bottom';
            break;
        case 3:
            class_suffix = '-left'; 
            break;
    }
    item.className = '';
    item.classList.add(state + class_suffix);
};
Index.prototype.getDirection = function (e, index) {
    var w = this.nodes[index].w,
        h = this.nodes[index].h,
        x = e.pageX - this.nodes[index].l - w / 2 ,
        y = e.pageY - this.nodes[index].t - h / 2 ;
        // 取到x,y两点坐标
        d=(Math.round(((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90)+3) % 4;

    
    return d;//d的数值用于判断方向上下左右。
};
new Index($('li'));

源码给你

一个点赞、一条评论,源码就是你的了!!!
微信搜索:知识小海洋,回复[翻页相册],源码放里面了

JavaScript中创建一个简单的点击切换大图的电子相册,你可以使用HTMLCSSJavaScript(或者结合jQuery库来简化操作)。下面是一个基本的例子: ```html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <style> .carousel { position: relative; width: 100%; height: 400px; overflow: hidden; } .slide { position: absolute; top: 0; left: 0; transition: opacity 0.5s ease; } .active-slide { opacity: 1; } .inactive-slide { opacity: 0; } </style> </head> <body> <div class="carousel"> <img src="image1.jpg" class="slide active-slide"> <img src="image2.jpg" class="slide inactive-slide"> <!-- 添加更多图片 --> </div> <button onclick="nextSlide()">下一张</button> <button onclick="prevSlide()">上一张</button> <script> var slides = document.querySelectorAll('.slide'); let currentSlideIndex = 0; function showSlide(index) { slides.forEach(slide => { slide.classList.remove('active-slide', 'inactive-slide'); }); slides[index].classList.add('active-slide'); if (index >= slides.length) { index = 0; } else if (index < 0) { index = slides.length - 1; } currentSlideIndex = index; } function nextSlide() { showSlide(currentSlideIndex + 1); } function prevSlide() { showSlide(currentSlideIndex - 1); } // 初始设置第一张为激活状态 showSlide(0); </script> </body> </html> ``` 在这个例子中,我们有两张图片作为滑动内容,通过`.slide`和`.active-slide` `.inactive-slide`的样式控制显示隐藏。按钮触发`nextSlide()` 和 `prevSlide()` 函数,改变当前图片的状态。每张图片都有一个`.slide`类,表示它们都是动态内容的一部分。
评论 67
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静Yu

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值