案例
| <div ref="logContainer></div> |
| |
| |
| const logContainer = ref(null); |
| const onStepChange = () =>{ |
| logContainer.value.scrollIntoView({ |
| behavior: "smooth", // 定义过渡动画 instant立刻跳过去 smooth平滑过渡过去 |
| block: "start", // 定义垂直滚动方向的对齐 start顶部(尽可能) center中间(尽可能) end(底部) |
| inline: "center", // 定义水平滚动方向的对齐 |
| }); |
| }; |
核心代码
| <template> |
| <div ref="editflagNode"></div> |
| <div v-if="route.query.flag === '1' || route.query.flag === '3'"> |
| <Title v-if="btnFlag || taskDetail.taskConclusion !== null">{{ |
| route.query.flag === "3" ? "研判结论" : "添加研判结论" |
| }}</Title> |
| |
| <div style="margin: 10px"> |
| <div style="margin: 10px">{{ taskDetail.taskConclusion }}</div> |
| <div style="width: 100%; display: flex"> |
| <div |
| class="onupload" |
| v-for="val in taskDetail.conclusionAttachment" |
| :key="val.id" |
| > |
| <div>{{ val.name }}</div> |
| <div> |
| <a :href="val.address" :download="val.name">下载</a> |
| |
| </div> |
| </div> |
| <Textareas @datalist="datalist" empty="1" v-if="btnFlag" |
| >提交 |
| </Textareas |
| > |
| </div> |
| </div> |
| </div> |
| </div> |
| </template> |
| |
| const editflagNode = ref(null); |
| const containerNode = ref(null); |
| |
| const scrollToEditflag = (domNode, height) => { |
| for (let i = 0; i < height + 1000; i++) { |
| setTimeout(() => { |
| domNode.value.scrollTo(0, i); |
| }, 100); |
| } |
| }; |
| |
| onMounted(async () => { |
| console.log("123", 123); |
| mitt.on("triggerScrollToEditflag", (flag) => { |
| scrollToEditflag(containerNode, editflagNode.value.offsetTop); |
| btnFlag.value = flag; |
| }); |
| getResearchTaskDetail(); |
| }); |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了