瀑布流CSS

JS模板

<div class="waterfall">
  <div class="item" v-for="(item,index) in list">
    <img :src="item.storyImg"/>
    <div class="introduce">
      <div class="item-name multi2">
        {{item.title}}
      </div>
      <div class="like-number" style="text-align: right">
    <span v-if="item.isLike" style="color: #F82222">
      <van-icon name="like" @click="like(item)"/>
      <span style="color: #666666">{{item.likeNum}}</span>
    </span>
        <span v-else>
      <van-icon name="like-o" @click="like(item)"/>
      <span style="color: #666666">{{item.likeNum}}</span>
    </span>
      </div>
    </div>
  </div>
</div>

css

.waterfall {
  -moz-column-count: 2; /* Firefox */
  -webkit-column-count: 2; /* Safari && Chrome */
  column-count: 2; /* 将 div 元素中的文本分为2列,并规定列间1rem像素的间隔。 */
  -moz-column-gap: 5px;
  -webkit-column-gap: 5px;
  column-gap: 5px;
}

.item {
  margin: 0 0 5px 0;
  -moz-page-break-inside: avoid;
  -webkit-column-break-inside: avoid;
  break-inside: avoid; /*break-inside: avoid; 避免元素内部断行并产生新列*/
  background: #fff;
  border-radius: 4px;
  overflow: hidden;
  img{
    width: 100%;
  }
}

单纯css,异步获取数据的时候,每次都会重新布局。
JS重组数据,分成两列

 this.dataList.push(...res.data.list)
 this.leftList = []; 
 this.rightList = [];
for (let i = 0; i < this.dataList.length; i++) { 
if (i % 2 == 0) {
this.leftList.push(this.dataList[i]) 
} else {
this.rightList.push(this.dataList[i])
 }
}
  <div class="lwrap">
              <ul class="list-left">
                <li @click="" v-for="item of leftList" :key="item.storyId" @click="goDetail(item)">
                  <div class="media-box">
                    <img
                      class="articleImg"
                      v-lazy="item.ulaCover"
                      alt
                    />
                    <img
                      class="player"
                      src="@/assets/imgs/home/player.png"
                      alt
                    />
                  </div>
                  <div class="text multi2">{{item.ulaTitle}}</div>
                </li>
              </ul>
              <ul class="list-left">
                <li @click="" v-for="item of rightList" :key="item.storyId" @click="goDetail(item)">
                  <div class="media-box">
                    <img
                      class="articleImg"
                      v-lazy="item.ulaCover"
                      alt
                    />
                    <img
                      class="player"
                      src="@/assets/imgs/home/player.png"
                      alt
                    />
                  </div>
                  <div class="text multi2">{{item.ulaTitle}}</div>
                </li>
              </ul>
            </div>
  .lwrap {
        display: flex;
        height: 100%;

        .list-left {
          width: 175px;

          li {
            width: 100%;
            background: #ffffff;
            box-shadow: 0px 0px 8px 0px rgba(215, 215, 215, 0.34);
            border-radius: 5px;
            margin-bottom: 10px;
            display: block;
            padding: 5px;

            .media-box {
              position: relative;

              .articleImg {
                border-radius: 4px;
                width: 100%;
              }

              .player {
                width: 22px;
                height: 22px;
                position: absolute;
                top: 11px;
                right: 10px;
              }
            }

            .text {
              margin: 10px 0;
              font-size: 15px;
              color: #333;
              line-height: 22px;
            }

            .dis-like {
              font-size: 13px;
              margin-bottom: 14px;
              color: #7f7f7f;

              .left {
                img {
                  width: 20px;
                  height: 20px;
                  margin-right: 5px;
                  border-radius: 100%;
                }
              }

              .right {
                font-size: 12px;
                align-items: flex-start;

                i {
                  color: #6f6f6f;
                  font-size: 13px;
                  margin-right: 3px;
                }
              }
            }
          }
        }

        .list-left:first-child {
          margin-right: 9px;
        }
      }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 目录 Day01标签行元素 Day02表单元素css选择器伪类选择符行内元素块元素表格 Day03文本相关属性列表...
    Moquyun阅读 3,535评论 0 0
  • Child: >nav>ul>li Sibling: +div+p+bq Clim...
    Michael_涵阅读 3,114评论 0 1
  • <!DOCTYPE html> CSS3瀑布流 /*大层*/ .container{wi...
    梁戈霄阅读 3,073评论 0 0
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 10,149评论 0 0
  • 1、垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,...
    kiddings阅读 8,415评论 0 11

友情链接更多精彩内容