Carlos Eduardo Gomez García
Josué Ramírez Hernández
Wow que genial, muy creativo!
Juan José Verón
Genial
Dominar la propiedad position en CSS es fundamental para controlar la ubicación de los elementos en una página web. Comprender las diferencias entre relative, absolute, fixed y sticky permite construir interfaces precisas y profesionales, desde barras de navegación fijas hasta listas con encabezados adherentes.
¿Cómo funcionan position relative y absolute juntos?
La propiedad position en CSS determina cómo se ubica un elemento dentro de su contexto. Existen varios valores posibles: relative, absolute, fixed, sticky, static, initial e inherit [0:20].
Para entender relative y absolute, se parte de una estructura básica: un div contenedor con clase container y un elemento hijo con clase area [0:35].
position: relative y un top: 20px, el elemento se desplaza veinte píxeles hacia abajo desde su contenedor, en este caso el body [1:30].El valor position absolute funciona de manera diferente. Cuando un elemento hijo tiene position: absolute, este se posiciona respecto al elemento contenedor relativo más cercano [2:20]. Por ejemplo, al colocar right: 0 en el hijo absoluto, este se desplaza al borde derecho del contenedor y no al borde derecho de toda la página [2:30]. Esta relación entre padre relativo e hijo absoluto es una de las combinaciones más utilizadas en maquetación CSS.
¿Para qué sirve position fixed en una barra de navegación?
El valor position fixed mantiene un elemento completamente estático en la pantalla sin importar el scroll del usuario [3:00]. Para demostrarlo, se crea un elemento nav con un ancho del cien por ciento y una altura de sesenta píxeles, medidas comunes para una barra de navegación [3:15].
Para observar el efecto, se necesita contenido suficiente que genere desplazamiento vertical. Se utiliza texto Lorem Ipsum para llenar la página y activar el scroll [3:50].
position: fixed al nav, este se queda pegado en su posición sin moverse cuando el usuario hace scroll [4:15].Un detalle importante es el orden de las etiquetas HTML. Si el nav se coloca después de otros elementos en el código, puede quedar visualmente debajo de ellos. La recomendación es que el orden del HTML refleje la representación visual deseada en pantalla [4:40]. El navbar debe ir primero en la estructura, seguido del resto del contenido.
¿Qué hace especial a position sticky?
El valor position sticky combina comportamientos de relative y fixed. Un elemento con este valor se comporta de forma normal hasta que el scroll lo lleva a una posición determinada, momento en el cual se adhiere a la pantalla [5:25].
Para el ejemplo se crean listas ul con títulos como "Frutas" y elementos como manzana, pera y sandía [5:35]. Al aplicar position: sticky junto con top: 0 a los párrafos dentro del ul, cada título se pega en la parte superior de la ventana al hacer scroll [6:05].
¿Qué significan static, initial e inherit en position?
Estos tres valores completan el abanico de opciones de posicionamiento [7:00].
Cada valor de position se complementa con las propiedades top, right, bottom y left, que definen la distancia respecto al punto de referencia correspondiente. Entender esta relación es clave para lograr ubicaciones precisas.
Si ya pusiste en práctica estos ejemplos, comparte en los comentarios cómo te fue al heredar un posicionamiento con inherit desde un elemento padre. También cuéntanos cómo quedó tu ejercicio con sticky y las listas.
Carlos Eduardo Gomez García
Josué Ramírez Hernández
Wow que genial, muy creativo!
Juan José Verón
Genial
Axel Enrique Galeed Gutierrez
Nicolás Leal
++Esta genial tu aporte muchas gracias, lo hare parte de mis apuntes✍😀.++
Reynaldo Fuentes Garcia
Muchas gracias por la informacion.
Jonathan Alejandro Sánchez Alcántara
Jazziel Horacio Puente Verdugo
Complementando el comentario de mi compañero si agregamos un operador * y un numero por ejempo :
lorem * 5 + tab
Agregara 5 renglones.
Tomás Rodríguez Barrios
Gracias a los dos por su aporte, hace una semana vi en un curso de Diego de Granda, que hacía esto a cada rato y no sabía como hacerlo, muchísimas gracias, puede ser de gran ayuda cuando estamos preparando proyectos de práctica.
Reynaldo Fuentes Garcia
Hernán Josué Hernández Lamprea
Gracias por el aportes. Ayuda bastante
Rafael Martínez Rodríguez
Muchas gracias por este aporte
Jhonatan David Ibarra Lavado
comando vsc alt+z = ajusta el contenido del archivo en vertical
Juan Daniel Zuluaga Serna
Justo hoy lo necesité para mis apuntes. Gracias
Alexander Reyes
¡Qué locura!
Thomas André Dale Guevara
Jose Tellez
Ahora si lo entendí. . Tuve que volver a ver la clase porque no lograba comprender cómo interactuan relative y absolute. . Ahí les va. . Estos dos están relacionados y se usan cuando hay relacion contenedor padre - hijo.
Position; Absolute; va con los contenedores hijos y nos va a permitir que podamos ubicar dicho contenedor de forma personalizada usando Top, Left, Right y Bottom. Funcioa parecido a un sistema de coordenadas pero, pero, pero, pero ¿Ya viste el curso de programacion de Freddy? Cuando dibujamos en canvas tambien usamos coordenadas, pero en este caso de CSS funcionan un poco diferente. . Si colocas por ejemplo Right: 50px; El elemento no se va a mover al pixel 50 del eje horizontal, (de izquierda a derecha) no. Lo que va a pasar es que va a existir una distancia de 50px entre el elemento y la parte derecha contenedor. .
Eduardo Barbosa Olivares
ei
Fernando Molano Castrillón
No necesitan ir a google y buscar textos lorem ipsum; en cambio si están usando VS Code solo escriben la palabra lorem y le dan enter y automáticamente el editor les creará el párrafo.
Qué sucede si quieren textos más largos? Fácil: solo escriben lorem3 y les creará 3 líneas de texto, o lorem6, etc...
Victor Ocampo
Antes no sabia como lograr ese efecto de sticky, ya que lo veía en muchas paginas, Era mas fácil de lo que pensaba. Las clases de Estefany Aguilar son increíbles!!
Héctor Galindo
Beder Danilo Casa Condori
bien
Manuel De León
const div = document.querySelector ("div"); const teffCourses = [...allHerCourses ];
teffCourses.forEach (course => { div.style.background = "papayawhip"; //Un clásico xD return course; });
// :3
Eduardo Forero
Jajaja, estoy en básico de JavaScript pero se entiende el chiste :V
Gonzalo Vasquez
contexto jeje
José Iván Ballín González
Que buena explicación, es uno de los temas que más me cuesta entender, creo que veré esta clase un par de veces más para que me quedo todo claro.
Max Andy Diaz Neyra
Es un tema que toma su tiempo pero lo dominaras con la practica y los juegos. Te recomiendo la pagina https://www.w3schools.com/cssref/pr_class_position.asp
María Del Pilar Chávez Gutiérrez
Juan Daniel Zuluaga Serna
Cuando es conveniente utilizar position relative junto con position absolute? Teniendo en cuenta que con display flex en el div padre podemos organizar elementos que se encuentren dentro. Aun se sigue utilizando postion absolute?
Carlos Eduardo Gomez García
Juan Daniel Zuluaga Serna
Waoo muchas gracias. Excelente explicación. Me quedó mas que claro con el ejemplo.
Javi Felices
Comparto un vídeo de Manz sobre position. Tiene un minutaje en el vídeo por si queréis ir al grando. La propiedad position de CSS (relative, absolute, fixed...) Comparto también una serie de vídeos de Dorian Desings. POSITION Relative Absolute FIXED STICKY Z-Index Un saludo y gracias.
Omar Alvarado Huerta
¿por qué en "widht" de <nav> puso 100%? Eso que quiere decir, normalmente lo pone en px
Lear Angulo Quintasi
% : es una medida relativa. 100% : Quiere decir que va ocupar todo el ancho.
Andrés Muñoz
de las medidas relativas parece que porcentajes cubren todos los casos de uso ? cuando es buena idea usar las otras medidas relativas en que casos específicos ? pareciera que con usar porcentajes se resolviera el 100% de los problemas que se pueden dar
Lear Angulo Quintasi
Leonardo Claro
Está genial! me podrías explicar cómo funciona el position:inherit;? Aun no comprendo muy bien como funciona.
Lear Angulo Quintasi
Hereda los estilos, que fueron declarador al inicio.
En este ejemplo posicionamos al cuadrito del contenedor luego al cuadrito del contenedor2 de decimos position:inherit; y hereda la posición del cuadrito del contenedor1.
Intenta eliminar la linea position:inherit; t veras los cambios.
Pablo Caceros
Esto es lo que se me ocurrio a mi! 😅
Enlace
Rafael Martínez Rodríguez
Que genial quedó
Christian Michael Rosales
Guillermo Baldán López
Buena idea! Me inspira a pensar como hacer diseños fractales con css
Cristian Bécquer Bernardo Gutierrez
cool
👇 Expande este comentario para que veas cómo darle su estambre a un michi usando position 7u7
.
El tema de position es muy interesante porque es prácticamente otra forma que tenemos de posicionar con CSS 👀.
.
Usualmente es preferible trabajar con nuestras técnicas de alineamiento comunes como CSS Grid o Flexbox, pero suele haber casos donde sí o sí necesitamos usar position.
.
El ejemplo más común es con el menú de navegación, que casi siempre solemos verlo en todas las páginas. Aunque también podríamos usarlos si queremos posicionar un elemento con base en otro (aquí es donde intervienen el relative con el absolute), y de hecho esta también es una técnica muy usada cuando se dibuja con CSS 7u7.
.
¡Hagamos algo! Imaginemos que queremos darle su bola de estambre a este michi 😼:
.
Bola de estambre
.
<div class="container"> <img id="estambre" src="https://pixabay.com/get/gcace262ba99b669194b5054d0a18589d64d2858de5ccde802a2bd69112122969cc55406c4d138c9738ad55e21d831bab_640.png" alt="Estambre"> <img id="michi" src="https://static.platzi.com/media/user_upload/michi-0cd46b59-feda-4746-81a0-cc48179411ae.jpg" alt="Michi"> </div>
. Nota que a cada uno le puse un id. También me interesa que mi bola de estambre esté chiquita para que el michi la pueda agarrar, así que desde CSS le puedo cambiar el tamaño: .
.container, #michi { width: 800px; } #estambre { width: 100px; }
. Con esto hago que mi contenedor y el michi midan 800px y que la bolita de estambre mida 100px, así que me queda así: .
position. Simplemente a mi container le pongo un position: relative; y al estambre le pongo un position: absolute;. Recuerda que cuando usamos un absolute, este elemento se va a mover con respecto al elemento relative más cercano, así que en este caso moveremos el estambre con respecto a nuestro contenedor 😄.
.
Sabiendo que podemos mover el estambre dentro de nuestro container, nos tocará adivinar cuántos pixeles hacia abajo y cuántos pixeles hacia la izquierda deberemos moverlo para dárselo al michi 👀. En este caso, yo sé que debo moverlo 190 pixeles hacia abajo y 245 pixeles hacia la izquierda, por lo que el resto de mi código CSS quedaría así:
.
.container { position: relative; } #estambre { position: absolute; top: 190px; right: 245px; }
. ¡Y con esto el michi ya tendría su estambre! .
position para posicionar un elemento con respecto a otro, pero realmente hay varios usos que podemos darle, así que te toca practicar 😼.Les comparto mis apuntes. :D
¿Qué es position?
Es la forma en la que podemos posicionar los contenedores, cajas o etiquetas de HTML cuando la utilizamos.
Tenemos diferentes position en CSS, pero todas las etiquetas en HTML vienen por defecto con el position static. Se quedan en donde nosotros las ponemos, no se mueve con el scroll.
position: valor;
Tenemos estos positions
Todos estos nos van a dar un comportamiento diferente por cada una de las etiquetas. Las podemos agregar a todas las etiquetas y nos van a dar el mismo comportamiento pero los vamos a utilizar para diferentes cosas.
Static
Utilizamos este valor no vamos a tener ningún cambio porque todas las etiquetas vienen con este valor.
Cuando estamos en este position no podemos utilizar las propiedades left, top, right y bottom.
Absolute
Con absolute el elemento sale de su lugar y el navegador reacomoda los elemento, poniendo otro elemento en el lugar del elemento con position absolute. Podemos posicionar al elemento como queramos.
Relative
Con relative no sucede lo mismo que absolute, el elemento mantiene su lugar, pero podemos posicionarlo donde queramos.
Lo podemos usar como contenedor para que los elementos que tengan un position absolute tomen como referencia al padre que nosotros queremos (se adhiere al elemento relativo más cercano) y no a otro, delimita el movimiento del hijo.
Fixed
Este valor de position nos permite que el elemento que queramos nos siga a todos lados desde el momento en el que nos topemos con él.
Sticky
Es similar a fixed con la diferencia que cuando encuentra a otro elemento con su mismo position, sticky, le da lugar al ese elemento.
Initial
Vuelve el position de un elemento a como estaba originalmente.
Inherit
Lo usamos si queremos que nuestro elemento herede el position de su padre.
Left, top, right y bottom
Con estas cuatro propiedades podemos mover a los elementos que tengan como position a absolute, relative fixed o sticky a los lugares que queramos.
Es posible crear texto de relleno (Lorem Ipsum) con visual studio code. Si escribimos el siguientes comando dentro de una etiqueta.
lorem + tab
No saldría un texto alternativo.
¿Qué pasa si quiero un texto alternativo con 10 palabras? Pues tecleamos lo siguiente
lorem10 + tab
Puedes crear contenido de relleno de una manera muy sencilla, para que te des una idea de cómo se vería tu página web cuando aún no sabes cual es el contenido que va a tener.
Propiedades de posicionamiento CSS
Valores para la propiedad position
Posicionamiento relativo (relative) El valor relative para la propiedad position de CSS, establece que el elemento será posicionado relativo a su posición normal o inicial y sus características más destacadas son:
Posicionamiento absoluto (absolute)
El posicionamiento absoluto de elementos con CSS posee características que lo diferencian de las otras formas de posicionamiento y eso es lo que vamos a conocer y practicar en esta sección.
El valor absolute para la propiedad position establece que un elemento debe ser posicionado de forma absoluta y básicamente se comporta de la siguiente manera:
Posicionamiento fijo (fixed) El posicionamiento fijo de elementos en CSS consiste en establecer una posición determinada para un elemento, de tal manera que queda fija y no se mueva de dicha posición, aun cuando se hace scroll en la pantalla.
Para establecer una posición fija, se emplea el valor fixed para la propiedad position.
++Características de un elemento con position: fixed++
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> body{ background-color: whitesmoke; } .container { width: 500px; height: 500px; position: relative; background-image: url(https://image.slidesharecdn.com/circulosdecolores1-151001075614-lva1-app6891/95/circulos-de-colores-1-1-638.jpg?cb=1443686190); background-position: center; background-repeat: no-repeat; border-radius: 4px; } .red-ball{ position: absolute; top: 1px; left: 10px; width: 30px; height: 30px; border-radius: 50%; background: radial-gradient(circle, rgba(255,0,0,1) 0%, rgba(23,0,85,1) 100%); } .blue-ball{ position: absolute; top: 1px; left: 100px; width: 30px; height: 30px; border-radius: 50%; background: radial-gradient(circle, rgba(23,39,116,1) 0%, rgba(23,0,85,1) 100%); } .green-ball{ position: absolute; top: 1px; left: 200px; width: 30px; height: 30px; border-radius: 50%; background: radial-gradient(circle, rgba(119,217,112,1) 0%, rgba(23,0,85,1) 100%); }.yellow-ball{ position: absolute; top: 1px; left: 300px; width: 30px; height: 30px; border-radius: 50%; background: radial-gradient(circle, rgba(255,243,56,1) 0%, rgba(23,0,85,1) 100%); } /* Columna 1 */ .rone{ top: 90px; left: 30px; } .gone{ top: 185px; left: 25px; } .yone{ top: 280px; left: 25px; } .bone{ top: 376px; left: 25px; } /* Columna 2 */ .ytwo{ top: 90px; left: 130px; } .btwo{ top: 185px; left: 130px; } .gtwo{ top: 280px; left: 130px; } .rtwo{ top: 375px; left: 130px; } /* Columna 3 */ .gtree{ top: 90px; left: 235px; } .rtree{ top: 185px; left: 235px; } .btree{ top: 280px; left: 235px; } .ytree{ top: 376px; left: 235px; } /* Columna 4 */ .rfour{ top: 90px; left: 339px; } .gfour{ top: 186px; left: 340px; } .yfour{ top: 280px; left: 339px; } .bfour{ top: 378px; left: 339px; } /* Columna 5 */ .bfive{ top: 91px; left: 439px; } .yfive{ top: 186px; left: 444px; } .rfive{ top: 282px; left: 439px; } .gfive{ top: 378px; left: 440px; } </style> </head> <body> <div class="container"> <div class="red-ball rone"></div> <div class="red-ball rtwo"></div> <div class="red-ball rtree"></div> <div class="red-ball rfour"></div> <div class="red-ball rfive"></div> <div class="yellow-ball yone"></div> <div class="yellow-ball ytwo"></div> <div class="yellow-ball ytree"></div> <div class="yellow-ball yfour"></div> <div class="yellow-ball yfive"></div> <div class="blue-ball bone"></div> <div class="blue-ball btwo"></div> <div class="blue-ball btree"></div> <div class="blue-ball bfour"></div> <div class="blue-ball bfive"></div> <div class="green-ball gone"></div> <div class="green-ball gtwo"></div> <div class="green-ball gtree"></div> <div class="green-ball gfour"></div> <div class="green-ball gfive"></div> </div> </body> </html>
Sí se siguen usando, sobre todo el diseños complejos (lo verás en el curso práctico).
Pero por ejemplo, mira este diseño:
La foto de perfil está en toda la mitad del banner y de la sección de información. Esto es un poco más complicado de hacer con Flexbox y Grid (se puede hacer, pero no es intuitivo). Pero es ridículamente fácil de hacer con positions. Simplemente pones la imagen dentro de la sección de información y con positions le dices que quieres que la imagen se salga un poquito por la parte de arriba, algo así:
img { position: absolute; top: -50%; }
Y con eso obtienes este diseño :D
Me quedo super este ejemplo les comparto para que lo prueben en su navegador.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <style> .contenedor{ height: 300px; width: 300px; position: relative; background-color: green; margin: 0 auto; } .cuadrito{ background-color: yellow; height: 30px; width: 30px; text-align: center; line-height: 0px; position: absolute; top: 135px; left: 135px; } .cuadrito{ position: initial; line-height: 30px; } .contenedor2{ height: 300px; width: 300px; position: relative; background-color: rgb(110, 173, 110); margin: 0 auto; } .contenedor2 .cuadrito{ position:inherit; line-height: 30px; } </style> <body> <section class="contenedor"> <div class="cuadrito"> <p>P</p> </div> </section> <section class="contenedor2"> <div class="cuadrito"> <p>P</p> </div> </section> </body> </html>
No lo he utilizado en algún proyecto pero se me ocurrió este pequeño ejemplo para que el tercer elemento herede del segundo para posicionarlo
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .container { position: relative; width: 200px; height: 200px; background-color: aqua; } .subcontainer { position: absolute; width: 50px; height: 50px; right: 0; background-color: beige; } .subsubcontainer { position: inherit; width: 30px; height: 30px; background-color: rebeccapurple; bottom: 0; left: 10px; } </style> </head> <body> <div class="container"> <div class="subcontainer"> <div class="subsubcontainer"> </div> </div> </div> </body> </html>