vue移动端通过px动态计算图片宽高_vue图片宽高自适应_移动web图片高度自适应的解决方案...

由于图片的加载是在dom加载完成之后进行的,于是,在手机端浏览网页时,经常会看到页面刚打开时很多内容叠在一起,当图片加载完成后,页面会由于图片加载完成出现明显的抖动

145172

针对这个问题,有以下几种解决方案

媒体查询+px

rem

vm

padding

媒体查询+px

@media screen and(max - width: 320 px) {

img {

height: 50px;

}

}

移动端设备种类繁多,媒体查询固然精准,但相应的是工作量的增加

rem

rem这个低调的单位随着webapp的兴起,俨然成为了手机端屏幕适配的最佳方案

img {

height: 0.5rem;

}

但由于rem的小数像素问题,可能会导致1px偏差的产生,就看你是不是处女座了

vm

相对于视口的宽度或高度中较小的那个,其中最小的那个被均分为100单位的vm

算是比较完美的一个解决方案了,不过ios8以下及android4.4以下不支持

padding

padding是可以百分比取值的,详见padding-properties(https://www.w3.org/TR/CSS2/box.html#padding-properties)

The percentage is calculated with respect to the width of the generated box’s containing block, even for ‘padding-top’ and ‘padding-bottom’. If the containing block’s width depends on this element, then the resulting layout is undefined in CSS 2.1.

即取值为百分比时,计算出来的padding边距是相对于其父元素的宽度计算的(margin类同),如下图:

145172

那么,解决图片占位的问题就很简单了。

页面布局如下:

145172

文字

这里使用伪元素替代p充当子元素,由于padding-top使图片距离cover顶部100%,用相对定位到顶端。

.cover {

position: relative;

font-size: 0;

display: inline-block;

width: 100%

}

.cover img {

width: 100%;

height: 100%;

position: absolute;

left: 0;

top: 0;

}

.cover:after {

content: '\20';

padding-top: 100%;

display: block;

}

页面最终效果如下:

145172

上述例子只适用于图片宽高1:1的情况,对于其他比例的图片需要修改padding-top值,例如宽高2:1的图片,padding-top改为50%即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自适应瀑布流布局是指在网页中展示大量图片和div容器,并且根据容器的宽高度自动调整布局。在Vue3中实现这样的布局,可以使用以下步骤: 首先,安装Vue3并创建Vue实例。 ```javascript npm install vue@next ``` 在Vue中创建动态组件,并为每个组件设置一个宽高。 ```html <template> <div> <component v-for="(item, index) in items" :key="index" :is="item.type" :style="{ width: item.width + 'px', height: item.height + 'px' }"></component> </div> </template> <script> import ImageComponent from './components/ImageComponent.vue' import DivComponent from './components/DivComponent.vue' export default { data() { return { items: [ { type: 'image', width: 200, height: 300, }, { type: 'div', width: 250, height: 150, }, // 添加更多的图片和div容器 ], } }, components: { ImageComponent, DivComponent, }, } </script> ``` 在组件中,可以使用CSS的flex布局来实现自适应瀑布流布局。 ```html <template> <div class="container"> <!-- 图片组件的模板 --> </div> </template> <style scoped> .container { display: flex; flex-wrap: wrap; justify-content: space-between; } </style> ``` 通过以上步骤,我们可以实现一个简单的自适应瀑布流布局。当有新的图片或div容器加入时,布局会自动调整以适应屏幕宽度和高度。不同宽度和高度的元素会按照一定的规则排列,形成一个美观的瀑布流效果。 以上是一个简单的示例,实际情况下,你可以根据具体的需求进行更多的定制和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值