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

网站注册实名制怎么做房产cms

网站注册实名制怎么做,房产cms,电商平台网站开发过程是什么,网站制作公司哪家正规微信小程序的无限瀑布流实现总算做完了,换了好几种方法,过程中出现了各种BUG。 首先官方有瀑布流的插件(Skyline /grid-view),不是原生的我就不想引入,因为我的方块流页面已经搭好了,引入说不定…

微信小程序的无限瀑布流实现总算做完了,换了好几种方法,过程中出现了各种BUG。

首先官方有瀑布流的插件(Skyline /grid-view),不是原生的我就不想引入,因为我的方块流页面已经搭好了,引入说不定就要涉及样式的修改、代码量的增大等麻烦问题。

H5我虽然也做了瀑布流,但是是用绝对定位来做的,性能消耗有点大。所以小程序这边就是想把原本flex固定宽高的改成两列。(纯CSS就不要想了,根本不可能实现,虽然也查到了新的css瀑布流规则,但绝大部分浏览器不支持也是白搭。)

方案一:

    const query = wx.createSelectorQuery().in(this);query.select(`.desc-${index}`).boundingClientRect((res) => {}).exec();

原本显示的数据先做隐藏,之后利用boundingClientRect来获取隐藏块的高度,再计算对比高度看应该放入list1还是list2中。

这样做会出现两个问题,第一,新增列会明显抖动,因为image我用了mode="widthFix",加载页面跳一下还好,无限瀑布流是要一直可以下拉加载的,就会导致每次新图出来都要跳一下,体验很差……

即使第一个问题我可以缓存高度,替换为aspectFill解决。但第二个问题是,它加载越多,异步延迟就越大,会导致后面的高度根本获取不到而无法正常排版(大概超过80条左右?)……

方案二:

使用wx.getImageInfo来代替获取图片高度,但这样会出现一个明显的问题,就是每次图片的请求是翻倍的,图片本身就加载请求了一次,现在还多用接口请求了一次,这样做太消耗性能了……

另外要注意的是,我的文字其实也是不定高度的,所以不能只对比图片,还得把图片以外的因素都加进来才行。

方案三:

隐藏块使用bindload获取图片高度。这样既避免了方案一中后续获取不到高度,又使得图片不需要二次请求。于是顺着这个思路走,最终解决了这个浪费了我整整一天工作日的瀑布流问题。

index.wxml

<template name="card"><navigator class="recommend-card" url="/pages/trade/detail/index?id={{item.id}}"><view class="recommend-top"><image wx:if="{{item.height}}"class="recommend-img"src="{{ item.pic }}"mode="aspectFill"style="height: {{item.height}}rpx;" /><image wx:elseclass="recommend-img"src="{{ item.pic }}"data-index="{{index}}"bindload="imgLoad"data-title="{{item.title}}"mode="widthFix" /></view><view class="aui-padded-10 recommend-bottom"><view class="aui-font-size-14 recommend-title">{{item.title}}</view><view class="aui-font-size-12 c9 recommend-position"><image alt="地点" class="position-img" src="{{locUrl}}/svg/trade-position.svg" /><view class="no-wrap">{{item.province}} {{item.city}}</view></view></view></navigator>
</template>
<view class="recommend-list"><template is="card" wx:for="{{tradeList}}" wx:key="index" data="{{item, locUrl, index}}"></template>
</view>
<view class="flex-b"><view><template is="card" wx:for="{{list1}}" wx:key="index" data="{{item, locUrl, index}}"></template></view><view><template is="card" wx:for="{{list2}}" wx:key="index" data="{{item, locUrl, index}}"></template></view>
</view>

index.js

import { dealTradePic } from "~/utils/trade";Component({options: {addGlobalClass: true,},properties: {goodsList: {type: Array,value: [],observer(goodsList) {const tradeList = dealTradePic(goodsList);const obj = { tradeList };if (tradeList.length === 10) {// 因为没有置0处理,重新加载时前10条不会触发onloadconst { list1, list2, bufferH1, bufferH2 } = this.data;obj.list1 = list1.slice(0, 10);obj.list2 = list2.slice(0, 10);obj.h1 = bufferH1;obj.h2 = bufferH2;}this.setData(obj);},}},data: {locUrl: getApp().locUrl,tradeList: [],h1: 0,h2: 0,bufferH1: 0,bufferH2: 0,list1: [],list2: [],count: 0,},methods: {imgLoad(e) {const { width, height } = e.detail;const { index, title } = e.currentTarget.dataset;const { tradeList, list1, list2, h1, h2 } = this.data;// 高度比例切换let h = 340 * height / width;h = h > 480 ? 480 : h;tradeList[index].height = h;// 增加文字与其他高度const word = title.replace(/[^\x00-\xff]/g, "aa").length;const wh = parseFloat((h + (word > 22 ? 38 : 0)).toFixed(2)) + 150;if (h1 <= h2) {list1.push(tradeList[index]);this.data.h1 = parseFloat(h1.toFixed(2)) + wh;} else {list2.push(tradeList[index]);this.data.h2 = parseFloat(h2.toFixed(2)) + wh;}// 初始高度记录,用于清空this.data.count++;if (this.data.count === 10) {this.data.bufferH1 = this.data.h1;this.data.bufferH2 = this.data.h2;}this.setData({ list1, list2 });}}
});

index.wxss

.recommend-list {display: flex;flex-flow: row wrap;justify-content: space-between;padding: 0;height: 0;overflow: hidden;
}.recommend-card {box-sizing: border-box;font-size: 24rpx;border-bottom: none;width: 342rpx;margin-bottom: var(--gap);
}.recommend-top {width: 340rpx;
}.recommend-img {display: block;width: 100%;height: 100%;border-radius: 16rpx 16rpx 0 0;overflow: hidden;
}.recommend-title {font-size: 28rpx;overflow: hidden;-o-text-overflow: ellipsis;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;
}.recommend-position {display: flex;align-items: center;margin-top: 12rpx;
}.recommend-bottom {background-color: white;border-radius: 0 0 16rpx 16rpx;
}

http://www.yayakq.cn/news/769021/

相关文章:

  • 织梦软件怎么使用域名做网站网站更换服务器 seo
  • 中国物流网站html静态网页制作案例
  • 可信赖的企业网站开发水产养殖网站模板源码
  • 教育网站制作价格计算机一级网页制作基础教程
  • 网站建设的七个步骤建设网站需要准备哪些内容
  • 重庆自助建网站企企业中企动力西安分公司
  • 2018年做网站赚钱吗pc 移动网站 模板
  • wordpress全站广告位做网站没有成本费用如何做账
  • 柳州做网站那家好如何将域名指向网站
  • 张家港网站制作建议找婚庆公司去什么网站
  • 网站底部流程wordpress 空搜索
  • 网站设计方案谁写如何成立一个网站
  • wordpress 整站打包字体WordPress
  • 常用的网站建设技术有免费微商城怎么开通?
  • 哪些ppt网站是免费的做网站最好的工具
  • 代理网站下载高端的网站设计公司
  • 企业网站货物查询怎么做邢台做网站地方
  • 新建文档怎么做网站wordpress 锚文本插件
  • 北京上地做网站湖北可以做网站方案的公司
  • 网站制作 代码photoshop制作网站海报
  • 建设网站简单教程引迈快速开发平台
  • 大型网站的设计网站正在备案中
  • 郑州网站建设培训短期班深圳知名设计公司
  • 网站建设分金手指专业十wordpress 短信登录
  • 做围棋题网站网络销售挣钱吗
  • 建设美团网站陕西省建设厅官网查询
  • 换网站了吗线上推广有哪些渠道
  • 网站管理的含义六安网页设计
  • 商城网站的建设方案在苏州注册公司需要多少钱
  • 河北住房和城乡建设厅网站成都住建局官网网上办事大厅