43
loading...
This website collects cookies to deliver better user experience
La herencia es el proceso por el cual algunas propiedades CSS aplicadas a una etiqueta se pasan a las etiquetas anidadas.
font-family
al elemento <body>
. Todas las etiquetas descendientes de la etiqueta <body>
, es decir, las que están dentro de la etiqueta <body>
heredarán esta fuente y no es necesario aplicarla explícitamente a cada elemento de la página.<p>
dentro de la etiqueta <body>
es descendiente de <body>
, mientras que la etiqueta <body>
es un ancestro de la etiqueta <p>
. <em>
o <strong>
aparece dentro de una etiqueta <p>
, entonces las etiquetas <em>
y <strong>
también <body>
.Como puedes notar en la estructura del árbol cada elemento solo tiene un padre directo.
color
, font
, font-family
, font-size
, font-weight
, font-variant
, font-style
, line-height
, letter-spacing
, text-align
, text-indent
, text-transform
,white-space
, y word-spacing
.list-style
, list-style-type
, list-style-position
, y list-style-image
.border-collapse
y border-spacing
, también se heredan. Tenga en cuenta que éstas controlan el comportamiento de los bordes de las tablas, NO las propiedades para especificar los bordes de los elementos que no son tablas. No queremos que un <div>
pasara su borde a todos los elementos descendientes ¿Verdad?.<p> Lorem ipsum <em> dolor </em> sit amet. </p>
p {
padding-left: 20px;
border-left: solid red;
}
<p>
tienen un borde a la izquierda. Sin embargo, la etiqueta <em>
dentro de <p>
no tienen ningún borde adicional. Este comportamiento tiene sentido: se vería raro o extraño si hubiera un borde adicional y 20px de espacio a la izquierda de cada etiqueta <em>
dentro de un párrafo. Por este motivo es que la propiedad border
no se hereda.<p>
que contiene otras etiquetas como una etiqueta <strong>
, una etiqueta <em>
para enfatizar el texto y una etiqueta <a>
para añadir un enlace. <em>
, <strong>
y <a>
tuvieran su estilo normal, tal y como se muestra en la siguiente imagen de muestra:<em>
, <strong>
y <a>
para que coincida con la apariencia de la etiqueta <p>
. Qué tedioso. ¡Por eso esta la herencia y por eso es importante!inherit
(heredar) porque tiene relación con la herencia.inherit
hace que el valor de una propiedad en un elemento sea el mismo que el valor de su elemento padre. En otras palabras, inherit
obliga a que la herencia se produzca incluso en situaciones en las que normalmente no funcionaría. La palabra clave inherit
le dice al navegador que busque el valor del elemento padre más cercano y que el elemento actual herede ese valor.
Si el padre más cercano también tiene el valor inherit
, el navegador continuará subiendo por el DOM hasta encontrar algún valor.
Si no hay ningún valor, el navegador utilizará su estilo de agente de usuario, y si no hay ningún estilo de agente de usuario, utilizará el estilo base inicial o el valor inicial.
<nav class="toolbar">
<a href="#">One</a>
<a href="#">Two</a>
<a href="#">Three</a>
</nav>
.toolbar {
background-color: blue;
color: white;
}
nav
tendrá un fondo azul, pero los enlaces tendrán otro estilo acorde con la configuración de preferencias del navegador. inherit
. Sólo tiene que añadir la siguiente regla a la hoja de estilos:.toolbar {
background-color: blue;
color: white;
}
.toolbar a{
color: inherit;
}
padding
por defecto, no se puede heredar pero podemos hacer que si se herede, seguiremos con el ejemplo anterior:.toolbar {
padding: 20px;
}
.toolbar a{
padding: inherit;
}
padding
del elemento padre, a pesar de que dicha propiedad no se herede por defecto.