Web'de Tablo Tasarım Kalıpları

Yayınlanan: 2022-03-10
Hızlı özet ↬ Tablolar, büyük miktarda veriyi satırlar ve sütunlar halinde görüntülemek için tasarlanmış bir tasarım kalıbıdır ve henüz gözden düşmemiş gibi görünmektedir, bu yüzden 2019'da web'de nasıl tablolar oluşturabileceğimize bir göz atalım.

Tablolar, büyük miktarda veriyi satırlar ve sütunlarda görüntülemek için bir tasarım modelidir ve kategorik nesneler üzerinde karşılaştırmalı analiz yapmak için onları verimli kılar. 2. yüzyıldan itibaren masalar bu amaçla kullanılmaya başlanmış ve dünya dijitalleşmeye başlayınca masalar da bizimle birlikte ortaya çıkmıştır.

Web'in verilerin tablo biçiminde görüntülenmesini desteklemesi kaçınılmazdı. HTML tabloları, tablo verilerini anlamsal ve yapısal olarak uygun bir şekilde sunar. Ancak, HTML tablolarındaki varsayılan stiller, şimdiye kadar gördüğünüz estetik açıdan en hoş şeyler değildir. İstenilen görsel tasarıma bağlı olarak, bu tabloları güzelleştirmek için CSS cephesinde biraz çaba gerekiyordu. On yıl önce, Smashing Magazine'de "En İyi 10 CSS Tablo Tasarımı" ile bir makale yayınlandı ve bu güne kadar hala çok fazla trafik almaya devam ediyor.

Web, son on yılda çok gelişti ve sitenizi veya uygulamanızı görüntülendiği görünüme uyarlamak her zamankinden daha uygun. Bununla birlikte, taviz vermeyen, üzerinde düşünülmüş tasarım seçimleri yapmaya devam etmeliyiz. ulaşılabilirlik. Tablolar yakın zamanda gözden düşmeyeceği için, 2019'da web'de tabloların nasıl oluşturulabileceğini görelim.

Atlamadan sonra daha fazlası! Aşağıdan okumaya devam edin ↓

Yalnızca CSS Seçenekleri

Veri kümeniz o kadar büyük değilse ve sayfalandırma ve sıralama gibi özellikler gerekli değilse JavaScript içermeyen bir seçenek düşünün. Büyük bir kitaplığın ek ağırlığı olmadan, tüm ekran boyutlarında iyi çalışan bazı güzel sonuçlar elde edebilirsiniz.

Ne yazık ki, erişilebilirlik cephesinde bazı DOM manipülasyonları için JavaScript'in yardımı olmadan, yalnızca birkaç CSS seçeneğimiz var. Ancak küçük veri kümeleri için genellikle yeterlidir.

Seçenek 1: Hiçbir Şey Yapma

Düşük çaba gerektiren bir senaryo ile başlayacağız. Verileriniz yalnızca birkaç sütun ve çok sayıda satır içeren bir tabloya sığıyorsa, böyle bir tablo başlangıçta mobil kullanıma hemen hemen hazırdır.

Dar ve geniş ekranlarda görüntülenen az sütunlu ve çok satırlı bir tablo
Dar ve geniş ekranlarda görüntülenen birkaç sütunlu ve çok satırlı bir tablo (Geniş önizleme)

Karşılaştığınız sorun, muhtemelen daha geniş ekranlarda çok fazla alana sahip olmaktır, bu nedenle, dar bir ekranda gerektiği gibi küçülmesine izin verirken, masanın maksimum max-width maksimum genişlikle "kapatmak" tavsiye edilebilir.

Kalem Tablosu #1'e bakın: CodePen'de (Chen Hui Jing) tarafından yazılmış birkaç sütun, çok sayıda satır.

Kalem Tablosu #1'e bakın: CodePen'de (Chen Hui Jing) tarafından yazılmış birkaç sütun, çok sayıda satır.

Bu tür bir kalıp, en iyi sonucu, verilerinizin kendisi satırlar ve metin satırları değilse verir. Sayısal veya kısa ifadeler ise, muhtemelen fazla bir şey yapmamaktan kurtulabilirsiniz.

2. Seçenek: Parşömene Stil Ver

David Bushell, yanıt veren tablolar için tekniğini 2012'de yazdı; bu, taşma başlatmayı ve kullanıcıların daha fazla veri görmek için kaydırmalarına izin vermeyi içeriyordu. Bunun tam olarak yanıt veren bir çözüm olmadığı iddia edilebilir, ancak teknik olarak kapsayıcı, görünümün genişliğine yanıt veriyor.

Tabloyu, kullanıcıların kaydırmada daha fazla veri olduğunu bildiği şekilde biçimlendirin.
Tabloları şekillendirirken, kullanıcıların daha fazla veri görmek için kaydırmasına izin verin. (Büyük önizleme)

Önce “temel” taşmaya bakalım. Temelde hava alıntıları kullandığımı hayal edin, çünkü kayan gölgeler için stil başka bir şey değil. Yine de, bu örnekte “temel”, tablonun hiçbir şekilde dönüştürülmediği gerçeğini ifade eder.

Kalem Tablosu #3'e bakın: CodePen'de Chen Hui Jing tarafından yazılan kaydırmaya (temel) stil verin.

Kalem Tablosu #3'e bakın: CodePen'de Chen Hui Jing tarafından yazılan kaydırmaya (temel) stil verin.

Kayan gölgeler yapmak için kullanılan bu teknik, Roma Komarov ve Lea Verou'nun sihir yaratmak için birbirlerinin fikirlerini karıştırmasından geliyor. İçeren öğede arka plan görüntüleri olarak birden çok degradenin (doğrusal ve radyal) kullanılmasına ve arka planı içeriğine göre konumlandırmak için arka plan background-attachment: local kullanılmasına bağlıdır.

Bu tekniğin güzel yanı, kayan gölgeleri desteklemeyen tarayıcılar için tabloyu normal şekilde kaydırabilmenizdir. Düzeni hiç bozmaz.

Başka bir kaydırma seçeneği, <tbody> öğesinin içeriğine yatay kaydırma uygularken tablo başlıklarını satır yapılandırmasından sütun yapılandırmasına çevirmek olabilir. Bu teknik, tablonun satırlarını sütunlara dönüştürmek için Flexbox davranışından yararlanır.

Kalem Tablosu #3'e bakın: CodePen'de Chen Hui Jing tarafından yazılan kaydırmaya (çevrilmiş başlıklar) stil verin.

Kalem Tablosu #3'e bakın: CodePen'de Chen Hui Jing tarafından yazılan kaydırmaya (çevrilmiş başlıklar) stil verin.

Tabloya display: flex uygulayarak, <thead> ve <tbody> , varsayılan olarak aynı esnek çizgide yan yana yerleştirilmiş olan esnek çocukları yapar.

Ayrıca <tbody> öğesini esnek bir kap haline getiriyoruz, böylece içindeki tüm <tr> öğelerini de tek bir esnek çizgide düzenlenmiş esnek çocuklar haline getiriyoruz. Son olarak, her tablo hücresinin ekranı, varsayılan table-cell yerine block şekilde ayarlanmalıdır.

Bu tekniğin avantajı, başlıkların sabit bir başlık efekti gibi her zaman görünümde olmasıdır, böylece kullanıcılar veri sütunlarında gezinirken bağlamı kaybetmezler. Unutulmaması gereken bir şey, bu tekniğin görsel ve kaynak sıralamasında bir tutarsızlıkla sonuçlanması ve bu da işleri biraz sezgisel hale getirmesidir.

Bazı JavaScript Üzerine Serpin

Daha önce bahsedildiği gibi, tablonun display değerlerinin değiştirilmesiyle değiştirilmesini içeren yerleşim seçeneklerinin bazen erişilebilirlik üzerinde olumsuz etkileri vardır ve bu da düzeltilmesi için bazı küçük DOM manipülasyonları gerektirir.

Ek olarak, Andrew Coyle'dan veri tabloları tasarlamaya gelince, sayfalandırma, sıralama, filtreleme vb. (etkinleştirmek için JavaScript gerektiren özellikler) gibi özellikler de dahil olmak üzere bir dizi kullanıcı deneyimi ipucu vardır.

Nispeten daha basit bir veri kümesiyle çalışıyorsanız, belki bu özelliklerden bazıları için kendi işlevlerinizi yazmak istersiniz.

Erişilebilirlik Düzeltmesi ile Bloklara Satır

Bildiğim kadarıyla, bu duyarlı veri tablosu tekniği, Chris Coyier'in 2011'de yazdığı CSS-Tricks "Duyarlı Veri Tabloları" makalesinden ortaya çıktı. O zamandan beri başkaları tarafından uyarlandı ve genişletildi.

Bu tekniğin özü, tablo öğesinin ve alt öğelerinin görüntüleme özelliğini dar bir görünüm alanında block şekilde değiştirmek için bir medya sorgusunu kullanmaktır.

Tablo satırları, dar görünüm pencerelerinde ayrı ayrı yığılmış bloklar haline gelir
Satırları bloklara daraltma (Büyük önizleme)

Dar bir ekranda, tablo başlıkları görsel olarak gizlenir, ancak yine de erişilebilirlik ağacında bulunur. Tablo hücrelerine veri nitelikleri uygulayarak, etiketin içeriğini HTML'de tutarken, veriler için etiketleri CSS aracılığıyla görüntüleyebiliriz. İşaretlemenin ve stillerin nasıl göründüğü için lütfen aşağıdaki CodePen'e bakın:

CodePen'de Chen Hui Jing tarafından yazılan Kalem Tablosu #2: Bloklar için satırlara bakın.

CodePen'de Chen Hui Jing tarafından yazılan Kalem Tablosu #2: Bloklar için satırlara bakın.

Orijinal yöntem, etiket metnini görüntüleyen sözde öğeye bir genişlik uygular, ancak bu, etiketinizin başlamak için ihtiyaç duyduğu alan miktarını bilmeniz gerektiği anlamına gelir. Yukarıdaki örnek, biraz farklı bir yaklaşım kullanır, bu sayede etiket ve veriler her biri kendi içeren bloklarının zıt taraflarındadır.

Esnek biçimlendirme bağlamında otomatik kenar boşlukları aracılığıyla böyle bir etki elde edebiliriz. Her bir <td> öğesi için display özelliğini flex olarak ayarlarsak, sözde öğeler, kaynak öğelerinin doğrudan çocuklarıymış gibi kutular oluşturduğundan, <td> td> öğesinin esnek çocukları haline gelirler.

Bundan sonra, hücrenin içeriğini hücrenin uzak ucuna itmek için sözde öğede margin-right: auto ayarını yapma meselesidir.

Dar görünüm alanı düzenini yapan başka bir yaklaşım, Grid ve display: contents content kombinasyonunu kullanmaktır. Destekleyen tarayıcılardaki display: contents şu anda erişilebilirlikle ilgili sorunları olduğunu ve bu hatalar giderilene kadar üretimde bu yöntemin kullanılmaması gerektiğini lütfen unutmayın.

Ama belki bunu bu hatalar çözüldükten sonra okuyorsunuz, bu durumda alternatif bir düzen seçeneği var.

CodePen'de Chen Hui Jing tarafından kaleme alınan Tablo #2: Satırlardan bloklara (alt) bakın.

CodePen'de Chen Hui Jing tarafından kaleme alınan Tablo #2: Satırlardan bloklara (alt) bakın.

Her <tr> öğesi display: grid ve her <td> öğesi display: contents olarak ayarlanır. Yalnızca bir ızgara kapsayıcısının doğrudan alt öğeleri, bir ızgara biçimlendirme bağlamına katılır; bu durumda, <td> öğesidir.

<td> display: contents uygulandığında, içeriğiyle “değiştirilir”, bu durumda sözde öğe ve <td> içindeki <span> bunun yerine ızgara çocukları olur.

Bu yaklaşımla ilgili sevdiğim şey, sözde öğelerin sütununu boyutlandırmak için max-content kullanma yeteneğidir, bu da sütunun her zaman en uzun etiketin genişliği olmasını sağlar, bunun için manuel olarak bir genişlik değeri atamamıza gerek kalmaz.

Gelecekte, min-content , max-content ve fit-content boyutlandırma değerleri (CSS Intrinsic & Extrinsic Size Modülü Düzey 3 kapsamındadır) genel width ve height değerleri olarak desteklendiğinde, döşeme için daha da fazla seçeneğimiz olacak şeyler çıktı.

Bu yaklaşımın dezavantajı, tablo hücrenizdeki içeriğin çevresinde ek <span> veya <p> yoksa, zaten yoksa, buna stil uygulamanın hiçbir yolu yoktur.

Basit Sayfalandırma

Bu örnek, bu CodePen'den Gjore Milevski tarafından div'ler yerine tablo satırlarında sayfalandırma yapmak için değiştirilen temel bir sayfalandırma uygulamasını göstermektedir. Önceki bölümde tartışılan "stil kaydırma" örneğinin bir uzantısıdır.

Kalem Tablo 4'e bakın: CodePen'de Chen Hui Jing tarafından yapılan basit sayfalandırma.

Kalem Tablo 4'e bakın: CodePen'de Chen Hui Jing tarafından yapılan basit sayfalandırma.

Düzen açısından bakıldığında, Flexbox, sayfalandırma öğelerini çeşitli görüntü alanı boyutlarında konumlandırmak için çok kullanışlıdır. Farklı proje tasarımlarının farklı gereksinimleri olacaktır, ancak Flexbox'ın çok yönlülüğü, bu farklılıkları buna göre karşılamanıza izin vermelidir.

Bu durumda, sayfalandırma sayfada ortalanır ve tablonun üstündedir. Geri ve ileri gezinme kontrolleri, daha geniş ekranlarda sayfa göstergelerinin her iki yanına yerleştirilmiştir, ancak dördü de dar ekranlarda sayfa göstergelerinin üzerinde görünür.

Bunu order özelliğinden yararlanarak yapabiliriz. İçeriğin görsel olarak yeniden sıralanması her zaman dikkate alınarak yapılmalıdır, çünkü bu özellik kaynak sırasını değiştirmez, yalnızca ekranlarda nasıl göründüğü.

Basit Sıralama

Bu örnek, Peter Noble tarafından hem metin hem de sayılar için bu kod parçacığından değiştirilen temel bir sıralama uygulamasını göstermektedir:

Kalem #Tablo 5'e bakın: CodePen'de Chen Hui Jing tarafından yapılan basit sıralama.

Kalem #Tablo 5'e bakın: CodePen'de Chen Hui Jing tarafından yapılan basit sıralama.

Hangi sütunun şu anda ve hangi sırayla sıralandığını gösteren bir tür göstergeye sahip olmak faydalı olacaktır. Bunu, daha sonra istediğiniz gibi şekillendirilebilen CSS sınıflarının eklenmesiyle yapabiliriz. Bu durumda, gösterge sembolleri, hedef başlığa tıklandığında değiştirilen sözde öğelerdir.

Basit Arama

Bu örnek, her tablo hücresinin tüm metin içeriğini yineleyen ve arama giriş alanıyla eşleşmeyen tüm satırları gizlemek için bir CSS sınıfı uygulayan temel bir filtreleme işlevidir.

Kalem Tablosu #6'ya bakın: CodePen'de Chen Hui Jing tarafından basit filtreleme.

Kalem Tablosu #6'ya bakın: CodePen'de Chen Hui Jing tarafından basit filtreleme.

Böyle bir uygulama nispeten saftır ve kullanım durumunuz bunu gerektiriyorsa, bunun yerine sütun başına arama yapmak mantıklı olabilir. Bu senaryoda, her bir girdi alanının kendi sütunlarında tablonun bir parçası olması iyi bir fikir olabilir.

Bırakın Bir Kütüphane İşlesin

Yukarıdaki JavaScript snippet'leri, daha büyük miktarda veri içeren tabloların, bu tabloların kullanıcıları için hayatı kolaylaştırmak için nasıl geliştirilebileceğini göstermeye hizmet eder. Ancak gerçekten büyük veri kümeleriyle, büyük tablolarınızı yönetmek için mevcut bir kitaplığı kullanmak muhtemelen mantıklı olabilir.

Sütun geçiş modeli, gerekli olmayan sütunların daha küçük ekranlarda gizlendiği bir modeldir. Normalde, yalnızca görünüm alanı dar olduğu için içeriği gizleme hayranı değilim, ancak Filament Group'tan Maggie Costello Wachs'ın bu yaklaşımı, kullanıcıların gizli sütunları geri değiştirmelerine izin veren bir açılır menü sağlayarak bu sorunumu çözüyor. görüş.

Yukarıdaki makale 2011'de yayınlandı, ancak Filament Group o zamandan beri Tablesaw olarak bilinen ve sıralama, satır seçimi, uluslararasılaştırma ve benzeri özellikleri içeren eksiksiz bir duyarlı tablo eklentileri paketi geliştirdi.

TableSaw'daki sütun geçiş özelliği de orijinal makaledeki örneklerin aksine artık jQuery'ye bağlı değil. Tablesaw, şu anda jQuery'ye bağımlılığı olmayan bulabildiğim tek kitaplıktan biri.

Toplama

Dışarıda sayısız tablo tasarım deseni var ve hangi yaklaşımı seçeceğiniz büyük ölçüde sahip olduğunuz veri türüne ve bu verilerin hedef kitlesine bağlıdır. Günün sonunda tablolar, verilerin düzenlenmesi ve sunumu için bir yöntemdir. Kullanıcılarınız için hangi bilgilerin en önemli olduğunu anlamak ve onların ihtiyaçlarına en iyi şekilde hizmet eden bir yaklaşıma karar vermek önemlidir.

Daha fazla okuma

  • “Yalnızca CSS Duyarlı Tablolar,” David Bushell
  • “Erişilebilir, Basit, Duyarlı Tablolar,” Davide Rizzo, CSS-Tricks
  • “Duyarlı Masa Düzeni,” Matt Smith
  • “Duyarlı Modeller: Tablolar,” Brad Frost
  • "Hey, Tabloları Kullanmak Hala Sorun Değil," Adrian Roseli
  • Adrian Roseli "Tablolar, CSS Görüntü Özellikleri ve ARIA"
  • “Veri Tabloları,” Heydon Pickering