Нахождение верхнего смещения родителя - PullRequest
0 голосов
/ 21 декабря 2018

В JavaScript, как я могу получить правильную позицию смещения от вершины красной границы?По сути, я хочу, чтобы «выбранный» класс выстроил флажок в следующем столбце, который выделен жирным шрифтом путем получения смещения красной границы.

В настоящее время он получает только позицию td (которая является родительской)выбранный элемент находится в), но я хочу, чтобы он был телом.

См. перо: https://codepen.io/billy-hunter/pen/ebvKEV

#familyGroupModal .probTable tbody {
  position: relative;
  border: 5px solid red;
}

#familyGroupModal .probTable td.relationship-match {
  padding: 0;
  margin: 0;
}

#familyGroupModal .probTable .iconCheck:before {
  color: #6BA410;
}

#familyGroupModal .probTable .viewRelLink {
  padding-left: 25px;
}

#familyGroupModal .probTable .selected {
  font-weight: bold;
}

#familyGroupModal .probTable .matchedArea {
  position: relative;
  top: 0;
  right: 0;
  border: 1px solid blue;
}
<!doctype html>
<html>

<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Modal</title>
  <meta name="description" content=" " />
  <link rel="stylesheet" href="https://www.ancestrycdn.com/ui/2.0.0-rc.4/css/core.css" />

</head>

<body>

  <button class="ancBtn" id="modal-btn1" type="button">Open Modal</button>
  <div id="familyGroupModal" class="modal modalHasTitle">
    <header class="modalHeader">
      <h4 class="modalTitle">test</h4>
    </header>


    <table class="table topSpacingBlock probTable">
      <thead>
        <tr>
          <th scope="col" abbr="Name">Probability</th>
          <th scope="col" abbr="Relationship">Relationship</th>
          <th scope="col" abbr="Relationship Match"></th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td data-label="probability" class="text2xlrg bold">50%</td>
          <td data-label="relationship">
            <div>Jane Doe</div>
            <div>Jaeenen Doe</div>
            <div>Jimmy Doe</div>
            <div>Julie</div>
          </td>
          <td class="relationship-match">
            <div class="matchedArea">
              <span class="icon iconCheck"></span>
              <span class="hide480 bold">Match</span>
              <p class="noTopSpacing viewRelLink hide480"><a href="#">View</a></p>
            </div>
          </td>
        </tr>
        <tr>
          <td data-label="probability" class="text2xlrg bold">40%</td>
          <td data-label="relationship">
            <div>Jane Doe</div>
            <div>Jenny Doe</div>
            <div class="selected">Joeneys Doe</div>
            <div>Jerry Donor</div>
          </td>
          <td class="relationship-match"></td>
        </tr>
        <tr>
          <td data-label="probability" class="text2xlrg bold">7%</td>
          <td data-label="relationship">
            <div>Julie Doe</div>
            <div>Jamie Doo</div>
            <div>Jan Doe</div>
            <div>Janiee Dooo</div>
          </td>
          <td data-label="relationship-match"></td>
        </tr>
        <tr>
          <td data-label="probability" class="text2xlrg bold">3%</td>
          <td data-label="relationship">
            <div>Jery Doe</div>
            <div>James Dooo</div>
            <div>Janeeie</div>
            <div>Jenny Down</div>
          </td>
          <td data-label="relationship-match"></td>
        </tr>
      </tbody>
    </table>

  </div>

  <script src="https://www.ancestrycdn.com/ui/2.0.0-rc.4/js/core.js"></script>

  <script>
    const familyGroupModal = ui.modal('#familyGroupModal', {

    });
    familyGroupModal.open();
    document.getElementById('modal-btn1').addEventListener('click', () => {
      familyGroupModal.open();
    });

    //add 'selected' class to relationship that matches, and offset the top of parent element.
    const selectedElem = document.querySelector('.selected');
    const parentElem = document.querySelector('.probTable tbody');
    const matchedArea = document.querySelector('.matchedArea');

    if (selectedElem) {
      matchedArea.style.top = selectedElem.offsetTop + "px";
      //console.log(selectedElem.offsetParent.offsetParent.offsetTop);
    } else {
      matchedArea.className = 'noDisplay';
    }
  </script>
</body>

</html>
...