{"id":641,"date":"2022-01-12T22:08:22","date_gmt":"2022-01-12T21:08:22","guid":{"rendered":"http:\/\/blogsaverroes.juntadeandalucia.es\/davidcervera\/?page_id=641"},"modified":"2022-02-18T11:11:24","modified_gmt":"2022-02-18T10:11:24","slug":"diferencias-entre-el-selector-class-y-el-selector-id","status":"publish","type":"page","link":"https:\/\/blogsaverroes.juntadeandalucia.es\/davidcervera\/html\/diferencias-entre-el-selector-class-y-el-selector-id\/","title":{"rendered":"Selectores CSS y diferencias entre el selector Class y el selector Id"},"content":{"rendered":"<p id=\"yui_3_17_2_1_1645091743916_25931\">La llegada de&nbsp;<a id=\"yui_3_17_2_1_1645091743916_25932\" href=\"https:\/\/damiandeluca.com.ar\/html5-llega-a-su-estado-de-recomendacion-del-w3c\"><strong>HTML5<\/strong><\/a>, ha sido acompa\u00f1ada por un conjunto de&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Learn\/JavaScript\/Client-side_web_APIs\/Introduction\" target=\"_blank\" rel=\"noopener noreferrer\">APIs de&nbsp;<strong>JavaScript<\/strong><\/a>&nbsp;muy \u00fatiles para resolver muchas situaciones del trabajo cotidiano de los desarrolladores Web.&nbsp;En este conjunto se encuentra&nbsp;<strong><a href=\"https:\/\/www.w3.org\/TR\/selectors-api\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Selectors API (abre en una nueva pesta\u00f1a)\">Selectors API<\/a><\/strong>&nbsp;que ya ha sido estandarizada por el W3C y ya se encuentra en desarrollo el&nbsp;<strong><a href=\"https:\/\/www.w3.org\/TR\/selectors-api2\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Nivel 2 (abre en una nueva pesta\u00f1a)\">Nivel 2<\/a><\/strong>.<\/p>\n<p>Entre las ventajas que introduce esta API hay que destacar la&nbsp;<strong><em>posibilidad de utilizar selectores<\/em><\/strong>, tal como lo hacemos con CSS con los m\u00e9todos&nbsp;<strong>querySelector()<\/strong>&nbsp;y&nbsp;<strong>querySelectorAll()<\/strong>.<\/p>\n<h2 id=\"yui_3_17_2_1_1645091743916_11357\"><strong id=\"yui_3_17_2_1_1645091743916_11356\"><span id=\"yui_3_17_2_1_1645091743916_13385\">Recordamos que son los selectores<\/span><\/strong><\/h2>\n<p id=\"yui_3_17_2_1_1645091743916_11413\"><strong id=\"yui_3_17_2_1_1645091743916_13407\"><strong id=\"yui_3_17_2_1_1645091743916_13406\">Los selectores CSS, que son las estructuras que nos permiten asignar las propiedades a los elementos HTML<\/strong><br \/>\n<\/strong><\/p>\n<p>Partimos de este c\u00f3digo<\/p>\n<pre>body { font-family: sans-serif; }<\/pre>\n<p id=\"yui_3_17_2_1_1645091743916_15621\"><span id=\"yui_3_17_2_1_1645091743916_15620\"><span id=\"yui_3_17_2_1_1645091743916_15619\"><span id=\"yui_3_17_2_1_1645091743916_15618\">Las reglas CSS se componen principalmente de dos elementos: selectores y declaraciones<\/span>. En este caso, el selector ser\u00eda \u00abbody\u00bb y la declaraci\u00f3n \u00abfont-family: sans-serif\u00bb.<br \/>\n<\/span><\/span><\/p>\n<p><strong id=\"yui_3_17_2_1_1645091743916_11206\"><strong id=\"yui_3_17_2_1_1645091743916_11205\"><span id=\"yui_3_17_2_1_1645091743916_15617\">Tipos de Selectores CSS<\/span><br id=\"yui_3_17_2_1_1645091743916_11252\"><\/strong><\/strong><\/p>\n<p id=\"yui_3_17_2_1_1645091743916_11253\"><strong>El selector universal (*)<\/strong>&nbsp;es aquel que sirve para apuntar a todos los elementos HTML del documento. Por ejemplo, podr\u00edamos crear una regla en la que se defina que el tama\u00f1o de fuente de todos los elementos HTML del documento sea de 12px:<\/p>\n<pre>* {&nbsp; &nbsp; &nbsp;font-size: 12px;&nbsp;}<\/pre>\n<p>Si est\u00e1s comenzando a aprender CSS, puede que este selector te parezca muy \u00fatil. Sin embargo, te recomiendo que l<strong>o utilices lo menos posible<\/strong>, ya que puede darte problemas a medida que aumentan tus l\u00edneas de c\u00f3digo CSS. En su lugar, es m\u00e1s adecuado que emplees selectores m\u00e1s espec\u00edficos.<\/p>\n<p id=\"yui_3_17_2_1_1645091743916_10757\"><strong id=\"yui_3_17_2_1_1645091743916_10820\">Selectores de etiqueta.&nbsp;<\/strong><span id=\"yui_3_17_2_1_1645091743916_10866\">Los selectores de etiqueta, tambi\u00e9n denominados selectores de tipo, son aquellos en los que se indica el nombre de la etiqueta HTML a la que se le asignar\u00e1 una propiedad CSS. Por ejemplo, podemos aplicar un tama\u00f1o de un 10px rem y un color azul a todos los encabezados h2 de nuestro documento empleando la siguiente regla:<\/span><\/p>\n<pre id=\"yui_3_17_2_1_1645091743916_10844\"><span id=\"yui_3_17_2_1_1645091743916_10856\">h2 {&nbsp;<\/span><span id=\"yui_3_17_2_1_1645091743916_10934\">&nbsp;font-size: 10px;&nbsp;<\/span><span id=\"yui_3_17_2_1_1645091743916_11129\">&nbsp; color: blue;&nbsp;&nbsp;<\/span><span id=\"yui_3_17_2_1_1645091743916_11155\">}<\/span><\/pre>\n<p id=\"yui_3_17_2_1_1645091743916_10844\"><span id=\"yui_3_17_2_1_1645091743916_16339\"><strong id=\"yui_3_17_2_1_1645091743916_19543\">Selectores de ID y de CLASE.<\/strong>&nbsp;Como ya sabes, los elementos HTML pueden tener clases o identificadores, las cuales se definen dentro de las etiquetas HTML mediante las estructuras&nbsp;<strong id=\"yui_3_17_2_1_1645091743916_19785\">class=\u00bbnombre-clase\u00bb e id=\u00bbnombre-id\u00bb<\/strong>. La utilidad principal de las clases e identificadores es la de posibilitar la selecci\u00f3n de elementos concretos de HTML mediante CSS. Pongamos un ejemplo:<\/span><\/p>\n<p><iframe src=\"https:\/\/codepen.io\/dcerveraayllon\/embed\/xxPpEdE?default-tab=html%2Cresult\" width=\"100%\" height=\"300\" frameborder=\"no\" scrolling=\"no\"><br \/>\nSee the Pen <a href=\"https:\/\/codepen.io\/dcerveraayllon\/pen\/xxPpEdE\"><br \/>\nUntitled<\/a> by David Cervera (<a href=\"https:\/\/codepen.io\/dcerveraayllon\">@dcerveraayllon<\/a>)<br \/>\non <a href=\"https:\/\/codepen.io\">CodePen<\/a>.<br \/>\n<\/iframe><br \/>\n&nbsp;En el anterior ejemplo, hemos asignado a todos los p\u00e1rrafos la clase mi-parrafo. A continuaci\u00f3n, hemos definido mediante CSS que todos los elementos HTML que tengan esta clase tendr\u00e1n un tama\u00f1o de 1 rem y un tipo de letra Times New Roman. Como se puede observar,&nbsp;<strong id=\"yui_3_17_2_1_1645091743916_25150\">el selector de clase se establece con la nomenclatura .nombre-clase<\/strong>, es decir, poniendo un punto y a continuaci\u00f3n el nombre de la clase.<\/p>\n<p id=\"yui_3_17_2_1_1645091743916_10844\"><span id=\"yui_3_17_2_1_1645091743916_25391\">Por otro lado, hemos asignado a cada uno de los p\u00e1rrafos un identificador. De esta manera, hemos indicado mediante CSS que el color de fuente del primer p\u00e1rrafo ser\u00e1 negro, el del segundo verde y el del tercero azul. En este caso,&nbsp;<strong id=\"yui_3_17_2_1_1645091743916_25571\">el selector de id se establece con la sintaxis #nombre-id,<\/strong>&nbsp;es decir, poniendo una almohadilla y a continuaci\u00f3n el nombre del identificador.<\/span><\/p>\n<h2 id=\"yui_3_17_2_1_1645091743916_11357\"><strong id=\"yui_3_17_2_1_1645091743916_11356\"><span id=\"yui_3_17_2_1_1645091743916_13385\">Diferencias entre el Selector de \u00abid\u00bb y \u00abclass\u00bb&nbsp;<\/span><\/strong><\/h2>\n<p>En el presente tutorial hablaremos sobre las diferencias entre el selector de Id y el selector de Clase y cuando debemos usar cada uno de estos correctamente.<br \/>\nCuando nos iniciamos en la maquetaci\u00f3n de sitios web, nos topamos con una duda que seguramente le ha pasado a m\u00e1s de uno, \u00bfDebemos usar el selector de \u201cid\u201d o el selector de \u00abclass\u00bb para brindar estilos a nuestros elementos y qu\u00e9 diferencia existe entre estos dos selectores? En este post te ayudaremos a entender cu\u00e1ndo y por qu\u00e9 utilizar uno u otro, para ello es importante tener clara la definici\u00f3n de ambos.<br \/>\nEl valor del atributo \u201cid\u201d de un elemento es \u00fanico; es decir, no deber\u00eda haber otro elemento con el mismo nombre de identificador (id) dentro de tu documento HTML. Para declarar un selector de \u00abid\u00bb lo podemos hacer de la siguiente manera.<br \/>\n<iframe src=\"https:\/\/codepen.io\/dcerveraayllon\/embed\/QWqJZJL?default-tab=html%2Cresult\" width=\"100%\" height=\"300\" frameborder=\"no\" scrolling=\"no\"><br \/>\nSee the Pen <a href=\"https:\/\/codepen.io\/dcerveraayllon\/pen\/QWqJZJL\"><br \/>\nid-unico<\/a> by David Cervera (<a href=\"https:\/\/codepen.io\/dcerveraayllon\">@dcerveraayllon<\/a>)<br \/>\non <a href=\"https:\/\/codepen.io\">CodePen<\/a>.<br \/>\n<\/iframe>Dentro de los selectores que tenemos en CSS (por tipo, por clase y por id), cada uno tiene un determinado peso, siendo el Selector de Id el que tiene m\u00e1s peso (1-0-0), seguido del selector de Clase (0-1-0) y finalmente el selector de tipo (0-0-1). Para que quede m\u00e1s claro lo anterior, si tenemos una etiqueta con un id = \u201crojo\u201d y una class = \u201cazul\u201d a esta etiqueta se le aplicar\u00e1n las propiedades establecidas a #rojo {} porque tiene un peso mayor.\u00bfEs posible tener m\u00e1s de un elemento con el mismo identificador de Id?, \u00bflas propiedades s\u00ed se aplican?<br \/>\n<iframe src=\"https:\/\/codepen.io\/dcerveraayllon\/embed\/abLQQgP?default-tab=html%2Cresult\" width=\"100%\" height=\"300\" frameborder=\"no\" scrolling=\"no\"><br \/>\nSee the Pen <a href=\"https:\/\/codepen.io\/dcerveraayllon\/pen\/abLQQgP\"><br \/>\nid-repetido2<\/a> by David Cervera (<a href=\"https:\/\/codepen.io\/dcerveraayllon\">@dcerveraayllon<\/a>)<br \/>\non <a href=\"https:\/\/codepen.io\">CodePen<\/a>.<br \/>\n<\/iframe><br \/>\nComo vemos en el ejemplo, las propiedades s\u00ed se aplican, pero sem\u00e1nticamente esto no es correcto y no se deber\u00eda usar de esa manera, ya que un elemento HTML deber\u00eda tener un \u00fanico valor del atributo \u00abid\u00bb no repetible en otros elementos. Por otra parte, el valor del atributo \u201cclass\u201d, a diferencia del valor del atributo \u201cid\u201d, puede ser utilizado en m\u00e1s de un elemento de tu documento HTML, esto nos es muy beneficioso cuando tenemos que aplicar los mismos estilos a diferentes elementos, dado que nos permite reducir las l\u00edneas de c\u00f3digo en nuestro archivo .css, consider\u00e1ndose una buena pr\u00e1ctica. Podemos utilizar un selector de clase de la siguiente manera:<br \/>\n<iframe src=\"https:\/\/codepen.io\/dcerveraayllon\/embed\/XWeyyZZ?default-tab=html%2Cresult\" width=\"100%\" height=\"300\" frameborder=\"no\" scrolling=\"no\"><br \/>\nSee the Pen <a href=\"https:\/\/codepen.io\/dcerveraayllon\/pen\/XWeyyZZ\"><br \/>\nclass-pokemon<\/a> by David Cervera (<a href=\"https:\/\/codepen.io\/dcerveraayllon\">@dcerveraayllon<\/a>)<br \/>\non <a href=\"https:\/\/codepen.io\">CodePen<\/a>.<br \/>\n<\/iframe><br \/>\nEntonces si queremos aplicar las propiedades de un selector de clase a varios elementos, podemos hacerlo de la siguiente manera:<br \/>\n<iframe src=\"https:\/\/codepen.io\/dcerveraayllon\/embed\/GRMwwGR?default-tab=html%2Cresult\" width=\"100%\" height=\"300\" frameborder=\"no\" scrolling=\"no\"><br \/>\nSee the Pen <a href=\"https:\/\/codepen.io\/dcerveraayllon\/pen\/GRMwwGR\"><br \/>\nniveles-clases<\/a> by David Cervera (<a href=\"https:\/\/codepen.io\/dcerveraayllon\">@dcerveraayllon<\/a>)<br \/>\non <a href=\"https:\/\/codepen.io\">CodePen<\/a>.<br \/>\n<\/iframe><br \/>\nEn el ejemplo estamos creamos el selector de clase \u201cpkmn\u201d, el cual contiene propiedades generales que aplicamos a todos los elementos; luego, dejando un espacio agregamos otro selector de clase donde establecemos un determinado color para cada elemento, de esta forma modificamos el color de cada elemento sin tener que escribir todo el c\u00f3digo para cada una. Ahora que ya conocemos las caracter\u00edsticas de los atributos \u00abid\u00bb y \u00abclass\u00bb podremos elegir mejor si trabajar con uno u otro, dependiendo de la necesidad que tengamos.<\/p>\n<p>&nbsp;<\/p>\n<p>BIBLIOGRAF\u00cdA<\/p>\n<p>Texto y ejemplos extra\u00eddos de <a href=\"https:\/\/devcode.la\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">devcode.ia<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La llegada de&nbsp;HTML5, ha sido acompa\u00f1ada por un conjunto de&nbsp;APIs de&nbsp;JavaScript&nbsp;muy \u00fatiles para resolver muchas&#46;&#46;&#46;<\/p>\n","protected":false},"author":2376,"featured_media":0,"parent":690,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ngg_post_thumbnail":0,"footnotes":""},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/davidcervera\/wp-json\/wp\/v2\/pages\/641"}],"collection":[{"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/davidcervera\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/davidcervera\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/davidcervera\/wp-json\/wp\/v2\/users\/2376"}],"replies":[{"embeddable":true,"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/davidcervera\/wp-json\/wp\/v2\/comments?post=641"}],"version-history":[{"count":21,"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/davidcervera\/wp-json\/wp\/v2\/pages\/641\/revisions"}],"predecessor-version":[{"id":649,"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/davidcervera\/wp-json\/wp\/v2\/pages\/641\/revisions\/649"}],"up":[{"embeddable":true,"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/davidcervera\/wp-json\/wp\/v2\/pages\/690"}],"wp:attachment":[{"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/davidcervera\/wp-json\/wp\/v2\/media?parent=641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}