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

建设公司网站费用怎么做账推广一般去哪发帖

建设公司网站费用怎么做账,推广一般去哪发帖,邢台太行中学官网,在哪一个网站上做劳务合同备案技术栈:Vue2 javaScript 简介 在实际开发过程中有遇到一个场景:一个list,每行个数固定,点击单个元素后,在当前行与下一行之间插入一行元素详情,便于更直观的查看到对应的数据详情。 这种情形&#xff0c…

技术栈:Vue2 + javaScript

简介

在实际开发过程中有遇到一个场景:一个list,每行个数固定,点击单个元素后,在当前行与下一行之间插入一行元素详情,便于更直观的查看到对应的数据详情。
这种情形,在移动端比较常见,比如用户列表,点击单个列表 展示详情,可以考虑 flex 布局 + position relative 定位。

实现

思路

对于需求重点和实现拆解

  1. 列表元素:for 遍历
  2. 每行固定(3)个元素:flex布局、宽度%
  3. 详情在该元素下独占一行:for 内元素、position relative

核心代码

mock数据

// list数据
list: [{ id: 1, name: '测试数据1', desc: '测试数据1描述测试数据1描述测试数据1描述测试数据1描述' },{ id: 2, name: '测试数据2', desc: '测试数据2描述测试数据2描述测试数据2描述测试数据2描述' },{ id: 3, name: '测试数据3', desc: '测试数据3描述测试数据3描述测试数据3描述测试数据3描述' },{ id: 4, name: '测试数据4', desc: '测试数据4描述测试数据4描述测试数据4描述测试数据4描述' },{ id: 5, name: '测试数据5', desc: '测试数据5描述测试数据5描述测试数据5描述测试数据5描述' },{ id: 6, name: '测试数据6', desc: '测试数据6描述测试数据6描述测试数据6描述测试数据6描述' },{ id: 7, name: '测试数据7', desc: '测试数据7描述测试数据7描述测试数据7描述测试数据7描述' },{ id: 8, name: '测试数据8', desc: '测试数据8描述测试数据8描述测试数据8描述测试数据8描述' },{ id: 9, name: '测试数据9', desc: '测试数据9描述测试数据9描述测试数据9描述测试数据9描述' },{ id: 10, name: '测试数据10', desc: '测试数据10描述测试数据10描述测试数据10描述测试数据10描述' },{ id: 11, name: '测试数据11', desc: '测试数据11描述测试数据11描述测试数据11描述测试数据11描述' }],showDetail: false, // 是否显示详情detail: {}, // 详情数据

DOM结构

<!-- 列表容器 -->
<div class="container"><!-- 单个元素 start--><div v-for="(item, index) in list" :key="index" class="item-box" @click="toggleEvent(item)"><div class="item-name">{{ item.name }}</div><!-- 详情 start --><div class="item-detail" v-if="showDetail && detail.id == item.id" :style="caculateDetailLeft(index)"><!-- 气泡三角 --><div class="top-jian" :style="caculateJianLeft(index)"></div><!-- 详情描述 --><div>{{ detail.desc }}</div></div><!-- 详情 end --></div><!-- 单个元素 end -->
</div>

CSS 与 动态位移

.container {width: 80vw; // 列表固定宽度display: flex;gap: 16px; // 元素间距flex-wrap: wrap;.item-box {// calc((父元素宽度 - 间距*(每行个数-1)) / 每行个数)width: calc((100% - 32px) / 3); .item-detail {width: 80vw; // 列表固定宽度position: relative; background: #AFF050;.top-jian {width: 20px;height: 20px;position: absolute;background: #AFF050;-webkit-transform: rotate(45deg);transform: rotate(45deg);top: -6px;}}}
}
 caculateDetailLeft(index) {return {// calc(calc(calc(100% + 16px) * ${index%3}) * -1)// calc(-1 * (100% + 间距) * ${index % 每行个数})left: `calc(-1 * (100% + 16px) * ${index % 3})`}},
caculateJianLeft(index) {return {// calc(calc(calc((100% - 32px) / 3) * ${index%3}) + calc((100% - 32px) / 6))// calc((100% - 间距*2) * (${index % 每行个数} / 每行个数 + 1 / (每行个数*2)))left: `calc((100% - 32px) * (${index % 3} / 3 + 1 / 6))`}}

效果

展开效果

完整代码

<template><div class="container"><div v-for="(item, index) in list" :key="index" class="item-box" @click="toggleEvent(item)"><div class="item-name">{{ item.name }}</div><div class="item-detail" v-if="showDetail && detail.id == item.id" :style="caculateDetailLeft(index)"><div class="top-jian" :style="caculateJianLeft(index)"></div><div>{{ detail.desc }}</div></div></div></div>
</template>
<script>export default {name: 'Test',data() {return {list: [{ id: 1, name: '测试数据1', desc: '测试数据1描述测试数据1描述测试数据1描述测试数据1描述' },{ id: 2, name: '测试数据2', desc: '测试数据2描述测试数据2描述测试数据2描述测试数据2描述' },{ id: 3, name: '测试数据3', desc: '测试数据3描述测试数据3描述测试数据3描述测试数据3描述' },{ id: 4, name: '测试数据4', desc: '测试数据4描述测试数据4描述测试数据4描述测试数据4描述' },{ id: 5, name: '测试数据5', desc: '测试数据5描述测试数据5描述测试数据5描述测试数据5描述' },{ id: 6, name: '测试数据6', desc: '测试数据6描述测试数据6描述测试数据6描述测试数据6描述' },{ id: 7, name: '测试数据7', desc: '测试数据7描述测试数据7描述测试数据7描述测试数据7描述' },{ id: 8, name: '测试数据8', desc: '测试数据8描述测试数据8描述测试数据8描述测试数据8描述' },{ id: 9, name: '测试数据9', desc: '测试数据9描述测试数据9描述测试数据9描述测试数据9描述' },{ id: 10, name: '测试数据10', desc: '测试数据10描述测试数据10描述测试数据10描述测试数据10描述' },{ id: 11, name: '测试数据11', desc: '测试数据11描述测试数据11描述测试数据11描述测试数据11描述' }],showDetail: false,detail: {},}},methods: {toggleEvent(item) {if (item.id == this.detail.id) {this.showDetail = !this.showDetail} else {this.showDetail = truethis.detail = { ...item }}},caculateDetailLeft(index) {return {// calc(calc(calc(100% + 16px) * ${index%3}) * -1)left: `calc(-1 * (100% + 16px) * ${index % 3})`}},caculateJianLeft(index) {return {// calc(calc(calc((100% - 32px) / 3) * ${index%3}) + calc((100% - 32px) / 6))left: `calc((100% - 32px) * (${index % 3} / 3 + 1 / 6))`}}}
}
</script>
<style lang="scss" scoped>
.container {width: 80vw;display: flex;gap: 16px;flex-wrap: wrap;.item-box {width: calc((100% - 32px) / 3);.item-name {border: 1px solid #ccc;padding: 30px;text-align: center;border-radius: 15px;}.item-detail {width: 80vw;position: relative;background: #AFF050;margin-top: 16px;padding: 30px;border-radius: 15px;.top-jian {width: 20px;height: 20px;position: absolute;background: #AFF050;-webkit-transform: rotate(45deg);transform: rotate(45deg);top: -6px;}}}
}
</style>
http://www.dtcms.com/wzjs/498948.html

相关文章:

  • 安徽省住房和城乡建设厅网站6网站推广郑州
  • 网站建设的流程是什么优化营商环境指什么
  • 装修网站排名前十名官网设计公司
  • 电子商务网站版面布局竞价推广价格
  • 谢岗东莞网站建设小程序制作流程
  • 网站建设的安全性seo快速排名优化
  • 宠物用品网站开发背景怎么把自己的网站发布到网上
  • 国际1688网站黑马培训
  • 弹性web做网站好不好app推广联盟平台
  • 深圳招工网站淘宝seo是什么意思啊
  • dw怎么做网站教程seo外链在线工具
  • 做seo的网站有那些微商推广哪家好
  • 做游戏的网站有哪些北京网优化seo优化公司
  • 杭州 城西 做网站建立网站平台需要多少钱
  • 模具厂咋做网站友情链接检测的特点
  • 个人做视频网站烧钱315影视行业
  • 眼镜网站怎么做竞价成都百度seo公司
  • 外贸公司网站建设费会计科目网络广告策划案
  • 2017商会网站建设方案百度关键词推广工具
  • 广州新公司网站建设友情链接吧
  • 页面好看的教育类网站模板seo顾问培训
  • 阿里巴巴网站导航怎么做网络营销的理解
  • 找生意做那个网站靠谱seo咨询推广找推推蛙
  • freenom怎么做网站seo资料
  • 自己做头像的网站非流光爱站网站长工具
  • 美的技术网站sem竞价托管代运营
  • 济南 网站定制seo顾问推推蛙
  • 建站网站关键词大全北京推广
  • wordpress导入b站的直播企业宣传视频
  • 网站怎么做搜索栏百度推广优化中心