山东大学软件学院创新实训——项目记录(四)

零、前言

本周解决了一些项目的问题,以及对问答页面的细节进行调整修改,用了div的一个位置特性来辅助。

一、vue项目启动问题

解决npm ERR! code ENOENT npm ERR! syscall open npm ERR! path X:\RuoYi-Vue-master\RuoYi-Vue-master/pack

问题报错:

npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path F:\课程作业和一些报告证件\大三\大三下\创新实训\innovation-training-master\package.json
npm ERR! errno -4058
npm ERR! enoent ENOENT: no such file or directory, open 'F:\课程作业和一些报告证件\大三\大三下\创新实训\innovation-training-master\package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

解决办法: 找到 package.json正确的目录,然后再在终端执行npm命令即可。

产生该问题的原因是我前端项目的启动路径出现差错,进入正确目录执行启动命令才能找到package.json。
如下是我的电脑正确路径为例:
在这里插入图片描述

二、div的绝对位置处理

问题描述:在对话界面,要设置输入框始终在底部正中且不被对话记录的div挤出父div。
解决方案:使用相对定位和负 margin 来实现。

HTML 结构:


<div class="container">
  <div class="content">
    <!-- 这里是其他内容 -->
    <div class="bottom-center">
      <!-- 这个 div 将被固定在底部中间 -->
    </div>
  </div>
</div>

CSS 样式:


.container {
  position: relative;
  width: 300px; /* 为容器指定宽度 */
  height: 300px; /* 为容器指定高度 */
  border: 1px solid #000; /* 用于演示,可以移除 */
}

.content {
  height: 100%; /* 让内容 div 占满容器的高度 */
}

.bottom-center {
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  /* 如果需要水平居中可以使用以上样式,如果需要水平和垂直都居中则需要下面两行 */
  /* bottom: 50%;
  transform: translate(-50%, 50%); */
}

这样,

将固定在父容器 .container 内部的底部中间位置。可以根据需要调整容器和内容的大小。

处理结果;
在这里插入图片描述

三、图片上传组件

使用element-ui的上传组件,同时增加自定义的图片信息解析函数。

<el-upload
  action="https://jsonplaceholder.typicode.com/posts/"
  list-type="picture-card"
  :on-preview="handlePictureCardPreview"
  :on-remove="handleRemove">
  <i class="el-icon-plus"></i>
</el-upload>

//通过自定义函数监听点击事件,打开文件上传页,并且获取图片的base64编码
toGetImg() {
      if (inputElement === null) {
        // 生成文件上传的控件
        inputElement = document.createElement("input");
        inputElement.setAttribute("type", "file");
        inputElement.style.display = "none";
        if (window.addEventListener) {
          inputElement.addEventListener("change", this.uploadFile, false);
        } else {
          inputElement.attachEvent("onchange", this.uploadFile);
        }
        document.body.appendChild(inputElement);
      }
      inputElement.click();
    },
ploadFile(el) {
      if (el && el.target && el.target.files && el.target.files.length > 0) {
        const files = el.target.files[0];
        const isLt2M = files.size / 1024 / 1024 < 2;
        const size = files.size / 1024 / 1024;
        // 判断上传文件的大小
        if (!isLt2M) {
          this.$message.error("上传头像图片大小不能超过 2MB!");
        } else if (files.type.indexOf("image") === -1) {
          //如果不是图片格式
          // this.$dialog.toast({ mes: '请选择图片文件' });
          this.$message.error("请选择图片文件");
        } else {
          const that = this;
          const reader = new FileReader(); // 创建读取文件对象
          reader.readAsDataURL(el.target.files[0]); // 发起异步请求,读取文件
          reader.onload = function () {
            // 文件读取完成后
            // 读取完成后,将结果赋值给img的src
            that.uploadImg = this.result;
            console.log(that.uploadImg);
            // 数据传到后台
            // const formData = new FormData()
            // formData.append('file', files); // 可以传到后台的数据
          };
        }
      }
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值