1. ホーム
  2. javascript

[解決済み】要素のコンテンツがオーバーフローしているかどうかをチェックする?

2022-04-12 05:14:31

質問

ある要素がオーバーフローしているかどうかを検出する最も簡単な方法は何ですか?

私のユースケースは、あるコンテンツボックスの高さを300pxに制限したいのです。内側のコンテンツがそれ以上の高さである場合、私はそれをオーバーフローで切り落とします。しかし、オーバーフローした場合、「もっと見る」ボタンを表示したいのですが、そうでない場合はそのボタンを表示したくありません。

オーバーフローを簡単に検出する方法、あるいはもっと良い方法はないでしょうか?

解決方法は?

もし、より多くのコンテンツのための識別子だけを表示したいのであれば、純粋なCSSでこれを行うことができます。私はこのために、純粋なスクロールシャドウを使っている。そのコツは background-attachment: local; . あなたのCSSはこんな感じです。

.scrollbox {
  overflow: auto;
  width: 200px;
  max-height: 200px;
  margin: 50px auto;

  background:
    /* Shadow covers */
    linear-gradient(white 30%, rgba(255,255,255,0)),
    linear-gradient(rgba(255,255,255,0), white 70%) 0 100%,
    
    /* Shadows */
    radial-gradient(50% 0, farthest-side, rgba(0,0,0,.2), rgba(0,0,0,0)),
    radial-gradient(50% 100%,farthest-side, rgba(0,0,0,.2), rgba(0,0,0,0)) 0 100%;
  background:
    /* Shadow covers */
    linear-gradient(white 30%, rgba(255,255,255,0)),
    linear-gradient(rgba(255,255,255,0), white 70%) 0 100%,
    
    /* Shadows */
    radial-gradient(farthest-side at 50% 0, rgba(0,0,0,.2), rgba(0,0,0,0)),
    radial-gradient(farthest-side at 50% 100%, rgba(0,0,0,.2), rgba(0,0,0,0)) 0 100%;
  background-repeat: no-repeat;
  background-color: white;
  background-size: 100% 40px, 100% 40px, 100% 14px, 100% 14px;
  
  /* Opera doesn't support this in the shorthand */
  background-attachment: local, local, scroll, scroll;
}
<div class="scrollbox">
  <ul>
    <li>Not enough content to scroll</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
  </ul>
</div>


<div class="scrollbox">
  <ul>
    <li>Ah! Scroll below!</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>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
    <li>The end!</li>
    <li>No shadow there.</li>
  </ul>
</div>

コードとサンプルは、以下のサイトでご覧いただけます。 http://dabblet.com/gist/2462915

そして、ここに掲載されている解説。 http://lea.verou.me/2012/04/background-attachment-local/ .