Ahora que las has terminado de aplicar estilos a las tarjetas, debemos crear este scroll horizontal que se genera al navegar entre ellas.
Como desarrollador fronted vas a ocupar muchas veces frameworks para acelerar tu proceso de creación, como para crear este tipo de efectos. Sin embargo, para esta ocasión usaremos sólo código CSS con la intención de comprender cómo están construidos. ¡Vamos a nuestra hoja de estilos!
Primero, para que nuestro contenedor pueda generar el scroll entre las tarjetas estas deben tenerlo. Centramos todas las tarjetas para general un scroll con scroll-snap-align: center. Esta línea la colocamos justo debajo del position: relative del contenedor de nuestra tarjeta.
Llamamos la clase del contenedor de las tarjetas con .plans-container–slider.
display: flex ya nos genera un scroll horizontal, pero se desborda del contenedor y se genera un overflow por fuera.
Le damos una altura de 316px, mayor al contenedor de las tarjetas.
Generamos un scroll sobre el eje x con overflow-x: scrol. Esta propiedad establece lo que se muestra cuando el contenido desborda los bordes izquierdo y derecho de un elemento a nivel de bloque. Puede que no sea nada, una barra de desplazamiento o el contenido adicional.
overscroll-behabior establece lo que hace un navegador cuando alcanza el límite de un área de desplazamiento.
Para que al deslizarnos sobre las tarjetas la vista se centre en el centro de cada una de ellas como si tuviesen un iman, usamos scroll-snap-type: x proximity.
En el navegador podemos observar que las tarjetas están pegadas una a otra. En CSS hay una nueva propiedad llamada gap que nos ayuda a resolver este problema.
Actualmente gap es soportado por casi todos los navegadores, sin embargo, para usar una propiedad nueva, debemos al menos confirmar que tenga un 95% de disponibilidad para evitar que los usuarios tengan una mala experiencia.
Puedes consultar en la página Can I Use, entre otras cosas, la cantidad de navegadores en que una propiedad está disponible. En este caso para solucionarlo vamos al contenedor de las tarjetas y buscamos la propiedad de margin.
Y así hemos terminado esta última sección de planes por completo. Quizás te preguntes por los íconos de navegación a los costados. Por supuesto que aún se puede hacer más usando Javascript y añadiendo interacciones al hacer clic, pero eso te lo dejamos a ti. Ya sabes construir un scroll usando únicamente CSS, eso es bastante genial.
Contribución creada por: José Miguel Veintimilla (Platzi Contributor), con aportes de John Steven Bernal Gonzalez.
Aportes 127
Preguntas 32
Ordenar por:
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
La propiedad de CSS overflow-x establece lo que se muestra cuando el contenido desborda los bordes izquierdo y derecho de un elemento a nivel de bloque. Puede que no sea nada, una barra de desplazamiento o el contenido adicional.
la propiedad de css overscroll-behabior establece lo que hace un navegador cuando alcanza el límite de un área de desplazamiento. Es una abreviatura de overscroll-behavior-x y overscroll-behavior-y.
La propiedad CSS scroll-snap-type establece qué tan estrictamente se aplican los puntos de snap en el contenedor de desplazamiento en caso de que haya uno
Bueno después de HORAS investigando y cientos de paginas de stack-overflow** he conseguido el scroll con flechitas que quería. ** Este scroll con flechitas es mi bebe así que mírenlo con amor.
/* Codigo para hacer scroll a un div horizontal por medio de flechas.
Uso el tamaño de las cajas dentro del slide para restarselo al scrollLeft y llevarme
a la posicion deseada.
Además oculto las flechas dependiendo de en que posicion me encuentre*///obtengo los dos elementos de flechavar gray_arrow_left = document.getElementById("left-gray-arrow");
var gray_arrow_right = document.getElementById("right-gray-arrow");
//el contenedor de los planes aka donde se hace scrollvar plans_container = document.getElementById("plans-slider");
//las tarjetas de planes porque necesito saber su tamaño, y este puede variarvar plans_card = document.getElementsByClassName("plans-container--card");
//averiguo el tamaño de las tarjetas, esta es la posicion central donde deberia emepezarvarsize = plans_card[1].clientWidth;
//Para que la cajita del centro se muestre por default
plans_container.scrollLeft = size;
gray_arrow_left.addEventListener("click", function(){
gray_arrow_right.style.display = "inline-block";
//Le resto el tamaño de las tarjetas a la posicion del scroll para mover a la izquierda
plans_container.scrollLeft -= size;
//Si se encuentra en la primera tarjeta deberia esconder la flecha izquierda,// pues porque ya no puede seguir llendo a la izquierda :Pif(plans_container.scrollLeft <= size*2){
gray_arrow_left.style.display = "none";
}
});
gray_arrow_right.addEventListener("click", function(){
gray_arrow_left.style.display = "inline-block";
plans_container.scrollLeft += size;
if(plans_container.scrollLeft >= size){
gray_arrow_right.style.display = "none";
}
});
Estilos de las flechitas
Primero agregue un div en el html para envolver toodo el slide, y ahi es que voy a poner las flechas, porque si las pongo dentro del elemento que hace scroll ellas hacian scroll con el elemento y yo no quería eso.
<div class= "slider-container">
<spanid="left-gray-arrow"class="arrow"></span></a>
<span id="right-gray-arrow"class="arrow"></span>
.
el section con scroll va aqui
.
Ahora yo quería que cuando pasara a cada una de las cajitas de planes, esta me quedara en el centro bien bonita. Y esto lo podría hacer en teoría, agregando un padding a los lados del elemento scroll. PERO NO porque resulta que el padding-right no se aplica a el scroll horizontal
La solución que me inventé fue** crear un elemento con visibility: hidden del ancho que yo quería que tuvera el padding** y asi engañar a el navegador que me quería hacer la vida dificil
Aproveché la clase de mis otras cajitas de planes para que tengan los mismo estilos y que no me salga ninguna sorpresita por un margin o cualquier cosa rara
Para los que esten viendo este curso en 2021 o más adelante, sepan que ya pueden usar gap. El 13 de agosto de 2021 ya es soportado en la mayoría de los navegadores.
<sectionclass="plans-container--slider"><articleclass='carousel__item'><divclass="plans-container--card"><divclass="plan-info-container"><h3class="plan-card--title">Pago Mensual</h3><pclass="plan-card--price"><sup>$</sup>19</p><pclass="plan-card--saving">*Ahorras $1 comparado al plan mensual.</p><buttonclass="plan-card--ca">Escoger este <span></span></button></div></div></article><articleclass='carousel__item'><divclass="plans-container--card"><divclass="plan-info-container"><h3class="plan-card--title">Pago Trimestral</h3><pclass="plan-card--price"><sup>$</sup>39</p><pclass="plan-card--saving">*Ahorras $72 comparado al plan mensual.</p><buttonclass="plan-card--ca">Escoger este <span></span></button></div></div></article><articleclass='carousel__item'><divclass="plans-container--card"><pclass="recommended">Recomendado</p><divclass="plan-info-container"><h3class="plan-card--title">Pago Anual</h3><pclass="plan-card--price"><sup>$</sup>99</p><pclass="plan-card--saving">*Ahorras $129 comparado al plan mensual.</p><buttonclass="plan-card--ca">Escoger este <span></span></button></div></div></article></section>
Aparte lleva los mismos estilos de la clase para las cards como se vio en la clase.
El carousel lo vi en un codepen y lo adapte para un proyecto pasado.
.
Espero que les sea de ayuda!😄
para solucionar el tema del scroll de la utlima tarjeta que se corta un poco y queda en el borde lo que hice fue poner un article mas con una etiqueta br dentro, no es la solucion mas elegante pero funciona.
Chicos el Scroll vertical es sencillo de conseguir, basicamente es poner los objetos de forma vertical con flex-direction: Column; abrovechando que ya tenemos el display flex. Luego tenemos que cambiar nuestras tres propiedades de overflow que tenemos en x a y.
display:flex;
flex-direction:column;
overflow-y: scroll;
overscroll-behavior-y: contain;
scroll-snap-type: y proximity;```
¿Cómo hacer que un elemento contenedor tenga un scroll horizontal para poder visualizar los elementos interiores?
Primero hacemos que el contenido no se desborde, que solo sea visible dentro del contenedor aplicándole la siguiente propiedad css al elemneto contenedor:
.container{
display: flex; /*Esto hace que los elementos hijos se acomoden uno a lado del otro, generando un scroll*/overflow: scroll;/*Con esta propiedad hacemos que el comportamiento del contenedor contenga sus elementos haciendo que el scroll solo afecte al contenedor */
overscroll-behavior-x: contain; /*Establece lo que hace un navegador cuando alcanza el límite de un área de desplazamiento*/
}
También le agregamos una regla a los elementos hijos para darle un efecto al deplazmiento, el navegador nos ayuda a centrar el elemento al hacer scroll.
item{
scroll-snap-type: center;
}
Typo: a typographical error.
Hasta ahora me anime a buscar que significa 😅
Creo que otro punto importante, es que al hacer el scroll las tarjetas laterales quedan muy juntas al borde de la pantalla. Para eso se puede aplicar un margin al slider
“Por internet explorer no se preocupen Microsoft comento que ya lo va matar” De Granda siempre metiendo un poco de humor de vez cuando si de por si sus cursos ya son buenos 😃
el profesor confunde con esa forma de nombrar las clases. En el container del medio coloca plan info container y los otros plan card, al momento de acomodar los estilos, los dos contenedores restantes no lo toman porque está todo con nombres distintos. Esta vaina que es dificil y lo dejan más confundido a uno.
Increíble. Hasta ahora había estado trabajando los slides con bootstrap cuando no quería tocar JavaScript directamente.
De seguro es algo que voy a estar utilizando es muchas ocasiones.
La propiedad de CSS overflow-x establece lo que se muestra cuando el contenido desborda los bordes izquierdo y derecho de un elemento a nivel de bloque. Puede que no sea nada, una barra de desplazamiento o el contenido adicional.
overscroll-behavior
la propiedad de css overscroll-behabior establece lo que hace un navegador cuando alcanza el límite de un área de desplazamiento. Es una abreviatura de overscroll-behavior-x y overscroll-behavior-y.
scroll-snap-type
La propiedad CSS scroll-snap-type establece qué tan estrictamente se aplican los puntos de snap en el contenedor de desplazamiento en caso de que haya uno
Solo agreguen este after al ultimo hijo, es decir, a la ultima tarjeta. Automaticamente se soluciona el problema que es generado por la misma propiedad de Overflow que solo dimensiona el contenido visible del elemento e ignora margin y padding.
Ya que estamos en esto del Scroll quiero enseñarles algo que esta super bien, y ya es nativo de CSS.
Resulta que se estandarizaron dos propiedades para la barra de scroll, los cuales son `scrollbar-width` y**** `scrollbar-color`**.**
Tienen la documentación resumida hecha por [Google](https://developer.chrome.com/docs/css-ui/scrollbar-styling?hl=es-419), o su desean pueden buscar en MDN.
veo que el curso ya tiene su tiempo, hoy 8 diciembre del 2023 ya esta disponible en la mayoria y las versiones de los navegadores ya son muy avanzadas a las de la clase. Ya es recomendable usarlo supongo.
Clase 27: Ahora que las has terminado de [aplicar estilos a las tarjetas](https://platzi.com/clases/2030-mobile-first/32325-detallando-estilos-en-tarjetas-de-planes/), debemos crear este scroll horizontal que se genera al navegar entre ellas.
Como desarrollador fronted vas a ocupar muchas veces frameworks para acelerar tu proceso de creación, como para crear este tipo de efectos. Sin embargo, para esta ocasión usaremos sólo código CSS con la intención de comprender cómo están construidos. ¡Vamos a nuestra hoja de estilos!
Primero, para que nuestro contenedor pueda generar el scroll entre las tarjetas estas deben tenerlo. Centramos todas las tarjetas para general un scroll con ***scroll-snap-align: center***. Esta línea la colocamos justo debajo del *position: relative* del contenedor de nuestra tarjeta.
`.plans-container--card` {
` position`: relative;
` scroll-snap-align`: center;
...
}
## Cómo hacer un scroll
* Llamamos la clase del contenedor de las tarjetas con ***.plans-container–slider***.
* ***display: flex*** ya nos genera un scroll horizontal, pero se desborda del contenedor y se genera un **overflow** por fuera.
* Le damos una altura de ***316px***, mayor al contenedor de las tarjetas.
* Generamos un scroll sobre el eje ***x*** con ***overflow-x: scrol***. Esta propiedad establece lo que se muestra cuando el contenido desborda los bordes izquierdo y derecho de un elemento a nivel de bloque. Puede que no sea nada, una barra de desplazamiento o el contenido adicional.
* ***overscroll-behabior*** establece lo que hace un navegador cuando alcanza el límite de un área de desplazamiento.
* Para que al deslizarnos sobre las tarjetas la vista se centre en el centro de cada una de ellas como si tuviesen un iman, usamos ***scroll-snap-type: x proximity***.
`.plans-container--slider` {
` display`: flex;
` height: 316px`;
` overflow-x`: scroll;
` overscroll-behavior-x`: contain;
` scroll-snap-type`: x proximity;
}
![image(228).png](https://static.platzi.com/media/user_upload/image%28228%29-c3539218-8fc2-4197-bf5b-0844a7e76283.jpg)
En el navegador podemos observar que las tarjetas están pegadas una a otra. En CSS hay una nueva propiedad llamada gap que nos ayuda a resolver este problema.
Actualmente gap es soportado por casi todos los navegadores, sin embargo, para usar una propiedad nueva, debemos al menos confirmar que tenga un **95% de disponibilidad** para evitar que los usuarios tengan una mala experiencia.
Puedes consultar en la página [Can I Use](https://caniuse.com/), entre otras cosas, la cantidad de navegadores en que una propiedad está disponible. En este caso para solucionarlo vamos al contenedor de las tarjetas y buscamos la propiedad de ***margin***.
`.plans-container--card` {
...
` margin: 50px auto 0`;
...
}
Cambiamos el atributo auto por 15px.
`.plans-container--card` {
...
` margin: 50px 15px 0`;
...
}
Y ya tendríamos este resultado:
![image(229).png](https://static.platzi.com/media/user_upload/image%28229%29-6f8a8125-db51-4400-9d26-474179ebd207.jpg)
Y así hemos terminado esta última sección de planes por completo. Quizás te preguntes por los íconos de navegación a los costados. Por supuesto que aún se puede hacer más usando Javascript y añadiendo interacciones al hacer clic, pero eso te lo dejamos a ti. Ya sabes construir un scroll usando únicamente CSS, eso es bastante genial.
El avance, emocionado por terminar, y degustado por que tengo que arreglar algunas cosas:
El html:
<sectionid="plans"class="main-plans-container"><divclass="plans--title"><h2>Escoge el plan que mejor se ajuste a ti.</h2><p>Cualquier plan te da acceso completo a nuestra plataforma.</p></div><sectionclass="plans-container--slider"><articleclass="plans-container--card basic"><pclass="recomended plan-basicó">Básico</p><divclass="plan-info-container"><h3class="plan-card--title">Pago mensual</h3><pclass="plan-card--price"><sup>$</sup> 129</p><pclass="plan-card--saving">Plan basicó, renovación automatica.</p><buttonclass="plan-card--ca">Escoge este <imgsrc="assets/icons/orange-right-arrow.svg"alt="arrow right orange"></img></button></div></article><articleclass="plans-container--card"><pclass="recomended">Recomendado</p><divclass="plan-info-container"><h3class="plan-card--title">Pago Anual</h3><pclass="plan-card--price"><sup>$</sup> 99</p><pclass="plan-card--saving">*Ahorras <b>$129</b> comparado al plan mensual.</p><buttonclass="plan-card--ca">Escoge este <imgsrc="assets/icons/orange-right-arrow.svg"alt="arrow right orange"></img></button></div></article><articleclass="plans-container--card plus"><pclass="recomended">+Plus</p><divclass="plan-info-container"><h3class="plan-card--title">Pago Anual</h3><pclass="plan-card--price"><sup>$</sup> 150</p><pclass="plan-card--saving">Ahora tendra ecceso tu, y un amigo.</p><buttonclass="plan-card--ca">Escoge este <imgsrc="assets/icons/orange-right-arrow.svg"alt="arrow right orange"></img></button></div></article></section></section>
Se puede crear un scroll desde css sin necesidad de usar frameworks para no cargar de tantos archivos el proyecto.
Overflow sirve para indicar al navegador qué es lo que debe hacer con el contenido que no cabe dentro de un contenedor, según las dimensiones que se le han asignado
overflow-x:scroll,, Permite mostrar unas barras de desplazamiento para que el usuario pueda desplazarse sobre el contenido y ver áreas que quedarían fuera del contenedor.
Yo le agregue un padding 0 40px para centrar las tarjetas de los extremos en la vista 320 ✌🏻 y repeti el proceso del video en la sección de las tablas para dar el mismo resultado de scroll. Solo que en este caso, agregue una segunda clase en ambas tablas para agregar la linea de codigo
Les comparto unos ajustes que les ayudara en las vistas más grandes:
con el overflow en auto van a lograr que cuando incremente la pantalla y no necesiten el overflow este desaparezca.
El max-width tambien les va ayudar a organizar los elementos en vistas con más de 770px y el margin 0 auto ayuda a posicionar el slider-container una vez deja de crecer.
Espero les sirva
proximity
La ventana gráfica de este contenedor de desplazamiento puede descansar en un punto de ajuste si no se desplaza actualmente teniendo en cuenta los parámetros de desplazamiento del agente de usuario. Si se agrega, mueve, elimina o cambia el tamaño del contenido, el desplazamiento de desplazamiento se puede ajustar para mantener el descanso en ese punto de ajuste.
Cada flecha fue creado como un enlace (<a></a>), de tal manera que al darle click lo dirija al siguiente plan. En el primer plan, el botón izquierdo lo enlace al tercer plan y el botón derecho lo enlace al segundo plan, en el segundo plan el botón izquierdo lo enlace al primer plan y el botón derecho lo enlace al tercer plan, y de la misma manera con el tercer plan.
HTML
<sectionid="plans"class="main-plans-container"><divclass="plans-container__title"><h2>Escoge el plan que mejor se ajuste a ti.</h2><p>Cualquier plan te da acceso completo a nuestra plataforma.</p></div><divclass="plans-container__slider"><articleclass="plans-container__card"id="plan1"><divclass="plan-card"><h3class="plan-card__title">Pago Anual</h3><pclass="plan-card__price"><span>$</span>99</p><pclass="plan-card__saving">*Ahorras $129 comparado al plan mensual.</p><buttonclass="plan-card__button">Escoger este <span></span></button></div><ahref="#plan3"class="left-arrow"><imgsrc="assets/icons/plan-left-arrow.svg"alt="Botón para ir al plan 3"></a><ahref="#plan2"class="right-arrow"><imgsrc="assets/icons/plan-right-arrow.svg"alt="Botón para ir al plan 2"></a></article><articleclass="plans-container__card"id="plan2"><pclass="recommended">Recomendado</p><divclass="plan-card"><h3class="plan-card__title">Pago Anual</h3><pclass="plan-card__price"><span>$</span>99</p><pclass="plan-card__saving">*Ahorras $129 comparado al plan mensual.</p><buttonclass="plan-card__button">Escoger este <span></span></button></div><ahref="#plan1"class="left-arrow"><imgsrc="assets/icons/plan-left-arrow.svg"alt="Botón para ir al plan 1"></a><ahref="#plan3"class="right-arrow"><imgsrc="assets/icons/plan-right-arrow.svg"alt="Botón para ir al plan 3"></a></article><articleclass="plans-container__card"id="plan3"><divclass="plan-card"><h3class="plan-card__title">Pago Anual</h3><pclass="plan-card__price"><span>$</span>99</p><pclass="plan-card__saving">*Ahorras $129 comparado al plan mensual.</p><buttonclass="plan-card__button">Escoger este <span></span></button></div><ahref="#plan2"class="left-arrow"><imgsrc="assets/icons/plan-left-arrow.svg"alt="Botón para ir al plan 2"></a><ahref="#plan1"class="right-arrow"><imgsrc="assets/icons/plan-right-arrow.svg"alt="Botón para ir al plan 1"></a></article></div></section>
Hola! al momento de ver este video y al revisar en la pagina la implementación de gap- Flexbox en los distintos navegadores, se evidencia que el uso aumento a un porcentaje de 88.35%.
Hice que haya un poco de interacción creando dos flechas ubicadas con un position:absolute;
Las cuales son dos etiquetas tipo ancord(a), ligada a un ID que le puse a cada tabla
También le agregué un scroll-behavior: smooth ; para que fuera suave el desplazamiento
-Esto funciona; sin embargo, si es una pantalla más grande, se verán las flechas de la otra tarjeta.
De todas maneras les dejo el codigo por si lo quieren probar, aunq me imagino q más de uno debio intentar algo asi
.plans-container--slider{
display:flex;
height: 316px;
/* voy a crear el scroll, empezamos por overflow-x, para trabjar verticalmente, este solo tiene efecto con los elemento dentro del contenedor */overflow-x:scroll;
scroll-behavior: smooth ;
overscroll-behavior-x:contain;
/* scroll-snap-type esta propiedad hace que si me ubico en medio de dos tarjetas, se ira a la más cercana y no quedara parada en la mitad */
scroll-snap-type: x proximity;
/* luego de estas propiedades, tenemos que agregarle al contenedor de las tarjetas otra regla para que pueda funcionar y decir en que parte queremos que se centre(scroll-snap-align:center;) */
}
.flecha-izquierda{
position:absolute;
top:30%;
left:5%;
height: 20px;
width: 20px;
background:url(./assets/assets/icons/izquierda-flecha.png) center/cover no-repeat;
}
.flecha-derecha{
position:absolute;
top:30%;
right:5%;
height: 20px;
width: 20px;
background:url(./assets/assets/icons/derecha-flecha.png) center/cover no-repeat;
}
pd: si alguien conoce la extensión para hacer gift pasemela xD
Se me ocurrió agregar un margin a los costados de las tarjetas con nth::child - aunque de momento no he sido capaz de centrar en la versión escritorio, supongo que cuando agreguemos los media queries cambiamos el with del slider contenedor
/**margen al lado de las tarjetas*/.plans-container--slider.plans-container--card:nth-child(1) {
margin-left: 100px;
}
.plans-container--slider.plans-container--card:nth-child(3) {
margin-right: 100px;
}
.
Pude acomodar el diseño de las dos columnas laterales del slider en función a esta implementación del scroll. Así es como me quedó. Código abajo
HTML
<sectionclass="plans-container--slider"><!-- Aqui van las cards --></section><divclass=" plans-container--column plans-container--column__left"></div><divclass="plans-container--column plans-container--column__right"></div>
CSS
.plans-container--slider{
width: 65%;
height: 316px;
/*El margin para centrarlo */margin: 0 auto;
}
.plans-container--column{
/*El height es el mismo que el card (.plans-container--card)*/height: 250px;
position: absolute;
/*las dos barras juntan un 30%, el gap que se da con la card es el restante del width, que en este caso es de 5%*/width: 15%;
background-color: var(--just-white);
/*Estas columnas están en el contenedor principal (.main-plans-container), el cual tiene un padding vertical de 70px. Poniendo este tamaño como bottom, casi se alinea con el slide, pero el height añadido de la barra del scroll arruina los cálculos. Pero me gusta como quedó xD*/bottom: 70px;
border-radius: 5px;
}
.plans-container--column__left{
left: 0;
}
.plans-container--column__right{
right: 0;
}
Por cierto, sabían que con la extensión live server de vscode pueden visualizar en tiempo real la página en sus dispositivos moviles, tan solo deben teclear en el navegador la dirección ip privada del pc donde están codificando y el puerto del servidor, eso sí, deben estar conectados a la misma red.
Con el siguiente CSS, logre que las tarjetas de los bordes tambien se mantengan en el centro, sin embargo, las tarjetas siempre se mantendran de 230px. Este efecto se ve bien para moviles y tablets, para pc, no tanto.
Las fotos son del media query de una tablet (768px, 874px)
<sectionid="plans"class="main-plans-container"><divclass="plans--title"><h2> Escoge el plan que mejor se ajuste a ti. </h2><p>Cualquier plan te da acceso completo a nuestra plataforma</p></div><!--targetas --><sectionclass="plans-container--slider"><articleclass="plans-container--card"><divclass="plan-info-container "><h3class="plan-car--title">Pago Anual </h3><pclass="plan-card--price"><span>$</span>99</p><pclass="plan-card-saving">* Ahorra $129 comparando al plan mensual.</p><buttonclass="plan-card--ca">Escoge este <span></span></button></div></article><pclass="slide-izquierdo"><span></span></p><articleclass="plans-container--card"><pclass="recomendado">Recomendado</p><divclass="plan-info-container "><h3class="plan-car--title">Pago Anual </h3><pclass="plan-card--price"><span>$</span>99</p><pclass="plan-card-saving">* Ahorra $129 comparando al plan mensual. </p><buttonclass="plan-card--ca">Escoge este <span></span></button></div></article><pclass="slide-derecho"><span></span></p><articleclass="plans-container--card"><divclass="plan-info-container "><h3class="plan-car--title">Pago Anual </h3><pclass="plan-card--price"><span>$</span>99</p><pclass="plan-card-saving">* Ahorra $129 comparando al plan mensual.</p><buttonclass="plan-card--ca">Escoge este <span></span></button></div></article></section></section>
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?