フロントエンドはどのように部分的なスクロール効果を実現していますか?

1.基本版の部分スクロール

 ポイントは、 overflow: auto;属性をスクロールする必要がある領域に追加することです

 早速、基本バージョンの部分スクロール コードから始めましょう。

 

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
  /* 清除浏览器默认样式 */
  * {     margin: 0;     パディング: 0;     ボックスサイズ: ボーダーボックス;   }



  本文、
  html {     幅: 100%;     高さ: 100%;   }


  /* 親ボックスの幅と高さはベース ページの幅と高さである必要があるため、本文と html で幅と高さを指定する必要があります*/ main { display: flex;
  position     :     relative;     width: 100%;     height : 100%;     背景色: プラム;   }





  /* スクロール効果を得るには、ul のコンテンツが main の高さを超える必要があります*/
  ul {     flex: 1;     overflow: auto;   }


  /* 下のボックスは固定、中央のボックスは適応型*/
  footer {     position: absolute;     bottom: 0;     left: 0;     width: 100%;     height: 50px;     background-color: yellowgreen;   } </style>







<本体>

  <main>
    <ul>
      <li>これが最初のliです</li>
      <li>これが2番目のliです</li>
      <li>これが3番目のliです</li>
      <li>これが4番目のliです</li>
      <li>これは5番目のリです</li>
      <li>これは6番目のリです</li>
      <li>これは7番目のリです</li>
      <li>これは8番目のリです</li> li>
      <li>これは9番目のliです</li>
      <li>これは10番目のliです</li>
      <li>これは11番目のliです</li>
      <li>これは12番目のliです</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>
      <li>22日目です</li>
      <li>23日目です</li>
      <li>24日目です</li>
      <li>25日目です</li>
      <li>26日目です</li> 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>これは三十九里</li>
      <li>これは四十里です</li>
      <li>41リです</li>
      <li>42リです</li>
      <li>43リです</li>
      <li>44リです</li> li>
      <li>これで 45 回目です</li>
      <li>46リです</li>
      <li>47リです</li>
      <li>48リです</li>
      <li>49リです</li> 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>
    </ul>
  </main>
  <footer></footer>

</body>

</html>

 2. 上級版での部分スクロール --> 箱の左右にスクロール効果あり(京東商品分類のレイアウトを模倣)

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
  /* 清除浏览器默认样式 */
  * {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    /* 祛除小圆点 */
    list-style: none;
  }

  body,
  html {
    width: 100%;
    height: 100%;
  }

  .big {
    display: flex;
    position: relative;
    width: 100%;
    height: 100%;
    background-color: plum;
    overflow: hidden;
  }

  .top {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 50px;
    background-color: pink;
  }

  /* 父盒子的宽高要基础页面的宽高,所以 body、html要给宽高 */
  main {
    flex: 1;
    overflow: auto;
    display: flex;
    justify-content: space-between;
    flex-direction: row;
  }

  /* ul里面的内容要超出main的高度,才会有滚动效果 */
  ul {
    overflow: auto;
  }

  .one {
    background-color: yellow;
    width: 100px;
  }

  .two {
    flex: 1;
  }


  /* 底部盒子固定,中间盒子自适应 */
  footer {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 50px;
    background-color: yellowgreen;
  }
</style>

<body>
  <div class="big">
    <div class="top">顶部</div>
    <main>
      <ul class="one">
        <!-- ul>li*100{第$个li} -->
      </ul>
      <ul class="two">
        <!-- ul>li*100{第$个li元素} -->
      </ul>
    </main>
    <footer>底部</footer>
  </div>

</body>

</html>

 

おすすめ

転載: blog.csdn.net/weixin_48082900/article/details/129194506