CSS ある位置でエレメントを上部に固定するには?

ショコラ
ショコラ

CSS ある位置でエレメントを上部に固定するには?

flexボックスのサンプルを用意しました。
注目は「position:sticky; top:var(–menu-height,50px);」とその親の div 配置することです。

もっさん先輩
もっさん先輩
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.3/dist/semantic.min.css">
  <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.3/dist/jquery.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.3/dist/semantic.min.js"></script>
</head>
<body>

<div class="ui top fixed borderless menu">
  <div class="ui item">
    <i class="icon eye"></i>メニュー
  </div>
</div>
<div class="ui container">
  <div style="margin-top:var(--menu-height,50px);" id="contents">
    <div style="position:sticky; top:var(--menu-height,50px); z-index:999;" id="sticky">
      sticky
    </div>
    <div class="ui segment" style="height:100em;">
      <p>0</p>
      <p>1</p>
      <p>2</p>
      <p>3</p>
      <p>4</p>
      <p>5</p>
      <p>6</p>
      <p>7</p>
      <p>8</p>
      <p>9</p>
    </div>
  </div>
</div>

<script>
$(function() {
  var targetElement = document.querySelector('#sticky');
  var containerElement = document.querySelector('.top.menu');
  var containerHeight = containerElement.clientHeight;
  document.querySelector('#contents').style.setProperty('--menu-height', containerHeight + 'px');
  document.querySelector('#sticky').style.setProperty('--menu-height', containerHeight + 'px');
})
</script>
</body>
</html>

以上

Scroll to Top