简体   繁体   English

带圆角的可滚动表格

[英]Scrollable table with rounded corners

I have made a table which scrolls vertically when there is too many rows.我制作了一个表格,当行太多时它会垂直滚动。 This can be seen here https://jsfiddle.net/hp5je3ko/1/ .这可以在这里看到https://jsfiddle.net/hp5je3ko/1/ However, I would like to add a border radius to the table.但是,我想在表格中添加一个边框半径。 As you can see, adding a border radius to the table itself only shows up when you scroll right to the bottom.如您所见,向table本身添加边框半径仅在您向右滚动到底部时才会显示。 Adding a border radius to .table-wrapper almost works..table-wrapper添加边框半径几乎可以工作。 However, the top right and top left corners are not rounded properly because the scroll bar is inside the wrapper.但是,右上角和左上角没有正确圆角,因为滚动条在包装内。

How can I make this border radius work?我怎样才能使这个边界半径起作用?

Thanks.谢谢。

 .table-wrapper { height: 400px; max-height: 400px; overflow-y: auto; text-align: left; }.table-wrapper * { margin: 0; box-sizing: border-box; }.table-wrapper table { border-collapse: separate; font-size: 13px; background-color: #121212; text-transform: uppercase; border-spacing: 0; table-layout: fixed; border-radius: 30px; color: #fff; } table thead tr th { padding: 18px 24px; border-bottom: 1px solid #1c1c1c; position: sticky; top: 0; background-color: #121212; } table tbody tr td { padding: 11px 24px; overflow: hidden; text-overflow: ellipsis; }
 <div class="table-wrapper"> <table> <thead> <tr> <th>Item</th> <th>Item</th> <th>Item</th> <th>Item</th> <th>Item</th> <th>Item</th> </tr> </thead> <tbody> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> </tbody> </table> </div>

removed table border-radius删除表border-radius

Main idea to make wrapper width: fit-content , add to it border-radius and make scrollbar width: 0制作包装宽度的主要想法width: fit-content ,添加border-radius并制作滚动条width: 0

 .table-wrapper { height: 400px; max-height: 400px; overflow-y: auto; text-align: left; width: fit-content; border-radius: 30px; }.table-wrapper * { margin: 0; box-sizing: border-box; }.table-wrapper table { border-collapse: separate; font-size: 13px; background-color: #121212; text-transform: uppercase; border-spacing: 0; table-layout: fixed; color: #fff; } table thead tr th { padding: 18px 24px; border-bottom: 1px solid #1c1c1c; position: sticky; top: 0; background-color: #121212; } table tbody tr td { padding: 11px 24px; overflow: hidden; text-overflow: ellipsis; }::-webkit-scrollbar { width: 0; }
 <div class="table-wrapper"> <table> <thead> <tr> <th>Item</th> <th>Item</th> <th>Item</th> <th>Item</th> <th>Item</th> <th>Item</th> </tr> </thead> <tbody> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> </tbody> </table> </div>

I write code for what you needed我为你需要的编写代码

 body { padding: 4rem; }.table{ display: block; empty-cells: show; border-spacing: 0; border: 1px solid; border-radius: 2rem; }.table thead{ background-color:orangered; position: relative; display: block; width: 100%; border-radius: 2rem 2rem 0rem 0rem; color: white; }.table tbody{ max-height: 20rem; padding: 2rem; display: block; overflow-y:scroll; border-top: 2px solid rgba(0,0,0,0.2); }.table tr{ width: 100%; display:flex; }.table td,.table th{ flex-basis:100%; flex-grow:2; display: block; padding: 1rem; text-align:left; }.table tbody tr:nth-child(2n){ background-color: orangered; }
 <body> <table class="table "> <thead> <tr> <th>Head 1</th> <th>Head 2</th> <th>Head 3</th> <th>Head 4</th> </tr> </thead> <tbody class="body"> <tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr> <tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr> <tr> <td>1</td> <td>2</td> <td>3</td> <td></td> </tr> <tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr> <tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr><tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr><tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr><tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr><tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr><tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr><tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr><tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr> </tbody> </table> </body>

you try this CSS, I think your problem will be solved, thank you..!你试试这个CSS,我想你的问题会解决,谢谢..!

 .table-wrapper{ padding: 50px; } table{ display: block; border-radius: 50px; background-color: yellow; } table thead{ background-color:pink; position: relative; display: block; width: 100%; border-radius: 20px 20px 0px 0px; color: white; } table tbody{ max-height: 250px; display: block; overflow-y:scroll; } table tr{ width: 100%; display:flex; } table td,table th{ flex-basis:100%; flex-grow:2; display: block; padding: 1rem; text-align:left; }

end also you can set scrollbar using the following css related to your table box radius..最后,您还可以使用与您的表格框半径相关的以下 css 设置滚动条。

::-webkit-scrollbar { width: 10px; }

    /* Track */
    ::-webkit-scrollbar-track { border: 4px solid transparent; }

    /* Handle */
    ::-webkit-scrollbar-thumb { border: 1px solid rgb(0,0,0); }

Removed border-radius from table.从表格中删除了border-radius

Main idea added to each first and last children of th s and footer td s two div s with position: absolute and different z-index es.主要思想添加到th s 和 footer td s 的每个第一个和最后一个孩子的两个div position: absolute和不同z-index es。 Bottom one has color of background (white), above one has border-radius and color of table.底部有背景颜色(白色),上面有border-radius和表格颜色。

rest of modifications please look in snippet.其余修改请查看代码段。

 .table-wrapper { height: 400px; max-height: 400px; overflow-y: auto; text-align: left; }.table-wrapper * { margin: 0; box-sizing: border-box; }.table-wrapper table { border-collapse: separate; font-size: 13px; background-color: #121212; text-transform: uppercase; border-spacing: 0; table-layout: fixed; color: #fff; } table tbody tr td { padding: 11px 24px; overflow: hidden; text-overflow: ellipsis; }.table-wrapper table { border-collapse: separate; font-size: 13px; background-color: #121212; text-transform: uppercase; border-spacing: 0; table-layout: fixed; color: #fff; } table tbody tr td { padding: 11px 24px; overflow: hidden; text-overflow: ellipsis; }.overlay, .overlay2 { position: absolute; top: 0; right: 0; bottom: 0; left: 0; }.overlay2 { background-color: #fff; }.overlay { background-color: #121212; z-index: 3; } table thead tr th:first-child.overlay { border-top-left-radius: 30px; padding: 18px 24px; } table thead tr th:last-child.overlay { padding: 18px 24px; border-top-right-radius: 30px; } table thead tr th { top: 0; border-bottom: 1px solid #1c1c1c; } /* safari and ios need the tfoot itself to be position:sticky also */ table thead tr th, table tfoot, table tfoot th, table tfoot td { position: -webkit-sticky; position: sticky; background-color: #121212; padding: 18px 24px; z-index: 3; } table tfoot, table tfoot th, table tfoot td { bottom: 0; color: #121212; } table tfoot tr td:first-child.overlay { border-bottom-left-radius: 30px; } table tfoot tr td:last-child.overlay { border-bottom-right-radius: 30px; }
 <div class="table-wrapper"> <table> <thead> <tr> <th> <div class="overlay"> Item </div> <div class="overlay2"></div> </th> <th>Item</th> <th>Item</th> <th>Item</th> <th>Item</th> <th> <div class="overlay"> Item </div> <div class="overlay2"></div> </th> </tr> </thead> <tbody> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> <tr> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> <td>Thingggg</td> </tr> </tbody> <tfoot> <tr> <td> <div class="overlay"></div> <div class="overlay2"></div> </td> <td></td> <td></td> <td></td> <td></td> <td> <div class="overlay"></div> <div class="overlay2"></div> </td> </tr> </tfoot> </table> </div>

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

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