flex布局(图片自适应展示)

利用flex布局实现多张图片自适应展示

实现效果

图片排列
在这里插入图片描述

实现方式

我是利用flex布局来控制的.
在这里插入图片描述
这样子写的话会有一个问题,因为space-between是两端布局,若是一行的图片没有5个的话,他中间的间距会拉大,不会一直保持这个间距自适应。
最后加了一个计算的方法,来判断图片是否撑满了一行,若是没有撑满一行,则我们生成div,将图片撑满。

js:

/**flex布局计算一行放多少个,没放满往前挤
         * PIC_WIDTH: 图片的宽度
         * TOTAL: 代表你这一页展示多少个图片
         * w: 屏幕的宽度
         */
        caculate() {
            const PIC_WIDTH = 218;
            const TOTAL = this.posterData.length; // 这个是后端返回的一页的数据
            const PIC_MARGIN = 25;
            const w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
            const count_in_row = parseInt((w || 1080) / (PIC_WIDTH + PIC_MARGIN)); // 一行放多少个,这里是5个
            const I = parseInt(TOTAL % count_in_row);
            const need_placeholder_count = I ? count_in_row - I : 0;
            this.allCount = parseInt(need_placeholder_count);
        },

html:

<div v-for="index in allCount" :key="`pick${index}`" class="pick"></div>

css:

.pick {
            content: '';
            width: $imgW;
            margin-right: 25px;
        }
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flex布局可以实现图片自适应效果。通过设置容器的display属性为flex,可以让容器内的元素按照弹性布局排列。在Flex布局中,可以利用flex属性来控制元素的伸缩性,使其能够自适应容器的宽度。 具体实现方法如下: 1. 在CSS代码中,使用flex布局进行排列。可以使用flex-wrap属性来确定是否换行,并使用justify-content属性来控制元素在主轴上的对齐方式。 2. 根据图片的个数和容器的宽度,计算出每个图片的宽度,并设置对应的样式。 3. 如果一行的图片没有撑满容器的宽度,可以通过生成一个div元素并将图片撑满来实现自适应效果。 4. 将图片的数据按照一定的规则转化为二维数组,方便进行展示。 通过以上步骤,可以实现flex布局下的图片自适应效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Flex布局做出自适应页面(语法和案例)](https://download.csdn.net/download/weixin_38732842/13129690)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [flex布局(图片自适应展示)](https://blog.csdn.net/lydia_love/article/details/117264153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [弹性盒子布局宽度自适应-图片自适应](https://blog.csdn.net/weixin_46078934/article/details/122837838)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值