让AI帮忙写个需求,AI写出来了,只是有bug而已

这篇具有很好参考价值的文章主要介绍了让AI帮忙写个需求,AI写出来了,只是有bug而已。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求

使用原生JS和iframe,嵌入网页进行轮播,需要可以点击暂停、上一页、下一页。

AI的答案

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>轮播图</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    .slider-wrapper {
      position: relative;
      width: 100%;
      height: 100vh;
      margin: 0 auto;
      overflow: hidden;
    }

    .slider-wrapper .iframe_box {
      position: absolute;
      width: 100%;
      height: 100%;
      border: none;
      opacity: 0;
      transition: opacity .5s ease-in-out;
    }

    .slider-wrapper iframe.active {
      opacity: 1;
    }

    .slider-prev,
    .slider-next {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      width: 30px;
      height: 30px;
      border: solid #000;
      border-width: 0 3px 3px 0;
      cursor: pointer;
    }

    .slider-prev {
      left: 20px;
      transform: rotate(135deg) translateY(-50%);
    }

    .slider-next {
      right: 20px;
      transform: rotate(-45deg) translateY(-50%);
    }

    .slider-control {
      position: absolute;
      bottom: 20px;
      left: 50%;
      transform: translateX(-50%);
      z-index: 1;
      display: flex;
      justify-content: center;
      align-items: center;
    }

    .slider-control-item {
      width: 10px;
      height: 10px;
      border-radius: 50%;
      background-color: #ccc;
      margin: 0 10px;
      cursor: pointer;
    }

    .slider-control-item.active {
      background-color: #000;
    }

    .slider-toggle {
      position: absolute;
      top: 20px;
      right: 20px;
      z-index: 1;
      cursor: pointer;
    }

    .slider-toggle.active:before {
      content: "暂停";
    }

    .slider-toggle:before {
      content: "开始";
      background: green;
      font-size: 30px;
      padding: 10px;
      margin-right: 20px;
      border-radius: 10px;
    }
  </style>
</head>

<body>
  <div class="slider-wrapper">
    <iframe class="iframe_box" src="https://www.163.com" allow-same-origin></iframe>
    <iframe class="iframe_box" src="https://cn.vuejs.org/guide/introduction.html" allow-same-origin></iframe>
    <iframe class="iframe_box" src="https://www.suning.com" allow-same-origin></iframe>
    <div class="slider-prev"></div>
    <div class="slider-next"></div>
    <div class="slider-control"></div>
    <div class="slider-toggle"></div>
  </div>
  <script>
    window.onload = function () {
      var wrapper = document.querySelector(".slider-wrapper");
      var iframes = wrapper.querySelectorAll("iframe");
      var prev = wrapper.querySelector(".slider-prev");
      var next = wrapper.querySelector(".slider-next");
      var control = wrapper.querySelector(".slider-control");
      var toggle = wrapper.querySelector(".slider-toggle");
      var current = 0;
      var timer = null;
      var isPlaying = true;

      // 初始化
      iframes[current].classList.add("active");
      renderControl();

      // 上一页
      prev.onclick = function () {
        current--;
        if (current < 0) {
          current = iframes.length - 1;
        }
        render();
      }

      // 下一页
      next.onclick = function () {
        current++;
        if (current >= iframes.length) {
          current = 0;
        }
        render();
      }

      // 控制点
      control.onclick = function (e) {
        var index = getIndex(e.target);
        if (index !== -1 && index !== current) {
          current = index;
          render();
        }
      }

      // 开始/暂停
      toggle.onclick = function () {
        isPlaying = !isPlaying;
        toggle.classList.toggle("active");
        if (isPlaying) {
          start();
        } else {
          stop();
        }
      }

      // 渲染轮播图
      function render() {
        for (var i = 0; i < iframes.length; i++) {
          iframes[i].classList.remove("active");
        }
        iframes[current].classList.add("active");
        renderControl();
      }

      // 渲染控制点
      function renderControl() {
        control.innerHTML = "";
        for (var i = 0; i < iframes.length; i++) {
          var item = document.createElement("div");
          item.className = "slider-control-item" + (i === current ? " active" : "");
          control.appendChild(item);
        }
      }

      // 获取控制点的索引
      function getIndex(target) {
        if (target.classList.contains("slider-control-item")) {
          var items = control.querySelectorAll(".slider-control-item");
          for (var i = 0; i < items.length; i++) {
            if (items[i] === target) {
              return i;
            }
          }
        }
        return -1;
      }

      // 自动轮播
      function start() {
        stop();
        timer = setInterval(function () {
          current++;
          if (current >= iframes.length) {
            current = 0;
          }
          render();
        }, 2000);
      }

      function stop() {
        clearInterval(timer);
        timer = null;
      }

      start();
    }
  </script>
</body>

</html>

但是可以发现:嵌入的网页,只有最后一个页面可以点击

我还以为在嵌入 iframe 的网页中,可能存在跨域访问的问题,导致无法点击。这是由于浏览器的同源策略所导致的。

后来使用 z-index 解决了。

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>轮播图</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    .slider-wrapper {
      position: relative;
      width: 100%;
      height: 100vh;
      margin: 0 auto;
      overflow: hidden;
    }

    .slider-wrapper .iframe_box {
      position: absolute;
      width: 100%;
      height: 100%;
      border: none;
      opacity: 0;
      transition: opacity .5s ease-in-out;
	    z-index:0;
    }

    .slider-wrapper iframe.active {
      opacity: 1;
	    z-index: 10;
    }

    .slider-prev,
    .slider-next {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      width: 30px;
      height: 30px;
      border: solid #000;
      border-width: 0 3px 3px 0;
      cursor: pointer;
      z-index:100;
    }

    .slider-prev {
      left: 20px;
      transform: rotate(135deg) translateY(-50%);
    }

    .slider-next {
      right: 20px;
      transform: rotate(-45deg) translateY(-50%);
    }

    .slider-control {
      position: absolute;
      bottom: 20px;
      left: 50%;
      transform: translateX(-50%);
      z-index: 100;
      display: flex;
      justify-content: center;
      align-items: center;
    }

    .slider-control-item {
      width: 10px;
      height: 10px;
      border-radius: 50%;
      background-color: #ccc;
      margin: 0 10px;
      cursor: pointer;
	    z-index:100;
    }

    .slider-control-item.active {
      background-color: #000;
	    z-index:100;
    }

    .slider-toggle {
      position: absolute;
      top: 20px;
      right: 20px;
      z-index: 1;
      cursor: pointer;
	    z-index:100;
    }

    .slider-toggle.active:before {
      content: "暂停";
	    z-index:100;
    }

    .slider-toggle:before {
	    z-index:100;
      content: "开始";
      background: green;
      font-size: 30px;
      padding: 10px;
      margin-right: 20px;
      border-radius: 10px;
    }
  </style>
</head>

<body>
  <div class="slider-wrapper">
    <iframe class="iframe_box" src="https://cn.vuejs.org/guide/introduction.html" allow-same-origin></iframe>
    <iframe class="iframe_box" src="https://www.suning.com" allow-same-origin></iframe>
    <iframe class="iframe_box" src="https://www.163.com" allow-same-origin></iframe>
    <div class="slider-prev"></div>
    <div class="slider-next"></div>
    <div class="slider-control"></div>
    <div class="slider-toggle"></div>
  </div>
  <script>
    window.onload = function () {
      var wrapper = document.querySelector(".slider-wrapper");
      var iframes = wrapper.querySelectorAll("iframe");
      var prev = wrapper.querySelector(".slider-prev");
      var next = wrapper.querySelector(".slider-next");
      var control = wrapper.querySelector(".slider-control");
      var toggle = wrapper.querySelector(".slider-toggle");
      var current = 0;
      var timer = null;
      var isPlaying = true;

      // 初始化
      iframes[current].classList.add("active");
      renderControl();

      // 上一页
      prev.onclick = function () {
        current--;
        if (current < 0) {
          current = iframes.length - 1;
        }
        render();
      }

      // 下一页
      next.onclick = function () {
        current++;
        if (current >= iframes.length) {
          current = 0;
        }
        render();
      }

      // 控制点
      control.onclick = function (e) {
        var index = getIndex(e.target);
        if (index !== -1 && index !== current) {
          current = index;
          render();
        }
      }

      // 开始/暂停
      toggle.onclick = function () {
        isPlaying = !isPlaying;
        toggle.classList.toggle("active");
        if (isPlaying) {
          start();
        } else {
          stop();
        }
      }

      // 渲染轮播图
      function render() {
        for (var i = 0; i < iframes.length; i++) {
          iframes[i].classList.remove("active");
        }
        iframes[current].classList.add("active");
        renderControl();
      }

      // 渲染控制点
      function renderControl() {
        control.innerHTML = "";
        for (var i = 0; i < iframes.length; i++) {
          var item = document.createElement("div");
          item.className = "slider-control-item" + (i === current ? " active" : "");
          control.appendChild(item);
        }
      }

      // 获取控制点的索引
      function getIndex(target) {
        if (target.classList.contains("slider-control-item")) {
          var items = control.querySelectorAll(".slider-control-item");
          for (var i = 0; i < items.length; i++) {
            if (items[i] === target) {
              return i;
            }
          }
        }
        return -1;
      }

      // 自动轮播
      function start() {
        stop();
        timer = setInterval(function () {
          current++;
          if (current >= iframes.length) {
            current = 0;
          }
          render();
        }, 2000);
      }

      function stop() {
        clearInterval(timer);
        timer = null;
      }

      start();
    }
  </script>
</body>

</html>

小结

代码是正常的,就是样式体验不好
首次打开的时候有点卡
都在一个页面上,它都会去访问那三个路径
一下子请求三个路径的页面
但是请求完了,轮播就不用请求了
如果只请求一个的话,每次轮播都要请求一次
都是有利有弊的
两种方案都一样
这个方案其实相对好一点,只请求一次
另一个方案就是轮播到谁就请求谁

让AI帮忙写个需求,AI写出来了,只是有bug而已文章来源地址https://www.toymoban.com/news/detail-438047.html

到了这里,关于让AI帮忙写个需求,AI写出来了,只是有bug而已的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 我让AI帮忙生成算法,Auto-GPT对比ChatGPT、文心一言,结果出人意料...

                                                                                     🍏🍐🍊🍑🍒🍓🫐🥑🍋🍉🥝                                           我让AI帮忙生成算法,Auto-GPT对比ChatGPT、文心一言,结果

    2024年02月02日
    浏览(40)
  • ChatGPT新手指南:如何用AI写出专业学术论文

    ChatGPT无限次数: 点击直达 在当今信息爆炸的时代,人工智能技术的快速发展为我们提供了许多新的可能性。ChatGPT作为一种先进的自然语言处理技术,不仅能够进行对话和文本生成,还可以辅助我们在撰写学术论文方面取得更好的效果。本文将向大家介绍如何利用ChatGPT这一强

    2024年04月11日
    浏览(55)
  • ai智能写作的应用前景与挑战:如何让机器写出优秀文章

    随着人工智能技术的迅速发展,ai智能写作正逐渐成为一个备受关注的领域,越来越多人选择通过ai智能写作进行创作。它不仅可以减少人力成本,提高工作效率,还可以帮助我们更好地理解和利用互联网大数据,实现更准确的文本创作与推广。 那么你知道什么是ai智能写作吗

    2024年02月11日
    浏览(51)
  • 微信小程序实战项目开发(天气预报项目实战):内涵开发说明文档、需求文档 && 手把手分步骤教你写出自己的小程序项目 && 天气预报小程序 && 时实请求获取天气 && 自定义功能 && 完整的源代码

    微信小程序开发实现天气预报 需求分析 静态页面设计 :要求界面美观 → 在wxss代码文件中对 wxml代码文件进行合理布局和美化,舒适的交互效果. 功能逻辑完善 :能够使用到 wx.request 请求接口实现天气预报查询的功能 主要使用到的技术栈如下: wxml:中使用了 picker 组件标签

    2024年02月02日
    浏览(61)
  • 轻松写出高质量内容:5款自媒体ai写作工具全攻略!

    在当今互联网时代,AI(人工智能)技术的快速发展使得许多传统工作都得到了极大的改进和提高效率。其中,AI写作软件在快速撰写高质量内容方面发挥了重要作用。本文将介绍备受赞誉的AI写作软件,并为您详细分析它们的特点和优势。 1.飞鸟写作 这是一个微信公众号 面

    2024年01月19日
    浏览(88)
  • 轻松写出高质量内容:10款自媒体ai写作工具全攻略!

    在当今互联网时代,AI(人工智能)技术的快速发展使得许多传统工作都得到了极大的改进和提高效率。其中,AI写作软件在快速撰写高质量内容方面发挥了重要作用。本文将介绍备受赞誉的AI写作软件,并为您详细分析它们的特点和优势。 1.七燕写作 这是一个微信公众号,可

    2024年01月21日
    浏览(67)
  • 来了来了,我使用 ChatGPT 开发了一个 AI 应用

    ChatGpt 实在太火爆了,很多人在问我怎么使用 chatgpt 开发一个 AI 应用程序。这不就来了吗~ 你所需要准备的一个OpenAI 的密钥和一点点代码来发送提示并返回结果,例如下面这段代码: 就靠这段代码,你现在就可以开始用它做出不可思议的东西了!😎 使用AI执行命令的基本结

    2024年02月01日
    浏览(42)
  • 解放程序员,加速创新,缺少的就是一个工具而已

    随着科技的不断进步和应用场景的不断扩大,软件开发已经成为当今世界的核心驱动力之一。 然而,传统的软件开发模式往往存在着繁琐的编码过程、复杂的架构设计和漫长的调试周期,使得程序员们难以专注于创新和高难度的研究。 很多程序员上班的时候会面临这样的一

    2024年02月15日
    浏览(40)
  • 这些图片都是AI画画画出来的,太强了

    张锋老师的分享中看到的,这些图片都是AI画画画出来的,太强了 想之前我买一套 3D 图标的 pack 就是 接近300美金; 现在的AI绘画能通过训练生成固定风格的图标包, 假如你生成某一个细分类别的图标包 然后搭一个网站,卖卖图标包,按照使用范围分几个价格等级, 比如6

    2024年02月11日
    浏览(33)
  • AI来了,Spring还会远吗?(Spring AI初体验)

    官方文档的Getting Started 最低要求:JDK17 阿里云的Server URL(https://start.aliyun.com/)搜不到Spring AI,咱换官方的:https://start.spring.io/ 下载好JDK 17,在上图的JDK中不一定能看到。此时,选add JDK:选 zulu-17.jdk - Contents - Home 。 参考:Sample Controller (Auto-configuration) /ai/generate /ai/generateS

    2024年04月15日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包