简体   繁体   English

圆桌角仅 CSS

[英]Rounded table corners CSS only

I have searched and searched, but haven't been able to find a solution for my requirement.我已经搜索和搜索,但无法找到满足我要求的解决方案。

I have a plain ol' HTML table.我有一个普通的 HTML 表格。 I want round corners for it, without using images or JS, ie pure CSS only .我想要它的圆角,使用图像或 JS,即纯CSS Like this:像这样:

表布局草图

Rounded corners for corner cells, and 1px thick border for the cells.角单元格的圆角和单元格的1px厚边框。

So far I have this:到目前为止,我有这个:

table {
  -moz-border-radius: 5px !important;
  border-collapse: collapse !important;
  border: none !important;
}
table th,
table td {
  border: none !important
}
table th:first-child {
  -moz-border-radius: 5px 0 0 0 !important;
}
table th:last-child {
  -moz-border-radius: 0 5px 0 0 !important;
}
table tr:last-child td:first-child {
  -moz-border-radius: 0 0 0 5px !important;
}
table tr:last-child td:last-child {
  -moz-border-radius: 0 0 5px 0 !important;
}
table tr:hover td {
  background-color: #ddd !important
}

But that leaves me without any borders for the cells.但这让我对细胞没有任何边界。 If I add borders, they aren't rounded!如果我添加边框,它们不是圆角的!

Any solutions?有什么解决办法吗?

Seems to work fine in FF and Chrome (haven't tested any others) with separate borders: http://jsfiddle.net/7veZQ/3/似乎在具有单独边框的 FF 和 Chrome 中工作正常(尚未测试任何其他):http: //jsfiddle.net/7veZQ/3/

Edit: Here's a relatively clean implementation of your sketch:编辑:这是你的草图的一个相对干净的实现:

 table { border-collapse:separate; border:solid black 1px; border-radius:6px; } td, th { border-left:solid black 1px; border-top:solid black 1px; } th { background-color: blue; border-top: none; } td:first-child, th:first-child { border-left: none; }
 <table> <thead> <tr> <th>blah</th> <th>fwee</th> <th>spoon</th> </tr> </thead> <tr> <td>blah</td> <td>fwee</td> <td>spoon</td> </tr> <tr> <td>blah</td> <td>fwee</td> <td>spoon</td> </tr> </table>

http://jsfiddle.net/MuZzz/3577/ http://jsfiddle.net/MuZzz/3577/

The selected answer is terrible.选择的答案很糟糕。 I would implement this by targeting the corner table cells and applying the corresponding border radius.我将通过定位角表单元格并应用相应的边框半径来实现这一点。

To get the top corners, set the border radius on the first and last of type of the th elements, then finish by setting the border radius on the last and first of td type on the last of type tr to get the bottom corners.要获得顶角,请在第 th 个元素的类型的第一个和最后一个上设置边框半径,然后在tr类型的最后一个上设置td类型的最后一个和第一个的边框半径以获取底角。

th:first-of-type {
  border-top-left-radius: 10px;
}
th:last-of-type {
  border-top-right-radius: 10px;
}
tr:last-of-type td:first-of-type {
  border-bottom-left-radius: 10px;
}
tr:last-of-type td:last-of-type {
  border-bottom-right-radius: 10px;
}

For me, the Twitter Bootstrap Solution looks good.对我来说, Twitter Bootstrap 解决方案看起来不错。 It excludes IE < 9 (no round corners in IE 8 and lower), but that's OK I think, if you develop prospective Web-Apps.它不包括 IE < 9(在 IE 8 及更低版本中没有圆角),但我认为,如果您开发预期的 Web 应用程序,那没关系。

CSS/HTML: CSS/HTML:

 table { border: 1px solid #ddd; border-collapse: separate; border-left: 0; border-radius: 4px; border-spacing: 0px; } thead { display: table-header-group; vertical-align: middle; border-color: inherit; border-collapse: separate; } tr { display: table-row; vertical-align: inherit; border-color: inherit; } th, td { padding: 5px 4px 6px 4px; text-align: left; vertical-align: top; border-left: 1px solid #ddd; } td { border-top: 1px solid #ddd; } thead:first-child tr:first-child th:first-child, tbody:first-child tr:first-child td:first-child { border-radius: 4px 0 0 0; } thead:last-child tr:last-child th:first-child, tbody:last-child tr:last-child td:first-child { border-radius: 0 0 0 4px; }
 <table> <thead> <tr><th>xxx</th><th>xxx</th><th>xxx</th></tr> </thead> <tbody> <tr><td>xxx</td><td>xxx</td><td>xxx</td></tr> <tr><td>xxx</td><td>xxx</td><td>xxx</td></tr> <tr><td>xxx</td><td>xxx</td><td>xxx</td></tr> <tr><td>xxx</td><td>xxx</td><td>xxx</td></tr> <tr><td>xxx</td><td>xxx</td><td>xxx</td></tr> </tbody> </table>

You can play with that here (on jsFiddle)你可以在这里玩(在 jsFiddle 上)

Firstly, you'll need more than just -moz-border-radius if you want to support all browsers.首先,如果你想支持所有浏览器,你需要的不仅仅是-moz-border-radius You should specify all variants, including plain border-radius , as follows:您应该指定所有变体,包括普通border-radius ,如下所示:

-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;

Secondly, to directly answer your question, border-radius doesn't actually display a border;其次,要直接回答您的问题, border-radius实际上并不显示边框; it just sets how the corners look of the border, if there is one.它只是设置边界角的外观(如果有的话)。

To turn on the border, and thus get your rounded corners, you also need the border attribute on your td and th elements.要打开边框,从而获得圆角,您还需要tdth元素上的border属性。

td, th {
   border:solid black 1px;
}

You will also see the rounded corners if you have a background colour (or graphic), although of course it would need to be a different background colour to the surrounding element in order for the rounded corners to be visible without a border.如果您有背景颜色(或图形),您还将看到圆角,当然它需要与周围元素不同的背景颜色才能使圆角在没有边框的情况下可见。

It's worth noting that some older browsers don't like putting border-radius on tables/table cells.值得注意的是,一些较旧的浏览器不喜欢在表格/表格单元格上放置border-radius It may be worth putting a <div> inside each cell and styling that instead.可能值得在每个单元格中放置一个<div>并设置样式。 However this shouldn't affect current versions of any browsers (except IE, that doesn't support rounded corners at all - see below)但是,这不应该影响任何浏览器的当前版本(除了 IE,它根本不支持圆角 - 见下文)

Finally, not that IE doesn't support border-radius at all (IE9 beta does, but most IE users will be on IE8 or less).最后,并不是说 IE 根本不支持border-radius (IE9 beta 支持,但大多数 IE 用户将使用 IE8 或更低版本)。 If you want to hack IE to support border-radius, look at http://css3pie.com/如果你想破解 IE 以支持边框半径,请查看http://css3pie.com/

[EDIT] [编辑]

Okay, this was bugging me, so I've done some testing.好的,这让我很烦,所以我做了一些测试。

Here's a JSFiddle example I've been playing with这是我一直在玩的 JSFiddle 示例

It seems like the critical thing you were missing was border-collapse:separate;似乎您缺少的关键是border-collapse:separate; on the table element.在表格元素上。 This stops the cells from linking their borders together, which allows them to pick up the border radius.这会阻止单元格将它们的边界链接在一起,从而使它们能够拾取边界半径。

Hope that helps.希望有帮助。

The best solution I've found for rounded corners and other CSS3 behavior for IE<9 can be found here: http://css3pie.com/我为圆角和 IE<9 的其他 CSS3 行为找到的最佳解决方案可以在这里找到: http ://css3pie.com/

Download the plug-in, copy to a directory in your solution structure.下载插件,复制到解决方案结构中的目录。 Then in your stylesheet make sure to have the behavior tag so that it pulls in the plug-in.然后在您的样式表中确保有行为标记,以便它可以拉入插件。

Simple example from my project which gives me rounded corners, color gradient, and box shadow for my table:我的项目中的简单示例,它为我的桌子提供了圆角、颜色渐变和框阴影:

.table-canvas 
{
    -webkit-border-radius: 8px;
    -moz-border-radius: 8px;
    overflow:hidden;
    border-radius: 10px;
    -pie-background: linear-gradient(#ece9d8, #E5ECD8);   
    box-shadow: #666 0px 2px 3px;
    behavior: url(Include/PIE.htc);
    overflow: hidden;
}

Don't worry if your Visual Studio CSS intellisense gives you the green underline for unknown properites, it still works when you run it.如果您的 Visual Studio CSS 智能感知为您提供未知属性的绿色下划线,请不要担心,它在您运行时仍然有效。 Some of the elements are not very clearly documented, but the examples are pretty good, especially on the front page.一些元素没有很清楚地记录,但例子非常好,尤其是在首页上。

It is a little rough, but here is something I put together that is comprised entirely of CSS and HTML.这有点粗糙,但这是我放在一起的东西,它完全由 CSS 和 HTML 组成。

  • Outer corners rounded外圆角
  • Header row标题行
  • Multiple data rows多个数据行

This example also makes use of the :hover pseudo class for each data cell <td> .此示例还为每个数据单元<td>使用:hover伪类。 Elements can be easily updated to meet your needs, and the hover can quickly be disabled.元素可以轻松更新以满足您的需求,并且可以快速禁用悬停。

(However, I have not yet gotten the :hover to properly work for full rows <tr> . The last hovered row does not display with rounded corners on the bottom. I'm sure there is something simple that is getting overlooked.) (但是,我还没有让:hover正确地为整行工作<tr> 。最后一个悬停的行没有在底部显示圆角。我敢肯定有一些简单的东西被忽略了。)

 table.dltrc { width: 95%; border-collapse: separate; border-spacing: 0px; border: solid black 2px; border-radius: 8px; } tr.dlheader { text-align: center; font-weight: bold; border-left: solid black 1px; padding: 2px } td.dlheader { background: #d9d9d9; text-align: center; font-weight: bold; border-left: solid black 1px; border-radius: 0px; padding: 2px } tr.dlinfo, td.dlinfo { text-align: center; border-left: solid black 1px; border-top: solid black 1px; padding: 2px } td.dlinfo:first-child, td.dlheader:first-child { border-left: none; } td.dlheader:first-child { border-radius: 5px 0 0 0; } td.dlheader:last-child { border-radius: 0 5px 0 0; } /*===== hover effects =====*/ /*tr.hover01:hover, tr.hover02:hover { background-color: #dde6ee; }*/ /* === ROW HOVER === */ /*tr.hover02:hover:last-child { background-color: #dde6ee; border-radius: 0 0 6px 6px; }*/ /* === CELL HOVER === */ td.hover01:hover { background-color: #dde6ee; } td.hover02:hover { background-color: #dde6ee; } td.hover02:first-child { border-radius: 0 0 0 6px; } td.hover02:last-child { border-radius: 0 0 6px 0; }
 <body style="background:white"> <br> <center> <table class="dltrc" style="background:none"> <tbody> <tr class="dlheader"> <td class="dlheader">Subject</td> <td class="dlheader">Title</td> <td class="dlheader">Format</td> </tr> <tr class="dlinfo hover01"> <td class="dlinfo hover01">One</td> <td class="dlinfo hover01">Two</td> <td class="dlinfo hover01">Three</td> </tr> <tr class="dlinfo hover01"> <td class="dlinfo hover01">Four</td> <td class="dlinfo hover01">Five</td> <td class="dlinfo hover01">Six</td> </tr> <tr class="dlinfo hover01"> <td class="dlinfo hover01">Seven</td> <td class="dlinfo hover01">Eight</td> <td class="dlinfo hover01">Nine</td> </tr> <tr class="dlinfo2 hover02"> <td class="dlinfo hover02">Ten</td> <td class="dlinfo hover01">Eleven</td> <td class="dlinfo hover02">Twelve</td> </tr> </tbody> </table> </center> </body>

Through personal expeirence I've found that it's not possible to round corners of an HTML table cell with pure CSS.通过个人经验,我发现不可能使用纯 CSS 对 HTML 表格单元格的角进行圆角处理。 Rounding a table's outermost border is possible.可以将表格的最外边界四舍五入。

You will have to resort to using images as described in this tutorial , or any similar :)您将不得不使用本教程中所述的图像或任何类似的方法:)

To adapt @luke flournoy's brilliant answer - and if you're not using th in your table, here's all the CSS you need to make a rounded table:为了适应@luke floornoy 的精彩回答——如果你没有在你的表格中使用th ,这里是制作圆桌所需的所有 CSS:

.my_table{
border-collapse: separate;
border-spacing: 0;
border: 1px solid grey;
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}

.my_table tr:first-of-type {
  border-top-left-radius: 10px;
}

.my_table tr:first-of-type td:last-of-type {
  border-top-right-radius: 10px;
}

.my_table tr:last-of-type td:first-of-type {
  border-bottom-left-radius: 10px;
}

.my_table tr:last-of-type td:last-of-type {
  border-bottom-right-radius: 10px;
}

2020+ solution 2020+解决方案

  1. Use CSS variable to pass the border radius of the table to the border radius of the corner cells, so you can change the radius on a single place (like <table class="rounded" style="--radius: 10px"> )使用 CSS 变量将表格的边框半径传递给角单元格的边框半径,这样您就可以在单个位置更改半径(如<table class="rounded" style="--radius: 10px">
  2. border-collapse drops the border radius settings and without it the border-width is doubled. border-collapse删除边框半径设置,没有它边框宽度加倍。 To make the borders 1px wide, I'd suggest box shadows of the cells (like box-shadow: -1px -1px black );为了使边框宽 1px,我建议使用单元格的框阴影(如box-shadow: -1px -1px black );

 /* rounded corners */ .rounded { --radius: 5px; --border-color: black; border: 1px solid var(--border-color); border-radius: var(--radius); border-spacing: 0; } .rounded tr:first-child>:first-child { border-top-left-radius: var(--radius); } .rounded tr:first-child>:last-child { border-top-right-radius: var(--radius); } .rounded tr:last-child>:first-child { border-bottom-left-radius: var(--radius); } .rounded tr:last-child>:last-child { border-bottom-right-radius: var(--radius); } /* design */ .rounded th, .rounded td { padding: .2rem; /* border: 1px solid var(--border-color); */ box-shadow: -1px -1px var(--border-color); } .rounded th { background: hsl(240deg, 100%, 80%); }
 <table class="rounded"> <tr> <th>Name <th>Note <tr> <td>Bill Gates <td>Plagiator <tr> <td>Steve Jobs <td>Hipster </table>

@jt3k in the comments suggests half pixel border which is an interesting but risky idea: the w3 specs allow real numbers in pixels, but they do not describe how are browsers supposed to render them and some users report issues with this. @jt3k 在评论中建议半像素边框,这是一个有趣但有风险的想法:w3 规范允许以像素为单位的实数,但它们没有描述浏览器应该如何呈现它们,并且一些用户报告了这个问题

For a bordered and scrollable table, use this (replace variables, $ starting texts)对于有边框和可滚动的表格,使用这个(替换变量, $起始文本)

If you use thead , tfoot or th , just replace tr:first-child and tr-last-child and td with them.如果您使用theadtfootth ,只需用它们替换tr:first-childtr-last-childtd

#table-wrap {
  border: $border solid $color-border;
  border-radius: $border-radius;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
table td { border: $border solid $color-border; }
table td:first-child { border-left: none; }
table td:last-child { border-right: none; }
table tr:first-child td { border-top: none; }
table tr:last-child td { border-bottom: none; }
table tr:first-child td:first-child { border-top-left-radius: $border-radius; }
table tr:first-child td:last-child { border-top-right-radius: $border-radius; }
table tr:last-child td:first-child { border-bottom-left-radius: $border-radius; }
table tr:last-child td:last-child { border-bottom-right-radius: $border-radius; }

HTML: HTML:

<div id=table-wrap>
  <table>
    <tr>
       <td>1</td>
       <td>2</td>
    </tr>
    <tr>
       <td>3</td>
       <td>4</td>
    </tr>
  </table>
</div>

Sample HTML示例 HTML

<table class="round-corner" aria-describedby="caption">
    <caption id="caption">Table with rounded corners</caption>
    <thead>
        <tr>
            <th scope="col">Head1</th>
            <th scope="col">Head2</th>
            <th scope="col">Head3</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td scope="rowgroup">tbody1 row1</td>
            <td scope="rowgroup">tbody1 row1</td>
            <td scope="rowgroup">tbody1 row1</td>
        </tr>
        <tr>
            <td scope="rowgroup">tbody1 row2</td>
            <td scope="rowgroup">tbody1 row2</td>
            <td scope="rowgroup">tbody1 row2</td>
        </tr>
    </tbody>
    <tbody>
        <tr>
            <td scope="rowgroup">tbody2 row1</td>
            <td scope="rowgroup">tbody2 row1</td>
            <td scope="rowgroup">tbody2 row1</td>
        </tr>
        <tr>
            <td scope="rowgroup">tbody2 row2</td>
            <td scope="rowgroup">tbody2 row2</td>
            <td scope="rowgroup">tbody2 row2</td>
        </tr>
    </tbody>
    <tbody>
        <tr>
            <td scope="rowgroup">tbody3 row1</td>
            <td scope="rowgroup">tbody3 row1</td>
            <td scope="rowgroup">tbody3 row1</td>
        </tr>
        <tr>
            <td scope="rowgroup">tbody3 row2</td>
            <td scope="rowgroup">tbody3 row2</td>
            <td scope="rowgroup">tbody3 row2</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <td scope="col">Foot</td>
            <td scope="col">Foot</td>
            <td scope="col">Foot</td>
        </tr>
    </tfoot>
</table>

SCSS, easily converted to CSS, use sassmeister.com SCSS,轻松转换为 CSS,使用 sassmeister.com

// General CSS
table,
th,
td {
    border: 1px solid #000;
    padding: 8px 12px;
}

.round-corner {
    border-collapse: collapse;
    border-style: hidden;
    box-shadow: 0 0 0 1px #000; // fake "border"
    border-radius: 4px;

    // Maybe there's no THEAD after the caption?
    caption + tbody {
        tr:first-child {
            td:first-child,
            th:first-child {
                border-top-left-radius: 4px;
            }

            td:last-child,
            th:last-child {
                border-top-right-radius: 4px;
                border-right: none;
            }
        }
    }

    tbody:first-child {
        tr:first-child {
            td:first-child,
            th:first-child {
                border-top-left-radius: 4px;
            }

            td:last-child,
            th:last-child {
                border-top-right-radius: 4px;
                border-right: none;
            }
        }
    }

    tbody:last-child {
        tr:last-child {
            td:first-child,
            th:first-child {
                border-bottom-left-radius: 4px;
            }

            td:last-child,
            th:last-child {
                border-bottom-right-radius: 4px;
                border-right: none;
            }
        }
    }

    thead {
        tr:last-child {
            td:first-child,
            th:first-child {
                border-top-left-radius: 4px;
            }

            td:last-child,
            th:last-child {
                border-top-right-radius: 4px;
                border-right: none;
            }
        }
    }

    tfoot {
        tr:last-child {
            td:first-child,
            th:first-child {
                border-bottom-left-radius: 4px;
            }

            td:last-child,
            th:last-child {
                border-bottom-right-radius: 4px;
                border-right: none;
            }
        }
    }

    // Reset tables inside table
    table tr th,
    table tr td {
        border-radius: 0;
    }
}

http://jsfiddle.net/MuTLY/xqrgo466/ http://jsfiddle.net/MuTLY/xqrgo466/

Add a <div> wrapper around the table, and apply the following CSS在表格周围添加<div>包装器,并应用以下 CSS

border-radius: x px;
overflow: hidden;
display: inline-block;

to this wrapper.到这个包装器。

Alternative solution would be to use a wrapper for table替代解决方案是使用表的包装器

http://jsfiddle.net/0fmweahc/15/ http://jsfiddle.net/0fmweahc/15/

<div class="table-wrapper">
 <table>
    <tr class="first-line"><td>A</td><td>B</td></tr>
    <tr class="last-line"><td>C</td><td>D</td></tr>
 </table>
</div>

<style>
  .table-wrapper {
    border: 1px solid black;
    border-radius: 20px;
    margin: 10%;
  }

  table, td, th {
    border: 1px solid black;
    padding: 10px;
  }

  table {
    width: 100%;
    border-collapse: collapse;
    border-style: hidden;
  }
</style>

在此处输入图像描述

The following is something I used that worked for me across browsers so I hope it helps someone in the future:以下是我使用的跨浏览器对我有用的东西,所以我希望它对将来的人有所帮助:

#contentblock th:first-child {
    -moz-border-radius: 6px 0 0 0;
    -webkit-border-radius: 6px 0 0 0;
    border-radius: 6px 0 0 0;
    behavior: url(/images/border-radius.htc);
    border-radius: 6px 0 0 0;
}

#contentblock th:last-child {
    -moz-border-radius: 0 6px 0 0;
    -webkit-border-radius: 0 6px 0 0;
    border-radius: 0 6px 0 0;
    behavior: url(/images/border-radius.htc);
    border-radius: 0 6px 0 0;
}
#contentblock tr:last-child td:last-child {
     border-radius: 0 0 6px 0;
    -moz-border-radius: 0 0 6px 0;
    -webkit-border-radius: 0 0 6px 0;
    behavior: url(/images/border-radius.htc);
    border-radius: 0 0 6px 0;
 }

#contentblock tr:last-child td:first-child {
    -moz-border-radius: 0 0 0 6px;
    -webkit-border-radius: 0 0 0 6px;
    border-radius: 0 0 0 6px;
    behavior: url(/images/border-radius.htc);
    border-radius: 0 0 0 6px;
}

Obviously the #contentblock portion can be replaced/edited as needed and you can find the border-radius.htc file by doing a search in Google or your favorite web browser.显然,# #contentblock部分可以根据需要进行替换/编辑,您可以通过在 Google 或您喜欢的网络浏览器中进行搜索来找到border-radius.htc文件。

You can try this if you want the rounded corners on each side of the table without touching the cells : http://jsfiddle.net/7veZQ/3983/如果你想要桌子两边的圆角而不接触单元格,你可以试试这个:http: //jsfiddle.net/7veZQ/3983/

<table>
    <tr class="first-line"><td>A</td><td>B</td></tr>
    <tr class="last-line"><td>C</td><td>D</td></tr>
</table>

Add between <head> tags:<head>标签之间添加:

<style>
  td {background: #ffddaa; width: 20%;}
</style>

and in the body:在体内:

<div style="background: black; border-radius: 12px;">
  <table width="100%" style="cell-spacing: 1px;">
    <tr>
      <td style="border-top-left-radius: 10px;">
        Noordwest
      </td>
      <td>&nbsp;</td>
      <td>Noord</td>
      <td>&nbsp;</td>
      <td style="border-top-right-radius: 10px;">
        Noordoost
      </td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>West</td>
      <td>&nbsp;</td>
      <td>Centrum</td>
      <td>&nbsp;</td>
      <td>Oost</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td style="border-bottom-left-radius: 10px;">
        Zuidwest
      </td>
      <td>&nbsp;</td>
      <td>Zuid</td>
      <td>&nbsp;</td>
      <td style="border-bottom-right-radius: 10px;">
        Zuidoost
      </td>
    </tr>
  </table>
</div>

The cell color, contents and formatting are of course for example;单元格颜色、内容和格式当然是例如;
it's about spacing color-filled cells within a div.这是关于在 div 中间隔填充颜色的单元格。 Doing so, the black cell borders/table border are actually the div background color.这样做,黑色单元格边框/表格边框实际上是 div 背景颜色。
Note that you'll need to set the div-border-radius about 2 values greater than the separate cell corner border radii, to take a smooth rounded corner effect.请注意,您需要将 div-border-radius 设置为比单独的单元格角边框半径大 2 个值,以获得平滑的圆角效果。

This is css3 , only recent non-IE<9 browser will support it.这是css3 ,只有最近的非 IE<9 浏览器会支持它。

Check out here , it derives the round property for all available browsers这里查看,它为所有可用的浏览器派生了 round 属性

Since none of the higher rated solutions worked for me, as I am working with a table, that has an alternating color scheme, I tried a lot and finally got my solution based on the solution, @[luke flournoy] provided.由于没有一个更高级别的解决方案对我有用,因为我正在使用具有交替配色方案的桌子,我尝试了很多,最后根据@[luke floornoy] 提供的解决方案得到了我的解决方案。

Basically the solution with putting a rounded border on the table works - but when you apply a background color on a table row or work with a designated table head, it overwrites the overall table setting and will be displayed as a rectangle.基本上,在表格上放置圆形边框的解决方案有效 - 但是当您在表格行上应用背景颜色或使用指定的表格头时,它会覆盖整个表格设置并显示为矩形。

Luke's solutions targets only the specific corner cells, that got me to the idea, that I should maybe also apply the alternating background color to the cells of that row and not the row itself. Luke 的解决方案只针对特定的角落单元格,这让我想到了我应该也将交替背景颜色应用于该行的单元格而不是该行本身。 Adding td to the tr:nth-child did the trick.将 td 添加到 tr:nth-child 就可以了。 Same goes if you want to use a third color on the table head.如果您想在表头上使用第三种颜色,也是如此。 You can check this out in the code snippet below.您可以在下面的代码片段中查看这一点。

I didn't see any other solution actually working with background colors and especially not with different colors in one table so I hope this one helps those, who need more than just a plain mono-colored table.我没有看到任何其他实际使用背景颜色的解决方案,尤其是在一张桌子上没有使用不同颜色的解决方案,所以我希望这个解决方案可以帮助那些需要不仅仅是一张普通的单色桌子的人。 Rate this up if it helped you, so it moves to the top.如果它对您有帮助,请给它评分,所以它会移到顶部。 There are a lot of very fussy and not quite helpful answers here, so.这里有很多非常挑剔且不太有用的答案,所以。

Here's a look at my result https://i.stack.imgur.com/XHOEN.png这是我的结果https://i.stack.imgur.com/XHOEN.png

And here's the code for it:这是它的代码:

 .LezzonPrize{ text-align: center; line-height: 1.8rem; border-collapse: collapse; border-radius: 36px; -moz-border-radius: 36px; -webkit-border-radius: 36px; background-color: #FCF3C6; } .LezzonPrize thead th{ background-color:#FFCF5A; } .LezzonPrize thead th:first-child{ border-radius: 36px 0 0 0; } .LezzonPrize thead th:last-child{ border-radius: 0 36px 0 0; } .LezzonPrize th{ text-align: center; vertical-align: middle; line-height: 1.8rem; font-weight: 700; text-transform: none; border-bottom: 2px solid #3F5A1B; } .LezzonPrize td:first-child{ text-align:left; } .LezzonPrize td{ font-size:18px; } .LezzonPrize tr:nth-child(2n-1) td{ background-color: #F3CF87; } .LezzonPrize tr:last-child td:first-child{ border-radius: 0 0 0 36px; -moz-border-radius: 0 0 0 36px; -webkit-border-radius: 0 0 0 36px; } .LezzonPrize tr:last-child td:last-child{ border-radius: 0 0 36px 0; -moz-border-radius: 0 0 36px 0; -webkit-border-radius: 0 0 36px 0; }
 <table class="LezzonPrize" width="100%"> <thead> <tr> <th width="32%"> Head </th> <th width="17%"> Head </th> <th width="17%"> Head </th> <th width="17%"> Head </th> <th width="17%"> Head </th> </tr> </thead> <tbody> <tr> <td> Content </td> <td> Content </td> <td> Content </td> <td> Content </td> <td> Content </td> </tr> <tr> <td> Content </td> <td> Content </td> <td> Content </td> <td> Content </td> <td> Content </td> </tr> <tr> <td> Content </td> <td> Content </td> <td> Content </td> <td> Content </td> <td> Content </td> </tr> <tr> <td colspan="5">Try deleting this to confirm that the round corners also work on the 2nth-child table rows</td> </tr> </tbody> </table>

CSS: CSS:

table {
  border: 1px solid black;
  border-radius: 10px;
  border-collapse: collapse;
  overflow: hidden;
}

td {
  padding: 0.5em 1em;
  border: 1px solid black;
}

Lesson in Table Borders...表格边框课程...

NOTE: The HTML/CSS code below should be viewed in IE only.注意:下面的 HTML/CSS 代码只能在 IE 中查看。 The code will not be rendered correctly in Chrome!代码将无法在 Chrome 中正确呈现!

We need to remember that:我们需要记住:

  1. A table has a border: its outer boundary (which can also have a border-radius.)表格有一个边框:它的外边界(也可以有一个边框半径。)

  2. The cells themselves ALSO have borders (which too, can also have a border-radius.)单元格本身也有边界(也可以有边界半径。)

  3. The table and cell borders can interfere with each other:表格和单元格边框可能会相互干扰:

    The cell border can pierce through the table border (ie: table boundary).单元格边框可以穿透表格边框(即:表格边界)。

    To see this effect, amend the CSS style rules in the code below as follows:为了看到这个效果,修改下面代码中的 CSS 样式规则如下:
    i.一世。 table {border-collapse: separate;}表{border-collapse:分开;}
    ii. ii. Delete the style rules which round the corner cells of the table.删除表格角落单元格的样式规则。
    iii. iii. Then play with border-spacing so you can see the interference.然后玩边框间距,这样你就可以看到干扰。

  4. However, the table border and cell borders can be COLLAPSED (using: border-collapse: collapse;).但是,表格边框和单元格边框可以折叠(使用:border-collapse:collapse;)。

  5. When they are collapsed, the cell and table borders interfere in a different way:当它们被折叠时,单元格和表格边框以不同的方式干扰:

    i.一世。 If the table border is rounded but cell borders remain square, then the cell's shape takes precedence and the table loses its curved corners.如果表格边框是圆形的,但单元格边框保持方形,则单元格的形状优先,表格将失去其弧形角。

    ii. ii. Conversely, if the corner cell's are curved but the table boundary is square, then you will see an ugly square corner bordering the curvature of the corner cells.相反,如果角单元是弯曲的但表格边界是方形的,那么您将看到一个丑陋的方形角与角单元的曲率接壤。

  6. Given that cell's attribute takes precedence, the way to round the table's four corner's then, is by:鉴于单元格的属性优先,那么圆桌四个角的方法是:

    i.一世。 Collapsing borders on the table (using: border-collapse: collapse;).折叠表格上的边框(使用:border-collapse:collapse;)。

    ii. ii. Setting your desired curvature on the corner cells of the table.在表格的角单元上设置所需的曲率。
    iii. iii. It does not matter if the table's corner's are rounded (ie: Its border-radius can be zero).桌子的角是否圆角并不重要(即:它的边框半径可以为零)。

 .zui-table-rounded { border: 2px solid blue; /*border-radius: 20px;*/ border-collapse: collapse; border-spacing: 0px; } .zui-table-rounded thead th:first-child { border-radius: 30px 0 0 0; } .zui-table-rounded thead th:last-child { border-radius: 0 10px 0 0; } .zui-table-rounded tbody tr:last-child td:first-child { border-radius: 0 0 0 10px; } .zui-table-rounded tbody tr:last-child td:last-child { border-radius: 0 0 10px 0; } .zui-table-rounded thead th { background-color: #CFAD70; } .zui-table-rounded tbody td { border-top: solid 1px #957030; background-color: #EED592; }
 <table class="zui-table-rounded"> <thead> <tr> <th>Name</th> <th>Position</th> <th>Height</th> <th>Born</th> <th>Salary</th> </tr> </thead> <tbody> <tr> <td>DeMarcus Cousins</td> <td>C</td> <td>6'11"</td> <td>08-13-1990</td> <td>$4,917,000</td> </tr> <tr> <td>Isaiah Thomas</td> <td>PG</td> <td>5'9"</td> <td>02-07-1989</td> <td>$473,604</td> </tr> <tr> <td>Ben McLemore</td> <td>SG</td> <td>6'5"</td> <td>02-11-1993</td> <td>$2,895,960</td> </tr> <tr> <td>Marcus Thornton</td> <td>SG</td> <td>6'4"</td> <td>05-05-1987</td> <td>$7,000,000</td> </tr> <tr> <td>Jason Thompson</td> <td>PF</td> <td>6'11"</td> <td>06-21-1986</td> <td>$3,001,000</td> </tr> </tbody> </table>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM