{"id":815,"date":"2024-07-31T07:30:31","date_gmt":"2024-07-31T05:30:31","guid":{"rendered":"https:\/\/blog.sutilweb.eu\/?page_id=815"},"modified":"2024-07-31T07:30:31","modified_gmt":"2024-07-31T05:30:31","slug":"005-dom-estilos-y-variables-css","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/javascript\/javascript-practico\/13-dom-document-object-model\/005-dom-estilos-y-variables-css\/","title":{"rendered":"005. DOM: Estilos y Variables CSS"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En este cap\u00edtulo veremos como poder interactuar con los <strong>estilos<\/strong> de nuestros <strong>elementos<\/strong> <strong>HTML<\/strong>. En este caso vamos a hacer uso de una propiedad denominada <strong><em>style<\/em><\/strong> mediante la <strong>notaci\u00f3n del punto<\/strong>, en vez de utilizar <strong><em>getAttribute()<\/em><\/strong>. Lo vamos a empezar a ver con un ejm.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;h1&gt;Estilos y variables CSS&lt;\/h1&gt;\n&lt;a class=\"link-dom\"href=\"dom.html\"style=\"color: black; background-color: #f7df1e;\"&gt;DOM&lt;\/a&gt;\n\n&lt;script&gt;\nconst $linkDOM = document.querySelector(\".link-dom\");\n\nconsole.log($linkDOM.style);\n\/\/ Mostrar\u00e1 todos los estilos disponibles\n&lt;\/script&gt;<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a utilizar la <strong>notaci\u00f3n del punto<\/strong>, ya que cuando pasamos la propiedad <strong><em>style<\/em><\/strong> nos va a devolver un objeto de tipo <strong><em>CSSStyleDeclaration<\/em><\/strong> que es un <strong>mapa<\/strong> que lleva agregadas todas las <strong>propiedades CSS<\/strong> v\u00e1lidas. Dichas <strong>propiedades<\/strong> est\u00e1n todas escritas en formato <strong>camelCase<\/strong>, hay que recordar que en <strong>CSS<\/strong> todas las palabras est\u00e1n separadas por un <strong>gui\u00f3n medio<\/strong> (-), pero en <strong>Javascript<\/strong>, el <strong>gui\u00f3n medio<\/strong> podr\u00eda representar una resta num\u00e9rica, por lo que puede llamar a error, por lo que <strong>Javascript<\/strong> transforma todas las <strong>propiedades CSS<\/strong> quit\u00e1ndole el <strong>gui\u00f3n medio<\/strong> y utilizando la t\u00e9cnica del <strong>lowerCamelCase<\/strong> (a partir de la segunda palabra, la primera letra es <strong>MAY<\/strong>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podr\u00edamos verlo utilizando el m\u00e9todo <strong><em>getAttribute()<\/em><\/strong>, como en el siguiente ejm.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">console.log($linkDOM.getAttribute(\"style\");\n\/\/ Mostrar\u00e1 los style a los que le hayamos pasado valor<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Acceder a una propiedad en particular<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Con la <strong>notaci\u00f3n del punto<\/strong> es muy c\u00f3modo, veamos un ejm.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">console.log($linkDOM.style.backgroundColor);\n\/\/ Muestra el color de fondo\nconsole.log($linkDOM.style.color);<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Mostrar las Computed Properties o propiedades din\u00e1micas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para acceder a ellas utilizamos la siguiente notaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">console.log(window.getComputedStyle($linkDOM));\n\/\/ A cada propiedad le asigna un \u00edndice<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El tipo de <strong>mapa<\/strong> que devuelve este formato es ligeramente diferente al de la <strong>notaci\u00f3n del punto<\/strong>. A cada <strong>propiedad<\/strong> se le asigna un \u00edndice, las ordena de forma alfab\u00e9tica. Cuando accedemos a las <strong>ComputedStyle<\/strong>, despu\u00e9s de la lista de definici\u00f3n de las <strong>propiedades<\/strong>, nos facilita el valor por defecto que el navegador est\u00e1 dando a esa etiqueta <strong>HTML<\/strong> a nivel de propiedades <strong>CSS<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por lo tanto, tenemos dos maneras v\u00e1lidas de ver los <strong>estilos CSS<\/strong>, una desde el objeto <strong><em>window<\/em><\/strong> con las <strong>Computed Properties<\/strong>, y otra con la <strong>notaci\u00f3n del punto<\/strong> y la palabra <strong><em>style<\/em><\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Acceder s\u00f3lo a una propiedad<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para acceder a una \u00fanica propiedad utilizando <strong>Computed Properties<\/strong> utilizamos la propiedad <strong><em>getPropertyValue()<\/em><\/strong> de la siguiente manera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">console.log(window.getComputedStyle($linkDOM).getComputedValue(\"color\");\n\/\/ No es necesario poner la palabra window\nconsole.log(getComputedStyle($linkDOM).getComputedValue(\"color\");<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">En resumen para acceder a los estilos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tenemos 3 maneras<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>La <strong>notaci\u00f3n del punto<\/strong>.<\/li>\n\n\n\n<li>con <strong><em>getAttribute()<\/em><\/strong>.<\/li>\n\n\n\n<li>con <strong>computedStyle<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Establecer valores<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Existen diferentes maneras.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Con la <strong>notaci\u00f3n del punto<\/strong>.<\/li>\n\n\n\n<li>Con la propiedad <strong><em>setProperty(\u00abpropiedad\u00bb, \u00abvalor de la propiedad\u00bb)<\/em><\/strong>: Es similar a cuando establec\u00edamos valores a atributos con el m\u00e9todo <strong><em>setAttribute(\u00abatributo\u00bb, \u00abvalor del atributo\u00bb)<\/em><\/strong>. En este caso estamos estableciendo valores a una <strong>propiedad CSS<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm con la propiedad setProperty()<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$linkDOM.style.setProperty(\"text-decoration\", \"none\");\n$linkDOM.style.setProperty(\"display\", \"block\");<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm con la notaci\u00f3n del punto<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$linkDOM.style.color = \"black\";\n$linkDOM.style.textAlign = \"center\";\n$linkDOM.style.marginLeft = \"auto\";\n$linkDOM.style.marginRight = \"auto\";\n$linkDOM.style.padding = \"1rem\";\n$linkDOM.style.borderRadius = \"0.5rem\";<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Custom Properties &#8211; Variables CSS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para entender como manipular las Custom Properties vamos a ver un ejm.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n&lt;meta charset=\"UTF-8\"&gt;\n&lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n&lt;title&gt;Estilos y variables CSS&lt;\/title&gt;\n&lt;style&gt;\n  :root {\n   --yellow-color: #f7df1e;\n   --dark-color: #222;\n  }\n&lt;\/style&gt;\n&lt;\/head&gt;\n\n&lt;body&gt;\n&lt;h1&gt;Estilos y variables CSS&lt;\/h1&gt;\n&lt;a class=\"link-dom\" href=\"dom.html\" style=\"color: black; background-color: #f7df1e;\"&gt;DOM&lt;\/a&gt;\n\n&lt;script&gt;\nconst $html = document.documentElement,\n$body = document.body;\n\nlet varDarkColor = getComputedStyle($html).getPropertyValue(\"--dark-color\");\nlet varYellowColor = getComputedStyle($html).getPropertyValue(\"--yellow-color\");\n\nconsole.log(varDarkColor, varYellowColor);\n\n$body.style.backgroundColor = varDarkColor;\n$body.style.color = varYellowColor;\n&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Modificar valores<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lo vemos con un ejm.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$html.style.setProperty(\"--dark-color\",\"black\");\n\/\/ Establece el nuevo valor\nvarDarkColor = getComputedStyle($html).getPropertyValue(\"--dark-color\");\n\/\/ Activa el nuevo valor\n\n$body.style.setProperty(\"background-color\",varDarkColor);<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En este cap\u00edtulo veremos como poder interactuar con los estilos de nuestros elementos HTML. En este caso vamos a hacer uso de&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":800,"menu_order":4,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-815","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"En este cap\u00edtulo veremos como poder interactuar con los estilos de nuestros elementos HTML. En este caso vamos a hacer uso de...","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/815","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=815"}],"version-history":[{"count":2,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/815\/revisions"}],"predecessor-version":[{"id":817,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/815\/revisions\/817"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/800"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}