20240612前端问题总结

news2024/11/25 12:58:35

20240612前端问题总结

给定固定大小的父 子盒子,要实现子盒子上下左右居中

使用calc()计算,子绝父相和子元素调整位置,flex弹性盒布局,transform,table-cell,浮动六种方法展示子元素垂直水平居中。

<div class="big">
        <div class="small"></div>
</div>

calc()计算

 .big {
        background-color: blue;
        width: 600px;
        height: 600px;
        overflow: hidden;
    }

    .small {
        background-color: burlywood;
        height: 200px;
        width: 200px;
        margin: calc((600px - 200px) / 2);
    }

在这里插入图片描述

如果父元素和子元素宽高不等,下面代码同样没有问题

    .big {
        background-color: blue;
        width: 600px;
        height: 500px;
        overflow: hidden;
    }

    .small {
        background-color: burlywood;
        height: 300px;
        width: 200px;
        margin: calc((500px - 300px) / 2) calc((600px - 200px) / 2);
    }

注意margin后面两个值的时候,第一个值代表上下外边距的值,第二个值代表左右外边距的值,所以calc先计算上下高度再计算宽度。
在这里插入图片描述

子绝父相+子元素调整位置

父元素相对定位,子元素绝对定位,调整子元素使其垂直水平居中

    .big {
        width: 600px;
        height: 500px;
        background-color: blue;
        position: relative;
    }

    .small {
        height: 300px;
        width: 200px;
        background-color: burlywood;
        position: absolute;
        top: 0px;
        bottom: 0px;
        left: 0px;
        right: 0px;
        margin: auto;
    }

flex弹性盒布局

display:flex弹性盒布局设置元素水平垂直居中对齐

    .big {
        width: 600px;
        height: 500px;
        background-color: blue;
        display: flex;
        justify-content: center;
        align-items: center;
    }

    .small {
        height: 300px;
        width: 200px;
        background-color: burlywood;
    }

子绝父相+transform

    .big {
        width: 600px;
        height: 500px;
        background-color: blue;
        position: relative;
    }

    .small {
        height: 300px;
        width: 200px;
        background-color: burlywood;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }

单元格table-cell布局

    .big {
        width: 600px;
        height: 500px;
        background-color: blue;
        display: table-cell;
        vertical-align: middle;
    }

    .small {
        height: 300px;
        width: 200px;
        background-color: burlywood;
        vertical-align: middle;
        margin: 0 auto;
    }

浮动

给子元素设置左浮动使其脱离文档流,然后计算父元素和子元素的宽高差除以2设置上外边距和左外边距

<style>
    .big {
        width: 600px;
        height: 500px;
        background-color: blue;

    }

    .small {
        height: 300px;
        width: 200px;
        background-color: burlywood;
        float: left;
        margin-top: 100px;
        margin-left: 200px;
    }
</style>

给定一个对象数组,找到id为1的所有元素,返回一个新的数组

这个问题尝试用数组的常用方法解决,filter,splice,slice,concat,find,includes。
以下面的数组对象为例

var students = [
            { id: 1, name: "张三", age: 18, gender: "男" },
            { id: 1, name: "李四", age: 19, gender: "女" },
            { id: 1, name: "王五", age: 20, gender: "男" },
            { id: 2, name: "阿狗", age: 18, gender: "男" },
            { id: 3, name: "阿猫", age: 19, gender: "女" },
            { id: 4, name: "刘柳", age: 20, gender: "男" }
];

使用filter过滤元素返回一个新数组

var result = students.filter(function (student) {
    return student.id == 1
})
console.log(result)

箭头函数

const result = students.filter(students => students.id === 1)
console.log(result)

reduce函数解决

var result = students.reduce((acc, student) => {
    if (student.id === 1) {
        acc.push(student);
    }
    return acc;
}, []);

console.log(result);

后端一次性给定全部数据量,前端实现分页,描述实现逻辑。

基于vue2和element-ui实现,代码提取自简历中的信贷后台管理项目信贷申请核心代码。
封装请求后端数据的接口并调用

//  在IndexView中调用loan.js
// 定义获取申请列表的接口
export const getLoanList = (params) => {
    return request({
        url: '/loan/list',
        method: 'get',
        params
    })
}

  //页面加载就请求表格数据(异步获取数据)
 mounted() {
   this.getLoanList();
  }

在vue2的data中定义数据

 data() {
    return {
      rows: 0,
      value:false,//数据只有一页隐藏分页
      updateForm: {
        id: 0,
        name: "",
        sex: "",
        mobile_phone:"",
      },
     
      pageOptions: {
        pageNo: 1,//当前页面
        pageSize: 10,//页面显示数据条数
      },
      query: "",//名称
      //表格数据
      tableData: [],
      columns: [
        {
          label: "姓名",
          prop: "name",
          width: "80",
        },
        {
          label: "出生日期",
          prop: "birthday",
          width: "160",
        },
        {
          label: "性别",
          prop: "sex",
        },
        {
          label: "教育程度",
          prop: "education",
        },
        {
          label: "居住地址",
          prop: "address1",
        },
        {
          label: "手机号",
          prop: "mobile_phone",
        },
        {
          label: "申请状态",
          prop: "status",
        },
        {
          label: "操作",
          width: "280",
          prop: "opts",
        },
        
      ],

    }
  },

获取当前页需要显示的数据,使用elemen-ui的table组件在模板中渲染接收到的后端的数据

  <!--tableData是表格数据-->   
  <el-table :data="tableData"  >
    <el-table-column type="index" label="序号"></el-table-column>
    <el-table-column 
      v-for="(item,index) in columns"
      :key="index"
      :label="item.label"
      :prop="item.prop"
      :width="item.width"
      align="center"
    >
    </el-table-column>  
  </el-table>

使用element-ui的分页组件,之后关于分页遇见调用的方法在methods里面写

  <!-- 分页功能 -->
 <!-- size-change处理页码大小;current-change事件处理当前页变动时候触发的事件。 -->
   <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :hide-on-single-page="value"
        :page-sizes="[10, 20, 30, 40]"
        :page-size="pageOptions.pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="rows">
    </el-pagination>

在method里面写关于分页的方法

handleSizeChange(val) {
      this.pageOptions.pageSize = val;
      this.getLoanList();
      console.log(`每页 ${val} 条`);
    },
    handleCurrentChange(val) {
      this.pageOptions.pageNo = val;
      this.getLoanList();
      console.log(`当前页: ${val}`);
    },

绑定当前页面页数和当前页面显示数据条数,调用后端数据请求接口请求数据返回

vue2实现

在Vue组件中定义数据:

data() {
    return {
        allData: [], // 后端一次性给定的全部数据量
        pageSize: 10, // 每页显示的数据条数
        currentPage: 1 // 当前页数
    };
}

创建计算属性来获取当前页需要显示的数据:

computed: {
    paginatedData() {
        const startIndex = (this.currentPage - 1) * this.pageSize;
        const endIndex = startIndex + this.pageSize;
        return this.allData.slice(startIndex, endIndex);
    }
}

在模板中渲染分页数据:

<div v-for="data in paginatedData" :key="data.id">
    <!-- 显示每页数据的内容 -->
</div>

添加分页功能,包括上一页和下一页的按钮:

<button @click="goToPage(currentPage - 1)" :disabled="currentPage === 1">上一页</button>
<button @click="goToPage(currentPage + 1)" :disabled="currentPage * pageSize >= allData.length">下一页</button>

实现跳转到指定页数的方法:

methods: {
    goToPage(page) {
        this.currentPage = page;
    }
}

如何实现一个父页面的弹窗功能,描述显隐和传参的实现逻辑

我的简历项目中的实现

简历中的信贷后台管理中有弹窗功能,在当前页面(父页面)中使用弹窗组件。弹窗使用了element的dailog组件。visible和close设置弹窗的显示隐藏

 <el-dialog title="编辑页面弹窗" :visible="dialogVisible"  @close="dialogVisible = false"  >
      <div class="form-box">
         编辑表格
      </div>
  </el-dialog>

通过data返回数据传参

 data() {
    return {
      dialogVisible: false,   //是否显示对话框
      rows: 0,
      value:false,//数据只有一页隐藏分页
    }
 }

method写关于编辑的操作

    //编辑操作
    async editApplication(row) {
      this.dialogVisible = true;
      this.$nextTick(() => {
        this.updateForm.id = row.id;
        this.updateForm.name = row.name;
        this.updateForm.sex = row.sex;
        this.updateForm.mobile_phone = row.mobile_phone;
      });
   },

简单vue2实现

上面是基于element框架实现的,若不使用element,实现一个父页面的弹窗功能可以使用Vue2中的slot(插槽)和props(属性)来实现

<template>
  <div>
    <button @click="showModal = true">打开弹窗</button>
    <modal :is-show="showModal" :message="modalMessage" @close="showModal = false">
      <!-- 弹窗内容 -->
    </modal>
  </div>
</template>

<script>
import Modal from './Modal.vue';

export default {
  components: {
    Modal
  },
  data() {
    return {
      showModal: false,
      modalMessage: '这是父页面传递给弹窗组件的参数'
    }
  }
}
</script>

在父组件的模板中,通过modal标签引入弹窗组件,并传递了is-show和message两个props,用来控制弹窗的显隐状态和传递参数。同时,通过插入标签,可以在父组件中自定义弹窗的内容。

在弹窗组件中接收和使用父组件传递的props:

<template>
  <div class="modal-mask" :class="{ 'is-show': isShow }">
    <div class="modal-close" @click="$emit('close')">×关闭</div>
    <div class="modal-body">
      <p>{{ message }}</p>
      <slot></slot>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    isShow: {
      type: Boolean,
      default: false
    },
    message: {
      type: String,
      default: ''
    }
  }
}
</script>

在弹窗组件中,通过props接收父组件传递的is-show和message,并使用v-bind绑定到相应的HTML元素上进行显示。同时,在关闭弹窗时通过 $emit 触发一个close事件,用来向父组件传递弹窗关闭的通知。

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

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

相关文章

人工智能系统中毒是一个日益严重的威胁

咨询公司 Protiviti 最近与一家客户公司合作&#xff0c;该公司遭遇了一次不寻常的攻击&#xff1a;一名黑客试图操纵输入该公司人工智能系统的数据。 公司领导仍在调查此次攻击&#xff0c;公司怀疑黑客试图扭曲人工智能系统的输出。 此类攻击并非新鲜事&#xff0c;但在网络…

stable diffusion中的negative prompt是如何工作的

https://stable-diffusion-art.com/how-negative-prompt-work/https://stable-diffusion-art.com/how-negative-prompt-work/https://zhuanlan.zhihu.com/p/644879268

技术速递|Microsoft Build 2024 中的 .NET 公告和更新

作者&#xff1a;.NET 团队 排版&#xff1a;Alan Wang 在 Microsoft Build 2024 上&#xff0c;我们很高兴推出一系列旨在使 .NET 开发更快、更容易的新功能和工具。 探索 Microsoft Build 2024 上的 .NET 会议&#xff0c;了解新功能的实际效果&#xff0c;或者通过下载 .NE…

【六】Linux安装部署Nginx web服务器--及编写服务器启动脚本

一、部署安装nginx 1、查看nginx是否安装依赖包 [rootlocalhost ~]# rpm -q zlib-devel pcre-devel package zlib-devel is not installed package pcre-devel is not installed 2、若没有则安装nginx 依赖包 [rootlocalhost ~]# yum -y install zlib-devel* pcre-dev…

30、 shell脚本进阶

shell脚本ifcase 一、条件测试 1.1、条件测试&#xff1a;$?----返回码&#xff0c;判断命令或者脚本是否执行成功&#xff08;最近的一条&#xff09; 0 true 为真就是成功 成立 非0 false 失败或者异常。 二、test命令 test命令&#xff1a;可以进行条件测试&#xff…

RAM IP核配置

REVIEW 之前已经学习过&#xff1a; ROM:FPGA寄存器 Vivado IP核-CSDN博客 串口接收&#xff1a;Vivado 串口接收优化-CSDN博客 1. 今日摸鱼计划 RAM创建与测试 小梅哥视频&#xff1a; 21C_嵌入式块存储器RAM介绍_哔哩哔哩_bilibili 21D_嵌入式块存储器RAM实现和仿真_哔哩…

C++ 实现HTTP的客户端、服务端demo和HTTP三方库介绍

本文使用C模拟实现http的客户端请求和http的服务端响应功能&#xff0c;并介绍几种封装HTTP协议的三方库。 1、实现简单HTTP的服务端功能 本程序使用C tcp服务端代码模拟HTTP的服务端&#xff0c;服务端返回给客户端的消息内容按照HTTP协议的消息响应格式进行了组装。 demo如…

腾讯云 BI 数据分析与可视化的快速入门指南

前言 腾讯云 BI 是一款商业智能解决方案&#xff0c;提供数据接入、分析、可视化、门户搭建和权限管理等全流程服务。它支持敏捷自助设计&#xff0c;简化报表制作&#xff0c;并通过企业微信等渠道实现协作。产品分为个人版、基础版、专业版和私有化版&#xff0c;满足不同规…

联想电脑 调节屏幕亮度不起使用,按F5,F6,屏幕上的hotkeys进度条是在改变,但是屏幕没有一些作用的处理方法

1、查看驱动是否正常 Win键X &#xff0c;设备管理器 发现似乎挺正常的。 查看原厂驱动&#xff1a;联想电脑管家 这样看来&#xff0c;驱动是没有问题了。 2、看看设置电池模式 其实还是这个电池模式的问题导致。 如果处于养护模式的话&#xff0c;充电只在75%~80%&#x…

探索Edge

目录 1.概述 1.1.什么是浏览器 1.2.浏览器的作用 2.Edge 2.1.什么是Edge 2.2.诞生背景 2.3.历史版本 2.4.作用 2.5.优缺点 2.5.1.优点 2.5.2.缺点 3.对比 3.1.和360浏览器的对比 3.2.和谷歌浏览器&#xff08;Chrome&#xff09;的对比 4.未来展望 5.总结 1.概…

浏览器f12控制台怎么获取vue实例,并且修改data数据

我们在日常的生产工作中&#xff0c;经常会遇到一些问题&#xff0c;比如&#xff0c;若产品已经部署&#xff0c;或是目前无法查看源代码&#xff0c;或者向用命令直接修改查询默认表单数据&#xff0c;那我们怎么去查看Vue实例呢&#xff1f; 我们在浏览器直接打印this不能得…

[Alogithm][动态规划][背包问题][组合总和IV][不同的二叉搜索树]详细讲解

目录 1.组合总和 Ⅳ1.题目链接2.算法原理详解3.代码实现 2.不同的二叉搜索树1.题目链接2.算法原理详解3.代码实现 1.组合总和 Ⅳ 1.题目链接 组合总和 Ⅳ 2.算法原理详解 本题是个排列题&#xff0c;而并非组合题&#xff0c;所以并非背包问题 思路&#xff1a; 确定状态表示…

【spring 】支持spring WebFlux 的容器

spring WebFlux 是 Spring 5 引入的响应式 Web 框架&#xff0c;它支持非阻塞、事件驱动的编程模型&#xff0c;特别适合处理高并发的场景。 Spring WebFlux 可以运行在多种容器上 包括下面&#xff1a; Netty: Netty 是一个异步事件驱动的网络应用程序框架&#xff0c;用于快…

OpenCV 的模板匹配

OpenCV中的模板匹配 模板匹配&#xff08;Template Matching&#xff09;是计算机视觉中的一种技术&#xff0c;用于在大图像中找到与小图像&#xff08;模板&#xff09;相匹配的部分。OpenCV提供了多种模板匹配的方法&#xff0c;主要包括基于相关性和基于平方差的匹配方法。…

【RPC项目-1】0612

写在前面&#xff0c;主要是作学习回顾笔记&#xff0c;以备后续面试 LogEvent 组成&#xff1a; 日志级别&#xff08;level&#xff09;日期时间(精确到ms)进程号pid&#xff0c;线程号threadid文件名file_name、行号line自定义msg 输出格式如&#xff1a;[level]\t[%y-%…

dvadmin 调试问题

链接&#xff1a;django-vue3-admin: django-vue3-admin 是一套全部开源的快速开发平台&#xff0c;毫无保留给个人免费使用、团体授权使用。 django-vue3-admin 基于RBAC模型的权限控制的一整套基础开发平台&#xff0c;权限粒度达到列级别&#xff0c;前后端分离&#xff0c;…

vb.net小demo(计算器、文件处理等/C#也可看)

Demo1&#xff1a;使用窗体控件实现一个简易版计算器 Public Class Form1Private Sub Button_1_Click(sender As Object, e As EventArgs) Handles Button_1.ClickCalSubBox.Text Button_1.TextEnd SubPrivate Sub Button_2_Click(sender As Object, e As EventArgs) Handles …

HBase数据存储

1、数据模型 Namespace&#xff08;表命名空间&#xff09;&#xff1a;表命名空间不是强制的&#xff0c;当想把多个表分到一个组去统一管理的时候才会用到表命名空间。Table&#xff08;表&#xff09;&#xff1a;一个表由一个或者多个列族组成。数据属性&#xff0c;都在列…

javaWeb项目-ssm+vue个人博客网站管理系统功能介绍

本项目源码&#xff1a;java-基于ssmvue的个人博客网站的设计与实现源码说明文档资料资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a…

第 5 章:面向生产的 Spring Boot

在 4.1.2 节中&#xff0c;我们介绍了 Spring Boot 的四大核心组成部分&#xff0c;第 4 章主要介绍了其中的起步依赖与自动配置&#xff0c;本章将重点介绍 Spring Boot Actuator&#xff0c;包括如何通过 Actuator 提供的各种端点&#xff08;endpoint&#xff09;了解系统的…