Sneyder Barreto
Carlos Difilippo
en top no utilizas un valor que cambie de acuerdo al tamaño de la pantalla, como si lo haces en el left, por lo que utilizar recursos en un calc es innecesario y no aconsejable
Victor Andres Castillo Zambrano
gracias
En la estructura base de la sección de beneficios maquetamos las etiquetas necesarias y sus clases respectivas para empezar a aplicar estilos. ¡Pues ahora es el momento! Vamos a nuestro archivo .css y empezemos con la sección del título.
Aplicar estilos en el contenedor principal
.product-detail--title { position: relative; width: 100%; min-width: 320px; height: auto; padding: 20px 10px; background-color: var(--warm-black); }
Pasos para aplicar estilos al logo
Para centrarlo entre las dos secciones:
.product-detail--batata-logo { position: absolute; width: 40px; height: 25px; top: -10px; left: calc(50% - 20px); background-image: url(""./assets/icons/batata.svg""); }
Agregar estilos al título
Ten en cuenta estos 3 elementos:
Contenedor
.product-detail--title { width: 90%; min-width: 288px; height: auto; margin: 0 auto; margin-top: 50px; text-align: center; }
H2
.product-detail--title h2 { margin-bottom: 20px; font-size: 2.4rem; font-weight: bold; line-height: 2.6rem; color: var(--just-white); }
p
.product-detail--title p { margin-bottom: 20px; font-size: 1.4rem; font-weight: 500; line-height: 1.8rem; color: #808080; }
En el navegador, podríamos observar este resultado:
¡Y bien! Recordamos algo importante sobre el position: absolute y su relación directa con su padre con position: relative. Ahora hay que trabajar en las secciones de información de nuestra sección de beneficios.
Contribución creada por: José Miguel Veintimilla (Platzi Contributor).
Sneyder Barreto
Carlos Difilippo
en top no utilizas un valor que cambie de acuerdo al tamaño de la pantalla, como si lo haces en el left, por lo que utilizar recursos en un calc es innecesario y no aconsejable
Victor Andres Castillo Zambrano
gracias
José Zárate Vera
like si tu también presionas ctrl + S cuando cambias un estilo en el inspector de elementos y se abre una ventana para guardar la pagina. xD
Victor Andres Castillo Zambrano
jejejjee me pasa mucho
John Jairo Rodriguez Rivas
jasjasa, pasa mucho eveda
German Enrique Ceballos Garcia
left: calc(50% - 20px);
left(atributo): Alinea un elemento con referencia al lado izquierdo de nuestro contenedor.
calc()(función): Nos permite realizar cálculos para determinar valores de propiedades CSS.
50%(parámetro): Representa la mitad del ancho del contenedor(para 320px, el 50% serían = 160px), lo cual alineará nuestro elemento 160px de izquierda(left) a derecha.
20px: Representan la mitad del ancho(width) de nuestro elemento, esto se hace con la finalidad de poder posicionarlo en el centro de nuestro contenedor.
Victor Andres Castillo Zambrano
gracias
Camila Andrea Díaz Serrano
Muchas gracias!!!
Diego Mejia
Ten cuidado con el contraste, puede ocasionar problemas grandes de accesibilidad:
Una herramienta que utilizo para ver si dos colores tienen contraste suficiente como para usar uno de background-color y el otro como color es contrast ratio.
Según la W3C todos los textos e imágenes con texto deben tener un contraste de al menos 4.5, cosa que podemos saber con la herramienta que ya he mencionado arriba, sin embargo. Aquí hay algunas excepciones. Espero les sea de mucha utilidad:)
Brigitte Rico
muchas gracias por este aporte, es realmente util...
Nelson Alejandro Rivas Mendoza
Excelente acotación.
Julián Ramírez
Pensé que bottom: 10px era lo mismo que top: -10px pero ahora sé que me hace falta mucho por aprender de las positions en CSS 😄.
Leonardo Esteban Omeara Garzon
por que no son lo mismo?
Percy Buendia
Bottom 10 toma de referencia la parte inferior de la caja. Y la posoción del logo sería 10px arriba de esa línea. . Top toma como referencia la línea superior de la caja. Si le das top:10px, el logo estará 10px abajo de esa línea. Pero si le das -10px, el logo estará por encima de la línea superior.
CRISTIAN BARBERO PÉREZ
Colocando en el contenedor un padding nos ahorramos el margin-top del título, y nos sirve también para separar la última tarjeta de la siguiente sección.
Por cierto, el valor de heigth: auto es el que trae por defecto el navegador, por lo que no es necesario colocarlo.
.product-detail { padding: 50px 16px; }
José Luis Díaz Santos
Muchas gracias :)
Orlando Manuel Mendoza Vargas
Para mala suerte de nosotros los desarrolladores, el año pasado salió el Samsung Galaxy fold, tiene varios tamaños de pantalla y el tamaño mínimo es de 280px 😢😢😢
Martín Andrés Gonzalez
Efectivamente. Así que hay que tenerlo en cuenta a la hora del diseño. Una herramienta interesante para eso es Responsively, podés asegurarte de cómo queda tu diseño en una gran cantidad de dispositivos:
Juan Christopher
Exacto... Pero no creo que salga un dispositivo con un tamaño de pantalla de menos de 280px ya que pierde el sentido ya que es muy pequeño.
Matías Wasiak
• Siempre que utilicemos un “position: absolute”, tenemos que verificar que el padre de ese elemento (el contenedor) tenga un “position: relative”. Esto nos ayudará a acomodar los elementos de la forma deseada.
jorge luis jaime sánchez
Un Recordatorio al usar calc() respetar los espacios entre el signo y los números estuve 20 minutos buscando que clase era la que me sobre escribía mi estilo incluso usaba el tag !important o estilos inline y no me funcionaba por no respetar los espacios.
Daniel Vergel
excelente apunte
Nayeli Brito
Muchas gracias!!
Juan Vásquez
20 minutos viendo por qué no me salía el h2 como al profe y tratando de solucionarlo, y resulta que tenía un typo. Escribió "compartación" en vez de "conparación".
Irving Juárez
Para posicionar la papa, también pueden usar margin, sin tener una posición en absolute, se hace de la siguiente forma
.contenedor-padre{ text-align: center; } .logo{ margin-top: -10px; }
Y listo, queda exactamente igual
emanuel
Excelente, funciono!
Daniel Vergel
me encanto esta solución
Ruben Ripoll
Durante el transcurso del proyecto hemos usado width y height con porcentajes, que hay de el viewport width y viewport height? no sería mejor usar esta medida teniendo en cuenta que estamos trabajando en un proyecto responsive?
Aldo Miguel Ortiz Parodi
Sí, es posible usar las vw y vh también, en el tema de las medidas hay muchas posibilidades, y hay que considerar aún que faltan los media queries para que escale a tamaño smartphone 640px, 720px y desktop.
Jose Nuñez
Para centrar un elemento que tiene una posición absoluta también podríamos usar lo siguiente:
.product-detail__batata-logo { position: absolute; width: 40px; height: 25px; top: -10px; left: 50%; transform: translateX(-50%); }
Arianna Corona
Excelente amigo, lo probé y funciona correctamente... pero puedes explicar un poco lo que hiciste? Sería genial entender el por qué de las cosas, y así seguir aplicándolo en un futuro...
Obed Paz
Otra forma de posicionar el logo de la batata
.main-product-detail span { display: inline-block; width: 4.1rem; height: 2.4rem; background: url(./assets/Icons/icon-minilogo.svg) no-repeat center/cover; position: relative; //lo puedo mover desde su propia posicion left: calc(50% - 20.5px); bottom: 12px; //simplemente empujarlo desde abajo la mitad de su altura }
Mario Barceló Sospedra
¿Por qué le da position: obsolute a la sección .main-product-detail?
Michael Steven Viloria García
se la dio fue al icono al product main se le da es relative
Rodolfo Vargas
Hola, ya qué marcó al padre como relativo, el hijo será absoluto sobre él, cuando quieras sobreponer elementos, se usa eso.
Victor Martin Ortiz Palacio
Otra opcion que utilice para centrar el logo fue la siguiente (me sirvio tambien para el boton del header)
left: 0; right: 0; margin-inline: auto;
Pueden leer mas sobre la propiedad margin-inline aqui, tambien les recomiendo revisar en caniuse que navegadores soportan esta propiedad.
Luis Gabriel Cazzullo
Hola! Una pregunta: no es redundante colocar width: 100% a los elementos con display block, por ejemplo al section? Creía que por defecto ocupaban el 100% del ancho
Percy Buendia
Si solo tuviéramos un tamaño de pantalla serviría. Pero debemos tener en cuenta en cuenta distintos dispositivos y para mantener la estética debemos usar min-with y max-with que necesita un with inicial para que funcione. Otro motivo sería implementar luego media querys para hacerlo responsive.
Israel Gutierrez
/* observe que pusimos un position relative un contenedor antes de nuestro logo, esto porque el logo busca el primer position relative para posicionarse con referencia a este, si no lo ponemos se ira a buscar el siguiente contenedor con position relative, como el main o algun otro */
Al igual que con el botón, les comparto otras alternativas para posicionar el logo:
Usando calc() también en top:
.product-detail__batata-logo { position: absolute; top: calc(0% - 12.5px); left: calc(50% - 20px); }
Usando translate():
.product-detail__batata-logo { position: absolute; top: 0%; left: 50%; transform: translate(-50%, -50%); /* Que sería lo mismo a poner translate(-20px, -12.5px); */ }