Mengapa tidak menggunakan tabel untuk tata letak dalam HTML? [Tutup]

665

Tampaknya menjadi pendapat umum bahwa tabel tidak boleh digunakan untuk tata letak dalam HTML.

Mengapa?

Saya belum pernah (atau jarang jujur) melihat argumen bagus untuk ini. Jawaban yang biasa adalah:

  • Ini baik untuk memisahkan konten dari tata letak
    Tapi ini adalah argumen yang keliru; Berpikir Klise . Saya kira memang benar bahwa menggunakan elemen tabel untuk tata letak tidak ada hubungannya dengan data tabular. Terus? Apakah bos saya peduli? Apakah pengguna saya peduli?

    Mungkin saya atau rekan pengembang yang harus menjaga perawatan halaman web ... Apakah tabelnya kurang dapat dikelola? Saya pikir menggunakan tabel lebih mudah daripada menggunakan divs dan CSS.

    Ngomong-ngomong ... mengapa menggunakan div atau rentang konten yang baik dari tata letak dan tabel tidak? Mendapatkan tata letak yang baik dengan hanya divs sering membutuhkan banyak divs bersarang.

  • Keterbacaan kode
    saya pikir itu sebaliknya. Kebanyakan orang mengerti HTML, hanya sedikit yang mengerti CSS.

  • Lebih baik untuk SEO tidak menggunakan tabel
    Mengapa? Adakah yang bisa menunjukkan bukti? Atau pernyataan dari Google bahwa tabel tidak disarankan dari perspektif SEO?

  • Tabel lebih lambat.
    Elemen badan tambahan harus dimasukkan. Ini adalah kacang untuk browser web modern. Tunjukkan pada saya beberapa tolok ukur di mana penggunaan tabel secara signifikan memperlambat halaman.

  • Perombakan tata letak lebih mudah tanpa tabel, lihat css Zen Garden .
    Sebagian besar situs web yang memerlukan peningkatan memerlukan konten baru (HTML) juga. Skenario di mana versi baru situs web hanya membutuhkan file CSS baru sangat tidak mungkin. Zen Garden adalah situs web yang bagus, tetapi sedikit teoretis. Belum lagi penyalahgunaan CSS.

Saya benar-benar tertarik pada argumen yang bagus untuk menggunakan divs + CSS, bukan tabel.

Benno Richters
sumber
Setuju, tabel baik-baik saja saat menyajikan data tabular. Mereka harus dihindari ketika menggunakannya murni untuk tata letak. Kemudian lagi, kadang-kadang, Anda harus mengambil jalan yang mudah sekarang dan memperbaikinya nanti. Cukup lihat sumber dan Anda akan melihat apa yang saya maksud.
Haacked
Ada duplikat Q dan A di stackoverflow.com/questions/30251/tables-instead-of-divs
Onorio Catenacci
11
Jawabannya sederhana: itu tergantung. Jika tabel digunakan untuk memecahkan masalah tertentu yang tidak dapat dilakukan versi CSS saat ini, tabel tersebut digunakan dengan baik. Jika Anda mulai mendapatkan tabel di dalam tabel, di dalam jutaan tabel maka Anda salah melakukannya. Jika itu tabel ocasional hanya untuk tata letak 2 kolom atau sesuatu seperti itu, saya tidak melarangnya di tim saya: lebih cepat dan lebih mudah untuk melakukannya. (Saya sendiri, saya selalu mencoba menggunakan CSS, tetapi pada akhirnya, pengiriman lebih penting daripada HTML semantik yang benar)
AlfaTeK
1
@Camilo SO masih hidup di abad ke-20. Jeff tampaknya tidak tahu cara menggunakan ultag. Lihat semua daftar di situs ini (lencana, pertanyaan terkait, tag terbaru). Itu semua kolom tunggal atau paragraf panjang yang dipisahkan br.
Yi Jiang
2
@Brad: Tergantung pada beberapa detail tertentu (itu saya dapatkan untuk comebacks pintar ;-) bahwa penggunaan DIV masih lebih baik daripada menyalahgunakan tabel. Dua bagian dari dokumen yang kebetulan diletakkan berdampingan satu sama lain dapat secara sah terkandung dalam elemen DIV, tapi itu jelas BUKAN data tabular. Tidak masalah apa satu gaya tertentu terjadi; kontennya tabular atau tidak. Catatan: Saya juga TIDAK menganjurkan DIVitis :)
Bobby Jack

Jawaban:

496

Saya akan membahas argumen Anda satu demi satu dan mencoba menunjukkan kesalahan di dalamnya.

Ini baik untuk memisahkan konten dari tata letak Tapi ini adalah argumen yang keliru; Berpikir Klise.

Sama sekali tidak keliru karena HTML sengaja dirancang. Penyalahgunaan suatu elemen mungkin tidak sepenuhnya dipertanyakan (bagaimanapun juga, idiom baru telah berkembang dalam bahasa lain) tetapi kemungkinan implikasi negatifnya harus diimbangi. Selain itu, bahkan jika tidak ada argumen yang menentang penyalahgunaan <table>elemen hari ini, mungkin ada hari esok karena cara vendor browser menerapkan perlakuan khusus pada elemen tersebut. Lagi pula, mereka tahu bahwa " <table>elemen hanya untuk data tabular" dan mungkin menggunakan fakta ini untuk meningkatkan mesin rendering, dalam prosesnya secara halus mengubah <table>perilaku, dan dengan demikian memecahkan kasus-kasus di mana sebelumnya disalahgunakan.

Terus? Apakah bos saya peduli? Apakah pengguna saya peduli?

Tergantung. Apakah bos Anda berambut runcing? Maka dia mungkin tidak peduli. Jika dia kompeten, maka dia akan peduli, karena pengguna akan melakukannya .

Mungkin saya atau rekan pengembang yang harus menjaga perawatan halaman web ... Apakah tabelnya kurang dapat dikelola? Saya pikir menggunakan tabel lebih mudah daripada menggunakan divs dan css.

Mayoritas pengembang web profesional tampaknya menentang Anda[ rujukan? ] . Bahwa tabel yang sebenarnya kurang maintainable harus jelas. Menggunakan tabel untuk tata letak berarti mengubah tata letak perusahaan pada kenyataannya berarti mengubah setiap halaman. Ini bisa sangat mahal. Di sisi lain, penggunaan HTML semantik bermakna secara bermakna dikombinasikan dengan CSS dapat membatasi perubahan pada CSS dan gambar yang digunakan.

Ngomong-ngomong ... mengapa menggunakan div atau rentang konten yang baik dari tata letak dan tabel tidak? Mendapatkan tata letak yang baik dengan hanya divs sering membutuhkan banyak divs bersarang.

Sarang bersarang <div>adalah anti-pola seperti tata letak meja. Desainer web yang baik tidak membutuhkan banyak dari mereka. Di sisi lain, bahkan div bersarung dalam seperti itu tidak memiliki banyak masalah tata letak meja. Bahkan, mereka bahkan dapat berkontribusi pada struktur semantik dengan secara logis membagi konten menjadi beberapa bagian.

Keterbacaan kode saya pikir itu sebaliknya. Kebanyakan orang mengerti html, sedikit mengerti css. Lebih sederhana.

"Kebanyakan orang" tidak masalah. Masalah profesional. Untuk profesional, tata letak tabel menciptakan lebih banyak masalah daripada HTML + CSS. Ini seperti mengatakan saya tidak boleh menggunakan GVim atau Emacs karena Notepad lebih sederhana bagi kebanyakan orang. Atau saya tidak seharusnya menggunakan LaTeX karena MS Word lebih sederhana bagi kebanyakan orang.

Lebih baik SEO tidak menggunakan tabel

Saya tidak tahu apakah ini benar dan tidak akan menggunakan ini sebagai argumen tetapi itu akan logis. Mesin pencari mencari data yang relevan . Meskipun data tabular tentu saja relevan, jarang yang dicari pengguna. Pengguna mencari istilah yang digunakan dalam judul halaman atau posisi yang serupa. Oleh karena itu akan logis untuk mengecualikan konten tabel dari penyaringan dan dengan demikian memotong waktu pemrosesan (dan biaya!) Oleh faktor besar.

Tabel lebih lambat. Elemen badan tambahan harus dimasukkan. Ini adalah kacang untuk browser web modern.

Elemen tambahan tidak ada hubungannya dengan tabel menjadi lebih lambat. Di sisi lain, algoritma tata letak untuk tabel jauh lebih sulit, browser sering harus menunggu seluruh tabel untuk memuat sebelum dapat mulai menata konten. Selain itu, cache tata letak tidak berfungsi (CSS dapat dengan mudah di-cache). Semua ini telah disebutkan sebelumnya.

Tunjukkan pada saya beberapa tolok ukur di mana penggunaan tabel secara signifikan memperlambat halaman.

Sayangnya, saya tidak punya data patokan. Saya akan tertarik sendiri karena memang benar bahwa argumen ini tidak memiliki ketelitian ilmiah tertentu.

Sebagian besar situs web yang memerlukan peningkatan memerlukan konten baru (html) juga. Skenario di mana versi baru situs web hanya membutuhkan file css baru sangat tidak mungkin.

Tidak semuanya. Saya telah mengerjakan beberapa kasus di mana mengubah desain disederhanakan dengan pemisahan konten dan desain. Seringkali masih diperlukan untuk mengubah beberapa kode HTML tetapi perubahan akan selalu lebih terbatas. Selain itu, perubahan desain terkadang harus dilakukan secara dinamis. Pertimbangkan mesin templat seperti yang digunakan oleh sistem blogging WordPress. Layout tabel akan mematikan sistem ini. Saya telah mengerjakan kasus serupa untuk perangkat lunak komersial. Mampu mengubah desain tanpa mengubah kode HTML adalah salah satu persyaratan bisnis.

Hal lain. Tata letak tabel membuat penguraian situs web (pengikisan layar) otomatis menjadi jauh lebih sulit. Ini mungkin terdengar sepele karena, siapa yang melakukannya? Saya sendiri terkejut. Pengikisan layar dapat banyak membantu jika layanan tersebut tidak menawarkan alternatif WebService untuk mengakses datanya. Saya bekerja di bioinformatika di mana ini adalah kenyataan yang menyedihkan. Teknik web modern dan WebServices belum menjangkau sebagian besar pengembang dan seringkali, pengikisan layar adalah satu-satunya cara untuk mengotomatiskan proses mendapatkan data. Tidak heran bahwa banyak ahli biologi masih melakukan tugas-tugas seperti itu secara manual. Untuk ribuan set data.

Konrad Rudolph
sumber
139
"mengubah tata letak perusahaan sebenarnya berarti mengubah setiap halaman" - Apakah orang masih benar-benar menduplikasi tata letak perusahaan pada setiap halaman? Sangat mudah untuk diselesaikan dengan halaman master atau kontrol pengguna dalam .net, termasuk file dalam php atau asp klasik, dll ... Siapa saja yang menyalin tata letak perusahaan seperti ini layak mendapat tendangan **! ;-)
John MacIntyre
43
Maaf tapi ini benar-benar angan-angan "pai dia langit". Pengguna peduli? Tidak. Tidak ada yang peduli kecuali sejumlah kecil revisionis yang salah arah. HTML (termasuk tabel) jauh lebih tua daripada gagasan "semantik vs tata letak" yang relatif baru. Oh dan tolong sumber untuk "mayoritas pengembang web profesional menentang Anda".
cletus
20
Kesalahan ketik di atas: semantik tersirat dari awal. <table> dalam HTML selalu hanya dimaksudkan untuk data tabular, tidak pernah untuk tata letak (kembali di tahun-tahun awal Anda tidak bisa mengubah tampilan tabel, sehingga mencegah penggunaannya sebagai jangkar tata letak). Bahkan, konsep awal HTML sama sekali tidak memiliki gagasan tata letak, dan HTML tidak pernah dimaksudkan untuk tata letak, tetapi untuk penataan teks. Bahkan lebih lagi: proposal HTML pertama berulang kali memperingatkan terhadap penyalahgunaan tag untuk memengaruhi tata letak, dan mengingatkan untuk menggunakan logis daripada markup fisik.
Konrad Rudolph
109
Dapatkan pembaca layar dan minta pembaca membaca halaman dengan tata letak tabel. itu semuanya.
corymathews
8
@Sergio: tolong jangan edit informasi yang relevan. Ini adalah klaim meragukan tanpa sumber yang saya gunakan di sana dan saya ingin menjelaskannya. Hasil edit Anda menempatkan klaim di mulut saya bahwa saya tidak dapat membuat cadangan, secara efektif membuat saya pembohong jika ini ternyata salah.
Konrad Rudolph
290

Inilah jawaban programmer saya dari utas serupa

Semantik 101

Pertama lihat kode ini dan pikirkan tentang apa yang salah di sini ...

class car {
    int wheels = 4;
    string engine;
}

car mybike = new car();
mybike.wheels = 2;
mybike.engine = null;

Masalahnya, tentu saja, sepeda bukanlah mobil. Kelas mobil adalah kelas yang tidak pantas untuk tur sepeda motor. Kode ini bebas kesalahan, tetapi secara semantik tidak benar. Itu mencerminkan buruk pada programmer.

Semantik 102

Sekarang terapkan ini untuk mendokumentasikan markup. Jika dokumen Anda perlu menyajikan data tabular, maka tag yang sesuai adalah <table>. Jika Anda menempatkan navigasi ke dalam tabel, maka Anda menyalahgunakan tujuan <table>elemen yang dimaksud. Dalam kasus kedua, Anda tidak mempresentasikan data tabular - Anda (salah) menggunakan <table>elemen untuk mencapai tujuan presentasi.

Kesimpulan

Akankah pengunjung memperhatikan? Tidak. Apakah bos Anda peduli? Mungkin. Apakah kita terkadang mengambil jalan pintas sebagai programmer? Tentu. Tetapi haruskah kita? Tidak. Siapa yang diuntungkan jika Anda menggunakan markup semantik? Anda - dan reputasi profesional Anda. Sekarang pergi dan lakukan hal yang benar.

Carl Camera
sumber
39
Maaf, itu tidak menahan air. Anda tidak menggunakan mobil untuk sepeda saya karena Anda akan mendefinisikan kelas "sepeda". Anda tidak dapat menentukan hal lain untuk "<tabel>" karena ini lebih dari sekadar tag semantik - ini memberi tahu browser cara merender kontennya juga.
Jimmy
57
Analogi yang bagus, dan kesimpulan yang bagus. Mengapa orang harus dipaksa oleh bos dan / atau pengguna untuk melakukan hal yang benar? Tidak adakah yang bangga lagi dengan pekerjaan mereka?
Sherm Pendley
39
Saya pikir ini adalah posting yang cukup sombong yang tidak menjelaskan apa-apa tetapi hanya mengulangi klaim yang sama lagi tanpa menjawab pertanyaan. Saya tidak mengerti mengapa ada begitu banyak upvotes ????
markus
10
Saya setuju dengan tharkum. Tanggapan ini agak subyektif, dan tidak benar-benar menjawab pertanyaan yang diajukan. Meskipun saya setuju bahwa DIV harus digunakan untuk tata letak halaman, saya tidak dapat membayangkan bahwa perancang web mana pun akan dikacaukan oleh tata letak berbasis tabel.
Richard Ev
16
@tharkun & Richard: Kenapa "secara semantik salah" bersifat subyektif dan tidak menjelaskan apa pun?
Vinko Vrsalovic
104

Jawaban yang jelas: Lihat CSS Zen Garden . Jika Anda memberi tahu saya bahwa Anda dapat dengan mudah melakukan hal yang sama dengan tata letak berbasis tabel (ingat - HTML tidak berubah) maka tentu saja gunakan tabel untuk tata letak.

Dua hal penting lainnya adalah aksesibilitas dan SEO.

Keduanya peduli tentang bagaimana informasi pesanan disajikan. Anda tidak dapat dengan mudah menyajikan navigasi Anda di bagian atas halaman jika tata letak berbasis tabel Anda menempatkannya di sel ke-3 dari baris ke-2 dari tabel bersarang ke-2 pada halaman.

Jadi jawaban Anda adalah rawatan, aksesibilitas, dan SEO.

Jangan malas. Lakukan hal-hal dengan cara yang benar dan tepat bahkan jika itu agak sulit untuk dipelajari.

erlando
sumber
24
Trik yang sering digunakan di Zen Garden adalah mengganti teks dengan gambar, dan mendefinisikannya di CSS, sehingga membuatnya tidak terlihat dari HTML. Sangat, sangat salah.
GvS
3
Maaf, tapi itu tidak benar. Teks masih dalam HTML - itulah salah satu persyaratan desain CSSZG. HTML harus tetap tidak berubah.
erlando
10
Jika Anda memperhatikan beberapa desain dengan seksama, teks dalam beberapa tajuk berbeda dari teks dalam HTML. Itu karena HTML dibuat tidak terlihat, dan bukannya gambar dimasukkan. (Contoh: csszengarden.com/?cssfile=/212/212.css&page=0 , The? Path? To ? Achievement?)
GvS
6
Maaf, sama sekali tidak ada bukti tata letak div yang lebih baik untuk SEO. Juga, Google sendiri telah menyatakan bahwa validasi HTML tidak masalah bagi mereka - masalah yang sedikit berbeda tetapi satu mengarah ke tabel karena jarang divalidasi.
DisgruntledGoat
“Sebagian besar dari Anda akrab dengan kebajikan seorang programmer. Ada tiga, tentu saja: kemalasan, ketidaksabaran, dan keangkuhan. " - Larry Wall
inkredibl
91

Lihat pertanyaan rangkap ini.

Satu item yang Anda lupa ada aksesibilitas. Layout berbasis tabel tidak menerjemahkan juga jika Anda perlu menggunakan pembaca layar, misalnya. Dan jika Anda bekerja untuk pemerintah, mendukung browser yang dapat diakses seperti pembaca layar mungkin diperlukan .

Saya juga berpikir Anda meremehkan dampak dari beberapa hal yang Anda sebutkan dalam pertanyaan. Misalnya, jika Anda adalah perancang dan pemrogram, Anda mungkin tidak memiliki apresiasi penuh tentang seberapa baik memisahkan presentasi dari konten. Tapi begitu Anda masuk ke toko di mana mereka dua peran yang berbeda, keuntungan mulai menjadi lebih jelas.

Jika Anda tahu apa yang Anda lakukan dan memiliki alat yang bagus, CSS benar-benar memiliki kelebihan signifikan dibandingkan tabel untuk tata letak. Dan sementara masing-masing item dengan sendirinya mungkin tidak membenarkan meninggalkan tabel, secara bersama-sama itu layak dilakukan.

Joel Coehoorn
sumber
Ya memang. Saya melihat itu duplikat. Saya melewatkannya. Adakah tindakan yang diperlukan selain menjanjikan saya akan lebih berhati-hati lain kali :-)?
Benno Richters
Jangan khawatir. Ini akan semakin sering terjadi seiring dengan meningkatnya jumlah pertanyaan. Saya bahkan tidak mengundurkan diri. Kami hanya ingin memastikan bahwa sebisa mungkin mereka semua menunjuk ke sumber yang sama.
Joel Coehoorn
8
Saya sangat suka jawaban ini. Dengan menggunakan tag yang bermakna secara semantik bukan hanya masalah tradisi, tag ini memungkinkan mereka yang bukan peramban (pembaca layar, pencakar layar, berbagai parser) yang tidak dikenal untuk mengkategorikan berbagai objek di halaman Anda dengan benar.
Phantom Watson
6
Saya berharap seseorang akan menyebutkan ini. Aksesibilitas harus menjadi prioritas utama!
Andrew
Saya tidak bisa mengatakan saya setuju dengan anggapan bahwa aksesibilitas harus menjadi prioritas utama dalam latihan komersial. Rasio manfaat biaya tidak layak. Ini seperti meletakkan kursi roda di toko panjat gunung - pemborosan sumber daya konyol yang dapat diterapkan pada item dengan CBR yang lebih baik. Jika Anda berbicara tentang fasilitas medis maka jalan kursi roda akan menjadi prioritas. Demikian juga, saya hanya akan repot dengan aksesibilitas halaman web untuk situs-situs yang bernada gangguan penglihatan orang.
Peter Wone
54

Sayangnya, CSS Zen Garden tidak lagi dapat digunakan sebagai contoh desain HTML / CSS yang baik. Hampir semua desain terbaru mereka menggunakan grafik untuk heading bagian. File-file grafik ini ditentukan dalam CSS.

Oleh karena itu, sebuah situs web yang bertujuan untuk menunjukkan keuntungan dari menjaga desain dari konten, sekarang secara teratur melakukan SIN yang TIDAK TERPASANG untuk menempatkan konten ke dalam desain. (Jika judul bagian dalam file HTML berubah, judul bagian yang ditampilkan tidak akan).

Yang hanya menunjukkan bahwa bahkan mereka yang mendukung agama DIV & CSS yang ketat, tidak dapat mengikuti aturan mereka sendiri. Anda dapat menggunakannya sebagai pedoman seberapa dekat Anda mengikuti mereka.

James Curran
sumber
18
Anda berarti mereka lakukan <h1>Some Text</h1>dan kemudian di css mereka: h1 { background-image('foo.jpg'); text-indent:-3000px }? Ini adalah cara yang benar untuk melakukannya karena Anda mempertahankan informasi semantik maksimum dalam gaya-kurang html. Atau mungkin saya salah paham dengan Anda.
Karan
9
Karen benar, kamu salah, James. Contoh Anda adalah seorang pria jerami. Lupa mengubah gambar ketika Anda mengubah HTML semantik akan menjadi hal yang bodoh. Begitu juga dengan meninggalkan laptop Anda di bus. Apa maksudmu
AmbroseChapel
36
@ Ambrose: Karena seluruh titik situs sialan adalah untuk menunjukkan pemisahan konten & gaya. Konten & Gaya harus ditangani dengan baik oleh orang yang berbeda, yang keduanya tidak harus "mengingat" apa yang diubah orang lain.
James Curran
5
Tn. S&N: itu akan memperburuk keadaan. Anda harus menghasilkan gambar baru secara dinamis - dengan gaya yang benar. Jadi sekarang Anda telah memindahkan gaya dari CSS ke kode lapisan bisnis.
James Curran
9
@ James: Konten dan gaya tidak selalu dapat ditangani oleh orang yang berbeda. Ketika konten bergaya, kolaborasi harus terjadi. Bagaimana bisa <h1><img src="something.png"></h1>lebih dipelihara daripada <h1 class="something image">Something</h1>? Dalam salah satu contoh, sesuatu.png perlu diperbarui. Tetapi contoh kedua jauh lebih mudah diakses.
Josh
48

Ini bukan argumen definitif, dengan cara apa pun, tetapi dengan CSS Anda dapat mengambil markup yang sama dan mengubah tata letak tergantung pada media, yang merupakan keuntungan yang bagus. Untuk halaman cetak, Anda dapat dengan tenang menekan navigasi tanpa harus membuat halaman yang ramah-printer, misalnya.

bijaksana
sumber
Poin bagus, meskipun Anda dapat menggunakan css untuk menyembunyikan sel dalam tata letak berbasis tabel, untuk menekan navigasi dalam versi yang dapat dicetak misalnya, tata letak CSS memberi Anda lebih banyak fleksibilitas di balik hanya menyembunyikan data.
Cory House
Saya menekan ini dengan salah satu aplikasi saya; Saya senang ketika saya menyadari betapa mudahnya membuat versi "ramah printer" hanya dengan mencetak CSS untuk halaman yang sama dengan yang ada di layar.
Lawrence Dol
45

Satu meja untuk tata letak tidak akan seburuk itu. Tapi Anda tidak bisa mendapatkan tata letak yang Anda butuhkan hanya dengan satu meja sebagian besar waktu. Segera Anda memiliki 2 atau tiga tabel bersarang. Ini menjadi sangat rumit.

  • BANYAK lebih sulit dibaca. Itu tidak terserah pendapat. Hanya ada lebih banyak tag bersarang tanpa tanda pengenal pada mereka.

  • Memisahkan konten dari presentasi adalah hal yang baik karena memungkinkan Anda untuk fokus pada apa yang Anda lakukan. Menggabungkan kedua mengarah ke halaman yang membengkak yang sulit dibaca.

  • CSS untuk gaya memungkinkan browser Anda untuk melakukan cache file dan permintaan berikutnya jauh lebih cepat. Ini BESAR.

  • Tabel mengunci Anda ke dalam desain. Tentu, tidak semua orang membutuhkan fleksibilitas CSS Zen Garden, tetapi saya belum pernah bekerja di situs di mana saya tidak perlu mengubah desain sedikit pun di sana-sini. Jauh lebih mudah dengan CSS.

  • Tabel sulit untuk ditata. Anda tidak memiliki banyak fleksibilitas dengan mereka (yaitu Anda masih perlu menambahkan atribut HTML untuk sepenuhnya mengontrol gaya tabel)

Saya belum pernah menggunakan tabel untuk data non-tabular mungkin dalam 4 tahun. Saya belum melihat ke belakang.

Saya benar-benar ingin menyarankan membaca Penguasaan CSS oleh Andy Budd. Fantastis.

Gambar di ecx.images-amazon.com http://ecx.images-amazon.com/images/I/41TH5NFKPEL._SL500_BO2.204.203.200_PIsitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_.jpg

Ben Scheirman
sumber
1
Saya dapat sangat merekomendasikan buku ini
Jacob T. Nielsen
Berisi contoh yang baik untuk model kotak, penyeleksi, dan pemosisian.
KMån
36

Ini baik untuk memisahkan konten dari tata letak
Tapi ini adalah argumen yang keliru; Berpikir Klise

Ini argumen yang keliru karena tabel HTML adalah tata letak! Konten adalah data dalam tabel, penyajiannya adalah tabel itu sendiri. Inilah sebabnya mengapa memisahkan CSS dari HTML terkadang sangat sulit. Anda tidak memisahkan konten dari presentasi, Anda memisahkan presentasi dari presentasi! Setumpuk div bersarang tidak berbeda dengan tabel - hanya set tag yang berbeda.

Masalah lain dengan memisahkan HTML dari CSS adalah bahwa mereka membutuhkan pengetahuan intim satu sama lain - Anda benar-benar tidak dapat memisahkan mereka sepenuhnya. Tata letak tag di HTML sangat erat dengan file CSS tidak peduli apa yang Anda lakukan.

Saya pikir tabel vs divs turun ke kebutuhan aplikasi Anda.

Dalam aplikasi yang kami kembangkan di tempat kerja, kami membutuhkan tata letak halaman di mana potongan-potongan itu akan secara dinamis mengukur sendiri konten mereka. Saya menghabiskan waktu berhari-hari untuk mencoba ini bekerja lintas-browser dengan CSS dan DIV dan itu adalah mimpi buruk yang lengkap. Kami beralih ke tabel dan semuanya bekerja .

Namun, kami memiliki audiens yang sangat tertutup untuk produk kami (kami menjual perangkat keras dengan antarmuka web) dan masalah aksesibilitas bukan masalah bagi kami. Saya tidak tahu mengapa pembaca layar tidak bisa menangani tabel dengan baik, tapi saya kira jika memang seperti itu maka pengembang harus menanganinya.

17 dari 26
sumber
6
screenreaders berurusan dengan tabel ok .. Ini adalah cara tabel tidak berurusan dengan screenreader itulah masalahnya. Layout berbasis tabel cenderung untuk menyajikan informasi dengan cara yang tidak dapat diakses. Pikirkan tentang seperti apa tampilan navigasi sisi kanan. Akan cukup jauh di bawah halaman.
erlando
Ok, itu masuk akal kalau begitu - terima kasih!
17 dari 26
8
Hanya karena <tabel> atau <div> memiliki presentasi default di sebagian besar agen layar, tidak menyamakan mereka sebagai elemen presentasi daripada elemen semantik.
Mark Brackett
1
Saya tidak berbicara tentang HTML secara khusus, saya berbicara tentang konseptual dalam desain UI dasar. Tabel menentukan bagaimana hal-hal diletakkan di layar, yaitu bagaimana hal itu disajikan kepada pengguna. Itu presentasi.
17 dari 26
1
"Saya menghabiskan waktu berhari-hari untuk berusaha agar ini berhasil" - jika sesuatu yang saya coba selidiki membutuhkan lebih dari beberapa jam, saya menaruhnya di komunitas StackOverflow. Tidak tahu bagaimana melakukan sesuatu dengan benar bukanlah alasan untuk tidak melakukannya dengan benar. Terutama ketika kita memiliki semua jawaban di ujung jari kita.
DaveDev
23

CSS / DIV - itu hanya pekerjaan untuk anak laki-laki desain, bukan. Ratusan jam yang saya habiskan untuk debugging masalah DIV / CSS, mencari di internet untuk mendapatkan beberapa bagian dari markup bekerja dengan browser yang tidak jelas - itu membuat saya marah. Anda membuat satu perubahan kecil dan seluruh tata letak menjadi sangat salah - di mana pada dasarnya adalah logika. Menghabiskan berjam-jam memindahkan sesuatu 3 piksel dengan cara ini maka yang lain 2 piksel lainnya untuk membuat mereka semua berbaris. Ini sepertinya salah bagi saya. Hanya karena Anda seorang purist dan sesuatu adalah "bukan hal yang tepat untuk dilakukan" tidak berarti Anda harus memanfaatkannya sampai tingkat ke-n dan dalam semua keadaan, terutama jika itu membuat hidup Anda 1000 kali lebih mudah.

Jadi saya akhirnya memutuskan, murni berdasarkan alasan komersial, meskipun saya tetap menggunakan seminimal mungkin, jika saya mengantisipasi 20 jam kerja untuk mendapatkan DIV yang ditempatkan dengan benar, saya akan tetap di meja. Itu salah, itu mengganggu kaum puritan, tetapi dalam banyak kasus harganya lebih murah dan lebih murah untuk dikelola. Saya kemudian dapat berkonsentrasi untuk membuat aplikasi berfungsi seperti yang diinginkan pelanggan, daripada menyenangkan para puritan. Mereka memang membayar tagihan dan argumen saya kepada manajer yang menegakkan penggunaan CSS / DIV - Saya hanya akan menunjukkan bahwa pelanggan membayar gajinya juga!

Satu-satunya alasan semua argumen CSS / DIV ini terjadi adalah karena kekurangan CSS di tempat pertama dan karena browser tidak kompatibel satu sama lain dan jika mereka, setengah desainer web di dunia akan keluar dari pekerjaan .

Ketika Anda mendesain bentuk windows Anda tidak mencoba memindahkan kontrol setelah Anda meletakkannya jadi saya agak berpikir itu aneh bagi saya mengapa Anda ingin melakukan ini dengan formulir web. Saya tidak bisa mengerti logika ini. Dapatkan tata letak yang benar untuk memulai dan apa masalahnya. Saya pikir itu karena desainer suka bermain-main dengan kreativitas, sementara pengembang aplikasi lebih peduli untuk benar-benar membuat aplikasi bekerja, membuat objek bisnis, menerapkan aturan bisnis, mencari tahu bagaimana bit data pelanggan berhubungan satu sama lain, memastikan hal itu memenuhi pelanggan persyaratan - Anda tahu - seperti hal-hal dunia nyata.

Jangan salah paham, kedua argumen ini valid, tapi tolong jangan kritik pengembang karena memilih pendekatan yang lebih mudah, lebih logis untuk merancang formulir. Kita sering memiliki hal-hal yang lebih penting untuk dikhawatirkan daripada semantik yang benar dari menggunakan tabel di atas div.

Contohnya - berdasarkan diskusi ini saya mengkonversi beberapa tds dan trs ke divs. 45 menit main-main dengan itu mencoba untuk mendapatkan segalanya untuk berbaris di samping satu sama lain dan saya menyerah. TD kembali 10 detik kemudian - berfungsi - langsung - di semua browser, tidak ada lagi yang bisa dilakukan. Tolong coba buat saya mengerti - pembenaran apa yang mungkin Anda miliki karena ingin saya melakukannya dengan cara lain!

Peter Mortensen
sumber
Saya sangat setuju dengan posting ini. Dalam 10 tahun saya sudah dalam desain, saya tidak bisa memikirkan satu waktu di mana argumen "kami menggunakan CSS karena membuat perubahan di seluruh dunia lebih mudah untuk dikelola" dimainkan sebagai akurat.
Daniel Szabo
6
tahu apa yang membuat perubahan di seluruh dunia mudah dikelola? MVC dan sistem template
Jiaaro
Tolong jangan salah paham - saya masih menggunakan CSS tapi saya menggunakannya untuk menerapkan gaya (warna, gambar latar belakang dan sebagainya) dan bukan tata letak. CSS tampaknya cukup konsisten di seluruh browser ketika digunakan untuk mengontrol gaya saja. Di mana cacat dan jatuh dengan cara besar adalah cara di mana tata letak ditentukan dan diimplementasikan di browser. Adakah yang pernah mencoba untuk membuat ASP.NET MasterPages bekerja andal dengan DIV? Hampir mustahil!
Tim Black
21

Tata letak harus mudah. Fakta bahwa ada artikel yang ditulis tentang cara mencapai tata letak tiga kolom dinamis dengan header dan footer di CSS menunjukkan bahwa itu adalah sistem tata letak yang buruk. Tentu saja Anda bisa membuatnya berfungsi, tetapi ada ratusan artikel online tentang cara melakukannya. Hampir tidak ada artikel seperti itu untuk tata letak yang mirip dengan tabel karena sudah jelas jelas. Tidak peduli apa yang Anda katakan terhadap tabel dan mendukung CSS, fakta ini membatalkan semuanya: tata letak tiga kolom dasar dalam CSS sering disebut "Cawan Suci".

Jika itu tidak membuat Anda mengatakan "WTF" maka Anda benar-benar harus meletakkan bantuan kool sekarang.

Saya suka CSS. Ini menawarkan opsi gaya luar biasa dan beberapa alat penentuan posisi keren, tetapi sebagai mesin tata letak itu kurang. Perlu ada beberapa jenis sistem penentuan posisi grid dinamis. Cara mudah untuk menyelaraskan kotak pada beberapa sumbu tanpa mengetahui ukurannya terlebih dahulu. Saya tidak peduli jika Anda menyebutnya <table> atau <gridlayout> atau apa pun, tetapi ini adalah fitur tata letak dasar yang hilang dari CSS.

Masalah yang lebih besar adalah bahwa dengan tidak mengakui ada fitur yang hilang, para fanatik CSS telah menahan CSS dari semula. Saya akan sangat senang untuk berhenti menggunakan tabel jika CSS memberikan posisi grid multi-axis yang layak seperti pada dasarnya setiap mesin tata letak lainnya di dunia. (Anda menyadari masalah ini telah dipecahkan berkali-kali dalam banyak bahasa oleh semua orang kecuali W3C, bukan? Dan tidak ada orang lain yang menyangkal bahwa fitur seperti itu berguna.)

Mendesah. Ventilasi yang cukup. Silakan dan tancapkan kembali kepala Anda ke pasir.

needlestack
sumber
"CSS zealots" (seperti yang Anda katakan) tidak mengetahui fakta ini. Spesifikasi CSS berikutnya tidak hanya memiliki satu, tetapi dua solusi untuk memperbaiki masalah dengan tata letak di CSS. Layout Templat: w3.org/TR/css3-layout Dan Posisi Grid: w3.org/TR/css3-grid Ini tidak memperkenalkan spesifikasi yang bersaing. Kedua spesifikasi ini sebenarnya saling melengkapi. Pada saat penulisan komentar ini, belum ada browser yang mengimplementasikannya.
Dan Herbert
+1: Saya sepenuhnya setuju. Anda tidak harus "mulai bekerja" (walaupun saya juga tidak suka tabel).
electrologos
Ini 100% persis apa yang saya rasakan. Saya berharap saya bisa mengangkat Anda ke jawaban teratas.
bobwienholt
19

Menurut kepatuhan 508 (untuk pembaca layar untuk gangguan visual), tabel seharusnya hanya digunakan untuk menyimpan data dan bukan untuk tata letak karena menyebabkan pembaca layar menjadi panik. Atau begitulah saya diberitahu.

Jika Anda menetapkan nama untuk masing-masing divs, Anda dapat menguliti semuanya bersama-sama menggunakan CSS juga. Mereka hanya sedikit lebih sakit untuk duduk seperti yang Anda inginkan.

rampok
sumber
18

Berikut adalah bagian dari html dari proyek terbaru:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>{DYNAMIC(TITLE)}</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <link rel="stylesheet" type="text/css" href="./styles/base.css" />
</head>
<body>
    <div id="header">
        <h1><!-- Page title --></h1>
        <ol id="navigation">
            <!-- Navigation items -->
        </ol>
        <div class="clearfix"></div>
    </div>
    <div id="sidebar">
        <!-- Sidebar content -->
    </div>
    <!-- Page content -->
    <p id="footer"><!-- Footer content --></p>
</body>
</html>

Dan ini kode yang sama dengan tata letak berbasis tabel.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>{DYNAMIC(TITLE)}</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <link rel="stylesheet" type="text/css" href="./styles/base.css" />
</head>
<body>
    <table cellspacing="0">
        <tr>
            <td><!-- Page Title --></td>
            <td>
                <table>
                    <tr>
                        <td>Navitem</td>
                        <td>Navitem</td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>

    <table>
        <tr>
            <td><!-- Page content --></td>
            <td><!-- Sidebar content --></td>
        </tr>
        <tr>
            <td colspan="2">Footer</td>
        </tr>
    </table>
</body>
</html>

Satu-satunya kebersihan yang saya lihat dalam tata letak berdasarkan tabel adalah kenyataan bahwa saya terlalu bersemangat dengan lekukan saya. Saya yakin bahwa bagian konten akan memiliki dua tabel disematkan lebih lanjut.

Satu hal yang perlu dipikirkan: filesizes . Saya telah menemukan bahwa tata letak berbasis tabel dua kali ukuran rekan CSS mereka biasanya. Pada broadband berkecepatan tinggi kami, ini bukan masalah besar, tetapi pada mereka yang menggunakan modem dial up.

Ross
sumber
3
kecepatan bukanlah satu-satunya hal yang dirugikan oleh file yang lebih besar: banyak perusahaan membayar bandwidth. Jika Anda dapat memotong tagihan bandwidth klien menjadi dua hanya dengan mengkodekan dengan baik, itu keuntungan besar.
Tuan Shiny dan Baru 安 宇
2
Ya tapi jangan lupa bahwa sementara HTML mungkin dua kali lebih besar dalam tata letak tanpa CSS, menggunakan DIV + tata letak CSS akan menghasilkan (setidaknya) Permintaan HTTP tambahan untuk file CSS, ditambah penggunaan bandwidth untuk file itu sendiri.
goldenratio
12
Tetapi file css hanya perlu diunduh sekali, di mana seluruh struktur tabel dikirim ulang pada setiap permintaan halaman.
user151841
3
Anda telah memilih desain yang cocok untuk div + css dan menunjukkan bahwa itu lebih bertele-tele dalam desain berbasis tabel? Jadi apa: Akan mudah membuat desain yang cocok untuk tata letak berbasis tabel dan menunjukkan lingkaran yang harus Anda lompati untuk mereplikasi dalam CSS.
Draemon
4
@Raemon: Mungkin Anda ingin memberi contoh?
Bobby Jack
14

Saya ingin menambahkan bahwa tata letak berbasis div lebih mudah untuk menjaga, berevolusi, dan refactor. Hanya beberapa perubahan dalam CSS untuk menyusun ulang elemen dan itu dilakukan. Dari pengalaman saya, mendesain ulang tata letak yang menggunakan tabel adalah mimpi buruk (apalagi jika ada tabel bersarang).

Kode Anda juga memiliki makna dari sudut pandang semantik .

Guido
sumber
Impian saya adalah memiliki seorang desainer grafis yang mengambil objek / data yang saya berikan dan meletakkannya di halaman tanpa saya harus peduli dengan CSS, DIV, TABEL ... :)
Manrico Corazzi
Saya kedua Manrico - desainer visual yang akan memungkinkan Anda untuk membangun tata letak dan menentukan dimensi tetap dan persentase dan kemudian menghasilkan HTML dan CSS minimal akan sangat berguna!
Richard Ev
Masalah yang saya miliki dengan konsep web semantik adalah bahwa dalam HTML 4 kosakata sangat terbatas dan dirancang terutama untuk dokumen teknis. Banyak situs dengan tujuan komersial / pemasaran mungkin memiliki elemen yang tidak sesuai dengan kosakata ini. HTML 5 memperbaiki sebagian dari ini dengan tag seperti nav, header, footer tetapi untuk saat ini kita terjebak menggunakan tag seperti rentang yang sebenarnya mengatakan sangat sedikit tentang bagaimana konten harus ditafsirkan.
Nick Van Brunt
13

Tidak ada argumen yang mendukung DIV dari saya.

Saya akan mengatakan: Jika sepatu itu pas, kenakan.

Perlu dicatat bahwa sulit jika bukan tidak mungkin untuk menemukan metode DIV + CSS yang baik dalam merender konten dalam dua atau tiga kolom, yang konsisten pada semua browser, dan masih terlihat seperti yang saya maksudkan.

Ini tips keseimbangan sedikit ke arah tabel di sebagian besar tata letak saya, dan meskipun saya merasa bersalah menggunakannya (dunny mengapa, orang hanya mengatakan itu buruk jadi saya mencoba mendengarkannya), pada akhirnya, pandangan pragmatis itu hanya lebih mudah dan lebih cepat bagi saya untuk menggunakan TABLE. Saya tidak dibayar per jam, jadi meja lebih murah bagi saya.

Radu094
sumber
1
jika Anda ingin membuat situs web dua atau tiga kolom dengan divs + css yang berfungsi di semua browser, Anda harus tidak memulai dari awal. Ada banyak template barebone yang tersedia dari web yang dapat Anda gunakan sebagai basis. Itu biasanya dioptimalkan untuk displya dengan benar di semua browser ie6 +
arturh
13

Layout CSS umumnya jauh lebih baik untuk aksesibilitas, asalkan konten datang dalam urutan alami dan masuk akal tanpa stylesheet. Dan bukan hanya pembaca layar yang kesulitan dengan tata letak berbasis tabel: mereka juga mempersulit browser seluler untuk membuat halaman dengan benar.

Juga, dengan tata letak berbasis div Anda dapat dengan mudah melakukan hal-hal keren dengan lembar gaya pencetakan seperti tidak termasuk header, footer dan navigasi dari halaman yang dicetak - Saya pikir itu tidak mungkin, atau setidaknya jauh lebih sulit, untuk melakukannya dengan tata letak berbasis tabel.

Jika Anda ragu bahwa pemisahan konten dari tata letak lebih mudah dengan div daripada dengan tabel, lihat HTML berbasis div di CSS Zen Garden , lihat bagaimana mengubah stylesheet dapat mengubah tata letak secara drastis, dan memikirkan apakah Anda bisa mencapai variasi tata letak yang sama jika HTML berbasis tabel ... Jika Anda melakukan tata letak berbasis tabel, Anda tidak mungkin menggunakan CSS untuk mengontrol semua spasi dan bantalan dalam sel (jika Anda, Anda hampir pasti akan lebih mudah untuk menggunakan divs mengambang dll di tempat pertama). Tanpa menggunakan CSS untuk mengontrol semua itu, dan karena fakta bahwa tabel menentukan urutan kiri-ke-kanan dan atas-ke bawah dalam HTML, tabel cenderung berarti bahwa tata letak Anda menjadi sangat banyak diperbaiki dalam HTML.

Secara realistis saya pikir sangat sulit untuk sepenuhnya mengubah tata letak desain berbasis div-dan-CSS tanpa mengubah sedikit divs. Namun, dengan tata letak berbasis div-dan-CSS, akan lebih mudah untuk mengubah hal-hal seperti jarak antara berbagai blok, dan ukuran relatifnya.

MB.
sumber
13

Fakta bahwa ini adalah pertanyaan yang hangat diperdebatkan adalah bukti kegagalan W3C untuk mengantisipasi keragaman desain tata letak yang akan dicoba. Menggunakan divs + css untuk tata letak yang ramah semantik adalah konsep yang bagus, tetapi detail implementasinya sangat cacat sehingga mereka sebenarnya membatasi kebebasan kreatif.

Saya mencoba untuk mengubah salah satu situs perusahaan kami dari tabel ke divs, dan itu adalah sakit kepala sehingga saya benar-benar membuang jam kerja yang telah saya tuangkan ke dalamnya dan kembali ke meja. Mencoba untuk bergulat dengan div saya untuk mendapatkan kendali atas penyelarasan vertikal telah mengutuk saya dengan masalah psikologis utama yang saya tidak akan pernah goyangkan selama debat ini terus berlangsung.

Fakta bahwa orang harus sering menemukan solusi yang kompleks dan jelek untuk mencapai tujuan desain sederhana (seperti penyelarasan vertikal) sangat menunjukkan bahwa aturannya hampir tidak cukup fleksibel. Jika spesifikasi cukup, lalu mengapa situs profil tinggi (seperti SO) merasa perlu untuk membengkokkan aturan menggunakan tabel dan solusi lain?

DLH
sumber
12

Saya kira memang benar bahwa menggunakan elemen tabel untuk tata letak tidak ada hubungannya dengan data tabular. Terus? Apakah bos saya peduli? Apakah pengguna saya peduli?

Google dan sistem otomatis lainnya sangat peduli, dan mereka sama pentingnya dalam banyak situasi. Kode semantik lebih mudah bagi sistem non-cerdas untuk diuraikan dan diproses.

ceejayoz
sumber
Ya, misalnya untuk blog, mesin memisahkan komentar dari posting blog. Bayangkan tata letaknya ditata dengan tabel ..
Omar Abid
2
-1: Google sama sekali tidak peduli sedikit pun jika Anda menggunakan tabel untuk tata letak.
Tom Anderson
@ Tom Anderson Bukan karena mereka memiliki masalah dengan menggunakan tabel untuk tata letak, tetapi hanya karena HTML non-tabel cenderung lebih semantik.
ceejayoz
8

Setelah harus bekerja dengan situs web yang melibatkan 6 lapisan tabel bersarang yang dihasilkan oleh beberapa aplikasi, dan setelah itu menghasilkan HTML yang tidak valid, sebenarnya itu adalah pekerjaan 3 jam untuk memperbaikinya karena ada perubahan kecil.

Ini tentu saja tepi kasus, tetapi desain berbasis tabel tidak dapat dipertahankan. Jika Anda menggunakan css, pisahkan gaya tersebut sehingga saat memperbaiki HTML Anda tidak perlu terlalu khawatir untuk memecahnya.

Juga, coba ini dengan JavaScript. Memindahkan sel tabel tunggal dari satu tempat ke tempat lain di tabel lain. Agak rumit untuk melakukan di mana div / span hanya akan berfungsi copy-paste-bijaksana.

"Apakah bos saya peduli"

Jika aku bosmu. Kamu akan peduli. ;) Jika Anda menghargai hidup Anda.

Kent Fredric
sumber
Harus bekerja dengan situs web yang memiliki sup tag span dan div yang sangat besar dan menyaksikan kerapuhannya ketika mengubah satu elemen akan menghancurkan seluruh halaman (dan div yang digunakan sebagai ganti tag heading) ...
inkredibl
Menggunakan Div's jelas tidak membuat kode Anda secara ajaib lebih baik. Banyak yang bisa dikatakan untuk penggunaan tag semantik yang tepat.
Kent Fredric
7

Fleksibilitas tata letak
Bayangkan Anda membuat halaman dengan sejumlah besar thumbnail.
DIVs :
Jika Anda menempatkan setiap thumbnail di DIV, melayang ke kiri, mungkin 10 di antaranya pas pada satu baris. Buat jendela lebih sempit, dan BAM - 6 berturut-turut, atau 2, atau berapa banyak cocok.
TABEL:
Anda harus secara eksplisit mengatakan berapa banyak sel dalam satu baris. Jika jendela terlalu sempit, pengguna harus menggulir secara horizontal.

Maintainability
Situasi yang sama seperti di atas. Sekarang Anda ingin menambahkan tiga thumbnail ke baris ketiga.
DIVs:
Tambahkan mereka. Tata letak akan secara otomatis menyesuaikan.
TABEL: Tempel sel baru ke baris ketiga. Ups! Sekarang ada terlalu banyak barang di sana. Potong beberapa dari baris itu dan letakkan di baris keempat. Sekarang ada terlalu banyak barang di sana. Potong beberapa dari baris itu ... (dll)
( Tentu saja, jika Anda membuat baris dan sel dengan skrip sisi server, ini mungkin tidak akan menjadi masalah. )

Nathan Long
sumber
7

Saya pikir perahu itu telah berlayar. Jika Anda melihat arah yang diambil industri, Anda akan melihat bahwa CSS dan Standar Terbuka adalah pemenang dari diskusi itu. Yang pada gilirannya berarti untuk sebagian besar pekerjaan html, dengan pengecualian bentuk, desainer akan menggunakan div bukan tabel. Saya mengalami kesulitan dengan itu karena saya bukan seorang guru CSS tetapi itulah caranya.

Thomas Wagner
sumber
5

Juga, jangan lupa, tabel tidak cukup bagus di peramban seluler. Tentu, iPhone memiliki peramban yang hebat, tetapi semua orang tidak memiliki iPhone. Perenderan tabel bisa menjadi kacang untuk browser modern, tetapi ini adalah sekelompok semangka untuk browser seluler.

Saya pribadi telah menemukan bahwa banyak orang menggunakan terlalu banyak <div>tag, tetapi dalam jumlah sedang, ini bisa sangat bersih dan mudah dibaca. Anda menyebutkan bahwa orang lebih sulit membaca CSS daripada tabel; dalam hal 'kode' yang mungkin benar; tetapi dalam hal membaca konten (view> source) itu jauh lebih mudah untuk memahami struktur dengan stylesheet daripada dengan tabel.

Swati
sumber
Poin bagus yang Anda miliki di sana; tetapi IMHO UI untuk perangkat seluler harus benar-benar berbeda dengan mempertimbangkan batasan input.
Manrico Corazzi
Benar; itulah sebabnya saya mulai menggunakan pendekatan yang berbeda di kali. Dalam model MVC, minta pandangan saya pop-out hanya data mentah XML yaitu konten. Kemudian mulailah dengan model MVC lain di mana xml raw data = model; view = html / css; controller = xsl. Lembar gaya XSL membersihkan data yang tidak perlu untuk seluler.
Swati
5

Sepertinya Anda hanya terbiasa dengan tabel dan hanya itu. Menempatkan tata letak dalam tabel membatasi Anda hanya untuk tata letak itu. Dengan CSS Anda dapat memindahkan bit, lihat http://csszengarden.com/ Dan tidak, tata letak biasanya tidak memerlukan banyak div bersarang.

Tanpa tabel untuk tata letak dan semantik HTML yang benar jauh lebih bersih, maka lebih mudah dibaca. Mengapa seseorang yang tidak dapat memahami CSS mencoba membacanya? Dan jika seseorang menganggap dirinya sebagai pengembang web maka pemahaman CSS yang baik adalah suatu keharusan.

Manfaat SEO berasal dari kemampuan untuk memiliki konten paling penting di bagian atas halaman dan memiliki rasio konten-ke-markup yang lebih baik.

http://www.hotdesign.com/seybold/

Rimantas
sumber
5
  • 508 Compliance - kemampuan screenreader untuk memahami markup Anda.
  • Menunggu render - tabel tidak di-render di browser sampai mencapai akhir </table>elemen.
Rick Glos
sumber
Saya ingat membuat tabel besar bertahun-tahun yang lalu, di masa komputer yang lebih lambat, dan saya ingat ketika kode masuk yang membuat mereka membuat saat Anda pergi. IE6? IE4? Tidak ingat, tapi itu memang berubah. Tentu saja, ini berguna untuk data yang ditabulasi, tetapi tabel tata letak ditata dalam satu inci dari kehidupan mereka, jadi mungkin rendering progresif akan kurang bermanfaat karena tabel melompat untuk mengakomodasi konten yang baru dimuat.
ijw
5

Seluruh ide seputar markup semantik adalah pemisahan markup dan presentasi, yang mencakup tata letak.

Div tidak mengganti tabel, mereka memiliki kegunaannya sendiri dalam memisahkan konten menjadi blok konten terkait (,). Ketika Anda tidak memiliki keterampilan dan mengandalkan tabel, Anda harus memisahkan konten Anda ke sel untuk mendapatkan tata letak yang diinginkan, tetapi Anda tidak perlu menyentuh markup untuk mencapai presentasi ketika menggunakan markup semantik. Ini sangat penting ketika markup dihasilkan daripada halaman statis.

Pengembang harus berhenti memberikan markup yang menyiratkan tata letak sehingga mereka yang memiliki keterampilan untuk menyajikan konten dapat melanjutkan pekerjaan kami, dan pengembang tidak harus kembali ke kode mereka untuk membuat perubahan saat presentasi perlu diubah.

Steve Perks
sumber
4

Ini bukan tentang apakah 'div lebih baik daripada tabel untuk tata letak'. Seseorang yang mengerti CSS dapat menduplikasi desain apa pun menggunakan 'tabel tata letak' dengan cukup mudah. Kemenangan sebenarnya menggunakan elemen HTML untuk apa mereka ada di sana. Alasan Anda tidak akan menggunakan tabel untuk data non-tablular adalah alasan yang sama Anda tidak menyimpan bilangan bulat sebagai karakter string - teknologi bekerja jauh lebih mudah ketika Anda menggunakannya untuk tujuan yang desgined. Jika memang pernah diperlukan untuk menggunakan tabel untuk tata letak (karena kekurangan browser pada awal 1990-an) tentu tidak sekarang.

domgblackwell
sumber
3

Alat yang menggunakan tata letak tabel dapat menjadi sangat berat karena jumlah kode yang diperlukan untuk membuat tata letak. Netweaver Portal SAP secara default menggunakan TABLE untuk mengatur tata letak halaman mereka.

Portal produksi SAP di pertunjukan saya saat ini memiliki halaman rumah yang HTML-nya lebih dari 60K dan masuk tujuh tabel, tiga kali dalam halaman. Tambahkan Javascript, penyalahgunaan 16 iframe dengan masalah tabel serupa di dalamnya, CSS yang terlalu berat dll, dan halaman tersebut memiliki berat lebih dari 5MB.

Meluangkan waktu untuk menurunkan berat halaman sehingga Anda dapat menggunakan bandwidth Anda untuk melakukan aktivitas menarik dengan pengguna sepadan dengan usaha.

Mike Cornell
sumber
3

Layak mencari tahu CSS dan divs sehingga kolom konten pusat memuat dan merender sebelum bilah sisi dalam tata letak halaman. Tetapi jika Anda kesulitan menggunakan div mengambang untuk meluruskan logo secara vertikal dengan beberapa teks sponsor, cukup gunakan tabel dan lanjutkan dengan kehidupan. Agama taman Zen tidak banyak menghasilkan uang.

Ide memisahkan konten dari presentasi adalah untuk mempartisi aplikasi sehingga berbagai jenis pekerjaan mempengaruhi blok kode yang berbeda. Ini sebenarnya tentang manajemen perubahan. Tetapi standar pengkodean hanya dapat memeriksa keadaan kode saat ini secara dangkal.

Log perubahan untuk aplikasi yang tergantung pada standar pengkodean untuk "memisahkan konten dari presentasi" akan menunjukkan pola perubahan paralel di silo vertikal. Jika perubahan ke "konten" selalu disertai dengan perubahan ke "presentasi", seberapa sukses partisi?

Jika Anda benar-benar ingin mempartisi kode Anda secara produktif, gunakan Subversion dan tinjau log perubahan Anda. Kemudian gunakan teknik pengkodean paling sederhana - divs, tabel, JavaScript, termasuk, fungsi, objek, lanjutan, apa pun - untuk menyusun aplikasi sehingga perubahan sesuai dengan cara yang sederhana dan nyaman.

Patrick May
sumber
+1 untuk dua kalimat pertama.
Sean McMillan
3

Karena NERAKA untuk memelihara situs yang menggunakan tabel, dan membutuhkan BANYAK lebih lama untuk kode. Jika Anda takut divs mengambang, ikuti kursus di dalamnya. Mereka tidak sulit untuk dipahami dan mereka sekitar 100 kali lebih efisien dan satu juta kali lebih sedikit rasa sakit di pantat (kecuali jika Anda tidak mengerti mereka - tapi hei, selamat datang di dunia komputer).

Siapa pun yang mempertimbangkan melakukan tata letak mereka dengan meja lebih baik tidak mengharapkan saya untuk mempertahankannya. Ini adalah cara paling terbelakang untuk membuat situs web. Terima kasih Tuhan kami punya alternatif yang jauh lebih baik sekarang. Saya tidak akan pernah kembali.

Sangat menakutkan bahwa beberapa orang mungkin tidak menyadari waktu dan manfaat energi dari membuat situs menggunakan alat modern.

Chuck Le Butt
sumber
3

Tabel secara umum tidak lebih mudah atau lebih mudah dikelola daripada CSS. Namun, ada beberapa yang spesifik masalah tata letak mana tabel memang solusi paling sederhana dan paling fleksibel.

CSS jelas lebih disukai dalam kasus-kasus di mana markup presentasi dan CSS mendukung jenis desain yang sama, tidak ada orang yang berpikiran sehat akan berpendapat bahwa font-tag lebih baik daripada menentukan tipografi dalam CSS, karena CSS memberi Anda kekuatan yang sama daripadafont -tag, tetapi dalam cara yang jauh lebih bersih.

Masalah dengan tabel, bagaimanapun, pada dasarnya adalah bahwa model tata letak tabel di CSS tidak didukung di Microsoft Internet Explorer. Tabel dan CSS karenanya tidak setara dalam kekuasaan. Bagian yang hilang adalah perilaku tabel seperti grid , di mana tepi sel sejajar baik secara vertikal dan horizontal, sementara sel masih berkembang untuk mengandung konten mereka. Perilaku ini tidak mudah dicapai dalam CSS murni tanpa hardcoding beberapa dimensi, yang membuat desain menjadi kaku dan rapuh (selama kita harus mendukung Internet Explorer - di browser lain ini mudah dicapai dengan menggunakandisplay:table-cell ).

Jadi sebenarnya bukan pertanyaan apakah tabel atau CSS lebih disukai, tetapi ini adalah pertanyaan untuk mengenali kasus-kasus tertentu di mana penggunaan tabel dapat membuat tata letak lebih fleksibel.

Alasan paling penting untuk tidak menggunakan tabel adalah aksesibilitas. Pedoman Aksesibilitas Konten Web http://www.w3.org/TR/WCAG10/ saran untuk menggunakan tabel untuk tata letak. Jika Anda khawatir tentang aksesibilitas (dan dalam beberapa kasus Anda mungkin secara hukum wajib), Anda harus menggunakan CSS bahkan jika tabel lebih sederhana. Perhatikan bahwa Anda selalu dapat membuat tata letak yang sama dengan CSS seperti dengan tabel, mungkin hanya membutuhkan lebih banyak pekerjaan.

JacquesB
sumber
3

Saya terkejut melihat beberapa masalah belum dibahas, jadi inilah 2 sen saya, di samping semua poin yang sangat valid yang dibuat sebelumnya:

.1. CSS & SEO:

a) CSS digunakan untuk memiliki dampak yang sangat signifikan pada SEO dengan memungkinkan untuk memposisikan konten di halaman di mana pun Anda inginkan. Beberapa tahun yang lalu, Mesin Pencari memberi penekanan signifikan pada faktor "di halaman". Sesuatu di bagian atas halaman dianggap lebih relevan dengan halaman daripada sesuatu yang terletak di bagian bawah. "Bagian atas halaman" untuk seekor laba-laba berarti "di awal kode". Dengan menggunakan CSS, Anda dapat mengatur konten yang kaya kata kunci di awal kode, dan tetap memposisikannya di mana pun Anda suka di halaman. Ini masih agak relevan, tetapi faktor halaman kurang dan kurang penting untuk peringkat halaman.

b) Ketika tata letak dipindahkan ke CSS, halaman HTML lebih ringan dan karenanya memuat lebih cepat untuk spider mesin pencari. (spider tidak perlu repot mengunduh file css eksternal). Halaman pemuatan cepat adalah pertimbangan peringkat penting untuk beberapa mesin pencari, termasuk Google

c) Pekerjaan SEO seringkali membutuhkan pengujian dan perubahan hal-hal, yang jauh lebih nyaman dengan tata letak berbasis CSS

.2. Konten yang dihasilkan:

Tabel jauh lebih mudah dihasilkan secara program dari pada tata letak CSS yang setara.

foreach ($comment as $key=>$value)
{
   echo "<tr><td>$key</td><td>$value</td></tr>";
}

Membuat tabel sederhana dan aman. Itu mandiri dan terintegrasi dengan baik dalam template apa pun. Untuk melakukan hal yang sama dengan CSS jauh lebih sulit dan mungkin tidak bermanfaat sama sekali: sulit untuk mengedit lembar gaya CSS pada penerbangan, dan menambahkan inline gaya tidak berbeda dari menggunakan tabel (konten tidak terlepas dari tata letak).

Selanjutnya, ketika sebuah tabel dihasilkan, konten (dalam variabel) sudah dipisahkan dari tata letak (dalam kode), membuatnya mudah untuk dimodifikasi.

Ini adalah salah satu alasan mengapa beberapa situs web yang dirancang dengan sangat baik (misalnya SO) masih menggunakan tata letak tabel.

Tentu saja, jika hasilnya perlu ditindaklanjuti melalui JavaScript, divs sepadan dengan masalahnya.

.3. Pengujian konversi cepat

Saat mencari tahu apa yang berfungsi untuk audiens tertentu, akan bermanfaat untuk dapat mengubah tata letak dengan berbagai cara untuk mencari tahu apa yang mendapatkan hasil terbaik. Layout berbasis CSS membuat segalanya jauh lebih mudah

.4. Solusi berbeda untuk masalah yang berbeda

Tabel tata letak biasanya tidak disetujui karena "semua orang tahu divs & CSS" adalah cara yang harus dilakukan.

Namun faktanya tetap bahwa tabel lebih cepat untuk dibuat, lebih mudah dipahami dan lebih kuat daripada kebanyakan tata letak CSS. (Ya, CSS bisa sekuat itu, tetapi pandangan cepat melalui internet pada browser yang berbeda dan resolusi layar menunjukkan itu tidak sering terjadi)

Ada banyak kerugian pada meja, termasuk perawatan, kurangnya fleksibilitas ... tetapi jangan membuang bayi dengan air mandi. Ada banyak kegunaan profesional untuk solusi yang cepat dan dapat diandalkan.

Beberapa waktu yang lalu, saya harus menulis ulang tata letak CSS yang bersih dan sederhana menggunakan tabel karena sebagian besar pengguna akan menggunakan versi IE yang lebih lama dengan dukungan yang sangat buruk untuk CSS

Saya, misalnya, sakit dan lelah dengan reaksi spontan itu, "Oh, tidak! Meja untuk tata letak!"

Adapun "itu tidak dimaksudkan untuk tujuan itu dan karena itu Anda tidak boleh menggunakannya dengan cara ini" kerumunan, bukankah itu kemunafikan? Apa pendapat Anda tentang semua trik CSS yang harus Anda gunakan untuk membuat darn berfungsi di sebagian besar browser? Apakah mereka dimaksudkan untuk tujuan itu?

Sylverdrag
sumber