微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

css – 如何绘制具有不同边框宽度的偶数表边框?

我实现了一个填字游戏生成器.它生成一个带有每行单词和每单元格字母的填字游戏,关键字标有更宽的边框和灰色背景,如图中所示:

为此,我生成代码大致如下:

#crossword {
   border-spacing: 0px;
   border-collapse:collapse;
}

.word {
  vertical-align: middle;
  align-items: center;
  text-align: center;
  justify-content: center;
  margin: 0;
  padding: 0;
}

.cell {
  width: 30px;
  height: 30px;
  margin: 0;
  padding: 0;
}

.letter {
  border: 1px solid black;
}

.keyword {
  border-width: 2px;
  background-color: gray;
}
<table id="crossword">
    <tr class="word">
        <td class="cell letter">W</td>
        <td class="cell letter keyword">C</td>
        <td class="cell letter">A</td>
    </tr>
</table>

我的问题是图像中的红色椭圆标记 – 关键字的边框,比其余部分宽1px,打破了填字游戏的顶部和底部线条.我尝试删除border-collapse属性,但这导致每个行连接上出现双边框.

目前我使用table,tr和td进行生成,但是如果有使用div的解决方案,我会很乐意切换.

所以我的问题是:假设我能够唯一地处理每个单元格(包括向它们添加特殊类等),如何使顶部和底部边框出现在关键字单元格内而不是外部?

我找到了一个使用Box-shadow的解决方案,但它并不是真正的跨浏览器,并且涉及很多魔法,所以如果可能的话我宁愿避免使用它.

解决方法

通过使用保持表的最外边框以匹配表的认边框
table#crossword tr:first-child td {
  border-top: 1px solid black;
}
table#crossword tr:last-child td {
  border-bottom: 1px solid black;
}
table#crossword tr td:first-child {
  border-left: 1px solid black;
}
table#crossword tr td:last-child {
  border-right: 1px solid black;
}

它看起来有点低,但除此之外没有其他选项可以使最外边框均匀对齐

演示

#crossword {
   border-spacing: 0px;
   border-collapse:collapse;
}

.word {
  vertical-align: middle;
  align-items: center;
  text-align: center;
  justify-content: center;
  margin: 0;
  padding: 0;
}

.cell {
  width: 30px;
  height: 30px;
  margin: 0;
  padding: 0;
}

.letter {
  border: 1px solid black;
}

.keyword {
  border-width: 2px;
  background-color: gray;
}

table#crossword tr:first-child td {
  border-top: 1px solid black;
}
table#crossword tr:last-child td {
  border-bottom: 1px solid black;
}
table#crossword tr td:first-child {
  border-left: 1px solid black;
}
<table id="crossword">
    <tr class="word">
        <td class="cell letter">W</td>
        <td class="cell letter keyword">C</td>
        <td class="cell letter">A</td>
    </tr>
    <tr class="word">
        <td class="cell letter">W</td>
        <td class="cell letter keyword">C</td>
        <td class="cell letter">A</td>
    </tr>
    <tr class="word">
        <td class="cell letter">W</td>
        <td class="cell letter keyword">C</td>
        <td class="cell letter">A</td>
    </tr>
</table>

原文地址:https://www.jb51.cc/css/215644.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。