VUE循环 + CSS 实现布局

实现样式图:

<div class="tool-figure-note-box">
    <div v-for="(figureNoteItem, figureNoteIndex) in list" :key="figureNoteIndex">
      <template v-if="figureNoteItem.show">
        <div class="figure-note-title">{{ figureNoteItem.title }}</div>
         <div class="figure-note-list">
           <div v-for="(item, index) in figureNoteItem.list" :key="index">
             <el-image style="width: 20px" :src="item.src" />
             <span class="margin-left-8">{{ item.text }}</span>
           </div>
         </div>
       </template>
     </div>
</div>

list: [
        {
          show: true,
          title: '列表1:',
          list: [
            {
              src: require('@/assets/img/ic_map_region_3.svg'),
              text: '标题1'
            },
            {
              src: require('@/assets/img/ic_map_region_3.svg'),
              text: '标题2'
            },
            {
              src: require('@/assets/img/ic_map_region_3.svg'),
              text: '标题3'
            },
            {
              src: require('@/assets/img/ic_map_region_3.svg'),
              text: '标题4'
            },
            {
              src: require('@/assets/img/ic_map_region_3.svg'),
              text: '标题5'
            }
          ]
        },
        {
          show: true,
          title: '列表2:',
          list: [
            {
              src: require('@/assets/img/ic_map_region_3.svg'),
              text: '标题1'
            },
            {
              src: require('@/assets/img/ic_map_region_3.svg'),
              text: '标题2'
            },
            {
              src: require('@/assets/img/ic_map_region_3.svg'),
              text: '标题3'
            }
          ]
        }
      ]

 css主要是处理不同项之间的边距问题,因为,需要加margin或者padding,但是使用v-if不会去掉margin/padding,所以使用列表里面的title的加上padding来将两个列表之间撑开,列表中间有一条分割线,刚好可以用title的上border来做

使用:first-of-type来实现,详情见我之前写的CSS选择器 :first-of-type/:last-of-type/ :first-child/:last-child 用法_momo_mom177的博客-CSDN博客官方链接:CSS3 :first-of-type 选择器 <div class="parent"> <span class="child child1">child1</span> <span class="child child2">child2</span> <div class="child child3"> child3 <div>child3-1</div>https://blog.csdn.net/momo_mom177/article/details/124008659?spm=1001.2014.3001.5502

.tool-figure-note-box {
    width: 350px;
    margin-top: 30px;
    padding: 20px 30px;
    border: 1px solid rgba(223,228,235,1);
    border-radius: 8px;
    > div {
    &:first-of-type  .figure-note-title{
       padding-top: 0;
       border-top: none; // 第一个去掉分割线
       margin-top: 0;
     }
    .figure-note-title {
      font-size: 16px;
      color: #2A2F4D;
      font-weight: 500;
      padding-top: 15px;
      border-top: 1px solid rgba(223,228,235,1); // 分割线
      margin-top: 12px;
    }
      .figure-note-list {
        display: flex;
        flex-wrap: wrap;
        > div {
          display: flex;
          align-items: center;
          font-size: 14px;
          color: #8392B7;
          margin-top: 12px;
          margin-right: 25px;
        }
      }
    }
  }

Vue 3 + Vite.js中实现上拉加载更多视频的布局,你可以按照以下步骤进行操作: 1. 首先,在组件中创建一个用于存储视频列表的数组和一个表示是否正在加载的变量: ```javascript data() { return { videoList: [], isLoading: false, }; }, ``` 2. 接下来,你可以使用Vite.js提供的`@scroll`指令来监听滚动事件。在需要上拉加载更多视频的元素上添加该指令,并绑定一个方法: ```html <div v-scroll="loadMoreVideos"> <!-- 视频列表 --> </div> ``` 3. 然后,在`loadMoreVideos`方法中,你可以检查是否已经加载了所有视频或者正在加载中。如果是,则直接返回,否则开始加载更多的视频数据: ```javascript methods: { async loadMoreVideos() { if (this.isLoading) return; if (this.videoList.length === allVideos.length) return; this.isLoading = true; // 加载更多视频数据的逻辑 // 可以使用API请求数据、模拟数据等方法获取新的视频列表 this.isLoading = false; }, }, ``` 4. 在加载更多视频的逻辑中,你可以使用合适的方式获取新的视频数据,并将其追加到现有的视频列表中: ```javascript methods: { async loadMoreVideos() { // ... const newVideos = await fetchMoreVideos(); // 使用合适的方式获取新的视频数据 this.videoList = [...this.videoList, ...newVideos]; // ... }, }, ``` 5. 最后,你可以使用`v-for`指令在模板中循环渲染视频列表: ```html <div v-scroll="loadMoreVideos"> <div v-for="video in videoList" :key="video.id"> <!-- 视频内容 --> </div> </div> ``` 完成上述步骤后,当用户上拉滚动到底部时,会触发`loadMoreVideos`方法加载更多的视频数据,并将新的视频列表展示出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值