首页 > 其他分享 >css样式 进行的瀑布流玩法

css样式 进行的瀑布流玩法

时间:2023-04-21 11:39:55浏览次数:40  
标签:index 样式 100% 玩法 height content background position css

css样式 进行的瀑布流玩法_ide


简单归简单 布局还是需要自己造的 我是创建了n个相同内容 就是换图片
<div class="modulee-content-2">
    <div class="content-list">

      <div class="aaa" v-for="item in lineDataList" :key="item.id" @click="toDetail(item)">
        <div class="list-item">
          <div class="img">
           < img :src="getImgUrl(item.coverPic)"/>
        <span class="distance">
            <cl-icon size="15" name="eye-o" />
            <span>{{ item.hitCardNum }}</span>
          </span>
        </div>
      </div>
      <div class="name">{{item.name}}</div>
      </div>
     
    </div>
  </div>

一、首先需要在你父级容器上添加最重要的两个属性:

column-count: 2;(这个属性指定列数为2)

column-gap:12px;(这个属性指定列间距为12px)

二、这个布局最大的坑在子元素上,子元素会出现内容被截断的情况,这里有三种解决方案

1.子容器添加:height: 100%; overflow: auto;(不存在兼容性问题,没测试过)

2.子容器添加:break-inside: avoid(ios存在兼容性问题,会导致首行对不齐,末行排列错乱等情况)

3.子元素设置:display: inline-block;(亲测有效,并且兼容ios,推荐使用此方法)

以上纯属记录个人踩坑记录,欢迎大佬们提意见,水平有限,如有错误之处,还请多多包涵。

css样式 进行的瀑布流玩法_ide_02

css >>
   .modulee-content-2 {
        padding: 0 20px;

        .content-list {
            // 列与列间的间隙
            column-gap: 10px;
            // 分割的列数
            column-count: 2;
            
            .aaa{
                break-inside: avoid;

                .list-item {   
                position: relative;
                z-index: 1;
                border-radius: 20px;
                padding: 5px;
                // margin-bottom: 50px;
                box-sizing: border-box;
                // 间距控制
                width: 90%;

                
                &::after {
                    content: '';
                    width: 100%;
                    height: 100%;
                    position: absolute;
                    left: 0;
                    bottom: -10px;
                    background-image: url('/img/index/module-bg-1.png');
                    background-size: 100% 100%;
                    z-index: -2;
                    // display: block;
                }

                &::before {
                    content: '';
                    width: 100%;
                    height:100%;
                    position: absolute;
                    left: 0;
                    bottom: 0px;
                    background-image: url('/img/index/module-bg.png');
                    background-size: 100% 100%;
                    z-index: -1;
                    // display: block;
                }

                .img{                        
                    width: 100%;
                    height: 100%;

                    img{
                        
                    width: 100%;
                    display: block;
                    // height: auto;
                    border-radius: 20px;
                    }
                }
                    
                    // 子父定位
                    .distance {
                        position: absolute;
                        bottom: 30px;
                        right: 20px;

                        color: #fff;
                        font-size: 32px;
                        z-index: 2;
                        text-align: center;
                        text-shadow: 1px 1px 4px #666;

                        .van-icon{
                            vertical-align: middle;
                            margin-right: 8px;
                        }
                        span {
                            vertical-align: middle;
                            font-size: 20px;
                            // display: block;
                            &:nth-child(4){
                                margin: 0 10px;
                                font-weight: 700;
                                vertical-align: middle;
                            }
                        }
                    }
                    
                }
                .name{
                    margin-top:  10px;
                    // height: 50px;
                    // line-height: 60px;
                    // position: absolute;
                    // left: 0;
                    // bottom: -50px;
                }
            }    
                    
        }
    }

思路在这边分析 整体大盒子包裹一下 在里面操作 因为考虑图片外有内容 所以再分两个盒子 (class img多余 可删)

其次就是css样式实现的瀑布流 

content-list 是这个区域的大盒子**

css样式 进行的瀑布流玩法_兼容性问题_03

aaa是当前图片和文字的大盒子 break-inside: avoid 处理排班问题必加**

css样式 进行的瀑布流玩法_ide_04

图片区域的操作内容
这边图片后面的效果是通过 伪类操作的

&::after {
      content: '';
      width: 100%;
      height: 100%;
      position: absolute;
      left: 0;
      bottom: -10px;
      background-image: url('');
      background-size: 100% 100%;
      z-index: -2;
     // display: block;
   }

&::before {
      content: '';
      width: 100%;
      height:100%;
      position: absolute;
      left: 0;
      bottom: 0px;
      background-image: url('');
      background-size: 100% 100%;
      z-index: -1;
      // display: block;
    }

css样式 进行的瀑布流玩法_兼容性问题_05

里面的图片操作

css样式 进行的瀑布流玩法_ide_06

最后就是 class name 文字问题处理 因为定位导致和上面盒子重叠 
.name{
     margin-top:  10px;
   }


标签:index,样式,100%,玩法,height,content,background,position,css
From: https://blog.51cto.com/u_16082401/6212328

相关文章

  • 一篇文章带你了解css z-index(重叠顺序)
    divcssz-index层重叠顺序div层、span层等html标签层重叠顺序样式z-index,平时CSS使用较少,但也会难免会碰到CSSz-index使用。从基础语法到应用案例教程讲解学习z-index。一、z-index语法与结构z-index跟具体数字div{z-index:100}注意:z-index的数值不跟单位。z-index的数字越高......
  • css 利用 linear-gradient 实现条纹背景
    1.水平条纹背景当给背景设置渐变效果时,默认的渐变方向是垂直由上到下的,效果如下:{background:linear-gradient(#aaa,#ddd);}尝试拉近色标的距离,会发现渐变区域变小了:{background:linear-gradient(#aaa40%,#ddd60%);}当渐变色的色标设置为相同位置时,过渡区......
  • 01-CSS中的非布局样式
    title:01-CSS中的非布局样式publish:true前言CSS中,有很多非布局样式,这些样式(属性)和与布局无关,包括:字体、字重、颜色、大小、行高背景、边框滚动、换行装饰性属性(粗体、斜体、下划线)等。这篇文章,我们来对上面的部分样式做一个回顾。边框如何用边框画一个三角形?详见......
  • 02-CSS布局
    title:02-CSS布局publish:true前言常见的布局属性(1)display确定元素的显示类型:block:块级元素。inline:行内元素。inline-block:对外的表现是行内元素(不会独占一行),对内的表现是块级元素(可以设置宽高)。(2)position确定元素的位置:static:默认属性值。relative:......
  • CSS的一些小知识
    title:认识Web和Web标准publish:false隐藏盒子的几种方式隐藏盒子,有以下几种方式:(1)方式一:overflow:hidden;//隐藏盒子超出的部分(2)方式二:display:none; 隐藏盒子,而且不占位置(用的最多)比如,点击X,关闭京东首页上方的广告栏。(3)方式三:visibility:hidden;//隐......
  • CSS开发积累
    title:认识Web和Web标准publish:false让flex盒子中的子元素们,居中flex布局常用的三行代码:display:flex;justify-content:center;//子元素在横轴的对齐方式(左右居中)align-items:center;//子元素在竖轴的对齐方式(上下居中)让文字只显示一行,超出显示......
  • CSS文章推荐
    title:认识Web和Web标准publish:false2020-03-16Bootstrap中文文档:https://code.z01.com/v4/content/tables.html2020-03-13CSS实现鼠标悬停弹出微信二维码......
  • 11-CSS3属性详解(一)
    title:11-CSS3属性详解(一)publish:true前言我们在上一篇文章中学习了CSS3的选择器,本文来学一下CSS3的一些属性。本文主要内容:文本盒模型中的box-sizing属性处理兼容性问题:私有前缀边框背景属性渐变文本text-shadow:设置文本的阴影格式举例: text-s......
  • 12-CSS3属性详解:动画详解
    title:12-CSS3属性详解:动画详解publish:true前言本文主要内容:过渡:transition2D转换transform3D转换transform动画:animation过渡:transitiontransition的中文含义是过渡。过渡是CSS3中具有颠覆性的一个特征,可以实现元素不同状态间的平滑过渡(补间动画),经常......
  • 13-CSS3属性:Flex布局图文详解
    title:13-CSS3属性:Flex布局图文详解publish:true前言CSS3中的flex属性,在布局方面做了非常大的改进,使得我们对多个元素之间的布局排列变得十分灵活,适应性非常强。其强大的伸缩性和自适应性,在网页开中可以发挥极大的作用。flex初体验我们先来看看下面这个最简单的布局:......