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

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

  • 媒体查询+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类同),如下图:

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

页面布局如下:


<style>
* {
margin: 0;
padding: 0;
}
ul {
overflow: hidden;
}
li {
width: 50%;
float: left;
text-align: center;
}
img {
width: 100%
}
</style>
<ul>
<li>
<div class="cover">
<img src="2222.png" alt="">
</div>
<div>
文字
</div>
</li>
</ul>

这里使用伪元素替代div充当子元素,由于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;
}

页面最终效果如下:

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

原文地址:https://mp.weixin.qq.com/s/C0SG4m_nDWfClwdof_Ohmw

移动web图片高度自适应的解决方案的更多相关文章

  1. float浮动之后高度自适应失效解决方案

    float浮动之后高度自适应失效解决方案 >>>>>>>>>>>>>>>>>>>> ...

  2. css实现div中图片高度自适应并与父级div宽度一致

    需求:1.父级div不设置高度 2.图片高度自适应,并且显示为正方形: 以前遇到列表中图片高度必须和父级宽度相同,并且需要为正方形的时候,最开始的方法是定死图片高度,这样会导致不同分辨率下图片会压缩, ...

  3. css 图片高度自适应

    开始采用js,获取屏幕宽度,按宽高比来设置图片大小. var wid = window.screen.width; wid = wid * 0.85; $('.Img').css('width',wi ...

  4. iOS开发之多种Cell高度自适应实现方案的UI流畅度分析

    本篇博客的主题是关于UI操作流畅度优化的一篇博客,我们以TableView中填充多个根据内容自适应高度的Cell来作为本篇博客的使用场景.当然Cell高度的自适应网上的解决方案是铺天盖地呢,今天我们的 ...

  5. 转:iOS开发之多种Cell高度自适应实现方案的UI流畅度分析

    本篇博客的主题是关于UI操作流畅度优化的一篇博客,我们以TableView中填充多个根据内容自适应高度的Cell来作为本篇博客的使用场景.当然Cell高度的自适应网上的解决方案是铺天盖地呢,今天我们的 ...

  6. iframe高度自适应

    前两天在网上看到了一道面试题,问iframe高度自适应的问题.发现自己之前几乎没有关注过iframe的问题,所以在这里记录一下. 原题目是: 页面A的域名是:http://www.taobao.com ...

  7. web图片100%宽度自适应,高度不塌陷

    一般在web端图片100%自适应,在页面加载的时候存在高度塌陷的问题 解决这个问题其实很简单,用padding-top设置百分比值来实现自适应,公式如下 padding-top = (Image He ...

  8. 完美实现跨域Iframe高度自适应【Iframe跨域高度自适应解决方案】

    Iframe的强大功能偶就不多说了,它不但被开发人员经常运用,而且黑客们也常常使用它,总之用过的人知道它的强大之处,但是Iframe有个致命的“BUG”就是iframe的高度无法自动适应,这一点让很多 ...

  9. 未知高度的div自适应图片高度

    <div style="background-image: url(http://your-image.jpg);"> <img src="http:/ ...

随机推荐

  1. vue:解决使用param传参后,再次刷新页面会新增一个原有的tab

    问题:在最近的项目中,我通过传递不同的参数,复用同一组件进行渲染,然而意外出现一个bug,就是当我重新刷新该页面时,会新增一个tab 原来的: 刷新页面后: 查阅资料后,发现该现象是由于通过param ...

  2. rsync+sersync

    Environmental introduction System Kernel : -.el6.x86_64 Source Server : 192.168.7.1 Target Server : ...

  3. [转]WPF中的动画

    WPF中的动画                                                                                  周银辉 动画无疑是WP ...

  4. Pickle(1)

    1,pickle用于字符显示与存储之间的转换 2,要注意几个点 (1) 使用dump和load: (2) 版本号的要求: 3,官方文档的两个例子 4,pickle之后,数据是什么样的呢? https: ...

  5. ROS节点的初始化及退出详解(ros::init、SIGINT、ros::ok、ros::NodeHandle

    https://haoqchen.site/2018/04/28/ROS-node-init/ #include "ros/ros.h" #include <signal.h ...

  6. Collection接口和Map接口

  7. javascript 的原始数据类型

     javascript 的原始数据类型有五种,分别是Number.String.Boolean.null.undefined   原始类型数据的特点:值保存在变量本地,且赋值给其他变量后,其它变量改变 ...

  8. 线性基(模板) LUOGU 3812

    题面 解题思路 线性基,是构造出一组数:ax,ax-1-.a1,ax的二进制最高位为x.这些数字能异或和可以表示原来所有数的异或和.其实相当于一个高斯消元的过程.所以我们按位枚举,如果这一位曾经没数, ...

  9. DP学习之路(1) 01背包

    动态规划是算法中一门很重要的思想,其通过对每一步的假设规划,不停的寻找最优最有利的解决方案,然后一步一步求解出来. 而01背包是其中最基本的一种dp思想,其题目一般为给定一个容量为V的背包,然后有n件 ...

  10. 【DM642学习笔记十】DSP优化记录

    1. 处理的数据先EDMA到片内,具有更高的效率! 以YUV2RGB为例: #pragma DATA_SECTION(onchipBuf0_y,".INTPROCBUFF"); # ...