Sneyder Barreto
Ivan Daniel Cuevas
Florencia Urquiza
Posiblemente has visto el botón en medio de dos secciones y pensaste: ¡que complicado! Pues no lo es tanto. Se lo conoce como botón flotante porque aparentemente no está en ninguna sección, sino en medio de dos, dando la sensación de estar en el aire. La forma de posicionarlo ahí es mucho más sencilla de lo que parece: modificando su position.
Cómo aplicar astilos al botón
Sigue estos pasos:
.header--title-container .header--button { position: absolute; left: calc(50% - 118px); top: 270px; display: block; margin-top: 35px; padding: 15px; width: 229px; height: 48px; background-color: var(--off-white); /*Sombra*/ box-shadow: 0px 4px 8px rgba(89, 73, 30, 0.16); border: none; border-radius: 5px; font-size: 1.4rem; font-weight: bold; text-decoration: none; color: var(--black); }
Quedaría de esta manera:
Cómo dar estilos al ícono
¿Cómo llamar un asset desde otra carpeta?
Si el archivo que quieres llamar está contenido en una carpeta distinta a la de tu documento .css, debes hacerlo llamando a la capeta principal.
Colocas ../ en la url para llevarte a la carpeta anterior y desde ahí buscar el asset. En este caso el archivo está en una carpeta dentro de la carpeta en que está el archivo .css, por lo que pondríamos url(""./assets/icons/down-arrow.svg"").
Recuerda que la url siempre va entre comillas.
.header--button span { display: inline-block; width: 13px; height: 8px; margin-left: 10px; background-image: url(""./assets/icons/down-arrow.svg""); }
Así quedaría nuestro resultado final:
¡Terminamos el header! Aprendimos y repasamos muchas funciones importantes como posicionar el contenido con flex, definir degradados y a usar calc (te puede salvar de muchos problemas simétricos.
Contribución creada por: José Miguel Veintimilla (Platzi Contributor).
Sneyder Barreto
Ivan Daniel Cuevas
Florencia Urquiza
Horacio Andres Flores Alberto
Jesús David Cuéllar
Gonzalo Vidal
Facundo Salade
Jose Luis Barbosa Cepeda
Facundo Salade
CRISTIAN BARBERO PÉREZ
Jesus Federico David Herrera
John Steven Bernal Gonzalez
Andres Felipe Vargas Gonzalez
Ricardo Mazuera
Javier Paulo Perdomo Tamani
Nicolás Felipe Fernandez Fandiño
Juan Christopher
Joaquín Escalona Mella
Pascal Salvador Miranda Valdés
Luis Ariza
Juan Sebastian Monje Camacho
Fabricio Micheli
José Luis Díaz Santos
Juan Christopher
Jhon Guevara
Eduardo Rodriguez
Juan Jiménez
Juan Christopher
Edward Cabrera
Obed Paz
Cesar Hernández Ramírez
Tommy Toala Cox
Daniel González
Ariel Ezequiel Biazzo Genua
Claudia Gonzalez
Iván Arcos
Fernando Rocha Olivera
Israel Gutierrez
Alejandro Dotor
John Cardenas
Sergio Brandon De Lucio Chavero
Leonardo Esteban Omeara Garzon
Dario Paladines
Jenny Giraldo Vásquez
Hector Alejandro Jimenez Lopez
María Antonia Lobato
Waldir Leonardo Jesus Lopez Peve
Linda Luna
Joel Dominguez Merino
JOSE MARIO ANGEL GARCIA SANDOVAL
Daniel Alberto Esquinazi
Sergio Andrés Bolaños Penagos
Ricardo Mazuera
Les comparto otras alternativas para posicionar el botón (quitando el margin-top):
Usando calc() también en top:
.header__title-container .header__button { position: absolute; top: calc(100% - 24px); left: calc(50% - 114.5px); }
Usando translate():
.header__title-container .header__button { position: absolute; top: 100%; left: 50%; transform: translate(-50%, -24px); }
Gracias!
¿Cómo sabes cuántos px hay que restar?
Si son unos enfermos de la simetria como yo jeje, se tiene que tomar el 50% del total del width del contenedor en este caso 229px y quedaria asi: left: calc(50% - 114.5px);
eres de los míos hice lo mismo XD
Pero.. no tiene sentido de colocar .5px... ya que el píxel es la mínima unidad de renderizado de una imagen... si pones 114.5px es lo mismo que 114px para el tamaño del boton ... así que en el tema de píxeles no tiene mucho sentido hacer eso, lo ideal sería poner 115px, viéndolo como queda físicamente se pueden notar mejor las diferencias...como ves en el caso de poner 114.5px o 114px el botón queda un poco para la derecha, es una nada... pero supongo que si te gusta la simetría te interesará 😁
Una forma más fácil de centrar al botón sería así:
left: 0; right: 0; margin-right: auto; margin-left: auto; }``` Creo que es más sencillo, queda perfectamente alineado sin necesidad de hacer cálculos nosotros mismos.
muchas gracias por el aporte! <3
De nada!
A mí me daba problemas el icono down-arrow porque había descargado de Figma lo que pone #mdi_keyboard_arrow_down. Descargando en su lugar donde pone Vector me queda como al profe.
me paso lo mismo .. tuve que bajarlo como vector
Tambien me paso lo mismo.
Hola :D
Espero terminar la escuela de desarrollo web creandole una pagina web a mi esposa
Vas por buen camino!, ¿ya hiciste el Curso definitivo de HTML y CSS?. Con ese créeme que le entregas una página lista. Éxitos y bendiciones en este camino del desarrollo
Super!👏
Vengo a ahorrarles dolores de cabeza Tengan cuidado con los espacios en la opcion calc por que de lo contrario no tomara el estilo.
Gracias.
ajjaja gracias!! hubiera leído este comentario antes. La verdad es que no me dolió la cabeza pero si que pasé unos segundos probando hasta que entendí que había que dejar espacios. Saludos!
Saludos comunidad
Leyendo los comentarios de la comunidad me di cuenta que mi proyecto corria peligro de romperse ya que todas mis unidades de medida estaban en rem, por lo que si el usuario hacia ajustes del tamaño de fuente en su navegador, todo el diseño seria distinto. Asi que cambie todas ellas a px de inmediato! pero... jugando con las dimensiones de fuente en el navegador (especificamente chrome) mi diseño se rompia igual, pero entendi el porque. Cuando el font size del texto crece (al ajustar la configuracion del navegador) lo hace hacia abajo junto a su line height y el contenido puede quedar debajo de algun elemento flotante (como el boton del header en posicion absolute en este proyecto). Usando esta linea de codigo css en el header:
height: 353px;
con una configuracion de mi browser de:
pero...
con este codigo en el header:
height: 35.3rem;
y la misma configuracion del navegador, el proyecto quedaba asi:
Por lo tanto podriamos concluir que...
De preferencia ajustar propiedades verticales que NO sean font-size usando rem.
Esto lo descubri jugando con el tamaño de fuente del navegador y las propiedades rem y px. De seguro deben haber buenas practicas sobre el tema ahi fuera u optimizaciones para proyectos web a todo terreno. Si conoces mas informacion sobre el tema suma tu comentario, hagamos debate e intercambio de ideas. Ese conocimiento nos ayudara a todos!
Excelente aporte hermano, logre entender mucho mejor cuando aplicar el rem y px!!
Excelente aporte, pero no solo en el Header, sino en todos los height contenedores (Header, Header_title-container, .header_button, span), esto hara que todo se alargue hacia abajo cuanto el tamano de la fuente aumentey no se sobrelapan
Les comparto info sobre la función CALC.
La función CSS Calc() permite realizar operaciones con los valores de propiedades CSS. Se puede usar para operar con medidas, frecuencias, ángulos, tiempo, porcentajes, números y enteros.
Sintaxis:
/*Propiedad: calc ( expresión)*/ width: calc(100% - 80px);
Se pueden utilizar operaciones de suma (+), resta (-), multiplicación (*) y división (/). En el caso de la suma y resta, es necesario siempre dejar espacios en blanco (whitespaces) entre los valores para que no se generen errores.
Muchas gracias Fabricio ;)
Gracias.
Se ve cool en azul !
Estilos .header--title-container .header--button:
position: absolute; left: calc(50% - 118px); top: 270px; display: block; margin-top: 35px; padding: 15px; width: 229px; height: 48px; background: var(--off-white); box-shadow: 0px 4px 8px rgba(89, 73, 30, 0.16); border: none; border-radius: 4px; font-size: 1.4rem; font-weight: bold; text-decoration: none; color: var(--black);
Estilos .header--title-container .header--button span:
display: inline-block; width: 13px; height: 8px; margin-left: 10px; background-image: url("../assets/icons/arrdown.svg"); background-size: cover; background-position: center; background-repeat: no-repeat;
Position absolute toma a position relative como padre directo y puede reposicionarse en cualquier parte del header.
Gracias, me sirvio tu aporte.
Gracias, me sirvió el ultimo aporte
Al principio de la clase creo que el profe se equivoco, pues si es posible usar top, right, left y bottom con position: relative y lo hace desde su punto original de su posicion, a diferencia de absolute que modifica el flujo de nuestro layout. Solo position: static no nos deja usar las 4 propiedades offset antes mencionadas (top, left, etc).
Esto les servirá para centrar el elemento sin tener que saber las dimensiones exactas del elemento:
left: 50%; transform: translateX(-50%);
El transform lo que hace es mover el elemento respecto a su propio centro. En este caso yo indico que quiero moverlo en su eje X, un 50% de su ancho actual en dirección negativa, es decir, a la izquierda 👍
¡Que maravilla! Gracias por el aporte
Esta forma de hecho es más óptima que la hecha por el profesor a nivel de renderizado. Las ventajas del uso de transform se ven en detalle en el Curso de Optimización Web
Bien!!!! Genial!!
Yo lo hice con el display inline-flex y me ayudo a no tener que hacer cálculos, quedando centrado, solo agregando el tamaño y el margin. Es mi aporte pero si alguien nota algún error me encantaría que me lo comentara
.header--container-button { display:inline-flex; justify-content: center; align-items: center; margin-top: 35px; width: 229px; height: 48px; font-size: 1.4rem; font-weight: bold; background-color: var(--off-white); color: var(--warm-black); text-decoration: none; box-shadow: 0px 4px 8px rgba(89, 73, 30, 0.16); border-radius: 4px; }
Si tienen problema con la imagen como la descargó Diego, les sugiero bajarla como Vector.svg
Muchísimas gracias, me salvaste de un problema que no podía resolver.
muchísimas gracias, también me salvaste, sabes a qué se deba ???
¿Es buena o mala practica usar unidades REM en un width, height, top, min width, etc?
Es mala práctica. Es recomendable usar REM solo con fuentes. La razón es que no sabemos que tamaño de fuente tiene configurado por defecto el usuario en su navegador. Si tiene un tamaño de fuente muy grande y usamos REM para dar dimensiones, nuestro diseño se romperá.
REM solo se utiliza para fuentes :) <3 , esto se ve en el curso definitivo de HTML y CSS . <3
Para centrar a la mitad el boton, se mueve desde la izquierda un 50%, pero el boton empieza en ese 50% por lo que tenemos que restar a este 50% la mitad del ancho de nuestro boton, en este caso: 229px/2 =114.5px
Perfecto gracias, justo lo que queria entender
Muchas gracias, no lograba entender de donde se sacaban los pixeles pero ahora ya se como usarlo :)
Recuerden quitar la i que está dentro de la etiqueta span, me demoré 10 minutos en descifrar la razón por la cual mi flecha se veía como una runa vikinga. 🤦♂️
Jajajajajajaja
jajajajaja me paso lo mismo jajajajajajaja
Veníamos _taaan _bien con las explicaciones y tuvo que aparecer un botón flotante con posición absoluta y ahora hay que hacer cálculos para que quede mitad acá y mitad allá. :-(
jaja la verdad que es difícil entender al principio. Aún me cuesta entender la lógica que lleva pero poco a poco amigo :D
centrar elementos abosolutos a la mitad
bottom { left: 0; right: 0; margin: 0 auto;
No me gusta usar tantos valores fijos en px preferiria utilizar rem o % entiendo para los min-width/max-width o algunos otros. Que piensan ustedes sobre el uso de unidades absolutas como px como lo esta haciendo el profesor?
Pfff la verdad ahí he tenido un lío, seguún he entendido solo se utiliza rem cuando son tamaños de letras y así, aunque también lo he hecho reemplazando todos los px con rem, así que no sé
Justo estoy en las mismas que ustedes, ¿quién nos ayudará con este tema?. Yo para todo uso REM.