html+css+js实现登录界面设计

news2024/11/25 0:45:29

在现代网页设计中,创建一个功能齐全且用户友好的登录页面是至关重要的。本文将介绍如何使用 HTML 和 CSS 创建一个简单而有效的登录页面,包括验证码、记住密码选项及忘记密码链接。

1. HTML 结构

我们将从 HTML 代码开始,构建一个包含登录表单的页面。以下是代码示例:

<canvas id="myCanvas"></canvas>
    <div class="box">
        <div style=" width: 100%;height: 100%;">
            <div style="display: block;" id="myLogin" style="width: 100%;height: 100%;">
                <div class="left">
                    <button class="register" type="submit" onclick="toggleDivRegister()">去注册</button>
                </div>
                    <div class="right" style="margin-left: 300px;">
                        <h2>登 录</h2>
                        <form method="post" novalidate>
                        {% csrf_token %}
                            <div style="width: 400px;">
                                <div class="form-group">
                                    <label>用户名</label>
                                    {{ form.username }}
                                    <span style="color: red;position:absolute">{{ form.username.errors.0 }}</span>
                                </div>
                                <div class="form-group">
                                    <label>密码</label>
                                    {{ form.password }}
                                    <span style="color: red;position:absolute">{{ form.password.errors.0 }}</span>
                                </div>
                                <div class="form-group">
                                    <label for="id_code">图片验证码</label>
                                    <div class="row">
                                        <div class="col-xs-8">
                                            {{ form.code }}
                                            <span style="color: red;position:absolute">{{ form.code.errors.0 }}</span>
                                        </div>
                                        <div class="col-xs-4">
                                            <img id="image_code" src="/image/code/" style="width: 100%;height: 33px">
                                        </div>
                                    </div>
                                </div>

                                <div style="padding: 10px;">
                                    <span style="float: left;display: flex;justify-content: center;align-content: center;">
                                        <input type="checkbox" style="vertical-align:top;" />
                                        <span style="font-size: 14px;vertical-align:top;padding-left: 5px;margin-top:4px">记住密码</span>
                                    </span>
                                    <span style="float: right;font-size: 15px;color: rgb(74, 159, 244);margin-top:4px">忘记密码?</span>
                                </div>
                            </div>
                            <button class="submit" type="submit">登录</button>
                        </form>
                    </div>
            </div>

            <div style="display: none;" id="myRegister" style="width: 100%;height: 100%;">
                <div class="left">
                    <button class="register" type="submit" onclick="toggleDivLogin()">去登录</button>
                </div>
                <div class="right" style="margin-left: 300px;">
                    <h2 style="color: rgb(1, 59, 100);font-size: 50px;margin-top: 40px;">注 册</h2>
                    <form action="">
                        <div style="width: 400px;">
                            <div>
                                <div style="display: flex;">
                                    <i class="iconPhone distant2"></i>
                                    <input class="content" type="phone" placeholder="请输入手机号"
                                        style="height: 30px; padding-bottom: 10px;" required>
                                </div>
                                <div style="display: flex;">
                                    <i class="iconUser distant2"></i>
                                    <input class="content" type="username" placeholder="请输入用户名"
                                        style="height: 30px; padding-bottom: 10px;" required>
                                </div>
                                <div style="display: flex;">
                                    <i class="iconPassword distant2"></i>
                                    <input class="content" type="password" placeholder="请输入密码"
                                        style="height: 30px; padding-bottom: 10px;" required>
                                </div>
                                <div style="display: flex;">
                                    <i class="iconPassword distant2"></i>
                                    <input class="content" type="password_reset" placeholder="请再次输入密码"
                                        style="height: 30px; padding-bottom: 10px;" required>
                                </div>
                            </div>
                        </div>

                        <button class="submit" type="submit" onclick="submitRegister()">立即注册</button>
                    </form>
                </div>
            </div>
        </div>
    </div>
2. CSS 样式

为了使页面看起来更美观,我们可以添加一些 CSS 样式。将以下样式添加到 styles.css 文件中:

* {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
          overflow: hidden;
        }
        canvas {
          display: block;
          position: absolute;
          z-index: 10;
          background-image: url("../../static/img/2.jpg");
          background-size: cover;
        }

        .box {
            width: 900px;
            height: 500px;
            background-color: rgba(255, 255, 255, 0.7);
            border-radius: 10px;
            box-shadow: 0 0 10px 6px rgba(0, 0, 0, 0.1);
            position: absolute;
            left: 23%;
            top: 25%;
            z-index: 200;
        }

        .box .left {
            width: 35%;
            height: 100%;
            position: absolute;
            z-index: 999;
            background-image: url(../../static/img/2.jpg);
            background-size: cover;
        }

        .register {
            position: absolute;
            width: 60%;
            height: 60px;
            color: #080808;
            background-color: transparent;
            font-size: 20px;
            border-radius: 5ch;
            border: 2px dotted #0984e3;
            margin: 70% 0 0 50%;
            transform: translateX(-50%);
        }

        .register:hover {
            color: #0984e3;
        }

        .box .right {
            display: flex;
            width: 65%;
            flex-direction: column;
            align-items: center;
        }

        .box .right h2 {
            color: rgb(1, 59, 100);
            font-size: 50px;
            margin-top: 50px;
        }

        .box .right form {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
        }

        .box .right form .content {
            width: 100%;
            height: 50px;
            font-size: 20px;
            margin-top: 30px;
            padding: 10px 0 0 10px;
            border: none;
            border-bottom: 1px dotted rgb(1, 59, 100);
            color: #74b9ff;
        }

        .right form .content:focus {
            outline: none;
            color: #74b9ff;
            padding: 10px 0 0 20px;
        }

        .right .submit {
            width: 60%;
            height: 60px;
            color: #f6f6f6;
            background-image: linear-gradient(120deg, rgb(1, 59, 100), #b1d2f6 100%);
            font-size: 20px;
            border-radius: 5ch;
            border: none;
            margin: 30px 0 0 50%;
            transform: translateX(-50%);
        }

        .right .submit:hover {
            box-shadow: 0 0 5px 5px rgba(20, 20, 20, 0.15);
        }

        .iconPhone {
            display: inline-block;
            height: 20px;
            width: 20px;
            background-image: url(../../static/img/phone.svg);
            background-size: cover;
            /*这里放置图标的绝对路径*/
            background-repeat: no-repeat;
        }

        .iconPassword {
            display: inline-block;
            height: 20px;
            width: 20px;
            background-image: url(../../static/img/password.svg);
            background-size: cover;
            /*这里放置图标的绝对路径*/
            background-repeat: no-repeat;
        }

        .iconUser {
            display: inline-block;
            height: 20px;
            width: 20px;
            background-image: url(../../static/img/user.svg);
            background-size: cover;
            /*这里放置图标的绝对路径*/
            background-repeat: no-repeat;
        }

        .distant2 {
            margin-top: 35px;
        }

        .distant1 {
            margin-top: 50px;
        }
3. JavaScript 动态效果

为了增强用户体验,可以添加一些 JavaScript 代码来处理页面上的交互。例如,显示和隐藏注册表单的功能:

const canvas = document.getElementById("myCanvas");
      const ctx = canvas.getContext("2d");
      const width = window.innerWidth;
      const height = window.innerHeight;

      canvas.width = width;
      canvas.height = height;

      const particles = [];
      const connections = [];
      const particleCount = 300;   // 粒子数量
      const particleSpeed = 1;     // 粒子移动速度
      const particleSize = 2;      // 粒子大小
      const maxDistance = 100;     // 粒子连线的最大距离
      const lightningColor = "#fff"; // 粒子连线的颜色

      // 创建粒子类
      class Particle {
        constructor() {
          this.x = Math.random() * width;
          this.y = Math.random() * height;
          this.color = "#fff";
          this.angle = Math.random() * 360;
          this.speed = Math.random() * particleSpeed;
          this.opacity = Math.random() * 0.5 + 0.5;
        }

        update() {
          this.x += Math.cos(this.angle) * this.speed;
          this.y += Math.sin(this.angle) * this.speed;

          // 如果粒子超出画布范围,则重新随机设置位置
          if (this.x < 0 || this.x > width || this.y < 0 || this.y > height) {
            this.x = Math.random() * width;
            this.y = Math.random() * height;
          }
        }

        draw() {
          ctx.beginPath();
          ctx.arc(this.x, this.y, particleSize, 0, Math.PI * 2);
          ctx.fillStyle = `rgba(255, 255, 255, ${this.opacity})`;
          ctx.fill();
        }
      }

      // 创建粒子数组
      function createParticles() {
        for (let i = 0; i < particleCount; i++) {
          particles.push(new Particle());
        }
      }

      // 绘制粒子之间的连线
      function drawConnections() {
        for (let i = 0; i < particles.length; i++) {
          for (let j = i + 1; j < particles.length; j++) {
            const dx = particles[i].x - particles[j].x;
            const dy = particles[i].y - particles[j].y;
            const distance = Math.sqrt(dx * dx + dy * dy);

            if (distance < maxDistance) {
              ctx.beginPath();
              ctx.moveTo(particles[i].x, particles[i].y);
              ctx.lineTo(particles[j].x, particles[j].y);
              ctx.strokeStyle = lightningColor;
              ctx.lineWidth = 0.2 * (1 - distance / maxDistance);
              ctx.stroke();
              ctx.closePath();
            }
          }
        }
      }

      // 动画循环
      function animate() {
        ctx.clearRect(0, 0, width, height);

        for (const particle of particles) {
          particle.update();
          particle.draw();
        }

        drawConnections();

        requestAnimationFrame(animate);
      }

      // 监听鼠标移动事件,根据鼠标位置更新粒子运动状态
      document.addEventListener("mousemove", (e) => {
        const mouseX = e.clientX;
        const mouseY = e.clientY;

        for (const particle of particles) {
          const dx = mouseX - particle.x;
          const dy = mouseY - particle.y;
          const distance = Math.sqrt(dx * dx + dy * dy);

          if (distance < maxDistance) {
            particle.angle = Math.atan2(dy, dx);
            particle.speed = 5;
          } else {
            particle.speed = Math.random() * particleSpeed;
          }
        }
      });

      // 初始化粒子数组并启动动画
      createParticles();
      animate();

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/plugins/bootstrap-3.3.5/css/bootstrap.css">
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
          overflow: hidden;
        }
        canvas {
          display: block;
          position: absolute;
          z-index: 10;
          background-image: url("../../static/img/2.jpg");
          background-size: cover;
        }

        .box {
            width: 900px;
            height: 500px;
            background-color: rgba(255, 255, 255, 0.7);
            border-radius: 10px;
            box-shadow: 0 0 10px 6px rgba(0, 0, 0, 0.1);
            position: absolute;
            left: 23%;
            top: 25%;
            z-index: 200;
        }

        .box .left {
            width: 35%;
            height: 100%;
            position: absolute;
            z-index: 999;
            background-image: url(../../static/img/2.jpg);
            background-size: cover;
        }

        .register {
            position: absolute;
            width: 60%;
            height: 60px;
            color: #080808;
            background-color: transparent;
            font-size: 20px;
            border-radius: 5ch;
            border: 2px dotted #0984e3;
            margin: 70% 0 0 50%;
            transform: translateX(-50%);
        }

        .register:hover {
            color: #0984e3;
        }

        .box .right {
            display: flex;
            width: 65%;
            flex-direction: column;
            align-items: center;
        }

        .box .right h2 {
            color: rgb(1, 59, 100);
            font-size: 50px;
            margin-top: 50px;
        }

        .box .right form {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
        }

        .box .right form .content {
            width: 100%;
            height: 50px;
            font-size: 20px;
            margin-top: 30px;
            padding: 10px 0 0 10px;
            border: none;
            border-bottom: 1px dotted rgb(1, 59, 100);
            color: #74b9ff;
        }

        .right form .content:focus {
            outline: none;
            color: #74b9ff;
            padding: 10px 0 0 20px;
        }

        .right .submit {
            width: 60%;
            height: 60px;
            color: #f6f6f6;
            background-image: linear-gradient(120deg, rgb(1, 59, 100), #b1d2f6 100%);
            font-size: 20px;
            border-radius: 5ch;
            border: none;
            margin: 30px 0 0 50%;
            transform: translateX(-50%);
        }

        .right .submit:hover {
            box-shadow: 0 0 5px 5px rgba(20, 20, 20, 0.15);
        }

        .iconPhone {
            display: inline-block;
            height: 20px;
            width: 20px;
            background-image: url(../../static/img/phone.svg);
            background-size: cover;
            /*这里放置图标的绝对路径*/
            background-repeat: no-repeat;
        }

        .iconPassword {
            display: inline-block;
            height: 20px;
            width: 20px;
            background-image: url(../../static/img/password.svg);
            background-size: cover;
            /*这里放置图标的绝对路径*/
            background-repeat: no-repeat;
        }

        .iconUser {
            display: inline-block;
            height: 20px;
            width: 20px;
            background-image: url(../../static/img/user.svg);
            background-size: cover;
            /*这里放置图标的绝对路径*/
            background-repeat: no-repeat;
        }

        .distant2 {
            margin-top: 35px;
        }

        .distant1 {
            margin-top: 50px;
        }
    </style>
    <script>
        function toggleDivRegister() {
            var x = document.getElementById("myRegister");
            var y = document.getElementById("myLogin");
            x.style.display = "block";
            y.style.display = "none";
        }
        function toggleDivLogin() {
            var x = document.getElementById("myRegister");
            var y = document.getElementById("myLogin");
            x.style.display = "none";
            y.style.display = "block";
        }
        function submitRegister() {
            // alert("注册成功!")
        }
    </script>
</head>
<body>
    <canvas id="myCanvas"></canvas>
    <div class="box">
        <div style=" width: 100%;height: 100%;">
            <div style="display: block;" id="myLogin" style="width: 100%;height: 100%;">
                <div class="left">
                    <button class="register" type="submit" onclick="toggleDivRegister()">去注册</button>
                </div>
                    <div class="right" style="margin-left: 300px;">
                        <h2>登 录</h2>
                        <form method="post" novalidate>
                        {% csrf_token %}
                            <div style="width: 400px;">
                                <div class="form-group">
                                    <label>用户名</label>
                                    {{ form.username }}
                                    <span style="color: red;position:absolute">{{ form.username.errors.0 }}</span>
                                </div>
                                <div class="form-group">
                                    <label>密码</label>
                                    {{ form.password }}
                                    <span style="color: red;position:absolute">{{ form.password.errors.0 }}</span>
                                </div>
                                <div class="form-group">
                                    <label for="id_code">图片验证码</label>
                                    <div class="row">
                                        <div class="col-xs-8">
                                            {{ form.code }}
                                            <span style="color: red;position:absolute">{{ form.code.errors.0 }}</span>
                                        </div>
                                        <div class="col-xs-4">
                                            <img id="image_code" src="/image/code/" style="width: 100%;height: 33px">
                                        </div>
                                    </div>
                                </div>

                                <div style="padding: 10px;">
                                    <span style="float: left;display: flex;justify-content: center;align-content: center;">
                                        <input type="checkbox" style="vertical-align:top;" />
                                        <span style="font-size: 14px;vertical-align:top;padding-left: 5px;margin-top:4px">记住密码</span>
                                    </span>
                                    <span style="float: right;font-size: 15px;color: rgb(74, 159, 244);margin-top:4px">忘记密码?</span>
                                </div>
                            </div>
                            <button class="submit" type="submit">登录</button>
                        </form>
                    </div>
            </div>

            <div style="display: none;" id="myRegister" style="width: 100%;height: 100%;">
                <div class="left">
                    <button class="register" type="submit" onclick="toggleDivLogin()">去登录</button>
                </div>
                <div class="right" style="margin-left: 300px;">
                    <h2 style="color: rgb(1, 59, 100);font-size: 50px;margin-top: 40px;">注 册</h2>
                    <form action="">
                        <div style="width: 400px;">
                            <div>
                                <div style="display: flex;">
                                    <i class="iconPhone distant2"></i>
                                    <input class="content" type="phone" placeholder="请输入手机号"
                                        style="height: 30px; padding-bottom: 10px;" required>
                                </div>
                                <div style="display: flex;">
                                    <i class="iconUser distant2"></i>
                                    <input class="content" type="username" placeholder="请输入用户名"
                                        style="height: 30px; padding-bottom: 10px;" required>
                                </div>
                                <div style="display: flex;">
                                    <i class="iconPassword distant2"></i>
                                    <input class="content" type="password" placeholder="请输入密码"
                                        style="height: 30px; padding-bottom: 10px;" required>
                                </div>
                                <div style="display: flex;">
                                    <i class="iconPassword distant2"></i>
                                    <input class="content" type="password_reset" placeholder="请再次输入密码"
                                        style="height: 30px; padding-bottom: 10px;" required>
                                </div>
                            </div>
                        </div>

                        <button class="submit" type="submit" onclick="submitRegister()">立即注册</button>
                    </form>
                </div>
            </div>
        </div>
    </div>
    <script>
      const canvas = document.getElementById("myCanvas");
      const ctx = canvas.getContext("2d");
      const width = window.innerWidth;
      const height = window.innerHeight;

      canvas.width = width;
      canvas.height = height;

      const particles = [];
      const connections = [];
      const particleCount = 300;   // 粒子数量
      const particleSpeed = 1;     // 粒子移动速度
      const particleSize = 2;      // 粒子大小
      const maxDistance = 100;     // 粒子连线的最大距离
      const lightningColor = "#fff"; // 粒子连线的颜色

      // 创建粒子类
      class Particle {
        constructor() {
          this.x = Math.random() * width;
          this.y = Math.random() * height;
          this.color = "#fff";
          this.angle = Math.random() * 360;
          this.speed = Math.random() * particleSpeed;
          this.opacity = Math.random() * 0.5 + 0.5;
        }

        update() {
          this.x += Math.cos(this.angle) * this.speed;
          this.y += Math.sin(this.angle) * this.speed;

          // 如果粒子超出画布范围,则重新随机设置位置
          if (this.x < 0 || this.x > width || this.y < 0 || this.y > height) {
            this.x = Math.random() * width;
            this.y = Math.random() * height;
          }
        }

        draw() {
          ctx.beginPath();
          ctx.arc(this.x, this.y, particleSize, 0, Math.PI * 2);
          ctx.fillStyle = `rgba(255, 255, 255, ${this.opacity})`;
          ctx.fill();
        }
      }

      // 创建粒子数组
      function createParticles() {
        for (let i = 0; i < particleCount; i++) {
          particles.push(new Particle());
        }
      }

      // 绘制粒子之间的连线
      function drawConnections() {
        for (let i = 0; i < particles.length; i++) {
          for (let j = i + 1; j < particles.length; j++) {
            const dx = particles[i].x - particles[j].x;
            const dy = particles[i].y - particles[j].y;
            const distance = Math.sqrt(dx * dx + dy * dy);

            if (distance < maxDistance) {
              ctx.beginPath();
              ctx.moveTo(particles[i].x, particles[i].y);
              ctx.lineTo(particles[j].x, particles[j].y);
              ctx.strokeStyle = lightningColor;
              ctx.lineWidth = 0.2 * (1 - distance / maxDistance);
              ctx.stroke();
              ctx.closePath();
            }
          }
        }
      }

      // 动画循环
      function animate() {
        ctx.clearRect(0, 0, width, height);

        for (const particle of particles) {
          particle.update();
          particle.draw();
        }

        drawConnections();

        requestAnimationFrame(animate);
      }

      // 监听鼠标移动事件,根据鼠标位置更新粒子运动状态
      document.addEventListener("mousemove", (e) => {
        const mouseX = e.clientX;
        const mouseY = e.clientY;

        for (const particle of particles) {
          const dx = mouseX - particle.x;
          const dy = mouseY - particle.y;
          const distance = Math.sqrt(dx * dx + dy * dy);

          if (distance < maxDistance) {
            particle.angle = Math.atan2(dy, dx);
            particle.speed = 5;
          } else {
            particle.speed = Math.random() * particleSpeed;
          }
        }
      });

      // 初始化粒子数组并启动动画
      createParticles();
      animate();
    </script>
</body>
</html>
实现效果

总结

通过上述步骤,你可以创建一个功能齐全且美观的登录页面。HTML 提供了结构,CSS 美化了样式,JavaScript 处理交互。这种页面设计有助于提升用户体验,并且可以很容易地扩展和定制以满足具体需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2063717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Google SEO】搜索引擎索引综合SEO指南

有没有想过网站是如何在搜索引擎上列出的&#xff0c;以及 Google、Bing 和其他公司如何在几秒钟内为我们提供大量信息&#xff1f; 这种闪电般快速性能的秘诀在于搜索索引。它可以与所有页面的庞大且完美有序的目录档案进行比较。进入索引意味着搜索引擎已经看到了你的页面&a…

机器学习——lightGBM(学习整理)

目录 一、认识lightGBM 1. 简单介绍 2. 主要特点 LightGBM 的缺点 3. 模型训练方式 &#xff08;1&#xff09;Training API &#xff08;2&#xff09;Scikit-learn API 二、相关函数参数 1. Training API 2. Scikit-learn API&#xff08;重复只做补充&#xff09;…

python requests 被屏蔽(已设置header和代理IP,解决浏览器指纹问题)

情况说明&#xff1a; 已设置 User-Agent已使用代理IP之前请求没问题&#xff0c;突然无法请求了。我用浏览器打开网站可以正常访问。 我遇到的原因&#xff1a; 目标网站/接口&#xff0c;能够通过JA3或者其他浏览器指纹信息&#xff0c;识别到你不是通过浏览器进行访问的。…

【解决】JS Uncaught RangeError: Invalid array length

【解决】JS Uncaught RangeError: Invalid array length 在JavaScript编程中&#xff0c;Uncaught RangeError: Invalid array length 是一个相对常见的错误&#xff0c;通常发生在处理数组时提供了无效的长度值。这个错误可能由多种原因引起&#xff0c;本文将深入探讨此错误的…

LCP167 两数之和II--输入有序数组[leetcode-5]

LCP167 两数之和II–输入有序数组 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &#xff0c;则 1 <…

Redis(day 2)

一、常用指令 哈希Hash kv模式不变&#xff0c;但v是一个键值对 &#xff08;1&#xff09;hset、hget命令用于为哈希表中的字段赋值 。 &#xff08;2&#xff09;hmset、hmget 同时将多个field-value对设置到哈希表中。会覆盖哈希表中已存在的字段。 &#xff08;3&…

AI在医学领域:通过声纹特征来预测血糖水平

糖尿病代谢紊乱&#xff08;DM&#xff09;是一种以血糖水平异常为特征的代谢性疾病&#xff0c;其表现为高血糖&#xff08;≥230 mg/dL&#xff09;或低血糖&#xff08;<65 mg/dL&#xff09;。该病导致胰岛素产生或作用受损&#xff0c;胰岛素作为调节葡萄糖稳态的关键激…

20 动态内存管理

目录 一、为什么要有动态内存管理 二、malloc 和 free &#xff08;一&#xff09;malloc &#xff08;二&#xff09;free 三、calloc 和 realloc &#xff08;一&#xff09;calloc &#xff08;二&#xff09;realloc 四、常见的动态内存错误 &#xff08;一&#…

【初阶数据结构】顺序表与链表的比较(附题)

目录 一、顺序表和链表的区别&#xff08;其他链表存在缺陷&#xff0c;比较意义不大&#xff0c;这里用带头双向循环链表与顺序表进行比较&#xff09; 1.1插入、扩容与随机访问 二、缓存利用率的比较 2.1前置知识 详解及补充知识&#xff08;本文仅为比较顺序表及链表&am…

照片怎么转jpg格式?这些照片格式转换方法简单又高效

图片已成为我们日常生活与工作中不可或缺的一部分。然而&#xff0c;面对多种多样的图片格式&#xff0c;如何高效地将它们转换为最常用的JPG格式&#xff0c;成为了许多人面临的难题。下面给大家分享常用的几种照片格式转换方法&#xff0c;一起来了解下吧。 方法一&#xff1…

数据结构之树体系:二叉树、平衡二叉树、红黑树、AVL树、B树、B+树、最小生成树、哈夫曼树、决策树、LSM树、后缀树、R树

概述 数据结构与算法 二叉树 其中每个结点都不能有多于两个子结点&#xff1a; 满二叉树&#xff1a;若设二叉树的高度为 h h h&#xff0c;除第 h h h层外&#xff0c;其它各层(1&#xff5e;h-1) 的结点数都达到最大个数&#xff0c;最后一层都是叶子结点&#xff0c;且叶…

CICD持续集成持续交付部署

一、CICD概念 1、什么是CI/CD&#xff1f; 通俗来说就是启动一个服务&#xff0c;能够监听代码变化&#xff0c;然后自动执行构建、测试、打包、发布等流程&#xff1b; 2、CI 持续集成 指在开发人员频繁地提交新代码&#xff0c;都会自动执行构建、测试。根据测试结果&…

WPS回应“崩了”:提供15天会员补偿,另有新羊毛,你还不来薅?

近期&#xff0c;“WPS崩了”这一话题在时隔两个月后&#xff0c;再次因多名用户反馈软件使用问题而登上微博热搜。 WPS官方微博随后发布消息称&#xff0c;经过工程师的紧急修复&#xff0c;WPS服务已经恢复正常。 为了补偿用户&#xff0c;在8月22日0点至24点期间&#xff…

视频插帧—— RIFE 和 IFNet 的机制和应用

介绍 最近&#xff0c;数字和模拟技术开始加速融合。我们生活在一个人工智能技术能够显著提高质量的时代&#xff0c;只要模拟材料能够数字化。 例如&#xff0c;讨论中涉及到的纸艺软件&#xff0c;纸龙的移动模型被时间锁定&#xff0c;以大约 3 fps&#xff08;每秒帧数&a…

vm 虚拟机无法调用摄像头(亲测有效)

-- 前言1 报错说明1.1 opencv调用摄像头失败&#xff0c;画面窗口无法显示1.2 选择连接摄像头出现失败&#xff1a;桌面右下角出现【USB 设备“Acer Integrated RGB Camera"的连接失败】连接摄像头方法 2 解决方法步骤一步骤二步骤三 补充 前言 网上找的很多方法都是无效…

2024年游泳耳机哪个牌子好?四大热门游泳耳机多维测评盘点!

游泳不仅是夏日里最受欢迎的消暑方式&#xff0c;也是全年无休的一项全身性运动。在水中畅游时&#xff0c;若能伴随着喜爱的音乐&#xff0c;无疑能让体验更上一层楼。近年来&#xff0c;随着骨传导技术和防水材料的进步&#xff0c;游泳耳机已经成为许多游泳爱好者的必备装备…

网络编程,网络协议,UDP编程

网络&#xff1a; 1.协议&#xff1a;通信双方约定的一套标准 2.国际网络通信协议标准&#xff1a; 1.OSI协议&#xff1a; 应用层 发送的数据内容 表示层 数据是否加密 会话层 是否建立会话连接 传输层 …

electron仿微信,新建贴合窗口

说明 在写electron项目时&#xff0c;只有一个主窗口不足以满足需求&#xff0c;我们通常还会打开很多个窗口。 怎么打开一个子窗口像微信的聊天界面一样&#xff0c;全贴合在一起&#xff0c;看起来像一个整体呢&#xff1a; 分析 这个窗口有点像element ui中的抽屉(drawe…

回归预测|基于北方苍鹰优化NGO-Transformer-BiLSTM组合模型的数据预测Matlab程序多特征输入单输出

回归预测|基于北方苍鹰优化NGO-Transformer-BiLSTM组合模型的数据预测Matlab程序多特征输入单输出 文章目录 前言回归预测|基于北方苍鹰优化NGO-Transformer-BiLSTM组合模型的数据预测Matlab程序多特征输入单输出 一、NGO-Transformer-BiLSTM模型回归预测&#xff1a;NGO-Trans…

VUE学习笔记 2

条件渲染 v-if : 若不频繁切换&#xff0c;会删除DOM节点&#xff0c;再重复添加&#xff1b; template只能配合v-if v-show: 适用于频繁切换&#xff0c;动态变换但不删除DOM节点 列表渲染 方式&#xff1a; v-for"p in person" :key"yyy" 遍历数组…