ÀÖÓãµç¾º

½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

Ô­Éú JS ʵÏÖ¼òµ¥µÄͼƬÀÁ¼ÓÔØ

¸üÐÂʱ¼ä:2018Äê11ÔÂ26ÈÕ16ʱ29·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:

¡¡¡¡Ê²Ã´ÊÇÀÁ¼ÓÔØ

¡¡¡¡ÀÁ¼ÓÔØÆäʵ¾ÍÊÇÑÓ³Ù¼ÓÔØ£¬ÊÇÒ»ÖÖ¶ÔÍøÒ³ÐÔÄÜÓÅ»¯µÄ·½Ê½£¬±ÈÈçµ±·ÃÎÊÒ»¸öÒ³ÃæµÄʱºò£¬ÓÅÏÈÏÔʾ¿ÉÊÓÇøÓòµÄͼƬ¶ø²»Ò»´ÎÐÔ¼ÓÔØËùÓÐͼƬ£¬µ±ÐèÒªÏÔʾµÄʱºòÔÙ·¢ËÍͼƬÇëÇ󣬱ÜÃâ´ò¿ªÍøÒ³Ê±¼ÓÔØ¹ý¶à×ÊÔ´¡£

¡¡¡¡Ê²Ã´Ê±ºòÓÃÀÁ¼ÓÔØ

¡¡¡¡µ±Ò³ÃæÖÐÐèÒªÒ»´ÎÐÔÔØÈëºÜ¶àͼƬµÄʱºò£¬ÍùÍù¶¼ÊÇÐèÒªÓÃÀÁ¼ÓÔØµÄ¡£

¡¡¡¡ÀÁ¼ÓÔØÔ­Àí

¡¡¡¡ÎÒÃǶ¼ÖªµÀHTMLÖÐµÄ ±êÇ©ÊÇ´ú±íÎĵµÖеÄÒ»¸öͼÏñ¡£¡£ËµÁ˸ö·Ï»°¡£¡£

¡¡¡¡±êÇ©ÓÐÒ»¸öÊôÐÔÊÇ src£¬ÓÃÀ´±íʾͼÏñµÄURL£¬µ±Õâ¸öÊôÐÔµÄÖµ²»Îª¿Õʱ£¬ä¯ÀÀÆ÷¾Í»á¸ù¾ÝÕâ¸öÖµ·¢ËÍÇëÇó¡£Èç¹ûûÓÐ srcÊôÐÔ£¬¾Í²»»á·¢ËÍÇëÇó¡£

¡¡¡¡àÅ?Ã²ËÆÕâµã¿ÉÒÔÀûÓÃÒ»ÏÂ?

¡¡¡¡ÎÒÏȲ»ÉèÖà src£¬ÐèÒªµÄʱºòÔÙÉèÖÃ?

¡¡¡¡nice£¬¾ÍÊÇÕâÑù¡£

¡¡¡¡ÎÒÃÇÏȲ»¸ø ÉèÖà src£¬°ÑÍ¼Æ¬ÕæÕýµÄURL·ÅÔÚÁíÒ»¸öÊôÐÔ data-srcÖУ¬ÔÚÐèÒªµÄʱºòÒ²¾ÍÊÇͼƬ½øÈë¿ÉÊÓÇøÓòµÄ֮ǰ£¬½«URLÈ¡³ö·Åµ½ srcÖС£

¡¡¡¡ÊµÏÖ

¡¡¡¡HTML½á¹¹

¡¡¡¡

¡¡¡¡×Ðϸ¹Û²ìһϣ¬ ±êÇ©´ËʱÊÇûÓÐ srcÊôÐԵģ¬Ö»ÓÐ altºÍ data-srcÊôÐÔ¡£

¡¡¡¡alt ÊôÐÔÊÇÒ»¸ö±ØÐèµÄÊôÐÔ£¬Ëü¹æ¶¨ÔÚͼÏñÎÞ·¨ÏÔʾʱµÄÌæ´úÎı¾¡£ data-* È«¾ÖÊôÐÔ£º¹¹³ÉÒ»ÀàÃû³ÆÎª×Ô¶¨ÒåÊý¾ÝÊôÐÔµÄÊôÐÔ£¬¿ÉÒÔͨ¹ý HTMLElement.datasetÀ´·ÃÎÊ¡£

¡¡¡¡ÈçºÎÅжÏÔªËØÊÇ·ñÔÚ¿ÉÊÓÇøÓò

¡¡¡¡·½·¨Ò»

¡¡¡¡ÍøÉÏ¿´µ½ºÃ¶àÕâÖÖ·½·¨£¬ÉÔ΢¼Ç¼һÏ¡£

¡¡¡¡1¡¢Í¨¹ý document.documentElement.clientHeight»ñÈ¡ÆÁÄ»¿ÉÊÓ´°¿Ú¸ß¶È

¡¡¡¡2¡¢Í¨¹ý document.documentElement.scrollTop»ñÈ¡ä¯ÀÀÆ÷´°¿Ú¶¥²¿ÓëÎĵµ¶¥²¿Ö®¼äµÄ¾àÀ룬Ҳ¾ÍÊǹö¶¯Ìõ¹ö¶¯µÄ¾àÀë

¡¡¡¡3¡¢Í¨¹ý element.offsetTop»ñÈ¡ÔªËØÏà¶ÔÓÚÎĵµ¶¥²¿µÄ¾àÀë

¡¡¡¡È»ºóÅжϢÚ-¢Û<¢ÙÊÇ·ñ³ÉÁ¢£¬Èç¹û³ÉÁ¢£¬ÔªËؾÍÔÚ¿ÉÊÓÇøÓòÄÚ¡£

¡¡¡¡·½·¨¶þ(ÍÆ¼ö)

¡¡¡¡Í¨¹ý getBoundingClientRect()·½·¨À´»ñÈ¡ÔªËØµÄ´óСÒÔ¼°Î»Öã¬MDNÉÏÊÇÕâÑùÃèÊöµÄ£º

¡¡¡¡The Element.getBoundingClientRect() method returns the size of an element and its position relative to the viewport.

¡¡¡¡Õâ¸ö·½·¨·µ»ØÒ»¸öÃûΪ ClientRectµÄ DOMRect¶ÔÏ󣬰üº¬ÁË top¡¢ right¡¢ botton¡¢ left¡¢ width¡¢ heightÕâЩֵ¡£

¡¡¡¡MDNÉÏÓÐÕâÑùÒ»ÕÅͼ£º

¡¡¡¡

¡¡¡¡¿ÉÒÔ¿´³ö·µ»ØµÄÔªËØÎ»ÖÃÊÇÏà¶ÔÓÚ×óÉϽǶøÑԵ쬶ø²»ÊDZ߾à¡£

¡¡¡¡ÎÒÃÇ˼¿¼Ò»Ï£¬Ê²Ã´Çé¿öÏÂͼƬ½øÈë¿ÉÊÓÇøÓò¡£

¡¡¡¡¼ÙÉè constbound=el.getBoundingClientRect();À´±íʾͼƬµ½¿ÉÊÓÇøÓò¶¥²¿¾àÀë; ²¢Éè constclientHeight=window.innerHeight;À´±íʾ¿ÉÊÓÇøÓòµÄ¸ß¶È¡£

¡¡¡¡Ëæ×Źö¶¯ÌõµÄÏòϹö¶¯£¬ bound.top»áÔ½À´Ô½Ð¡£¬Ò²¾ÍÊÇͼƬµ½¿ÉÊÓÇøÓò¶¥²¿µÄ¾àÀëÔ½À´Ô½Ð¡£¬µ± bound.top===clientHeightʱ£¬Í¼Æ¬µÄÉÏÑØÓ¦¸ÃÊÇλÓÚ¿ÉÊÓÇøÓòÏÂÑØµÄλÖõÄÁÙ½çµã£¬ÔÙ¹ö¶¯Ò»µãµã£¬Í¼Æ¬¾Í»á½øÈë¿ÉÊÓÇøÓò¡£

¡¡¡¡Ò²¾ÍÊÇ˵£¬ÔÚ bound.top<=clientHeightʱ£¬Í¼Æ¬ÊÇÔÚ¿ÉÊÓÇøÓòÄڵġ£

¡¡¡¡ÎÒÃÇÕâÑùÅжÏ£º

¡¡¡¡function isInSight(el) {

¡¡¡¡const bound = el.getBoundingClientRect();

¡¡¡¡const clientHeight = window.innerHeight;

¡¡¡¡//Èç¹ûÖ»¿¼ÂÇÏòϹö¶¯¼ÓÔØ

¡¡¡¡//const clientWidth = window.innerWeight;

¡¡¡¡return bound.top <= clientHeight + 100;

¡¡¡¡}

¡¡¡¡ÕâÀïÓиö+100ÊÇΪÁËÌáǰ¼ÓÔØ¡£

¡¡¡¡¼ÓÔØÍ¼Æ¬

¡¡¡¡Ò³Ãæ´ò¿ªÊ±ÐèÒª¶ÔËùÓÐͼƬ½øÐмì²é£¬ÊÇ·ñÔÚ¿ÉÊÓÇøÓòÄÚ£¬Èç¹ûÊǾͼÓÔØ¡£

¡¡¡¡function checkImgs() {

¡¡¡¡const imgs = document.querySelectorAll('.my-photo');

¡¡¡¡Array.from(imgs).forEach(el => {

¡¡¡¡if (isInSight(el)) {

¡¡¡¡loadImg(el);

¡¡¡¡}

¡¡¡¡})

¡¡¡¡}

¡¡¡¡function loadImg(el) {

¡¡¡¡if (!el.src) {

¡¡¡¡const source = el.dataset.src;

¡¡¡¡el.src = source;

¡¡¡¡}

¡¡¡¡}

¡¡¡¡ÕâÀïÓ¦¸ÃÊÇÓÐÒ»¸öÓÅ»¯µÄµØ·½£¬ÉèÒ»¸ö±êʶ·û±êʶÒѾ­¼ÓÔØÍ¼Æ¬µÄindex£¬µ±¹ö¶¯Ìõ¹ö¶¯Ê±¾Í²»ÐèÒª±éÀúËùÓеÄͼƬ£¬Ö»ÐèÒª±éÀúδ¼ÓÔØµÄͼƬ¼´¿É¡£

¡¡¡¡º¯Êý½ÚÁ÷

¡¡¡¡ÔÚÀàËÆÓÚ¹ö¶¯Ìõ¹ö¶¯µÈƵ·±µÄDOM²Ù×÷ʱ£¬×Ü»áÌáµ½“º¯Êý½ÚÁ÷¡¢º¯ÊýÈ¥¶¶”¡£

¡¡¡¡ËùνµÄº¯Êý½ÚÁ÷£¬Ò²¾ÍÊÇÈÃÒ»¸öº¯Êý²»ÒªÖ´ÐеÄ̫Ƶ·±£¬¼õÉÙһЩ¹ý¿ìµÄµ÷ÓÃÀ´½ÚÁ÷¡£

¡¡¡¡»ù±¾²½Ö裺

¡¡¡¡1¡¢»ñÈ¡µÚÒ»´Î´¥·¢Ê¼þµÄʱ¼ä´Á

¡¡¡¡2¡¢»ñÈ¡µÚ¶þ´Î´¥·¢Ê¼þµÄʱ¼ä´Á

¡¡¡¡3¡¢Ê±¼ä²îÈç¹û´óÓÚij¸öãÐÖµ¾ÍÖ´ÐÐʼþ£¬È»ºóÖØÖõÚÒ»¸öʱ¼ä

¡¡¡¡function throttle(fn, mustRun = 500) {

¡¡¡¡const timer = null;

¡¡¡¡let previous = null;

¡¡¡¡return function() {

¡¡¡¡const now = new Date();

¡¡¡¡const context = this;

¡¡¡¡const args = arguments;

¡¡¡¡if (!previous){

¡¡¡¡previous = now;

¡¡¡¡}

¡¡¡¡const remaining = now - previous;

¡¡¡¡if (mustRun && remaining >= mustRun) {

¡¡¡¡fn.apply(context, args);

¡¡¡¡previous = now;

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}

¡¡¡¡ÕâÀïµÄ mustRun¾ÍÊǵ÷Óú¯ÊýµÄʱ¼ä¼ä¸ô£¬ÎÞÂÛ¶àôƵ·±µÄµ÷Óà fn£¬Ö»ÓÐ remaining>=mustRunʱ fn²ÅÄܱ»Ö´ÐС£

¡¡¡¡ÊµÑé

¡¡¡¡Ò³Ãæ´ò¿ªÊ±

¡¡¡¡

¡¡¡¡¿ÉÒÔ¿´³ö´Ëʱ½ö½öÊǼÓÔØÁËimg1ºÍimg2£¬ÆäËüµÄimg¶¼Ã»·¢ËÍÇëÇ󣬿´¿´´ËʱµÄä¯ÀÀÆ÷

¡¡¡¡

¡¡¡¡µÚÒ»ÕÅͼƬÊÇÍêÕûµÄ³ÊÏÖÁË£¬µÚ¶þÕÅͼƬ¸Õ½øÈë¿ÉÊÓÇøÓò£¬ºóÃæµÄ¾Í¿´²»µ½ÁË~

¡¡¡¡Ò³Ãæ¹ö¶¯Ê±

¡¡¡¡µ±ÎÒÏòϹö¶¯£¬´Ëʱä¯ÀÀÆ÷ÊÇÕâÑù

¡¡¡¡

¡¡¡¡´ËʱµÚ¶þÕÅͼƬÍêÈ«ÏÔʾÁË£¬¶øµÚÈýÕÅͼƬÏÔʾÁËÒ»µãµã£¬ÕâʱºòÎÒÃÇ¿´¿´ÇëÇóÇé¿ö

¡¡¡¡

¡¡¡¡img3µÄÇëÇó·¢³öÀ´£¬¶øºóÃæµÄÇëÇó»¹ÊÇû·¢³ö~

¡¡¡¡È«²¿ÔØÈëʱ

¡¡¡¡µ±¹ö¶¯Ìõ¹öµ½×îµ×ÏÂʱ£¬È«²¿ÇëÇó¶¼Ó¦¸ÃÊÇ·¢³öµÄ£¬Èçͼ£º



×÷ÕߣºÀÖÓã²¥¿Íǰ¶ËÓëÒÆ¶¯¿ª·¢ÅàѵѧԺ

Ê×·¢£º http://web.itcast.cn

0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿