Apuntes HTML+CSS
Apuntes HTML+CSS
HTML + CSS
Siempre hay que iniciar la página con <html>: agrega un formato estándar constituido por
<head></head> y <body></body>. El primero incluye todo lo que la página web no muestra, por
ejemplo, título en el navegador; el segundo es dónde se estructuran las cajas y títulos de la página.
Hay dos tipos de caja o elementos: display block o display line. En el primer tipo, el tamaño del
elemento en cuestión ocupa el resto de la línea; en el segundo el elemento se ajusta al contenido.
Normalmente las etiquetas de estructura tipo <h1>, <p>, etc. son en bloque, por lo que siempre
aparecen en forma de lista; las de formato como <b>, <i>, etc. se adaptan al texto escrito. Dos
elementos en bloque seguidos en el código (uno al lado del otro) aparecerán uno debajo del otro
en la página puesto que cada uno ocupa el espacio restante de su línea, mientras que dos
elementos del tipo línea aparecerían uno al lado de otro en la página web a pesar de estar escritos
uno bajo el otro en el código.
Indice de etiquetas:
Genéricamente:
<etiqueta atributo=”valor”>: abre objeto
</etiqueta>: cierra objeto
Ej.: <button atributo=”valor”></button>
2 tipos de etiqueta(ej.):
o Se cierran automáticamente (no es necesario):
<input>
<br>
o Es necesario cerrarlas (incluyen algo)
<hn></hn> (Títulos); n = 1-6; <h1> solo 1 vez.
Header (Títulos):
o <hn></hn>; n = 1-6; <h1> solo 1 vez.
Paragraph (Párrafos):
o <p></p>
Black Font (negrita):
o <b><b/>
Itallics (cursiva):
o <i></i>
Strike (tachado):
o <strike></strike>
Small (letra chica):
o <small></small>
Atribute (referencia de vínculo):
o <a href=””></a>
En la parte superior de una página web deben encontrarse un encabezado y/o un panel de
navegación, debajo se encuentra una área denominada artículo conformada por distintas
secciones y al lado el aside (barra lateral). Por último se agrega un footer, o pie de página.
<link rel=”icon” href=”xxx.ico”>: indispensable que la extensión del archivo sea .ico.
Clase: a cualquier elemento puedo darle una denominación de clase mediante el atributo
class=”xx”. Es útil para hacer una gran selección y luego formatearlos mediante CSS.
Comentarios: para dejar un comentario o parte del código como borrador, lo que se hace es
aplicar <!-- código -->/. Así queda “escondido” y no se ejecuta.
Errores comunes!
Modo etiqueta: antes del cierre </body>, agregar <style type="text/css"> y escribir
directamente el código.
Carga de archivo premade: de la misma manera puedo también cargar un archivo de
código CSS utilizando @import antes del cierre </body>. No muy utilizada.
Atributo: por ej. para insertarle color a un párrafo <p color=”red”>.
Linkeado: dentro del <head>, empleo la etiqueta <link rel=”stylesheet” type=”text/css”
href=”estilo.css”. Esto implica crear y desarrollar el código CSS en un archivo alterno .css
que luego se vincula al ya escrito html.
Estilo en línea: insertando el atributo style=”” al elemento y definiéndolo según la línea
que se daría en CSS.
Estructura básica:
selector {
propiedad:valor;
Donde:
Especificidad: es la jerarquía que se les da a las distintas operaciones, para superponerse o para
prevalecer ante una acción posterior.
!Important
Estilos en línea
Identificadores
Clases
Pseudoclases
Atributos
Elementos
Pseudoelementos
!Important: se puede asignar a cualquier elemento o pseudoelemento (o lo que sea) para fijar
inmutablemente una característica. Por ej.:
h1 {
Solo recomendable en casos muy particulares, no es necesario si se hace un uso correcto de las
especificidades.
El efecto “cascada” o superposición solo se lleva a cabo cuando el nivel jerárquico o cuando el
posterior es superior al primero.
Bloque: es un bloque o espacio contenedor (puede ser un div) definido que va a contener
distintos elementos. Esta denominación en la etiqueta va a diferenciar a un bloque de otro
dentro del código.
Elementos: nada, eso, elementos como un <p> o <h2>. Esta denominación en la etiqueta
va a diferenciar a los distintos elementos dentro del bloque.
Modificador: será lo que destaque a un elemento en particular de otros elementos del
mismo tipo dentro del bloque con el objetivo de aplicarle una modificación especial a ese
elemento particular.
Unidades:
Propiedades:
De tipografía:
o font-family: tipografía o fuente. Puedo utilizar algunas preexistentes como
Georgia, sans-serif, etc. o puedo insertar un .css de fonts.google.com en el <head>
del html y luego en mi .css aplicarla de la manera que sugiere Google Fonts (por ej.
font-family: ‘Oswald’, sans-serif; donde la , del medio implica que de no
encontrar la primera fuente (no ingresada en el <head>) aplique la siguiente en la
regla.
o font-size: tamaño de fuente.
o line-height: altura de la línea, altura de letra + interlineado de la línea; relativo al
tamaño de fuente: (1 = alto de la letra, si fuese 2 serían 2 alturas de letras donde 1
altura se convierte en interlineado dividiéndose en 0.5 altura de letra arriba y 0.5
altura de letra abajo.
o font-weight: grosor de los caracteres, dependen de la tipografía.
o font-stretch: estiramiento o compresión de la fuente.
first-child: modifica al primer elemento de cierto tipo contenido dentro de otro, útil para
no asignar ninguna clase a este aunque no sería óptimo en caso de que sea necesario
agregar algo antes. Si no se especifica cuál es el elemento (por ej. div p:first-child,
especifica que es un p) se tomará el primer hijo independientemente del tipo.
nth-child(n): funciona de manera similar al anterior pero sirve para seleccionar otros
elementos del grupo de hermanos.
o Valores:
Los valores ingresados pueden ser series numéricas.
n = número entero específico: aplica a un elemento que se encuentra en
n posición; por ej. para el segundo elemento de un grupo n = 2.
Comentarios: para dejar un comentario o parte del código como borrador, lo que se hace es
aplicar /* código */. Así queda “escondido” y no se ejecuta.
Normalize: es un archivo .css que reinicia los estilos del navegador. Buscar en google y descargar.
Se pueden elegir los nombres predefinidos que se pueden googlear. Sin embargo, el color
puede variar según el navegador.
La forma hexadecimal conservará exactamente el color definido independiente del
navegador.
La forma RGB es la determinación según la mezcla de colores rojo, verde y azul. Hay 256
matices de cada uno, por lo que los valores van de 0 a 255 (siendo 0x3 = negro y 255x3
=blanco). Se indica como background: rgb(x,y,z); donde x, y z son los valores de cada color.
Hay que considerar que a diferencia de la práctica real el verde vendría a suplir al amarillo
(rojo + verde = amarillo).
La forma RGBA se utiliza de la misma manera pero la “a” es la opacidad del color, donde 1
es opaco o no transparente y 0 es totalmente transparente. Se indica como background:
rgba(x,y,z,w);.
Mobile first: Implica la adaptación de la web desde un dispositivo de display pequeño a uno de
mayor, por ej. de un celular a una pc. Este concepto es importante porque Google recompensa a
aquellas páginas que tengan mobile first sobre aquellas que no.
Responsive design: Implica la adaptación de la web desde un dispositivo de display mayor a uno de
menor.
Flex-box:
Son cajas flexibles. La caja contenedora se comporta como un elementos en bloque, sin
embargo los elementos de adentro modificarán su comportamiento. Considerar que los
items flex son elementos hijos, y solo hijos directos (no nietos), que están dentro de un
contenedor que posea la propiedad display: flex;.
Entre elementos flex, como pueden ser dos divs, por defecto se mantienen las alturas
ajustando el ancho.
Una caja normal el eje x es el main axis mientras que el y es el cross axis. A cada extremo
del primero se lo denominan cross-start (arriba) y cross-end (abajo), mientras que a los del
segundo se los denominan main-start (izquierda) y main-end (derecha).
Propiedades aplicables al contenedor:
o flex-direction: sirve para cambiar la dirección del main-axis.
row: mantiene el sentido del main-axis (izquierda a derecha). Por defecto.
row-reverse: invierte el sentido del main-axis (derecha a izquierda). 180°
rotando sobre eje y.
column: gira el main-axis 90° en sentido horario (arriba hacia abajo).
Flex-items: a estos elementos pueden aplicarse todas las propiedades básicas de cajas, sin
embargo se adquieren nuevas posibilidades al ser items flex. Es importante considerar que al
aplicar margin: auto a un item flex automáticamente se extenderá a la capacidad máxima para
ocupar el espacio extra en la dirección (left, top, …) aplicada, salvo que se especifique con la
medida.
align-self: se puede aplicar a un item flex a través de su clase particular y funciona con los
valores de align-item/content.
flex-grow: hace crecer los items flex de acuerdo a cuánto espacio vacío quede en algún
extremo de la línea de items, luego lo divide por el número de cajas y determina cuánto
crecerán en tamaño en la dirección del main-axis (según el flex-direction). De esta manera
el espacio siempre será repartido y no quedarán tales vacíos. Si está definido el min-width,
por ej., y el viewport alcanzase tal medida simplemente se recorta el overflow a menos
que se defina un flex-wrap: wrap; al contenedor. Si aplico esta propiedad a distintos items
a través de una clase en común se distribuye equitativamente, sin embargo existe la
posibilidad de asignarlo de manera particular a items puntuales con clases específicas de
cada uno a modo de seleccionar cuáles sí y cuáles no.
flex-shrink: sirve para definir, proporcionalmente, cuánto espacio cederá un elemento al
contraerse el viewport. Funciona de manera similar con el efecto opuesto al flex-grow.
flex-basis: es similar al width, siendo además de mayor jerarquía y específico para
elementos flex. Coincide con la componente x o del main axis del elemento flex, es decir:
con width cuando flex-direction: row; (por defecto) y con height cuando flex-direction:
columna;. Además, define a partir de qué “width” o “height” empiezan a verse los efectos
del flex-shrink y flex-growth.
flex: es la agrupación de las 3 anteriores. Shorthand:
o Si le asignamos un único valor numérico, se aplica la propiedad flex-grow.
o Si se asigna un único valor numérico acompañado de unidades, se aplica la
propiedad flex-basis.
o Si se asignan dos numéricos, se aplican flex-grow y flex-shrink.
o Si asignásemos dos valores, uno numérico y uno acompañado de unidades, aplica
las propiedades flex-grow y flex-basis.
o Si se asignan tres valores, dos numéricos y uno acompañado de unidades,
funcionaran las propiedades flex-grow, flex-shrink y flex-basis (en ese orden).
order: similar al z-index pero funciona en el main-axis. Especifica el orden utilizado para
disponer los elementos en su contenedor flexible en la dirección mencionada; en caso de
tener el mismo valor se ordenaran de acuerdo al DOM.
Conceptos:
Vacío
HEADER
SECTION ASIDE
FOOTER
RESPONSIVE DESIGN: La idea detrás de este concepto es que la página responda de manera
distinta, o se adapte, a distintas condiciones de medios para que el funcionamiento se vea
optimizado en los distintos dispositivos.
@media se utiliza para aplicar media querys, que en esencia son “consultas” para determinar
distintas condiciones del dispositivo:
o Ancho y alto de la ventana gráfica
o Ancho y alto del dispositivo
o Orientación
o Resolución
Operadores:
Orientaciones:
o Mobile first: se basa en diseñar primeramente la página web para dispositivos móviles y
posteriormente complejizarla hacia resoluciones mayores.
o Content first: esta idea se basa en el contenido, no en el diseño per sé sino en analizar qué
tendrá mayor repercusión en términos de marketing. Se maquetará y ordenará sin seguir
un orden particular asegurando que aquellos “must” del marketing estén presentes.
TRANSITIONS: la transition es una propiedad que muestra el proceso mediante el cual ocurre un
cambio en la propiedad de un elemento ante la ocurrencia de un evento (hover, focus, etc.), sea
un cambio de posición o el color, o de lo que se modifique en cuestión.
Propiedades:
o transition-property: se utiliza para indicar qué propiedad es aquella cuyo proceso
de transición se quiere mostrar. Por ej. transition-property: background; se
utilizaría para indicar que se quiere mostrar la transición en el cambio del
background de un elemento. En caso de querer que todas las propiedades
modificadas tengan una transición se puede emplear el valor all.
o transition-duration: se aplica para definir el tiempo que se desea que dure tal
transición.
o transition-delay: se utiliza para retrasar la animación un tiempo determinado
luego de que ocurra el evento en cuestión.
o transition-timing-function: define la curva de velocidad de la transición.
linear
ease
ease-in
ease-out
ease-in-out
Para crear la animación se parte desde el @keyframes. Su traducción sería algo así como “cuadros
claves”, o sea, puntos especiales de la animación donde ocurrían cambios en propiedades.
to {
propiedad: valor-final;
propiedad2: valor-final;
}
10% {
propiedad: valor-10%;
propiedad2: valor-10%;
}
… % {…}
100% {
propiedad: valor-final;
propiedad2: valor-final;
}
TRANSFORMACIONES: transform es una propiedad que aplica una función a un elemento para
transformarlo, pueden ser movimientos en el espacio o distorsiones, entre otras cosas. Esta
propiedad es muchísimo más optima que otras como left, top, etc. utilizadas para posicionar, dado
que la transformación ocurre “en una capa superior” a diferencia de las anteriores que lo que
hacen es modificar e interferir con el layout, por esta razón requiere de menos recursos para
producirse. Todas estas transformaciones tienen un origen definido por defecto que suele ser el
centro del elemento, pero este es modificable a través de la propiedad transform-origin.
VARIABLES: CSS permite almacenar variables. Estas son sencillamente contenido que se almacena
en una memoria. Existen dos tipos:
--nombre-variable: valor-variable;
Para utilizarlas simplemente basta con utilizar la variable como valor de una propiedad a la
que se desee aplicar:
o .classElement {
background: var(--nombre-variable);
Locales: las variables locales son aquellas que se definen dentro de un selector/elemento
particular y solo funcionan dentro de dicho selector. Además en caso de haber definido la
variable con el mismo nombre que una global, dentro del elemento en el cual se haya
definido tendrá más jerarquía la segunda; y no será efectiva por fuera de dicho
selector/elemento.
invert(): no necesita un valor dentro definido (por defecto será 1 o 100%), este filtro
invierte los colores del elemento. Si se selecciona un valor intermedio se moverá entre los
dos extremos (pensar en los extremos como números opuestos, el 50% de ese rango
siempre valdrá 0 y por tanto obtendríamos un elemento en b&w).
opacity(): este filtro afecta la transparencia del elemento. El valor 0 implica que será
completamente transparente, mientras que el valor 1 mantendrá su visual estándar.
saturate(): este filtro concentra los colores o reduce su intensidad. El valor 1 o 100% deja
el elemento sin cambios, valores inferiores decoloran y valores superiores concentran los
colores.
sepia(): esta función lleva los colores a tonos de sepia. El valor 0 mantiene al elemento
inmutado mientras que 1 representa el sepia total.
Se pueden combinar distintos filtros con animaciones para crear efectos realmente
interesantes.
El material es recopilado de distintas fuentes siguiendo el orden de conceptos que se exponen en los cursos de html y
css de “Soy Dalto” (https://www.youtube.com/c/soydalto/videos), MDN Web Docs, curso de desarrollo web de
CODERHOUSE y otras fuentes al azar que resultaron útiles para profundizar sobre el funcionamiento de los recursos.