当前位置: 首页 > news >正文

手机网站建设平台百度数据研究中心

手机网站建设平台,百度数据研究中心,怎么选择丹徒网站建设,境外电商平台入驻前言 在日常开发中,我们经常需要判断目标元素是否在视窗之内或者和视窗的距离小于一个值(例如 100 px),从而实现一些常用的功能,例如: 图片的懒加载列表的无限滚动计算广告元素的曝光情况可点击链接的预加…

前言

在日常开发中,我们经常需要判断目标元素是否在视窗之内或者和视窗的距离小于一个值(例如 100 px),从而实现一些常用的功能,例如:

  • 图片的懒加载
  • 列表的无限滚动
  • 计算广告元素的曝光情况
  • 可点击链接的预加载

实现方式

判断一个元素是否在可视区域,我们常用的有offsetTop、scrollTop和getBoundingClientRect

offsetTop、scrollTop

offsetTop,元素的上外边框至包含元素的上内边框之间的像素距离,其他offset属性如下图所示:

下面再来了解下clientWidthclientHeight

  • clientWidth:元素内容区宽度加上左右内边距宽度,即clientWidth = content + padding
  • clientHeight:元素内容区高度加上上下内边距高度,即clientHeight = content + padding

这里可以看到client元素都不包括外边距

最后,关于scroll系列的属性如下:

  • scrollWidthscrollHeight 主要用于确定元素内容的实际大小
  • scrollLeftscrollTop 属性既可以确定元素当前滚动的状态,也可以设置元素的滚动位置
    • 垂直滚动 scrollTop > 0* 水平滚动 scrollLeft > 0
  • 将元素的 scrollLeftscrollTop 设置为 0,可以重置元素的滚动位置

注意

  • 上述属性都是只读的,每次访问都要重新开始

下面再看看如何实现判断:

公式如下:

el.offsetTop - document.documentElement.scrollTop <= viewPortHeight 

代码实现:

function isInViewPortOfOne (el) {// viewPortHeight 兼容所有浏览器写法const viewPortHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight const offsetTop = el.offsetTopconst scrollTop = document.documentElement.scrollTopconst top = offsetTop - scrollTopreturn top <= viewPortHeight
} 

getBoundingClientRect

返回值是一个 DOMRect对象,拥有left, top, right, bottom, x, y, width, 和 height属性

const target = document.querySelector('.target');
const clientRect = target.getBoundingClientRect();
console.log(clientRect);// {
// bottom: 556.21875,
// height: 393.59375,
// left: 333,
// right: 1017,
// top: 162.625,
// width: 684
// } 

属性对应的关系图如下所示:

当页面发生滚动的时候,topleft属性值都会随之改变

如果一个元素在视窗之内的话,那么它一定满足下面四个条件:

  • top 大于等于 0
  • left 大于等于 0
  • bottom 小于等于视窗高度
  • right 小于等于视窗宽度

实现代码如下:

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);
} 

最后

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

有需要的小伙伴,可以点击文末卡片领取这份文档,无偿分享

部分文档展示:



文章篇幅有限,后面的内容就不一一展示了

有需要的小伙伴,可以点下方卡片免费领取

http://www.rdtb.cn/news/13099.html

相关文章:

  • 崇信县门户网广州seo公司品牌
  • 建设京东类的网站需要什么流程营销咨询
  • 关于网站建设的指标江门网站优化公司
  • 南宁网站建设nnit30百度网址大全设为主页
  • 西安哪家公司做的网站好市场监督管理局上班时间
  • 珠海做网站设计哪里可以免费推广广告
  • 中国建设企业协会网站首页 百度一下
  • 可以加外链的网站深圳网络推广公司有哪些
  • 拉新十大推广app平台广州seo服务公司
  • 深圳网站设计很棒 乐云践新深圳网络推广引流
  • 网站诚信认证电话销售网络营销策划方案范文
  • 杭州市网站制作百度统计怎么用
  • 济南市建设银行网站免费制作网站
  • 做网站推广用优化还是竞价品牌广告文案
  • 河间做网站的电话内容营销平台有哪些
  • 那些网站分享pr做的视频软件外贸谷歌优化
  • 网站备案信息真实性核验单 如何填写神马seo教程
  • 软件定制解决方案徐州seo推广
  • 免费微信网站源码seo精灵
  • 网站建设 生产关键词排名工具有哪些
  • 网站营销计划书软文推广渠道主要有
  • 凤翔网站制作seo外链发布软件
  • 赣州的免费网站建设seo关键词优化公司
  • 网店推广方案天津seo建站
  • 网站建设与推广综合实训总结百度搜索关键词排名查询
  • 品牌策划的流程搜索引擎优化工作
  • 深圳市做门窗网站有哪些推广百度网首页
  • 敦煌网站外引流怎么做百度一下官网
  • 第一页网站SEO如何在百度上投放广告
  • 旅游网站开发建设方案关键词app