图片加载防止窗口抖动,又可以等比例缩放

由于html加载最后才会加载图片,所以如果没有提前设置高度的话,就会出现窗口抖动,用户体验很不好.

如果固定死高度的话,又不能于宽等比例缩放。

解决办法:

已知原图的宽高比例

例如:此图宽500,高321,高/宽为64.2%

方法一:

不考虑兼容性(即手机端开发):

直接设置height: 64.2vw;,意思是高度设置为视窗宽度的64.2%

<style>
.img-content{
width: 100%;
height: 64.2vw;
overflow: hidden;
}
img{
width: 100%;
}
</style>
</head>
<body>
<div class="img-content">
<img src="./hai.jpg" alt="">
</div>
<div>text</div>
</body>

方法二

.img-content{
width: 100%;
height: 0;
overflow: hidden;
padding-bottom: 64.2%;
}
img{
width: 100%;
}
</style>
</head>
<body>
<div class="img-content">
<img src="./hai.jpg" alt="">
</div>
<div>text</div>
</body>

由于padding的大小是根据父级元素的宽来规定大小,所以上面设置padding-bottom为64.5%是相对于整个body宽度(100%),又因为默认box-sizing为content-box,所以宽高是元素本身的宽高,设置了高度为零,高度就由padding-bottom撑开。

题外:

由第二种方法可以联想到我们要做一个正方形,要怎么实现

width: 30%;padding-top: 30%;height: 0;

width的比例等于padding-top的比例即可

原文地址:https://www.cnblogs.com/echo-hui/p/9427396.html

时间: 2024-12-23 19:43:27

图片加载防止窗口抖动,又可以等比例缩放的相关文章

LrcCache和DiskLruCache相结合打造图片加载框架

LrcCache和DiskLruCache相结合打造图片加载框架 1概述 这几在研究图片加载的方面的知识,在网上看了一下前辈们写的文章,受到了一些启发,于是综合多方面的知识,将这些整合起来,自己边写了一个图片加载框架.说到图片加载最容易出问题的就是OOM就是内存溢出,所以一定要限制加载图片时使用的内存,这就使用到Android提供的缓存类LruCache,关于LruCache的知识这里不再赘述,大家自行学习.但是如果图片非常的多而且频繁操作的话,加上LruCache的缓存空间有限,缓存就不得不经

javascript页面滚动图片加载

图片量越来越大,网页加载不堪重负.还是得用lazyload... 实现要点:页面绑定滚动事件:加载页面的时候把地址放于一个属性中:在滚动过程中判断元素是否进入显示的区域内:加载图片. 主要相关问题:浏览器兼容,如获取浏览器可见部分的宽度: window.innerHeight || document.documentElement.clientHeight 获得页面相对可见部分的左上角的竖直方向的坐标: window.pageYOffset || window.document.document

touchweb手机网站图片加载方法(canvas加载和延迟加载)

一.canvas图片加载 关于canvas加载,我的方法是,将文章中所有用到图片的地方,都用canvas代替,给canvas一个data-src,里面存放img的路径,通过canvas方法渲染图片.因为图片渲染需要时间,一般会给canvas一个背景,背景可以用gif图片.图片渲染好了之后把背景去掉. 我的canvas代码如下: canvasload: function () { //canvas加载图片 var imglength = $("#您的id").find("can

iOS开发——图形编程Swift篇&amp;CAShapeLayer实现圆形图片加载动画

CAShapeLayer实现圆形图片加载动画 几个星期之前,Michael Villar在Motion试验中创建一个非常有趣的加载动画. 下面的GIF图片展示这个加载动画,它将一个圆形进度指示器和圆形渐现动画结合.这个组合的效果有趣,独一无二和有点迷人. 这个教程将会教你如何使用Swift和Core Animatoin来重新创建这个效果.让我们开始吧! 基础 首先下载这个教程的启动项目,然后编译和运行.过一会之后,你应该看到一个简单的image显示: 这 个启动项目已经预先在恰当的位置将view

图片加载优化方案

1.从静态资源文件质量方面的优化通过第三方网站手动压缩图片,网址:https://tinypng.com/ 优点 服务端:缩小质量,节省服务器资源 客户端:提升加载速度,节省流量,本地资源文件质量小, 能够减少App体积,为 用户节省流量,少占用移动设备的内存. 2.移动端上传使用libjpeg进行图片压缩(哈夫曼算法,无损压缩),(ios系统自带,仅供android开发者参考) 博客地址:https://blog.51cto.com/13598859/2070274项目链接:https://g

JQuery图片加载显示loading和加载失败默认图片

在很多时候我们需要用到图片加载功能,在网上搜资料后就想为了以后使用方便重新整理了下,结果如图: 最后一张是加载失败显示的图片,没找到合适的图片,先用他顶替. 页面引用 <div class="container"> <div class="row block" id="img-list"> <div class="col-md-3"> <img src="/Assets/On

Android 图片加载框架Universal-Image-Loader源码解析

Universal-Image-Loader(项目地址)可以说是安卓知名图片开源框架中最古老.使用率最高的一个了.一张图片的加载对于安卓应用的开发也许是件简单的事,但是如果要同时加载大量的图片,并且图片用于ListView.GridView.ViewPager等控件,如何防止出现OOM.如何防止图片错位(因为列表的View复用功能).如何更快地加载.如何让客户端程序员用最简单的操作完成本来十分复杂的图片加载工作,成了全世界安卓应用开发程序员心头的一大难题,所幸有了Universal-Image-

常用图片加载框架

我们在项目中使用的是Picasso.其实现在的主流图片加载框架除了Picasso还有ImageLoader,Glide,以及Fresco.ImageLoader是比较老的框架了,稳定, 加载速度适中, 缺点在于不支持GIF图片加载, 使用稍微繁琐, 并且缓存机制没有和http的缓存很好的结合, 完全是自己的一套缓存机制.Glide是谷歌的一位工程师开发的,它可以说是Picasso的升级版, 有Picasso的优点, 并且支持GIF图片加载显示, 图片缓存也会自动缩放, 默认使用RGB_565格式

iOS图片加载框架学习之FlyImage

在iOS开发中,其图片加载新框架FlyImage 整合了SDWebImage,FastImageCache,AFNetworking的优点,是一个新的性能高效.接口简单的图片加载框架,下面小编就和大家一起来扒一扒这个框架. 特点 高效 可将多张小图解码后存储到同一张大图上,在同屏渲染多图时,效率极高: 支持 mmap 内存映射,高效的I/O操作,减少一次文件拷贝操作,同时减少内存占用: 支持 Byte Alignment 字节对其,渲染过程中,避免执行 CA::Render::copy_imag