Saya mencoba mendesain beberapa HTML / CSS yang dapat memberi batas di sekitar baris tertentu dalam tabel. Ya, saya tahu saya tidak seharusnya menggunakan tabel untuk tata letak tetapi saya belum cukup tahu CSS untuk menggantikannya sepenuhnya.
Bagaimanapun, saya memiliki tabel dengan beberapa baris dan kolom, beberapa digabungkan dengan rowpan dan colspan, dan saya ingin membuat batas sederhana di sekitar bagian tabel. Saat ini, saya menggunakan 4 kelas CSS terpisah (atas, bawah, kiri, kanan) yang saya lampirkan ke <td>
sel yang masing-masing berada di sepanjang bagian atas, bawah, kiri, dan kanan tabel.
.top {
border-top: thin solid;
border-color: black;
}
.bottom {
border-bottom: thin solid;
border-color: black;
}
.left {
border-left: thin solid;
border-color: black;
}
.right {
border-right: thin solid;
border-color: black;
}
<html>
<body>
<table cellspacing="0">
<tr>
<td>no border</td>
<td>no border here either</td>
</tr>
<tr>
<td class="top left">one</td>
<td class="top right">two</td>
</tr>
<tr>
<td class="bottom left">three</td>
<td class="bottom right">four</td>
</tr>
<tr>
<td colspan="2">once again no borders</td>
</tr>
<tr>
<td class="top bottom left right" colspan="2">hello</td>
</tr>
<tr>
<td colspan="2">world</td>
</tr>
</table>
</html>
Adakah cara yang lebih mudah untuk melakukan apa yang saya inginkan? Saya mencoba menerapkan atas dan bawah ke a <tr>
tetapi tidak berhasil. (ps Saya baru mengenal CSS, jadi mungkin ada solusi yang sangat mendasar untuk ini yang saya lewatkan.)
catatan: Saya memang perlu memiliki beberapa bagian yang dibatasi. Ide dasarnya adalah memiliki beberapa cluster berbatasan yang masing-masing berisi beberapa baris.
sumber
Jawaban:
Bagaimana dengan
tr {outline: thin solid black;}
? Bekerja untuk saya pada elemen tr atau tbody, dan tampaknya kompatibel dengan sebagian besar browser, termasuk IE 8+, tetapi tidak sebelumnya.sumber
Terima kasih untuk semua yang telah menanggapi! Saya telah mencoba semua solusi yang disajikan di sini dan saya telah melakukan lebih banyak pencarian di internet untuk solusi lain yang memungkinkan, dan saya rasa saya telah menemukan satu yang menjanjikan:
Keluaran:
Daripada harus menambahkan
top
,bottom
,left
, danright
kelas untuk setiap<td>
, semua harus saya lakukan adalah menambahkantop row
ke atas<tr>
,bottom row
ke bawah<tr>
, danrow
untuk setiap<tr>
di antara. Apakah ada yang salah dengan solusi ini? Apakah ada masalah lintas platform yang harus saya ketahui?sumber
cellspacing
atribut usang dalam HTML5. Sepertinya CSStable { border-collapse: collapse; border-spacing: 0; }
adalah cara yang harus dilakukan sekarang.Jika Anda menyetel
border-collapse
gaya kecollapse
pada tabel induk, Anda harus bisa memberi gayatr
: (gaya sebaris untuk demo)Keluaran:
sumber
Saya hanya bermain-main dengan melakukan ini juga, dan ini sepertinya pilihan terbaik bagi saya:
Perhatikan bahwa ini akan mencegah penggunaan lebar kolom yang dapat menyesuaikan / otomatis , karena sel tidak lagi sejajar dengan yang ada di baris lain, tetapi pemformatan batas / warna masih berfungsi dengan baik. Solusinya adalah memberi TR dan TDs lebar yang ditentukan (baik px atau%).
Tentu saja Anda bisa membuat selektor
tr.myClass
jika ingin menerapkannya hanya pada baris tertentu. Namun, tampaknyadisplay: table
tidak berfungsi untuk IE 6/7, tetapi mungkin ada peretasan lain (hasLayout?) Yang mungkin berhasil untuk itu. :-(sumber
Berikut pendekatan menggunakan elemen tbody yang bisa menjadi cara untuk melakukannya. Anda tidak dapat mengatur border pada tbody (sama seperti pada tr) tetapi Anda dapat mengatur warna latar belakang. Jika efek yang ingin Anda capai dapat diperoleh dengan warna latar belakang pada kelompok baris alih-alih batas, ini akan berfungsi.
sumber
Kelompokkan baris bersama-sama menggunakan
<tbody>
tag dan kemudian terapkan gaya.Dan css di style.css
sumber
Satu-satunya cara lain yang dapat saya pikirkan untuk melakukannya adalah dengan melampirkan setiap baris yang Anda perlukan batasnya dalam tabel bersarang. Itu akan membuat perbatasan lebih mudah dilakukan tetapi berpotensi menimbulkan masalah tata letak lainnya, Anda harus mengatur lebar secara manual pada sel tabel, dll.
Pendekatan Anda mungkin yang terbaik tergantung pada persyaratan tata letak Anda yang lain dan pendekatan yang disarankan di sini hanyalah kemungkinan alternatif.
sumber
Berdasarkan kebutuhan Anda bahwa Anda ingin meletakkan perbatasan di sekitar blok sembarang sel MxN, sebenarnya tidak ada cara yang lebih mudah untuk melakukannya tanpa menggunakan Javascript. Jika sel Anda diperbaiki, Anda dapat menggunakan pelampung tetapi ini bermasalah karena alasan lain. apa yang Anda lakukan mungkin membosankan tetapi tidak apa-apa.
Oke, jika Anda tertarik dengan solusi Javascript, menggunakan jQuery (pendekatan pilihan saya), Anda akan mendapatkan potongan kode yang cukup menakutkan ini:
Saya akan dengan senang hati memberikan saran tentang cara yang lebih mudah untuk melakukan ini ...
sumber
triknya adalah dengan properti garis besar berkat jawaban enigment dengan sedikit modifikasi
gunakan kelas ini
lalu di HTML
dan hasilnya adalah harapan ini membantu Anda
sumber
Cara yang lebih mudah adalah menjadikan tabel sebagai kontrol sisi server. Anda bisa menggunakan sesuatu yang mirip dengan ini:
sumber