前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >情人节程序员用HTML网页表白【全屏3D相册】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript

情人节程序员用HTML网页表白【全屏3D相册】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript

原创
作者头像
IT司马青衫
发布2022-08-21 09:30:27
3220
发布2022-08-21 09:30:27
举报
文章被收录于专栏:html5期末大作业html5期末大作业

这是程序员表白系列中的100款网站表白之一,旨在让任何人都能使用并创建自己的表白网站给心爱的人看。 此波共有100个表白网站,可以任意修改和使用,很多人会希望向心爱的男孩女孩告白,生性腼腆的人即使那个TA站在眼前都不敢向前表白。说不出口的话就用网页告诉TA吧~制作一个表白网页告诉TA你的心意,演示如下。

@TOC

一、网页介绍

1 网页简介:基于 HTML+CSS+JavaScript 制作七夕情人节表白网页、生日祝福、七夕告白、 求婚、浪漫爱情3D相册、炫酷代码 ,快来制作一款高端的表白网页送(他/她)浪漫的告白,制作修改简单,可自行更换背景音乐,文字和图片即可使用

2.网页编辑:任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad++ 等任意html编辑软件进行运行及修改编辑等操作)。

一、网页效果

在这里插入图片描述
在这里插入图片描述

二、代码展示

1.HTML代码

代码如下(示例):以下仅展示部分代码供参考~

代码语言:html
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>3D Image album</title>

    <style type="text/css">
        html {
            overflow: hidden;
            -ms-touch-action: none;
            -ms-content-zooming: none;
        }

        body {
            position: absolute;
            margin: 0px;
            padding: 0px;
            background: #fff;
            width: 100%;
            height: 100%;
        }

        #canvas {
            position: absolute;
            width: 100%;
            height: 100%;
            background: #fff;
        }
    </style>

    <script type="text/javascript" src="js/ge1doot.js"></script>
    <script type="text/javascript">
        /* 
         * ==============================================================
         * CANVAS 3D experiment - 
         * http://www.dhteumeuleu.com/
         * Author Gerard Ferrandez - 7 June 2010
         * ------------------------------------------------------------
         * GFX: Vieeto Voom - http://www.flickr.com/photos/vieeto_voom/
         * ------------------------------------------------------------
         * Javascript released under the MIT license
         * http://www.dhteumeuleu.com/LICENSE.html
         * Last updated: 12 Dec 2012
         * ===============================================================
         */

        "use strict";

        (function() {
            /* ==== definitions ==== */
            var diapo = [],
                layers = [],
                ctx, pointer, scr, camera, light, fps = 0,
                quality = [1, 2],
                // ---- poly constructor ----
                Poly = function(parent, face) {
                    this.parent = parent;
                    this.ctx = ctx;
                    this.color = face.fill || false;
                    this.points = [];
                    if (!face.img) {
                        // ---- create points ----
                        for (var i = 0; i < 4; i++) {
                            this.points[i] = new ge1doot.transform3D.Point(
                                parent.pc.x + (face.x[i] * parent.normalZ) + (face.z[i] * parent.normalX),
                                parent.pc.y + face.y[i],
                                parent.pc.z + (face.x[i] * parent.normalX) + (-face.z[i] * parent.normalZ)
                            );
                        }
                        this.points[3].next = false;
                    }
                },
                // ---- diapo constructor ----
                Diapo = function(path, img, structure) {
                    // ---- create image ----
                    this.img = new ge1doot.transform3D.Image(
                        this, path + img.img, 1, {
                            isLoaded: function(img) {
                                img.parent.isLoaded = true;
                                img.parent.loaded(img);
                            }
                        }
                    );
                    this.visible = false;
                    this.normalX = img.nx;
                    this.normalZ = img.nz;
                    // ---- point center ----
                    this.pc = new ge1doot.transform3D.Point(img.x, img.y, img.z);
                    // ---- target positions ----
                    this.tx = img.x + (img.nx * Math.sqrt(camera.focalLength) * 20);
                    this.tz = img.z - (img.nz * Math.sqrt(camera.focalLength) * 20);
                    // ---- create polygons ----
                    this.poly = [];
                    for (var i = -1, p; p = structure[++i];) {
                        layers[i] = (p.img === true ? 1 : 2);
                        this.poly.push(
                            new Poly(this, p)
                        );
                    }
                },
                // ---- init section ----
                init = function(json) {
                    // draw poly primitive
                    Poly.prototype.drawPoly = ge1doot.transform3D.drawPoly;
                    // ---- init screen ----
                    scr = new ge1doot.Screen({
                        container: "canvas"
                    });
                    ctx = scr.ctx;
                    scr.resize();
                    // ---- init pointer ----
                    pointer = new ge1doot.Pointer({
                        tap: function() {
                            if (camera.over) {
                                if (camera.over === camera.target.elem) {
                                    // ---- return to the center ----
                                    camera.target.x = 0;
                                    camera.target.z = 0;
                                    camera.target.elem = false;
                                } else {
                                    // ---- goto diapo ----
                                    camera.target.elem = camera.over;
                                    camera.target.x = camera.over.tx;
                                    camera.target.z = camera.over.tz;
                                    // ---- adapt tesselation level to distance ----
                                    for (var i = 0, d; d = diapo[i++];) {
                                        var dx = camera.target.x - d.pc.x;
                                        var dz = camera.target.z - d.pc.z;
                                        var dist = Math.sqrt(dx * dx + dz * dz);
                                        var lev = (dist > 1500) ? quality[0] : quality[1];
                                        d.img.setLevel(lev);
                                    }
                                }
                            }
                        }
                    });
                    // ---- init camera ----
                    camera = new ge1doot.transform3D.Camera({
                        focalLength: Math.sqrt(scr.width) * 10,
                        easeTranslation: 0.025,
                        easeRotation: 0.06,
                        disableRz: true
                    }, {
                        move: function() {
                            this.over = false;
                            // ---- rotation ----
                            if (pointer.isDraging) {
                                this.target.elem = false;
                                this.target.ry = -pointer.Xi * 0.01;
                                this.target.rx = (pointer.Y - scr.height * 0.5) / (scr.height * 0.5);
                            } else {
                                if (this.target.elem) {
                                    this.target.ry = Math.atan2(
                                        this.target.elem.pc.x - this.x,
                                        this.target.elem.pc.z - this.z
                                    );
                                }
                            }
                            this.target.rx *= 0.9;
                        }
                    });
                    camera.z = -10000;
                    camera.py = 0;
                    // ---- create images ----
                    for (var i = 0, img; img = json.imgdata[i++];) {
                        diapo.push(
                            new Diapo(
                                json.options.imagesPath,
                                img,
                                json.structure
                            )
                        );
                    }
                    // ---- start engine ---- >>>
                    setInterval(function() {
                        quality = (fps > 50) ? [2, 3] : [1, 2];
                        fps = 0;
                    }, 1000);
                    run();
                },
                // ---- main loop ----
                run = function() {
                    // ---- clear screen ----
                    ctx.clearRect(0, 0, scr.width, scr.height);
                    // ---- camera ----
                    camera.move();
                    // ---- draw layers ----
                    for (var k = -1, l; l = layers[++k];) {
                        light = false;
                        for (var i = 0, d; d = diapo[i++];) {
                            (l === 1 && d.draw()) ||
                            (d.visible && d.poly[k].draw());
                        }
                    }
                    // ---- cursor ----
                    if (camera.over && !pointer.isDraging) {
                        scr.setCursor("pointer");
                    } else {
                        scr.setCursor("move");
                    }
                    // ---- loop ----
                    fps++;
                    requestAnimFrame(run);
                };
            /* ==== prototypes ==== */
            Poly.prototype.draw = function() {
                // ---- color light ----
                var c = this.color;
                if (c.light || !light) {
                    var s = c.light ? this.parent.light : 1;
                    // ---- rgba color ----
                    light = "rgba(" +
                        Math.round(c.r * s) + "," +
                        Math.round(c.g * s) + "," +
                        Math.round(c.b * s) + "," + (c.a || 1) + ")";
                    ctx.fillStyle = light;
                }
                // ---- paint poly ----
                if (!c.light || this.parent.light < 1) {
                    // ---- projection ----
                    for (
                        var i = 0; this.points[i++].projection();
                    );
                    this.drawPoly();
                    ctx.fill();
                }
            }
            /* ==== image onload ==== */
            Diapo.prototype.loaded = function(img) {
                // ---- create points ----
                var d = [-1, 1, 1, -1, 1, 1, -1, -1];
                var w = img.texture.width * 0.5;
                var h = img.texture.height * 0.5;
                for (var i = 0; i < 4; i++) {
                    img.points[i] = new ge1doot.transform3D.Point(
                        this.pc.x + (w * this.normalZ * d[i]),
                        this.pc.y + (h * d[i + 4]),
                        this.pc.z + (w * this.normalX * d[i])
                    );
                }
            }
            /* ==== images draw ==== */
            Diapo.prototype.draw = function() {
                // ---- visibility ----
                this.pc.projection();
                if (this.pc.Z > -(camera.focalLength >> 1) && this.img.transform3D(true)) {
                    // ---- light ----
                    this.light = 0.5 + Math.abs(this.normalZ * camera.cosY - this.normalX * camera.sinY) * 0.6;
                    // ---- draw image ----
                    this.visible = true;
                    this.img.draw();
                    // ---- test pointer inside ----
                    if (pointer.hasMoved || pointer.isDown) {
                        if (
                            this.img.isPointerInside(
                                pointer.X,
                                pointer.Y
                            )
                        ) camera.over = this;
                    }
                } else this.visible = false;
                return true;
            }
            return {
                // --- load data ----
                load: function(data) {
                    window.addEventListener('load', function() {
                        ge1doot.loadJS(
                            "js/imageTransform3D.js",
                            init, data
                        );
                    }, false);
                }
            }
        })().load({
            imgdata: [
                // north
                {
                    img: 'imgs/1.jpg',
                    x: -1000,
                    y: 0,
                    z: 1500,
                    nx: 0,
                    nz: 1
                },
                {
                    img: 'imgs/2.jpg',
                    x: 0,
                    y: 0,
                    z: 1500,
                    nx: 0,
                    nz: 1
                },
                {
                    img: 'imgs/3.jpg',
                    x: 1000,
                    y: 0,
                    z: 1500,
                    nx: 0,
                    nz: 1
                },
                // east
                {
                    img: 'imgs/4.jpg',
                    x: 1500,
                    y: 0,
                    z: 1000,
                    nx: -1,
                    nz: 0
                },
                {
                    img: 'imgs/5.jpg',
                    x: 1500,
                    y: 0,
                    z: 0,
                    nx: -1,
                    nz: 0
                },
                {
                    img: 'imgs/6.jpg',
                    x: 1500,
                    y: 0,
                    z: -1000,
                    nx: -1,
                    nz: 0
                },
                // south
                {
                    img: 'imgs/7.jpg',
                    x: 1000,
                    y: 0,
                    z: -1500,
                    nx: 0,
                    nz: -1
                },
                {
                    img: 'imgs/8.jpg',
                    x: 0,
                    y: 0,
                    z: -1500,
                    nx: 0,
                    nz: -1
                },
                {
                    img: 'imgs/9.jpg',
                    x: -1000,
                    y: 0,
                    z: -1500,
                    nx: 0,
                    nz: -1
                },
                // west
                {
                    img: 'imgs/10.jpg',
                    x: -1500,
                    y: 0,
                    z: -1000,
                    nx: 1,
                    nz: 0
                },
                {
                    img: 'imgs/11.jpg',
                    x: -1500,
                    y: 0,
                    z: 0,
                    nx: 1,
                    nz: 0
                },
                {
                    img: 'imgs/12.jpg',
                    x: -1500,
                    y: 0,
                    z: 1000,
                    nx: 1,
                    nz: 0
                }
            ],
            structure: [{
                    // wall
                    fill: {
                        r: 255,
                        g: 255,
                        b: 255,
                        light: 1
                    },
                    x: [-1001, -490, -490, -1001],
                    z: [-500, -500, -500, -500],
                    y: [500, 500, -500, -500]
                }, {
                    // wall
                    fill: {
                        r: 255,
                        g: 255,
                        b: 255,
                        light: 1
                    },
                    x: [-501, 2, 2, -500],
                    z: [-500, -500, -500, -500],
                    y: [500, 500, -500, -500]
                }, {
                    // wall
                    fill: {
                        r: 255,
                        g: 255,
                        b: 255,
                        light: 1
                    },
                    x: [0, 502, 502, 0],
                    z: [-500, -500, -500, -500],
                    y: [500, 500, -500, -500]
                }, {
                    // wall
                    fill: {
                        r: 255,
                        g: 255,
                        b: 255,
                        light: 1
                    },
                    x: [490, 1002, 1002, 490],
                    z: [-500, -500, -500, -500],
                    y: [500, 500, -500, -500]
                }, {
                    // shadow
                    fill: {
                        r: 0,
                        g: 0,
                        b: 0,
                        a: 0.2
                    },
                    x: [-420, 420, 420, -420],
                    z: [-500, -500, -500, -500],
                    y: [150, 150, -320, -320]
                }, {
                    // shadow
                    fill: {
                        r: 0,
                        g: 0,
                        b: 0,
                        a: 0.2
                    },
                    x: [-20, 20, 20, -20],
                    z: [-500, -500, -500, -500],
                    y: [250, 250, 150, 150]
                }, {
                    // shadow
                    fill: {
                        r: 0,
                        g: 0,
                        b: 0,
                        a: 0.2
                    },
                    x: [-20, 20, 20, -20],
                    z: [-500, -500, -500, -500],
                    y: [-320, -320, -500, -500]
                }, {
                    // shadow
                    fill: {
                        r: 0,
                        g: 0,
                        b: 0,
                        a: 0.2
                    },
                    x: [-20, 20, 10, -10],
                    z: [-500, -500, -100, -100],
                    y: [-500, -500, -500, -500]
                }, {
                    // base
                    fill: {
                        r: 32,
                        g: 32,
                        b: 32
                    },
                    x: [-50, 50, 50, -50],
                    z: [-150, -150, -50, -50],
                    y: [-500, -500, -500, -500]
                }, {
                    // support
                    fill: {
                        r: 16,
                        g: 16,
                        b: 16
                    },
                    x: [-10, 10, 10, -10],
                    z: [-100, -100, -100, -100],
                    y: [300, 300, -500, -500]
                }, {
                    // frame
                    fill: {
                        r: 255,
                        g: 255,
                        b: 255
                    },
                    x: [-320, -320, -320, -320],
                    z: [0, -20, -20, 0],
                    y: [-190, -190, 190, 190]
                }, {
                    // frame
                    fill: {
                        r: 255,
                        g: 255,
                        b: 255
                    },
                    x: [320, 320, 320, 320],
                    z: [0, -20, -20, 0],
                    y: [-190, -190, 190, 190]
                },
                {
                    img: true
                },
                {
                    // ceilingLight
                    fill: {
                        r: 255,
                        g: 128,
                        b: 0
                    },
                    x: [-50, 50, 50, -50],
                    z: [450, 450, 550, 550],
                    y: [500, 500, 500, 500]
                }, {
                    // groundLight
                    fill: {
                        r: 255,
                        g: 128,
                        b: 0
                    },
                    x: [-50, 50, 50, -50],
                    z: [450, 450, 550, 550],
                    y: [-500, -500, -500, -500]
                }
            ],
            options: {
                imagesPath: ""
            }
        });
    </script>

</head>

<body>

    <canvas id="canvas">你的浏览器不支持HTML5画布技术,请使用谷歌浏览器。</canvas>


</body>

</html>

💂【获取方式】

gitee码云源码仓库-欢迎Star: https://gitee.com/zhanyuqiu2022/my-app

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、网页介绍
  • 一、网页效果
  • 二、代码展示
    • 1.HTML代码
    • 💂【获取方式】
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档