Saya telah mencari dan mencari, tetapi belum dapat menemukan solusi untuk kebutuhan saya.
Saya memiliki tabel HTML biasa. Saya ingin sudut bulat untuk itu, tanpa menggunakan gambar atau JS, yaitu hanya CSS murni . Seperti ini:
Sudut membulat untuk sel sudut, dan 1px
batas tebal untuk sel.
Sejauh ini saya memiliki ini:
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
}
Tapi itu membuat saya tanpa batas untuk sel. Jika saya menambahkan batas, mereka tidak dibulatkan!
Ada solusi?
html
css
html-table
rounded-corners
Vishal Shah
sumber
sumber
Jawaban:
Tampaknya berfungsi dengan baik di FF dan Chrome (belum menguji yang lain) dengan batas terpisah: http://jsfiddle.net/7veZQ/3/
Sunting: Berikut implementasi sketsa Anda yang relatif bersih:
table { border-collapse:separate; border:solid black 1px; border-radius:6px; -moz-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/
sumber
first-child
danlast-child
tidak berfungsi di IE6 / 7/8, tetapi kurang menjadi masalah bagi Anda karena juga tidakborder-radius
. Ini berarti bahwa Anda tidak akan dapat menggunakan CSS3Pie untuk memperbaikinya di IE - ini akan memperbaiki radius-batas, tetapi bukan anak pertama / terakhir.border-collapse: separate;
ke template Zurb Ink memecahkannya untuk saya.Bagi saya, Solusi Bootstrap Twitter terlihat bagus. Ini tidak termasuk IE <9 (tidak ada sudut bundar di IE 8 dan yang lebih rendah), tapi tidak apa-apa menurut saya, jika Anda mengembangkan calon Web-Apps.
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>
Anda dapat memainkannya di sini (di jsFiddle)
sumber
Pertama, Anda membutuhkan lebih dari sekedar
-moz-border-radius
jika Anda ingin mendukung semua browser. Anda harus menentukan semua varian, termasuk biasaborder-radius
, sebagai berikut:-moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px;
Kedua, untuk langsung menjawab pertanyaan Anda,
border-radius
sebenarnya tidak menampilkan batas; itu hanya mengatur bagaimana sudut terlihat dari perbatasan, jika ada.Untuk mengaktifkan perbatasan, dan dengan demikian mendapatkan sudut membulat, Anda juga memerlukan
border
atribut pada Andatd
danth
elemen.td, th { border:solid black 1px; }
Anda juga akan melihat sudut membulat jika Anda memiliki warna latar belakang (atau grafik), meskipun tentu saja itu akan membutuhkan warna latar belakang yang berbeda dengan elemen sekitarnya agar sudut yang membulat terlihat tanpa pembatas.
Perlu dicatat bahwa beberapa browser lama tidak suka meletakkan
border-radius
tabel / sel tabel. Mungkin ada baiknya meletakkan<div>
di dalam setiap sel dan menatanya sebagai gantinya. Namun ini seharusnya tidak memengaruhi versi saat ini dari semua browser (kecuali IE, yang tidak mendukung sudut membulat sama sekali - lihat di bawah)Terakhir, bukan berarti IE tidak mendukung
border-radius
sama sekali (IE9 beta mendukung , tetapi sebagian besar pengguna IE menggunakan IE8 atau kurang). Jika Anda ingin meretas IE untuk mendukung radius-perbatasan, lihat http://css3pie.com/[EDIT]
Oke, ini mengganggu saya, jadi saya telah melakukan beberapa pengujian.
Ini adalah contoh JSFiddle yang pernah saya mainkan
Sepertinya hal penting yang Anda lewatkan ada
border-collapse:separate;
di elemen tabel. Ini menghentikan sel dari menghubungkan perbatasan mereka bersama, yang memungkinkan mereka untuk mengambil radius perbatasan.Semoga membantu.
sumber
border-collapse:separate;
tip itu berguna pada akhirnya)Jawaban yang dipilih sangat buruk. Saya akan menerapkan ini dengan menargetkan sel tabel sudut dan menerapkan radius perbatasan yang sesuai.
Untuk mendapatkan sudut atas, atur radius batas pada tipe pertama dan terakhir dari elemen th , kemudian selesaikan dengan mengatur radius perbatasan pada tipe td terakhir dan pertama pada tipe terakhir tr untuk mendapatkan sudut bawah.
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; }
sumber
th
elemen di sisi atas dan kiri tabel dan ini tidak berfungsi untuk itu. Bagaimana cara membulatkan sudut dari jenis tabel itu?Solusi terbaik yang saya temukan untuk sudut membulat dan perilaku CSS3 lainnya untuk IE <9 dapat ditemukan di sini: http://css3pie.com/
Unduh plugin, salin ke direktori dalam struktur solusi Anda. Kemudian di stylesheet Anda pastikan untuk memiliki tag perilaku sehingga menarik plugin.
Contoh sederhana dari proyek saya yang memberi saya sudut membulat, gradien warna, dan bayangan kotak untuk tabel saya:
.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; }
Jangan khawatir jika Intellisense CSS Visual Studio Anda memberi Anda garis bawah hijau untuk properti yang tidak diketahui, ini masih berfungsi saat Anda menjalankannya. Beberapa elemen tidak terdokumentasi dengan jelas, tetapi contohnya cukup bagus, terutama di halaman depan.
sumber
Melalui pengalaman pribadi saya telah menemukan bahwa tidak mungkin untuk membulatkan sudut dari sel tabel HTML dengan CSS murni. Membulatkan batas terluar meja dimungkinkan.
Anda harus menggunakan gambar seperti yang dijelaskan dalam tutorial ini , atau yang serupa :)
sumber
<div>
. ^^,Ini sedikit kasar, tapi berikut adalah sesuatu yang saya kumpulkan yang seluruhnya terdiri dari CSS dan HTML.
Contoh ini juga menggunakan
:hover
kelas pseudo untuk setiap sel data<td>
. Elemen dapat dengan mudah diperbarui untuk memenuhi kebutuhan Anda, dan gerakan kursor dapat dengan cepat dinonaktifkan.(Namun, saya belum
:hover
dapat bekerja dengan benar untuk baris penuh<tr>
. Baris terakhir yang di-hover tidak ditampilkan dengan sudut membulat di bagian bawah. Saya yakin ada sesuatu yang sederhana yang terlewatkan.)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>
sumber
Tambahkan
<div>
pembungkus di sekitar tabel, dan terapkan CSS berikutborder-radius: x px; overflow: hidden; display: inline-block;
ke pembungkus ini.
sumber
Untuk mengadaptasi jawaban brilian @luke flournoy - dan jika Anda tidak menggunakannya
th
di tabel Anda, inilah semua CSS yang Anda butuhkan untuk membuat tabel bundar:.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; }
sumber
Untuk tabel berbatasan dan dapat digulir, gunakan ini (ganti variabel,
$
teks awal)Jika Anda menggunakan
thead
,tfoot
atauth
, cukup gantitr:first-child
dantr-last-child
dantd
dengan mereka.#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:
<div id=table-wrap> <table> <tr> <td>1</td> <td>2</td> </tr> <tr> <td>3</td> <td>4</td> </tr> </table> </div>
sumber
Anda dapat mencoba ini jika Anda ingin sudut membulat di setiap sisi tabel tanpa menyentuh sel: 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>
sumber
Contoh 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, mudah dikonversi ke CSS, gunakan 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/
sumber
Berikut ini adalah sesuatu yang saya gunakan yang berfungsi untuk saya di seluruh browser, jadi saya harap ini membantu seseorang di masa mendatang:
#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; }
Tentunya
#contentblock
bagian tersebut dapat diganti / diedit sesuai kebutuhan dan Anda dapat menemukanborder-radius.htc
file tersebut dengan melakukan pencarian di Google atau browser web favorit Anda.sumber
Ini adalah
css3
, hanya browser non-IE <9 terbaru yang akan mendukungnya.Lihat di sini , ini memperoleh properti bulat untuk semua browser yang tersedia
sumber
Tambahkan di antara
<head>
tag:<style> td {background: #ffddaa; width: 20%;} </style>
dan di dalam tubuh:
<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> </td> <td>Noord</td> <td> </td> <td style="border-top-right-radius: 10px;"> Noordoost </td> </tr> <tr> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr> <tr> <td>West</td> <td> </td> <td>Centrum</td> <td> </td> <td>Oost</td> </tr> <tr> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr> <tr> <td style="border-bottom-left-radius: 10px;"> Zuidwest </td> <td> </td> <td>Zuid</td> <td> </td> <td style="border-bottom-right-radius: 10px;"> Zuidoost </td> </tr> </table> </div>
Warna sel, isi dan format tentu saja sebagai contoh;
ini tentang memberi jarak pada sel yang berisi warna dalam div. Melakukannya, batas sel hitam / batas tabel sebenarnya adalah warna latar belakang div.
Perhatikan bahwa Anda harus menyetel div-border-radius sekitar 2 nilai lebih besar dari radius batas sudut sel yang terpisah, untuk mendapatkan efek sudut bulat yang mulus.
sumber
Pelajaran di Batas Tabel ...
CATATAN: Kode HTML / CSS di bawah ini harus dilihat di IE saja. Kode tidak akan ditampilkan dengan benar di Chrome!
Kita perlu mengingat bahwa:
Tabel memiliki batas: batas luarnya (yang juga dapat memiliki radius batas.)
Sel itu sendiri JUGA memiliki batas (yang juga dapat memiliki radius batas.)
Batas tabel dan sel dapat saling mengganggu:
Batas sel dapat menembus batas tabel (yaitu: batas tabel).
Untuk melihat efek ini, ubah aturan gaya CSS pada kode di bawah ini sebagai berikut:
i. tabel {border-collapse: pisahkan;}
ii. Hapus aturan gaya yang mengelilingi sel sudut tabel.
aku aku aku. Kemudian mainkan dengan border-spacing sehingga Anda dapat melihat interferensi tersebut.
Namun, batas tabel dan batas sel bisa diciutkan (menggunakan: border-collapse: collapse;).
Saat diciutkan, batas sel dan tabel mengganggu dengan cara yang berbeda:
saya. Jika batas tabel dibulatkan tetapi batas sel tetap persegi, maka bentuk sel diutamakan dan tabel kehilangan sudut lengkungnya.
ii. Sebaliknya, jika sel sudut melengkung tetapi batas tabelnya persegi, maka Anda akan melihat sudut persegi jelek yang membatasi kelengkungan sel sudut.
Mengingat atribut sel diutamakan, cara untuk membulatkan empat sudut tabel, adalah dengan:
saya. Menciutkan batas pada tabel (menggunakan: border-collapse: collapse;).
ii. Mengatur kelengkungan yang Anda inginkan pada sel sudut tabel.
aku aku aku. Tidak masalah jika sudut tabel dibulatkan (yaitu: radius batasnya bisa nol).
.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>
sumber
CSS:
table { border: 1px solid black; border-radius: 10px; border-collapse: collapse; overflow: hidden; } td { padding: 0.5em 1em; border: 1px solid black; }
sumber