0

I try to create a result table for a little poker simulator I wrote. It contains DIVs inside table cells to display the cards, but the cells do not line up with the table headers. Checked in brave (chrome) and safari.

I checked the html several times and found no mistake.

The HTML snippet:

<fieldset class="pokerbox">
  <legend>Best hands: </legend>
  <div id="best">
    <table class="s">
      <thead>
        <tr>
          <th>Player</th>
          <th>Hand</th>
          <th>Board</th>
          <th>Result</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td class="h">Stephan</td>
          <td class="deck">
            <div class="card">
              <div class="rank">2</div>
              <div class="suit">♠</div>
            </div>
            <div class="redcard">
              <div class="rank">K</div>
              <div class="suit">♥</div>
            </div>
          </td>
          <td class="deck">
            <div class="redcard">
              <div class="rank">K</div>
              <div class="suit">♦</div>
            </div>
            <div class="redcard">
              <div class="rank">4</div>
              <div class="suit">♦</div>
            </div>
            <div class="redcard">
              <div class="rank">9</div>
              <div class="suit">♥</div>
            </div>
            <div class="card">
              <div class="rank">K</div>
              <div class="suit">♠</div>
            </div>
            <div class="redcard">
              <div class="rank">Q</div>
              <div class="suit">♥</div>
            </div>
          </td>
          <td class="s">Three of K</td>
        </tr>
        <tr>
          <td class="h">Kai</td>
          <td class="deck">
            <div class="redcard">
              <div class="rank">9</div>
              <div class="suit">♦</div>
            </div>
            <div class="card">
              <div class="rank">Q</div>
              <div class="suit">♠</div>
            </div>
          </td>
          <td class="deck">
            <div class="card">
              <div class="rank">Q</div>
              <div class="suit">♣</div>
            </div>
            <div class="redcard">
              <div class="rank">5</div>
              <div class="suit">♦</div>
            </div>
            <div class="redcard">
              <div class="rank">8</div>
              <div class="suit">♥</div>
            </div>
            <div class="card">
              <div class="rank">K</div>
              <div class="suit">♠</div>
            </div>
            <div class="redcard">
              <div class="rank">A</div>
              <div class="suit">♠</div>
            </div>
          </td>
          <td class="s">Pair of Queens</td>
        </tr>
        <tr>
          <td class="h">Philip</td>
          <td class="deck">
            <div class="redcard">
              <div class="rank">8</div>
              <div class="suit">♦</div>
            </div>
            <div class="card">
              <div class="rank">7</div>
              <div class="suit">♣</div>
            </div>
          </td>
          <td class="deck">
            <div class="card">
              <div class="rank">2</div>
              <div class="suit">♣</div>
            </div>
            <div class="redcard">
              <div class="rank">4</div>
              <div class="suit">♦</div>
            </div>
            <div class="redcard">
              <div class="rank">9</div>
              <div class="suit">♥</div>
            </div>
            <div class="card">
              <div class="rank">5</div>
              <div class="suit">♠</div>
            </div>
            <div class="redcard">
              <div class="rank">6</div>
              <div class="suit">♥</div>
            </div>
          </td>
          <td class="s">Straight to 9</td>
        </tr>
      </tbody>
    </table>
  </div>
</fieldset>

The CSS:

body {
  margin: 0;
  background-color: darkgreen;
  color: white;
  font-family: sans-serif;
}

hr {
  flex-basis: 100%;
  height: 0;
  margin: 0;
  border: 0;
}

.board {
  display: flex;
  flex-wrap: nowrap;
  width: 100%;
  background-color: darkgreen;
}

.card,
.redcard,
.dead {
  margin: 0.2rem;
  flex-direction: row;
  border: 1px solid black;
  background: rgb(255, 255, 255);
  background: linear-gradient(
    160deg,
    rgba(255, 255, 255, 1) 12%,
    rgba(212, 212, 212, 1) 100%
  );
  width: 1.8rem;
  padding: 0.2rem;
  height: 2.7rem;
  border-radius: 0.2rem;
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  color: black;
  font-family: serif;
}

.redcard {
  color: red;
}

.rank {
  font-family: sans-serif;
  font-weight: bold;
  margin-top: -0.3rem;
  font-size: 1.5rem;
}

.suit {
  width: 100%;
  text-align: right;
  font-size: 1.9rem;
  margin-top: -0.4rem;
}

.dead {
  background-color: #e5e5f7;
  opacity: 0.8;
  background-image: linear-gradient(135deg, #2406d2 25%, transparent 25%),
    linear-gradient(225deg, #444cf7 25%, transparent 25%),
    linear-gradient(45deg, #444cf7 25%, transparent 25%),
    linear-gradient(315deg, #444cf7 25%, #e5e5f7 25%);
  background-position: 10px 0, 10px 0, 0 0, 0 0;
  background-size: 5px 5px;
  background-repeat: repeat;
}

table.s {
  border: 1px solid black;
  width: 100%;
}
th {
  background-color: black;
}

td.s {
  border: 1px solid black;
  text-align: right;
}
td.h {
  border: 1px solid black;
}
td.deck {
  border: 1px solid black;
  float: left;
}

you find the sandboxed code here to play with:

https://codepen.io/Elsni/pen/PoxJWMw

elsni
  • 1,953
  • 2
  • 17
  • 35
  • 2
    Step 1: Stop trying to apply `float` to table cells - that really _can't_ work in any sensible way. – CBroe Jul 07 '23 at 08:52
  • This could help https://stackoverflow.com/questions/1110915/is-a-div-inside-a-td-a-bad-idea – Wimanicesir Jul 07 '23 at 09:16
  • @CBroe Thanks that helped, I thought float defiens how the inside of a table sell is aligned. my bad. – elsni Jul 07 '23 at 09:36

0 Answers0