基于是否在可视区域实现图片懒加载示例

先将图片的src设置为空,将url放在data-imgurl属性中,通过判断图片是否在可视区域,改变图片的src,从而实现图片的懒加载效果。(只是一个思路,现实情况还要考虑更多因素)

 <div class="container">
   <div class="card">
     <img src="" data-imgurl="./balloons1.jpg" alt="a single red balloon">
   </div>
   <div class="card">
     <img src="" data-imgurl="./balloons2.jpg" alt="balloons over some houses">
   </div>
   <div class="card">
     <img src="" data-imgurl="./balloons3.jpg" alt="close-up of balloons inflating">
   </div>
   <div class="card">
     <img src="" data-imgurl="./balloons4.jpg" alt="a balloon in the sun">
   </div>
 </div>
 var imgs = document.querySelectorAll("img");
 watchpic(imgs);
 window.onscroll=function(){
   watchpic(imgs)
 }
 //可视区函数
 function isInViewPort(element) {
   const viewWidth = window.innerWidth || document.documentElement.clientWidth;
   const viewHeight = window.innerHeight || document.documentElement.clientHeight;
   const {top, right,bottom,left} = element.getBoundingClientRect();
   return (
     top >= 0 &&
     left >= 0 &&
     right <= viewWidth &&
     bottom <= viewHeight
   );
 }
 function watchpic(arr){
   var result = null;
   for(let i = 0 ; i < arr.length; i++){
     if(isInViewPort(arr[i])){
       setTimeout(function(){
         arr[i].src = arr[i].dataset.imgurl;
         arr[i].style.cssText = "transition: 0.4s; opacity: 1;" ;
       },500)
     }else{
       arr[i].src=""
     }
   }
 }

这里可以用于少量图片懒加载使用。对于大量图片,建议使用预下载的方式实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于DEM模拟淹没区域随时间推演需要使用到一些地形数据处理和可视化库,比如GDAL和Matplotlib等。以下是一个Python示例代码,可以帮助您实现基于DEM模拟淹没区域随时间推演: ```python import gdal import numpy as np import matplotlib.pyplot as plt # 加载DEM数据 dem_path = 'dem.tif' dem_ds = gdal.Open(dem_path) dem_band = dem_ds.GetRasterBand(1) dem_data = dem_band.ReadAsArray().astype(np.float32) nodata = dem_band.GetNoDataValue() # 设置水位高度和时间步长 water_level = 10.0 time_step = 1.0 # 根据DEM数据和水位高度,计算淹没区域 flood_data = np.where(dem_data > water_level, dem_data - water_level, 0.0) # 进行时间推演 for i in range(10): # 根据时间步长和当前淹没区域,计算下一时刻的淹没区域 flood_data = np.where(dem_data > water_level, flood_data + time_step, flood_data) # 可视化当前时刻的淹没区域 plt.imshow(flood_data, cmap='Blues') plt.colorbar() plt.title('Flooded Area at Time Step ' + str(i)) plt.show() ``` 以上代码示例中,首先通过GDAL库加载了DEM数据,并根据设定的水位高度计算了初始的淹没区域。然后使用一个循环,每次根据时间步长和当前淹没区域,计算下一时刻的淹没区域。最后,使用Matplotlib库可视化了每个时刻的淹没区域。 需要注意的是,以上示例代码仅仅是一个简单的演示,实际情况中需要考虑更多的因素,比如水流、地形变化等。同时,也需要根据具体的DEM数据格式和分辨率做出相应的调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值