当前位置: 首页 > news >正文

苏州网站设计哪家好百度网页制作

苏州网站设计哪家好,百度网页制作,电商数据分析怎么做,wordpress 表结构瀑布流 - Vue3基于Grid布局简单实现一个瀑布流组件 前言 在学习Grid布局之时#xff0c;我发现其是CSS中的一种强大的布局方案#xff0c;它将网页划分成一个个网格#xff0c;可以任意组合不同的网格#xff0c;做出各种各样的布局#xff0c;在刷某书和某宝首页时我发现其是CSS中的一种强大的布局方案它将网页划分成一个个网格可以任意组合不同的网格做出各种各样的布局在刷某书和某宝首页时我们发现其展示方式就是一种瀑布流是一种流行的网站页面布局视觉表现为参差不齐的多栏布局随着页面向下滚动这种布局会不断加载数据块并附加到当前尾部。采用瀑布流布局的方式可以打破常规网站布局排版给用户眼前一亮的新鲜感更好的适应移动端。 因此结合二者本文将通过grid布局简单实现一个瀑布流组件该组件已开源上传npm可以直接安装使用Git地址在文尾。 实现原理 1、使用grid布局将页面分为无数个小网格每个网格高度为1px。 .grid-content {display: grid;grid-auto-rows: minmax(1px, 1px);overflow: auto; }2、宽度根据需要自定义的列数自动分配。 grid-template-columns: repeat(${props.columns}, 1fr),3、根据每个卡片窗口的高度计算每个卡片需要跨越几个网格因为每个网格设置高为1px所以高度就是需要跨越的网格数 grid-row-end: span ${gridItem.value.clientHeight - 1}4、监听瀑布流滚动事件通过判断滚动条距离底部的高度在滚动到底部一定距离时加载更多的数据以实现无限滚动。 主要代码实现 gridContent 组件主要代码循环展示每个条目根据自定义的列展示不同的列数量根据触底数据判断获取最新数据。监听传入的数据进行处理目前只是做了简单处理后面将通过虚拟列表的形式动态处理该数据以增加性能。 templatediv classgrid-content refgridContent :stylegridStyle scrollgetMoreDatagrid-item v-foritem in showDataList :keyitem.dataIndex :dataitemtemplate #slot-scopeslotPropsslot nameslot-scope :slotPropsslotProps/slot/template/grid-item/div /template script langts setup import GridItem from ./gridItem.vue; import { ref, watch } from vue;const props defineProps({dataList: {type: Array,default: []},columns: {type: Number,default: 2},width: {type: Number,default: 300},height: {type: Number,default: 400},bottom:{type: Number,default: 50},loading:{type: Boolean,default: true}})const emitdefineEmits([getMoreData]);const gridStyle ref({}); const showDataList refany([])watch(() props.dataList, (newValue) {let tempData: any [];newValue.forEach((item: any, index) {tempData.push({ ...item, dataIndex: index })})showDataList.value tempData;gridStyle.value {grid-template-columns: repeat(${props.columns}, 1fr),width:props.width px,height:props.height px} }, { immediate: true,deep:true })const isLoadingrefboolean(false); watch(()props.loading,(newValue:boolean){isLoading.valuenewValue; })const gridContentrefany(null); //根据触底数据判断获取最新数据 const getMoreData(){const scrollHeight gridContent.value.scrollHeight || 0;const clientHeight gridContent.value.clientHeight || 0;const scrollTop gridContent.value.scrollTop || 0;if(scrollHeight - clientHeight - scrollTop props.bottom !isLoading.value){isLoading.valuetrue;emit(getMoreData);} } /scriptgrid-item 组件代码主要通过获取组件高度设置跨越的网格数,通过插槽展示每个卡片。 templatediv classgrid-item :styleitemStylediv refgridItemslot nameslot-scope :datadata/slot/div/div /template script langts setup import { ref, onMounted } from vue; defineProps({data: {type: Object,default: () { }} })const gridItem refany(null); const itemStyle ref({})onMounted(() {itemStyle.value { grid-row-end: span ${gridItem.value.clientHeight - 1} } })/script style scoped .grid-item {grid-row-end: span 100; } /style 使用示例 npm install fcli/vue-grid-waterfall --save-dev 来安装在项目中使用 import VueGridWaterfall from fcli/vue-grid-waterfall; const appcreateApp(App) app.use(VueGridWaterfall); 示例 templatediv classcontentvue-grid-waterfall :data-listdataList :columns3 getMoreDatagetMoreData :loadingisLoadingtemplate #slot-scope{ slotProps }div classitem :style{ height: slotProps.data.height, background: slotProps.data.color }{{ slotProps.data.color}}/div/template/vue-grid-waterfall/div /templatescript setup langts import vueGridWaterfall from ./plugin/index.vue; import { ref, onMounted } from vue component: {vueGridWaterfall }const dataList refany([]); //获取随机颜色 const getRandomColor () {const getColor: any (color: any) {return (color 0123456789abcdef[Math.floor(Math.random() * 16)]) (color.length 6) ? color : getColor(color);};return # getColor() }const getMoreData () {isLoading.value true;getData() } const isLoading ref(true);//获取数据 const getData () {for (let i 0; i 100; i) {dataList.value.push({ height: 50 Math.random() * 50 px, color: getRandomColor() })}setTimeout((){isLoading.value false;}) }onMounted(() {getData() }) /script 属性属性名称类型可选值dataList瀑布流列表数据Array[]columns展示的列数number2width瀑布流宽度number0height瀑布流高度number0bottom滚动到底部触发加载数据的距离number50loading是否加在载数据boolean加载数据完数据设为false#slot-scope插槽objectslotProps.data 最后 本组件为初步实现后续还会结合虚拟滚动减少dom渲染当数据量过大时提升性能欢迎star关注。 Git地址https://gitee.com/fcli/vue-grid-waterfall.git
http://www.hkea.cn/news/14533866/

相关文章:

  • 网站建设 地址 上海石门二路怎么制作一个网站
  • 手机网站开发教程pdf淘宝客网站跳转单品
  • 前几年做啥网站能致富阜阳网站建设电话
  • 有空间有域名怎么做网站邯郸网站建设推荐咨询
  • 莘县网站建设网站开发公司赚钱吗
  • 网站建设建设公司资质要求如何评价一个网站的网站建设
  • 外贸网站开发公司五原网站建设
  • 哪网站建设好安徽网站建设SEO优化制作设计公司
  • 淮北市相山区建设局网站怎样查询百度收录和排名情况
  • 怎么往网站添加视频网站建设模板51
  • 临清建设局网站北京南站最新消息
  • 网站seo优化推推蛙电子商务的网站有哪些
  • 免费虚拟主机的好处优化关键词步骤
  • 辽宁省建设工程造价管理网站wordpress qq微信登录
  • 网站建设代码产品网页设计多少钱
  • html5网站下载做运营有前途吗
  • 网站服务器 购买时长网站开发+语音
  • 杭州网站建设哪家好怎么优化标题和关键词排名
  • 国外网站 国内访问速度网站ip段屏蔽
  • 万州建网站哪里搜索引擎优化好
  • c 做网站后端百度指数搜索指数的数据来源
  • 个人网站赚钱网站的二级页面在哪里做
  • 临安市住房和建设局网站天津做网站的公司怎么样
  • 怎么做提升自己的网站网站高转化页面
  • 网站开发 手把手网上竞价采购网站建设
  • 怎样上传网站到空间深圳市盐田区住房和建设局网站
  • 山东教育网站开发公司仁怀哪里有做网站的
  • 域名网站打开慢python18+21
  • psd做成网站门户网站开发要多久
  • 网站优化包括对什么优化企企管理系统平台