问答

一组从大到小排好序的数据,生成div,宽度统一,高度不统一出现

作者:admin 2021-05-07 我要评论

data: [ { title: '美食', value: 99 }, { title: '才艺', value: 96 }, { title: '搞笑', value: 91 }, { title: '旅行', value: 86 }, { title: '游戏', value...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
data: [
      { title: '美食', value: 99 },
      { title: '才艺', value: 96 },
      { title: '搞笑', value: 91 },
      { title: '旅行', value: 86 },
      { title: '游戏', value: 82 },
      { title: '颜值', value: 77 },
      { title: '评测', value: 73 },
      { title: '是的', value: 67 },
      { title: '斯诺克', value: 60 },
      { title: '美妆', value: 57 },
      { title: '科技', value: 52 },
      { title: '健身', value: 47 },
      { title: '生活', value: 41 },
      { title: '哈哈', value: 38 },
      { title: '养生保健', value: 33 },
      { title: '综合', value: 31 },
      { title: '新闻', value: 22 },
      { title: '健身', value: 15 },
      { title: '足球', value: 11 },
      { title: '篮球', value: 7 },
    ]

这样一组数据,在一个宽度300px的容器内,每一个item的宽度固定60px,高度的值为value值,高度最小值是20px,最后出来的效果, 因为元素是顶部对齐的,所有高度小的元素,和上一行的元素出现了间隙,请问有什么好的思路啊

image

###

搜索瀑布流或者waterfall

###

float:left

###

image.png
如果这样你觉得丑的话,我感觉你这个需求用echart做成柱状图比较好,可以考虑改版
image.png
image.png

function wateFull() {
            var culu = 4;
            var arr = [];
            $('.wrap p').each(function(i) {
                var h = $(this).height();
                var w = 60;
                var boxheight = h
                if (i < culu) {
                    $(this).css({
                        top: 0,
                        left: w * i
                    })
                    arr.push(h)
                } else {
                    var minh = arr[0];
                    var index = 0;
                    for (let j = 0; j < arr.length; j++) {
                        if (minh > arr[j]) {
                            minh = arr[j];
                            index = j;
                        }

                    }
                    console.log(minh, index, arr)
                    $(this).css({
                        top: arr[index],
                        left: $(".wrap p").eq(index).css("left")
                    });
                    arr[index] = arr[index] + boxheight;
                }
            })
        }
     .wrap {
    position: relative;
    width: 300px;
}

.wrap p {
    width: 60px;
    position: absolute;
    background: #f40;
    border: 1px solid green;
    display: flex;
    align-items: center;
    justify-content: center;
    /* margin: 0; */
    font-size: 12px;
    color: #fff;
}
前两个图是css就可以实现的,最后一个需要js控制
###

高度不一致的这种排列最好使用瀑布流。
可以参考这样的。
https://www.cnblogs.com/ainyi...

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 一组从大到小排好序的数据,生成div,

    一组从大到小排好序的数据,生成div,

  • js 往数组中遍历三个元素

    js 往数组中遍历三个元素

  • ButterKnife使用pply plugin: 'com.jak

    ButterKnife使用pply plugin: 'com.jak

  • 关于mybatis处理json疑惑.

    关于mybatis处理json疑惑.

腾讯云代理商
海外云服务器