Responsiv html-tabell på nett. Å snu telefonen er siste utvei

Det er ingen hemmelighet for enhver layoutdesigner at tabeller er onde. De er vanskelige å tilpasse og tilpasse. Hvis det fortsatt er ganske enkelt å male et bord på skrivebordsversjonen av nettstedet, går alt til helvete når det adaptive oppsettet begynner.

Faktisk er et av de mest effektive alternativene å lage horisontal rulling for bordet. Det er enkelt å gjøre, men dagens innlegg handler ikke om det. Jeg skal imidlertid vise deg.

Den første måten å tilpasse seg på

<div class = "table-wrap"> <tabell> <thead> <tr> <th> Service</ th> <th> Beskrivelse</ th> <th> Pris</ th> <th> Rabatt</ th> </ tr> </ thead> <kroppen> <tr> <td> Mobil layout</td> <td> Layout for telefoner</td> <td>$3000</td> <td> 50%</td> </ tr> <tr> <td> Lander på CMS WordPress</td> <td></td> <td>$3000</td> <td> 30%</td> </ tr> </ tbody> </ tabell> </ div>

Service Beskrivelse Pris Rabatt
Mobil layout Layout for telefoner $3000 50%
Lander på CMS WordPress Nettsideutvikling med admin. panel $3000 30%

Styling av hele greia (vi trenger hovedsakelig å style bord-innpakning).

1 2 3 4 5 6 7 8 9 10 11 12 13 .table-wrap (text-align: center; display: inline-block; background-color: #fff; padding: 2rem 2rem; color: # 000;) .table-wrap (overflow-y: scroll;))

Table-wrap (tekstjustering: center; display: inline-block; bakgrunnsfarge: #fff; polstring: 2rem 2rem; farge: # 000;) @mediaskjerm og (maks-bredde: 600px) (.table-wrap (overløp-y: rull;))

Som et resultat vil tabellen rulle opp til 600 piksler bred, men nettstedet vil ikke. Praktisk, men i dag vil jeg gjerne snakke om noe annet.
Jeg fant en annen interessant tilnærming til tabellrespons. Den består av å bruke dataattributter og pseudoklasser. Nå skal jeg vise deg alt.

Den andre måten å tilpasse seg på

Først, la oss endre markeringen:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Service Beskrivelse Pris Rabatt
Mobil layout Layout for telefoner $3000 50%
Lander på CMS WordPress Nettsideutvikling med admin. panel $3000 30%

Service Beskrivelse Pris Rabatt
Mobil layout Layout for telefoner $3000 50%
Lander på CMS WordPress Nettsideutvikling med admin. panel $3000 30%

Gi hver kolonne et attributt data-etikett, som vil være nyttig for oss i fremtiden.

Vi setter de grunnleggende stilene:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 body (text-align: center; padding-top: 10%; font-family: sans-serif; background-image: url ("bg.jpg"); background-size: cover; height: 100vh; color: #fff ;) .table-wrap (text-align: center; display: inline-block; background-color: #fff; padding: 2rem 2rem; color: # 000;) table (border: 1px solid #ccc; width: 100% ; margin: 0; padding: 0; border-collapse: collapse; border-spacing: 0;) table tr (border: 1px solid #ddd; padding: 5px;) table th, table td (padding: 10px; text-align : center; border-right: 1px solid #ddd;) table th (farge: #fff; bakgrunnsfarge: # 444; teksttransformasjon: store bokstaver; font-size: 14px; bokstavavstand: 1px;)

body (text-align: center; padding-top: 10%; font-family: sans-serif; background-image: url ("bg.jpg"); background-size: cover; height: 100vh; color: #fff ;) .table-wrap (text-align: center; display: inline-block; background-color: #fff; padding: 2rem 2rem; color: # 000;) table (border: 1px solid #ccc; width: 100% ; margin: 0; padding: 0; border-collapse: collapse; border-spacing: 0;) table tr (border: 1px solid #ddd; padding: 5px;) table th, table td (padding: 10px; text-align : center; border-right: 1px solid #ddd;) table th (farge: #fff; bakgrunnsfarge: # 444; teksttransformasjon: store bokstaver; font-size: 14px; bokstavavstand: 1px;)

Det ser ut som en vanlig tabell, selvfølgelig, som forskyver nettstedet med 320-420 piksler, vi vil se en horisontal rulling av hele nettstedet. Ikke poenget.

Hvordan fikse det? legg til stiler:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 @mediaskjerm og (maks. bredde: 600px) ( table (border: 0;) table thead (display: none;) table tr (margin-bottom: 10px; display: block; border-bottom: 2px solid #ddd;) table td (display: block; text-align: right ; font-size: 13px; border-bottom: 1px prikket #ccc; border-right: 1px solid transparent;) table td: last-child (border-bottom: 0;) table td: before (innhold: attr (data- label); flyte: venstre; tekst-transform: store bokstaver; font-weight: fet;))

@medieskjerm og (maks-bredde: 600px) (tabell (kant: 0;) table thead (display: none;) table tr (margin-bottom: 10px; display: block; border-bottom: 2px solid #ddd;) table td (display: block; text-align: right; font-size: 13px; border-bottom: 1px dotted #ccc; border-right: 1px solid transparent;) table td: last-child (border-bottom: 0; ) tabell td: før (innhold: attr (data-label); float: venstre; tekst-transform: store bokstaver; font-weight: fet;))

Her har vi gjort tabellradene blokkerte, fjernet kolonnenavnene og justert teksten til selve kolonnene. I sin tur bruker pseudoklassen : før vi legger til datoattributtene våre til venstre. Det blir slik:

Her er en annen penn:

Som du ser har vi gjort tabellradene om til en liten blokk som inneholder all informasjonen. Jeg tror dette bordresponsive alternativet er greit for små bord. Bruk den, venner!

I Aspro: Deretter, fra og med versjon 1.1.7, kan du tilpasse tabeller for mobilversjonen. Det er nødvendig å gjøre endringer i kildekoden til siden - legg til en klasse som er ansvarlig for tilpasningsevnen til tabeller.

En enkel tabell i mobilversjonen strekker seg utover siden.

For å gjøre tabellen responsiv, gå til å redigere siden der tabellen er lagt til. Gå deretter til kilderedigeringsmodus.

Før åpningsetiketten

legg til en tag med en klasse
.

Etter den avsluttende taggen

skrive en tag
.


...

Lagre endringene dine.

Nå ruller bordet og går ikke utover rammen.

Ved horisontal rulling går ikke tabellen utover grensene, men ved rulling til høyre i mobilversjonen åpnes en sidemeny. For å forhindre at menyen forstyrrer arbeidet med tabellen, må du gjøre endringer i sidekoden.

Du må legge til "swipeignore"-klassen i taggen

som vi la til tidligere. Som et resultat før taggen en brikke med klasser må registreres
.

...

Lagre endringene dine.

Nå, når du ruller tabellen til høyre, åpnes ikke sidemenyen, noe som forstyrret arbeidet med tabellen.

Du kan skjule sidemenyvisningen når du blar til høyre og på andre sider. Du må legge til "swipeignore"-klassen i taggen

blokk som du vil fjerne sidemenyvisningen for. Hvis taggen ikke har blitt tildelt en klasse, vil den ta formen
... Hvis taggen har
klasser allerede er lagt til, skriv deretter "swipeignore" atskilt med et mellomrom, for eksempel
.

Datatabeller gjør ikke responsiv design veldig bra. Dessverre er det dette øyeblikket. Responsiv design er alt som skal til for å tilpasse designet for å tilpasses ulike skjermstørrelser. Så hva skjer når skjermen er smalere enn minimum datatabellbredde? Du kan zoome ut og se hele tabellen, men teksten blir for liten til å leses. Eller du kan komme nærmere lesepunktet, men det vil trenge vertikal horisontal rulling og (trist) for å se tabellen. Datatabellene kan være ganske brede og må være det. Tabeller kan være fleksible i bredden (vekt = 100%), men innholdet i cellene kan bli så smalt at de ikke kan sees.

For å unngå dette ubehagelige øyeblikket, brukes adaptive tabeller. En slik tabell vil vise et horisontalt rullefelt hvis skjermen er for liten til å vise hele innholdet.

Hvordan lage en responsiv tabell med CSS

Legg til et beholderelement for å lage en responsiv tabell overløp-x: auto rundt

:

...

Merk. I OS X Lion (på Mac) er rullefelt skjult som standard og vises bare når de er i bruk (selv om satt til "overflyt: rull" eller auto).

Responsive nettsider har lenge sluttet å være en gimmick og de blir funnet stadig oftere. Tatt i betraktning de siste nyhetene med rangeringen av søkemotorer (hvis noen ikke vet, i søk fra en mobil enhet prioriteres responsive nettsteder), vil antallet slike nettsteder fortsette å vokse. Du kan være imot tilpasning for mobile enheter eller snakke for det, men faktum gjenstår: flere og flere kunder krever at nettstedet deres skal være responsivt og webmastere må gjøre det.

Et av hovedproblemene når du tilpasser et nettsted for forskjellige oppløsninger er tabeller. Spesielt hvis de har mye data. La oss ta en titt på to måter å lage en responsiv tabell på.

La oss først se hvordan tabellen ser ut:

Telefonmodell Pris RAM, GB Diagonal, tommer PPI Batteri, mAh
En pluss en 100 500 RUB 3 5.5 401 3100
OnePlus Two 100 500 RUB 4 5.5 401 3300
Oneplus x 100 500 RUB 3 5 441 2525

Responsive bordoppsett i bootstrap-stil

La oss si det rett ut: et slikt bord kan ikke kalles virkelig adaptivt. Det ser bra ut på mobil, ingenting stikker ut og oppsettet på siden "flyter" ikke. Denne metoden er godt egnet hvis tabeller er sjeldne på nettstedet ditt, og det er ingen vits i å koble til noen plugin og skrive flere stiler på grunn av dem. Denne metoden brukes av Bootstrap. Så hvordan implementeres dette?

Det er enkelt: bordet er pakket inn i en div med maksimal bredde på 100 % og overløp: auto.

...

Hvis bordet er langt, kan du også stille inn maksimal høyde og fikse bordhodet.

Resultatet, som følgende eksempel, kan sees på denne siden.

Layout i en virkelig responsiv tabell

Hvis du ofte har tabeller på nettstedet ditt, er det fornuftig å bruke Footable-plugin.

Først må du koble til plugin-en (last ned på GitHub eller koble til fra CDN), og også initialisere den:

Her må vi avklare noe: skriptet vurderer av en eller annen grunn ikke bredden på visningsporten, men bredden på tabellen. For å fikse dette, må du litt "modernisere" skriptet:

JQuery (funksjon () (jQuery (". Tabell"). Footable ((calculateWidthOverride: function () (retur (bredde: jQuery (vindu) .width ());)));))

I initialiseringen spesifiserer vi klassen til tabellen eller bare tabellkoden, hvis vi vil at alle tabellene på nettstedet skal være responsive.

...
Telefonmodell Pris RAM, GB Diagonal, tommer PPI Batteri, mAh

Hva betyr alt dette? Nettbrettene vil skjule kolonnene "RAM", "Diagonal", "PPI" og "Batteri". Ved nedgang til telefoner vil kolonnen "Pris" også bli med.

Knekkpunkter kan spesifiseres i initialisering:

JQuery (function () (jQuery (". Table"). Footable ((calculateWidthOverride: function () (retur (width: jQuery (window) .width ());), bruddpunkter: (mobil: 0, nettbrett: 720, skrivebord: 1024)))))

Dette betyr at i området 0-720 gjelder regelen for mobil, 720-1024 for nettbrett og over 1024 for datamaskin. Det er ingenting som hindrer deg i å lage enda flere regler, om nødvendig.

Du kan også utvide en kolonne som standard. For å gjøre dette, spesifiser dataattributtet data-expanded = "true"

... ...
En pluss en 100 500 RUB 3 5.5 401 3100

Pluginens muligheter slutter ikke der, men for å lage responsive tabeller er dette ganske nok. Vi vil vurdere resten av mulighetene neste gang.

Windows: Internet Explorer 10.0+, Firefox 1.5+, Google Chrome, Opera 9.5+, Safari 3.1+, SeaMonkey 1.0+ [1].

Linux: Firefox 1.5+, Google Chrome / Chromium, Opera 9.5+, SeaMonkey 1.0+ [2].

Hvis HTML-tabellen inneholder for mye data, blir den bredere enn tilgjengelig plass på siden og begynner å gå utover den. For å rette opp situasjonen kan du legge til horisontal rulling i tabellen. Eksempel:

1 2 3 4 5 6 7 8 9 10
Tabelldata_1 Tabelldata_2 Tabelldata_3 Tabelldata_4 Tabelldata_5 Tabelldata_6 Tabelldata_7 Tabelldata_8 Tabelldata_9 Tabelldata_10

HTML / XHTML. Kode:

<bord>

<tr>

<th>1</ th>

<th>2</ th>

<th>3</ th>

<th>4</ th>

<th>5</ th>

<th>6</ th>

<th>7</ th>

<th>8</ th>

<th>9</ th>

<th>10</ th>

</ tr>

<tr>

<td> Tabelldata_1</ td>

<td> Tabelldata_2</ td>

<td> Tabell_data_3</ td>

<td> Tabell_data_4</ td>

<td> Tabell_data_5</ td>

<td> Tabell_data_6</ td>

<td> Tabell_data_7</ td>

<td> Tabell_data_8</ td>

<td> Tabell_data_9</ td>

<td> Tabelldata_10</ td>

</ tr>

</ bord>

bord(display: blokk; overløp-x: auto;)

/ * Ekstra CSS, bare for å få eksemplet til å se pent ut: * /

bord(grense-kollaps: kollaps;)

tabell td, th(polstring: 10px; kantlinje: 1px # 000 solid;)

Merk: CSS-eiendom display: blokk gjør at bordet bare tar så mye plass i bredden som det trenger for å passe til dataene uten visuell forvrengning. Ikke mer uten å strekke seg over hele bredden av den tilgjengelige plassen på siden. Selv om CSS-koden er lagt til bredde: 100 %... Eksempel:

1 2 3
Tabelldata_1 Tabelldata_2 Tabelldata_3

Aliosque subditos et tema

Justere et absolutt plassert element horisontalt til midten ved hjelp av CSS. Eksempel: HTML / XHTML. Kode:

CSS. Kode: .eksempel (posisjon: relativ; venstre: 0px; topp: 0px; høyde: 90px; bredde: 100%; flyte: venstre; polstring: 10px; kantlinje: 1px #ccc solid; bakgrunn: #fafafa; -moz-box -sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box;) .example img (posisjon: absolutt; venstre: 0px; høyre: 0px; margin: 0px auto; width: 68px;) Eksemplet justerer et absolutt posisjonert img-element til midten, men generelt fungerer denne metoden for horisontal senterjustering med andre, både inline- og blokk-absolutt posisjonerte elementer. Bredden til et absolutt plassert element kan også være i prosent eller i andre enheter. CSS-egenskapene til beholderen (i eksemplet, eksempelet), der det senterjusterte elementet er plassert, kan være svært forskjellige, senterjusteringen lages ved å bruke stiler som er direkte relatert til elementet: .example img (posisjon : absolutt; venstre: 0px; høyre: 0px; margin: 0px auto;). [1] Og også i Netscape 8.01+, Mozilla 1.5+. [2] Og også i Netscape 8.01+, Mozilla 1.5+.

Det er ingen "float: bottom"-egenskap i CSS, men effekten kan oppnås på flere andre måter. Eksempel: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Link 1 Link 2 Link 3 Flytende nederst HTML / XHTML. Kode:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Flytebunn
CSS. Kode: .box1 (posisjon: relativ; topp: 0px; venstre: 0px; flyte: venstre; høyde: auto; bredde: 100 %;) .content1 (posisjon: relativ; topp: 0px; venstre: 0px; flyte: venstre; høyde: auto; bredde: 100%;) .left1 (posisjon: relativ; topp: 0px; venstre: 0px; flyte: venstre; høyde: auto; bredde: 64%;) .menu1 (posisjon: relativ; topp: 0px; venstre: 0px; float: venstre; høyde: auto; bredde: 36%;) .bottom1 (posisjon: absolutt; bunn: 0px; høyre: 0px;) / * Ekstra CSS, bare for å få eksemplet til å se litt ut som * / . box1 (farge: #ddd; text-align: center;) .content1 (bakgrunn: #bbb;) .left1 (min-høyde: 100px; polstring: 2%; text-align: justify; bakgrunn: # 006; - moz -box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box;) .menu1 (polstring: 2%; flytende : høyre; bakgrunn: # 060; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box;) . menu1 p (posisjon: relativ; topp: 0px; venstre: 0px; flyte: venstre; heig ht: auto; bredde: 100 %; polstring: 0px; margin: 0px;) .menu1 a (farge: #ddd; tekst-dekorasjon: ingen;) .menu1 a: hover (tekst-dekorasjon: understrek;) .bottom1 (utfylling: 2%; farge: #eee; bakgrunn: # 600;) Alt innholdet på nettsiden er i containerboksen1. Inne i den er det to div: 1. innhold1 med det faktiske innholdet til venstre og menyen til høyre. 2.bunn1 etter innhold1.