{"id":275,"date":"2023-06-17T12:13:16","date_gmt":"2023-06-17T10:13:16","guid":{"rendered":"https:\/\/user0.gesem.es\/blog\/?page_id=275"},"modified":"2023-06-20T09:02:29","modified_gmt":"2023-06-20T07:02:29","slug":"taules","status":"publish","type":"page","link":"https:\/\/user0.gesem.es\/blog\/taules\/","title":{"rendered":"Taules"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Les taules s&#8217;han fet servir molt en el desenvolupament web per a maquetar contingut, tal i com far\u00edem en un Word per posar coses a dreta i esquerra. Per\u00f2 aquesta no \u00e9s la seva finalitat i, per tant, no les farem servir mai amb la finalitat de canviar la disposici\u00f3 dels elements, sin\u00f3 amb una finalitat informativa, sem\u00e0ntica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sem\u00e0nticament, les taules permeten mostrar informaci\u00f3 de manera estructurada i accessible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El navegador llegeix l&#8217;HTML de les taules i les representa visualment, per\u00f2 podem controlar-ne l&#8217;aparen\u00e7a amb CSS. A les cel\u00b7les de les taules podem afegir qualsevol tipus de contingut: text, imatges, altres taules,&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per crear taules farem servir les seg\u00fcent etiquetes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>table<\/em>  &#8211; per indicar on comen\u00e7a i on acaba la taula<\/li>\n\n\n\n<li><em>tr<\/em> &#8211; table row: per indicar on comen\u00e7a i on acaba cada fila<\/li>\n\n\n\n<li><em>td<\/em> &#8211; table description: per indicar on comen\u00e7a i acaba un text descriptiu (cel\u00b7la)<\/li>\n\n\n\n<li><em>th<\/em> &#8211; table heading: per indicar on comen\u00e7a i on acaba un text que fa de cap\u00e7alera (cel\u00b7la d&#8217;encap\u00e7alament)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A m\u00e9s, podem fer servir altres etiquetes com:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>thead<\/em> &#8211; per indicar on comenn\u00e7a i on acaba aquella fila o files que formen la cap\u00e7alera de la taula<\/li>\n\n\n\n<li><em>tbody<\/em> &#8211; per indicar on comen\u00e7a i on acaba aquella fila o files que formen el cos de la taula<\/li>\n\n\n\n<li>tfoot &#8211; per indicar on comen\u00e7a i on acaba aquella fila o files que formen el peu de la taula<\/li>\n\n\n\n<li><em>caption<\/em> &#8211; per posar un text descriptiu del contingut de la taula (un resum)<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;table&gt;\n   &lt;caption&gt;Horaris&lt;\/caption&gt;\n   &lt;thead&gt;\n      &lt;tr&gt;\n          &lt;th&gt;L\u00ednia&lt;\/th&gt;\n          &lt;th&gt;Dest\u00ed&lt;\/th&gt;\n          &lt;th&gt;Hora&lt;\/th&gt;\n          &lt;th&gt;Preu&lt;\/th&gt;\n      &lt;\/tr&gt;\n   &lt;\/thead&gt;\n   &lt;tbody&gt;\n        &lt;tr&gt;\n           &lt;td&gt;S1&lt;\/td&gt;\n           &lt;td&gt;Barcelona&lt;\/td&gt;\n           &lt;td&gt;09:00&lt;\/td&gt;\n           &lt;td&gt;1\u20ac&lt;\/td&gt;\n       &lt;\/tr&gt;\n       &lt;tr&gt;\n          &lt;td&gt;S2&lt;\/td&gt;\n          &lt;td&gt;Sabadell&lt;\/td&gt;\n          &lt;td&gt;09:10&lt;\/td&gt;\n          &lt;td&gt;0,5\u20ac&lt;\/td&gt;\n       &lt;\/tr&gt;\n    &lt;\/tbody&gt;\n&lt;\/table&gt;<\/code><\/pre>\n\n\n\n<table>\n   <caption>Horaris<\/caption>\n   <thead>\n      <tr>\n          <th>L\u00ednia<\/th>\n          <th>Dest\u00ed<\/th>\n          <th>Hora<\/th>\n          <th>Preu<\/th>\n      <\/tr>\n   <\/thead>\n   <tbody>\n        <tr>\n           <td>S1<\/td>\n           <td>Barcelona<\/td>\n           <td>09:00<\/td>\n           <td>1\u20ac<\/td>\n       <\/tr>\n       <tr>\n          <td>S2<\/td>\n          <td>Sabadell<\/td>\n          <td>09:10<\/td>\n          <td>0,5\u20ac<\/td>\n       <\/tr>\n    <\/tbody>\n<\/table>\n\n\n\n<p class=\"wp-block-paragraph\">Podem estilar les taules com ho fem amb qualsevol altre element d&#8217;HTML. Haur\u00e0s de tenir en compte:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Les taules (table) tenen, per defecte, el tipus de display \u00abtable\u00bb i la propietat \u00abborder-collapse\u00bb amb el valor \u00abseparate\u00bb (aix\u00f2 fa que les cel\u00b7les estiguin separades unes de les altres). La majoria de reset de CSS estableixen el valor de border-collapse a \u00abcollapse\u00bb<\/li>\n\n\n\n<li>Les files (tr) tenen, per defecte, el tipus de display \u00abtable-row\u00bb<\/li>\n\n\n\n<li>Les cel\u00b7les (td i th) tenen, per defecte, el tipus de display \u00abtable-cell\u00bb<\/li>\n\n\n\n<li>La cap\u00e7alera (thead) t\u00e9 per defecte el tipus de display \u00abtable-header-group\u00bb<\/li>\n\n\n\n<li>El cos (tbody) t\u00e9 per defecte el tipus de display \u00abtable-row-group\u00bb<\/li>\n\n\n\n<li>El resum (caption) t\u00e9 per defecte el tipus de diplay \u00abtable-caption\u00bb<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Aix\u00f2 ho has de tenir en compte, perqu\u00e8 hi haur\u00e0 algunes propietats que no podr\u00e0s aplicar a aquests elements. Per exemple: Les files no podran tenir ni border ni margin<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El n\u00famero de cel\u00b7les de cada fila ha de ser sempre el mateix per a que el navegador sigui capa\u00e7 de fer-la visible. Si necessitem fusionar cel\u00b7les podem fer servir els atributs \u00ab<code>colspan<\/code>\u00bb i \u00ab<code>rowspan<\/code>\u00ab<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>colspan indica que una cel\u00b7la s&#8217;expandeix a altres columnes<\/li>\n\n\n\n<li>rowspan indica que una cel\u00b7la s&#8217;expandeix a altres files<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;table&gt;\n   &lt;caption&gt;Horaris&lt;\/caption&gt;\n   &lt;thead&gt;\n      &lt;tr&gt;\n          &lt;th&gt;L\u00ednia&lt;\/th&gt;\n          &lt;th&gt;Dest\u00ed&lt;\/th&gt;\n          &lt;th&gt;Hora&lt;\/th&gt;\n          &lt;th&gt;Preu&lt;\/th&gt;\n          &lt;th colspan=\"2\"&gt;Descomptes&lt;\/th&gt;\n      &lt;\/tr&gt;\n   &lt;\/thead&gt;\n   &lt;tbody&gt;\n        &lt;tr&gt;\n           &lt;td rowspan=\"2\"&gt;S1&lt;\/td&gt;\n           &lt;td&gt;Barcelona&lt;\/td&gt;\n           &lt;td&gt;09:00&lt;\/td&gt;\n           &lt;td&gt;1\u20ac&lt;\/td&gt;\n           &lt;td&gt;CJ* - 50%&lt;\/td&gt;\n           &lt;td&gt;FM** - 33%&lt;\/td&gt;\n       &lt;\/tr&gt;\n       &lt;tr&gt;\n          &lt;!--&lt;td&gt;aquesta cel\u00b7la no cal&lt;\/td&gt;--&gt; \n          &lt;td&gt;Sabadell&lt;\/td&gt;\n          &lt;td&gt;09:10&lt;\/td&gt;\n          &lt;td&gt;0,5\u20ac&lt;\/td&gt;\n          &lt;td colspan=\"2\"&gt;Sense descomptes&lt;\/td&gt;\n          &lt;!--&lt;td&gt;aquesta cel\u00b7la no cal&lt;\/td&gt;--&gt;\n       &lt;\/tr&gt;\n    &lt;\/tbody&gt;\n    &lt;tfoot&gt;\n       &lt;tr&gt;\n         &lt;td colspan=\"6\"&gt;* CJ: Carnet Jove | ** FM: Familia nombrosa&lt;\/td&gt;\n       &lt;\/tr&gt;\n    &lt;\/tfoot&gt;\n&lt;\/table&gt;<\/code><\/pre>\n\n\n\n<table>\n   <caption>Horaris<\/caption>\n   <thead>\n      <tr>\n          <th>L\u00ednia<\/th>\n          <th>Dest\u00ed<\/th>\n          <th>Hora<\/th>\n          <th>Preu<\/th>\n          <th colspan=\"2\">Descomptes<\/th>\n      <\/tr>\n   <\/thead>\n   <tbody>\n        <tr>\n           <td rowspan=\"2\">S1<\/td>\n           <td>Barcelona<\/td>\n           <td>09:00<\/td>\n           <td>1\u20ac<\/td>\n           <td>CJ* &#8211; 50%<\/td>\n           <td>FM** &#8211; 33%<\/td>\n       <\/tr>\n       <tr>\n          <!--<td>aquesta cel\u00b7la no cal<\/td>--> \n          <td>Sabadell<\/td>\n          <td>09:10<\/td>\n          <td>0,5\u20ac<\/td>\n          <td colspan=\"2\">Sense descomptes<\/td>\n          <!--<td>aquesta cel\u00b7la no cal<\/td>-->\n       <\/tr>\n    <\/tbody>\n    <tfoot>\n       <tr>\n         <td colspan=\"6\">* CJ: Carnet Jove | ** FM: Familia nombrosa<\/td>\n       <\/tr>\n    <\/tfoot>\n<\/table>\n\n\n\n<p class=\"peu wp-block-paragraph\">En aquest exemple, hem fet servir rowspan a la columna \u00abL\u00ednia\u00bb i colspan a la fila del tren de les 9.10 i a la cap\u00e7alera. Tamb\u00e9 hem fusionat les cel\u00b7les del tfoot fent servir colspan.<\/p>\n\n\n\n<div class=\"wp-block-group exercici\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">Exercici<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Descarrega&#8217;t aquest arxiu zip: <a href=\"http:\/\/user0.gesem.es\/taules.zip\" data-type=\"URL\" data-id=\"http:\/\/user0.gesem.es\/taules.zip\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/user0.gesem.es\/taules.zip<\/a>. A dins trobar\u00e0s un document html, una fulla d&#8217;estils i un reset. Fes una taula en el document HTML amb la  informaci\u00f3 de cursos d&#8217;aquesta p\u00e0gina:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.golferichs.org\/categoria-curs\/estiu\/\">https:\/\/www.golferichs.org\/categoria-curs\/estiu\/<\/a><\/p>\n\n\n\n<p class=\"peu wp-block-paragraph\">Si us indica que el fitxer no \u00e9s segur, \u00e9s perqu\u00e8 no hi ha un certificat de seguretat, per\u00f2 podeu dir-li que el descarregui tranquilament.<\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Fer taules responsive<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les taules s\u00f3n molt \u00fatils per poder consultar informaci\u00f3, per\u00f2 a vegades s&#8217;adapten malament a dispositius petits. Una mica de CSS i alguns canvis a l&#8217;HTML s\u00f3n suficients per a solucionar aix\u00f2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aquest \u00e9s un exemple de visualitzaci\u00f3 d&#8217;una taula adaptada a diferents mides de dispositiu (el trobar\u00e0s a <a rel=\"noreferrer noopener\" href=\"https:\/\/codepen.io\/AllThingsSmitty\/pen\/MyqmdM\" target=\"_blank\">https:\/\/codepen.io\/AllThingsSmitty\/pen\/MyqmdM<\/a>): <\/p>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-8f761849 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"444\" height=\"555\" src=\"https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-16.png\" alt=\"\" class=\"wp-image-321\" srcset=\"https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-16.png 444w, https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-16-240x300.png 240w\" sizes=\"auto, (max-width: 444px) 100vw, 444px\" \/><figcaption class=\"wp-element-caption\">taula en dispositius petits<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"942\" height=\"487\" src=\"https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-17.png\" alt=\"\" class=\"wp-image-322\" srcset=\"https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-17.png 942w, https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-17-300x155.png 300w, https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-17-768x397.png 768w\" sizes=\"auto, (max-width: 942px) 100vw, 942px\" \/><figcaption class=\"wp-element-caption\">taula en dispositius grans<\/figcaption><\/figure>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Quina difer\u00e8ncia hi ha entre una p\u00e0gina i una altra?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primer de tot, cal tenir en compte que el codi HTML \u00e9s el mateix per a les dues visualitzacions. Tota la feina la fa el CSS:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Fent canvis al display (display:block) s&#8217;ha fet que les cel\u00b7les es vegin una a sota de l&#8217;altre i que les files  es puguin separar entre elles (display:block; margin-bottom:10px)<\/li>\n\n\n\n<li>Fent servir pseudo-elements (::<em>before<\/em> o ::<em>after<\/em>) han posat a cada cel\u00b7la (mitjan\u00e7ant la propietat <em>content<\/em>) informaci\u00f3 de la columna a la que pertany (\u00abAccount\u00bb, \u00abDue Date\u00bb,&#8230;). Aquesta informaci\u00f3 la obtenen de l&#8217;<strong>atribut data <\/strong>de cada cel\u00b7la.<\/li>\n\n\n\n<li>Eliminant el display (<em>display:none<\/em>) de la cap\u00e7alera de la taula (<em>thead<\/em>) l&#8217;han amagat  en m\u00f2bils (b\u00e9, a l&#8217;exemple ho fan una mica m\u00e9s complicat, per\u00f2 aix\u00f2 ja serviria)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Atribut data<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Un atribut que es fa servir molt en desenvolupament web \u00e9s l&#8217;atribut \u00abdata\u00bb. Aquest atribut es forma amb el prefix \u00abdata\u00bb i un sufix amb una paraula clau. Aquesta paraula clau ens la podem inventar, nom\u00e9s hem de tenir en compte que ens hem de limitar a car\u00e0cters anglesos (ni \u00e7, ni \u00f1,&#8230;).  Exemple: data-content, data-label, data-id,&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;atribut data el fem servir molt quan programem amb javascript. Tamb\u00e9 el fem servir en CSS per recuperar informaci\u00f3 de l&#8217;HTML i estilar-la.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el HTML podem afegir aquest atribut a qualsevol element. A l&#8217;exemple ho fan aix\u00ed:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"775\" height=\"176\" src=\"https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-18.png\" alt=\"\" class=\"wp-image-323\" srcset=\"https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-18.png 775w, https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-18-300x68.png 300w, https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-18-768x174.png 768w\" sizes=\"auto, (max-width: 775px) 100vw, 775px\" \/><figcaption class=\"wp-element-caption\">En aquest cas han fet servir l&#8217;atribut data amb el sufix \u00ablabel\u00bb (data-label)<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Al CSS podem recuperar aquest valor. A l&#8217;exemple ho fan aix\u00ed:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"407\" height=\"195\" src=\"https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-19.png\" alt=\"\" class=\"wp-image-324\" srcset=\"https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-19.png 407w, https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-19-300x144.png 300w\" sizes=\"auto, (max-width: 407px) 100vw, 407px\" \/><figcaption class=\"wp-element-caption\">El valor d&#8217;un atribut es pot obtenir amb la funci\u00f3 attr(). Entre par\u00e8ntesi posem el nom de l&#8217;atribut, en aquest cas <em>attr(data-label)<\/em> <\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Mitjan\u00e7ant media queries podem limitar els dispositius on volem que la taula canvii de format:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"574\" height=\"527\" src=\"https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-20.png\" alt=\"\" class=\"wp-image-325\" srcset=\"https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-20.png 574w, https:\/\/user0.gesem.es\/blog\/wp-content\/uploads\/2023\/06\/imagen-20-300x275.png 300w\" sizes=\"auto, (max-width: 574px) 100vw, 574px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-group exercici\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">Exercici<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fes que la teva taula s&#8217;adapti correctament a dispositius m\u00f2bils fent servir aquest m\u00e8tode<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les taules s&#8217;han fet servir molt en el desenvolupament web per a maquetar contingut, tal i com far\u00edem en un Word per posar coses a dreta i esquerra. Per\u00f2 aquesta no \u00e9s la seva finalitat i, per tant, no les farem servir mai amb la finalitat de canviar la disposici\u00f3 dels elements, sin\u00f3 amb una&hellip; <a class=\"more-link\" href=\"https:\/\/user0.gesem.es\/blog\/taules\/\">Continueu llegint <span class=\"screen-reader-text\">Taules<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-275","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/user0.gesem.es\/blog\/wp-json\/wp\/v2\/pages\/275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/user0.gesem.es\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/user0.gesem.es\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/user0.gesem.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/user0.gesem.es\/blog\/wp-json\/wp\/v2\/comments?post=275"}],"version-history":[{"count":9,"href":"https:\/\/user0.gesem.es\/blog\/wp-json\/wp\/v2\/pages\/275\/revisions"}],"predecessor-version":[{"id":327,"href":"https:\/\/user0.gesem.es\/blog\/wp-json\/wp\/v2\/pages\/275\/revisions\/327"}],"wp:attachment":[{"href":"https:\/\/user0.gesem.es\/blog\/wp-json\/wp\/v2\/media?parent=275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}