微信小程序Timeline 时间线

微信小程序Timeline 时间线
仿ElementUI的Timeline 时间线,自适应页面与文本
效果图:
请添加图片描述
wxml代码:

<view class="status-alarm">
    <view class="line-row" wx:for="{{lineArr}}" wx:key="index">
        <view class="onedot {{index===0?'dotS':''}}"></view>
        <view wx:if="{{index!=lineArr.length-1}}" class="oneline"></view>
        <view wx:else class="oneline oneline1"></view>
        <view class="maintext {{index===0?'maintextS':''}}">
            <text>{{item.name}}</text>
            <text wx:if="{{item.time}}">{{item.time}}</text>
            <text wx:if="{{item.title}}" >{{item.title}}</text>
        </view>
    </view>
</view>

wxss代码:

page{
  width: 100%;
    height: 100%;
    box-sizing: border-box;
    padding: 20rpx 20rpx 0 20rpx;
    background-color: #F5F6F7;

}
.status-alarm {
  width: 100%;
  background: #ffffff;
  border-radius: 18rpx;
  box-sizing: border-box;
  padding: 40rpx 4% 30rpx;
}
.line-row {
  position: relative;
  box-sizing: border-box;
  padding-bottom: 40rpx;
}
.line-row:nth-last-child(1) {
  padding-bottom: 0rpx;
}
.onedot {
  left: 20rpx;
  width: 30rpx;
  height: 30rpx;
  position: absolute;
  border: 1rpx solid #D8D8D8;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1;
}
.onedot::after {
  content: '';
  top: 5rpx;
  left: 5rpx;
  width: 20rpx;
  height: 20rpx;
  background: #D5D5D5;
  border-radius: 50%;
}
.dotS {
  border-color: #2674F8;
}
.dotS::after {
  background: #2674F8;
}
.oneline {
  position: absolute;
  left: 33rpx;
  top: 30rpx;
  height: calc(100% - 30rpx);
  border-left: 2px solid #E7E7E7;
}
.oneline1 {
  height: calc(100% - 50rpx);
}
.maintext {
  position: relative;
  box-sizing: border-box;
  padding-left: 85rpx;
  top: -10rpx;
}
.maintext text {
  display: block;
  color: #999999;
  font-size: 28rpx;
}
.maintext text:nth-child(1) {
  margin-bottom: 5rpx;
  color: #000000;
  font-size: 31rpx;
}
.maintextS text {
  color: #2674F8;
}
.maintextS text:nth-child(1) {
  color: #2674F8;
}

js代码:

data: {
    lineArr:[
      {name:'待处理'},
      {name:'派单',time:'2022-01-18 18:24:10',title:'派单张三'},
      {name:'产生',time:'2022-01-18 16:23:10',title:'额定电压过大额定电压过大额定电压过大额定电压过大额定电压过大额定电压过大额定电压过大'},
    ]
  },

GitHub下载源码

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序是基于webview的,而Cesium是使用webgl实现的,因此在微信小程序中使用Cesium需要一些特殊的处理。以下是一个简单的示例代码,供参考: 1. 在小程序中引入Cesium库 ```javascript import * as Cesium from './cesium/Cesium.js'; ``` 这里需要将cesium的js文件下载到本地,然后通过import引入。 2. 创建canvas 在小程序中使用Cesium需要创建一个canvas元素,然后将其插入到小程序的DOM树中。 ```javascript const canvas = document.createElement('canvas'); canvas.style.width = '100%'; canvas.style.height = '100%'; canvas.width = window.innerWidth * window.devicePixelRatio; canvas.height = window.innerHeight * window.devicePixelRatio; canvas.id = 'cesiumContainer'; this.container.appendChild(canvas); ``` 这里需要注意,canvas的宽高需要根据小程序的实际尺寸进行计算,同时需要设置canvas的id。 3. 初始化Cesium ```javascript const viewer = new Cesium.Viewer('cesiumContainer', { animation: false, baseLayerPicker: false, fullscreenButton: false, geocoder: false, homeButton: false, infoBox: false, sceneModePicker: false, selectionIndicator: false, timeline: false, navigationHelpButton: false, navigationInstructionsInitiallyVisible: false, creditContainer: null, sceneMode: Cesium.SceneMode.SCENE3D, imageryProvider: new Cesium.UrlTemplateImageryProvider({ url: 'http://localhost:8080/tms/{z}/{x}/{y}.png', maximumLevel: 19 }), terrainProvider: new Cesium.CesiumTerrainProvider({ url: 'http://localhost:8080/terrain', requestWaterMask: true, requestVertexNormals: true }) }); ``` 这里创建了一个Cesium的Viewer对象,并指定了一些参数,如场景模式、地形和影像提供者等。 4. 将canvas添小程序的DOM树中 ```javascript wx.createSelectorQuery().select('#cesiumContainer').node(res => { this.container.appendChild(res.node); }).exec(); ``` 这里使用了微信小程序的createSelectorQuery方法,根据canvas的id获取到节点,并将其添小程序的DOM树中。 5. 处理Cesium的事件 由于微信小程序是基于webview实现的,因此需要对Cesium的事件进行特殊处理,如: ```javascript canvas.addEventListener('touchstart', e => { const touch = e.touches[0]; const x = touch.pageX; const y = touch.pageY; this.handler.setInputAction(() => { this.mouseDown(x, y); }, Cesium.ScreenSpaceEventType.LEFT_DOWN); }); ``` 这里监听了canvas的touchstart事件,并将其转化为Cesium的事件。 以上是一个简单的示例代码,供参考。具体实现还需要根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值