js判斷元素是否出現(xiàn)在視口內(nèi)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>判斷元素是否在視口內(nèi)</title>
  <style>
    ul li{list-style: none;padding: 20px}
    li:nth-child(even){background: green}
    li:nth-child(odd){background: yellowgreen} 
  </style>
</head>
<body>
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
  <li>9</li>
  <li>10</li>
  <li>11</li>
  <li>12</li>
  <li>13</li>
  <li>14</li>
  <li>15</li>
  <li>16</li>
  <li>17</li>
  <li>18</li>
  <li>19</li>
  <li>20</li>
  <li>21</li>
  <li>22</li>
  <li>23</li>
  <li>24</li>
  <li>25</li>
  <li>26</li>
  <li>27</li>
  <li>28</li>
  <li>29</li>
  <li>30</li>
  <li>31</li>
  <li>32</li>
  <li>33</li>
  <li>34</li>
  <li>35</li>
  <li>36</li>
  <li>37</li>
  <li>38</li>
  <li>39</li>
  <li>40</li>
  <li>41</li>
  <li>42</li>
  <li>43</li>
  <li>44</li>
  <li>45</li>
  <li>46</li>
  <li>47</li>
  <li>48</li>
  <li>49</li>
  <li>50</li>
  <li>51</li>
  <li>52</li>
  <li>53</li>
  <li>54</li>
  <li>55</li>
  <li>56</li>
  <li>57</li>
  <li>58</li>
  <li>59</li>
  <li>60</li>
  <li>61</li>
  <li>62</li>
  <li>63</li>
  <li>64</li>
  <li>65</li>
  <li>66</li>
  <li>67</li>
  <li>68</li>
  <li>69</li>
  <li>70</li>
  <li>71</li>
  <li>72</li>
  <li>73</li>
  <li>74</li>
  <li>75</li>
  <li>76</li>
  <li>77</li>
  <li>78</li>
  <li>79</li>
  <li>80</li>
  <li>81</li>
  <li>82</li>
  <li>83</li>
  <li id="box">84</li>
  <li>85</li>
  <li>86</li>
  <li>87</li>
  <li>88</li>
  <li>89</li>
  <li>90</li>
  <li>91</li>
  <li>92</li>
  <li>93</li>
  <li>94</li>
  <li>95</li>
  <li>96</li>
  <li>97</li>
  <li>98</li>
  <li>99</li>
  <li>100</li>
</ul>
</body>
<script>
  // 某個(gè)元素是否出現(xiàn)在視口內(nèi)
  (function () {
    function GetRect (element) {
      var rect = element.getBoundingClientRect() // 距離視窗的距離
      var top = document.documentElement.clientTop ? document.documentElement.clientTop : 0 // html元素對象的上邊框的寬度
      var left = document.documentElement.clientLeft ? document.documentElement.clientLeft : 0
      return {
        top: rect.top - top,
        bottom: rect.bottom - top,
        left: rect.left - left,
        right: rect.right - left
      }
    }
    var $box = document.getElementById('box')
    var divH = $box.offsetHeight // div高度
    var windowH = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight // 瀏覽器高度兼容寫法
    window.onscroll = function () {
      var obj = GetRect($box)
      if (obj.top >= windowH) { // 在視口之下
        console.log('84在視口之下')
      }
      if (obj.top < windowH && obj.bottom >= windowH) { // 正在出現(xiàn)
        console.log('84正在出現(xiàn)')
      }
      if (obj.top > 0 && obj.top < windowH && obj.bottom > 0 && obj.bottom < windowH) { // 正在視口中
        console.log('84正在視口中')
      }
      if (obj.top <= 0 && obj.bottom <= divH && obj.bottom > 0) { // 正在離開視口
        console.log('84正在離開視口')
      }
      if (obj.bottom <= 0) { // 已經(jīng)離開視口
        console.log('84在視口之上')
      }
    }
  })()
</script>
</html>


tutu.gif
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溃卡,一起剝皮案震驚了整個(gè)濱河市唬血,隨后出現(xiàn)的幾起案子懈词,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異顶别,居然都是意外死亡谷徙,警方通過查閱死者的電腦和手機(jī)拒啰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來完慧,“玉大人谋旦,你說我怎么就攤上這事∏幔” “怎么了册着?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長脾歧。 經(jīng)常有香客問我甲捏,道長,這世上最難降的妖魔是什么鞭执? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任司顿,我火速辦了婚禮,結(jié)果婚禮上兄纺,老公的妹妹穿的比我還像新娘大溜。我一直安慰自己,他們只是感情好估脆,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布钦奋。 她就那樣靜靜地躺著,像睡著了一般疙赠。 火紅的嫁衣襯著肌膚如雪付材。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天圃阳,我揣著相機(jī)與錄音厌衔,去河邊找鬼。 笑死限佩,一個(gè)胖子當(dāng)著我的面吹牛葵诈,可吹牛的內(nèi)容都是我干的裸弦。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼作喘,長吁一口氣:“原來是場噩夢啊……” “哼理疙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起泞坦,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬榮一對情侶失蹤窖贤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后贰锁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赃梧,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年豌熄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了授嘀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锣险,死狀恐怖蹄皱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芯肤,我是刑警寧澤巷折,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站崖咨,受9級(jí)特大地震影響锻拘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜击蹲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一署拟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧际邻,春花似錦芯丧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至轮听,卻和暖如春骗露,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背血巍。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來泰國打工萧锉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人述寡。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓柿隙,卻偏偏與公主長得像叶洞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子禀崖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容