uniapp/vue中,如何按照要求改动代码?

根据以下的代码进行改动,现在代码出来的效果是第三节桌腿的位置会根据第1、2节高度的变化而变化。
我需要的效果是第三节桌腿的位置是固定不变的,第一第二桌腿高度由上往下变低,并且整个桌子和三节桌腿始终都要连在一起,也就是升降桌的效果,请问大神们我该怎么改?代码直接复制可用

简单点就是说,上下滑动时,固定第三节桌腿的位置,其他功能不变

小弟在这里先感谢各位大神们,感激不尽,祝大神们发财祝大神们取漂亮老婆!!!

<view style="height: 140rpx;"></view>

<div style="display: flex;justify-content: center;flex-direction: row;width: 100%;">

<div class="container">

<!-- 定义桌子的组件 -->

<div class="table" :style="{top: tableTop + 'px'}" @touchstart.stop.prevent="onTouchStart"

@touchmove.stop.prevent="onTouchMove">

<!-- 定义桌子的上部分 -->

<div class="table-top">

<!-- 定义两个长方形 -->

<div class="rect"></div>

<div class="rect_a"></div>

</div>

<!-- 定义桌子的下部分 -->

<div class="table-bottom">

<!-- 定义三节桌腿 -->

<div class="leg" :style="{height: legHeight1 + 'px'}"></div>

<div class="leg" :style="{height: legHeight2 + 'px', width: '30px'}"></div>

<!-- 下面这一行就是第三节桌腿 -->

<div class="leg" style="height: 50px; width: 40px;"></div>

</div>

</div>

</div>

</div>

data() {

return {

// 定义桌子的初始位置

tableTop: 114,

// 定义桌腿的初始高度

legHeight1: 75,

legHeight2: 75,

// 定义触摸事件的初始坐标

touchStartY: 0,

// 定义桌子的最大值和最小值

maxTop: 180, // 最大值为200px

minTop: 50, // 最小值为50px

deskValue: 100,

}

},

// 定义触摸开始时的方法

onTouchStart(event) {

// 获取触摸点的纵坐标

this.touchStartY = event.touches[0].clientY;

},

// 定义触摸移动时的方法

onTouchMove(event) {

// if(this.deskValue >100 || this.deskValue < 0){

// return

// }

// 获取触摸点的纵坐标

let touchMoveY = event.touches[0].clientY;

// 计算触摸点移动的距离

let distance = touchMoveY - this.touchStartY;

// 判断是否超过最大值或最小值

if (distance > 0 && this.deskValue - 1 < 1) {

// 没有超过最大值或最小值,更新位置和高度

return

} else if (distance < 0 && this.deskValue + 1 > 100) {

return

} else {

if (this.tableTop + distance < 114 || this.tableTop + distance > 196) {

return

} else {

this.tableTop += distance;

}

this.legHeight1 -= distance;

this.legHeight2 -= distance;

}

if (distance > 0) {

// 向下滑,value减少1

this.deskValue = this.deskValue - 1;

} else if (distance < 0) {

// 向上滑,value增加1

this.deskValue = this.deskValue + 1;

}

// 更新触摸点的纵坐标

this.touchStartY = touchMoveY;

},

    .container {

// width: 100vw;

height: 200px;

max-height: 200px;

/* 添加最大高度 */

min-height: 50px;

/* 添加最小高度 */

display: flex;

justify-content: center;

align-items: center;

margin-bottom: 40rpx;

}

.table {

position: absolute;

width: 200px;

}

/* 定义桌子上部分的样式 */

.table-top {

height: 50px;

display: flex;

flex-direction: column;

align-items: center;

}

/* 定义长方形的样式 */

.rect {

// flex: 1;

width: 250px;

height: 15px;

// background-color: #f0f0f0;

border: 1px solid black;

}

.rect_a {

flex: 1;

width: 150px;

// background-color: #f0f0f0;

border: 1px solid black;

}

/* 定义桌子下部分的样式 */

.table-bottom {

height: 100%;

display: flex;

flex-direction: column;

align-items: center;

justify-content: space-between;

}

/* 定义桌腿的样式 */

.leg {

width: 20px;

// background-color: #e0e0e0;

border: 1px solid black;

}


回答:

本质是css问题,所以只改了样式布局部分
https://jsrun.net/e4xKp


回答:

读代码后
文中此处代码可能有误 两个腿都在变短 此处应该x2 不然位置一定会变化 导致下方的腿上来了
应该改成 (tableTop *2)
<!-- 定义桌子的组件 -->

<div class="table" :style="{top: tableTop *2 + 'px'}" @touchstart.stop.prevent="onTouchStart"

@touchmove.stop.prevent="onTouchMove">

以上是 uniapp/vue中,如何按照要求改动代码? 的全部内容, 来源链接: utcz.com/p/935083.html

回到顶部