20240612前端问题总结

2024-06-13 04:20

本文主要是介绍20240612前端问题总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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事件,用来向父组件传递弹窗关闭的通知。

这篇关于20240612前端问题总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1056265

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

缓存雪崩问题

缓存雪崩是缓存中大量key失效后当高并发到来时导致大量请求到数据库,瞬间耗尽数据库资源,导致数据库无法使用。 解决方案: 1、使用锁进行控制 2、对同一类型信息的key设置不同的过期时间 3、缓存预热 1. 什么是缓存雪崩 缓存雪崩是指在短时间内,大量缓存数据同时失效,导致所有请求直接涌向数据库,瞬间增加数据库的负载压力,可能导致数据库性能下降甚至崩溃。这种情况往往发生在缓存中大量 k