博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
移动web图片高度自适应的解决方案
阅读量:6280 次
发布时间:2019-06-22

本文共 1436 字,大约阅读时间需要 4 分钟。

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

1557854-20181212173807038-314582571.gif

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

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

1557854-20181212173818923-320731318.jpg

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

页面布局如下:

  • 文字

这里使用伪元素替代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;}

页面最终效果如下:

1557854-20181212173754492-659138071.gif

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

原文地址:

转载于:https://www.cnblogs.com/lovellll/p/10109698.html

你可能感兴趣的文章
如何清理mac系统垃圾
查看>>
企业中最佳虚拟机软件应用程序—Parallels Deskto
查看>>
Nginx配置文件详细说明
查看>>
怎么用Navicat Premium图标编辑器创建表
查看>>
Spring配置文件(2)配置方式
查看>>
MariaDB/Mysql 批量插入 批量更新
查看>>
ItelliJ IDEA开发工具使用—创建一个web项目
查看>>
solr-4.10.4部署到tomcat6
查看>>
切片键(Shard Keys)
查看>>
淘宝API-类目
查看>>
virtualbox 笔记
查看>>
Git 常用命令
查看>>
驰骋工作流引擎三种项目集成开发模式
查看>>
SUSE11修改主机名方法
查看>>
jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试
查看>>
Android:apk签名
查看>>
2(2).选择排序_冒泡(双向循环链表)
查看>>
MySQL 索引 BST树、B树、B+树、B*树
查看>>
微信支付
查看>>
CodeBlocks中的OpenGL
查看>>