Migración a v5
Rastrea y revisa los cambios en los archivos fuente, documentación y componentes de Bootstrap para ayudarte a migrar de v4 a v5.
Dependencias
- Se eliminó jQuery.
- Se actualizó de Popper v1.x a Popper v2.x.
- Se reemplazó Libsass con Dart Sass como nuestro compilador de Sass dado que Libsass fue deprecado.
- Se migró de Jekyll a Hugo para construir nuestra documentación
Soporte de navegadores
- Se eliminó el soporte para Internet Explorer 10 y 11
- Se eliminó el soporte para Microsoft Edge < 16 (Legacy Edge)
- Se eliminó el soporte para Firefox < 60
- Se eliminó el soporte para Safari < 12
- Se eliminó el soporte para iOS Safari < 12
- Se eliminó el soporte para Chrome < 60
Cambios en la documentación
- Se rediseñó la página principal, el layout de la documentación y el footer.
- Se añadió una nueva guía de Parcel.
- Se añadió una nueva sección de Personalización, reemplazando la página de Theming de v4, con nuevos detalles sobre Sass, opciones de configuración global, esquemas de color, variables CSS y más.
- Se reorganizó toda la documentación de formularios en una nueva sección de Forms, dividiendo el contenido en páginas más enfocadas.
- De manera similar, se actualizó la sección de Layout, para desarrollar el contenido del grid más claramente.
- Se renombró la página del componente “Navs” a “Navs & Tabs”.
- Se renombró la página “Checks” a “Checks & radios”.
- Se rediseñó el navbar y se añadió un nuevo subnav para facilitar la navegación por nuestras versiones de sitios y documentación.
- Se añadió un nuevo atajo de teclado para el campo de búsqueda: Ctrl + /.
Sass
-
Hemos eliminado las fusiones predeterminadas de Sass maps para facilitar la eliminación de valores redundantes. Ten en cuenta que ahora tienes que definir todos los valores en los Sass maps como
$theme-colors. Revisa cómo manejar los Sass maps. -
Breaking Se renombró la función
color-yiq()y las variables relacionadas acolor-contrast()ya que ya no está relacionada con el espacio de color YIQ. Ver #30168.$yiq-contrasted-thresholdse renombró a$min-contrast-ratio.$yiq-text-darky$yiq-text-lightse renombraron respectivamente a$color-contrast-darky$color-contrast-light.
-
Breaking Los parámetros de los mixins de media queries han cambiado para un enfoque más lógico.
media-breakpoint-down()usa el breakpoint en sí mismo en lugar del siguiente breakpoint (ej.,media-breakpoint-down(lg)en lugar demedia-breakpoint-down(md)apunta a viewports más pequeños quelg).- De manera similar, el segundo parámetro en
media-breakpoint-between()también usa el breakpoint en sí mismo en lugar del siguiente breakpoint (ej.,media-between(sm, lg)en lugar demedia-breakpoint-between(sm, md)apunta a viewports entresmylg).
-
Breaking Se eliminaron los estilos de impresión y la variable
$enable-print-styles. Las clases de display para impresión siguen disponibles. Ver #28339. -
Breaking Se eliminaron las funciones
color(),theme-color()ygray()en favor de variables. Ver #29083. -
Breaking Se renombró la función
theme-color-level()acolor-level()y ahora acepta cualquier color que desees en lugar de solo los colores de$theme-color. Ver #29083 Cuidado:color-level()fue posteriormente eliminada env5.0.0-alpha3. -
Breaking Se renombraron
$enable-prefers-reduced-motion-media-queryy$enable-pointer-cursor-for-buttonsa$enable-reduced-motiony$enable-button-pointerspor brevedad. -
Breaking Se eliminó el mixin
bg-gradient-variant(). Usa la clase.bg-gradientpara añadir gradientes a los elementos en lugar de las clases generadas.bg-gradient-*. -
Breaking Removed previously deprecated mixins:
hover,hover-focus,plain-hover-focusyhover-focus-activefloat()form-control-mixin()nav-divider()retina-img()text-hide()(también se eliminó la clase utilitaria asociada,.text-hide)visibility()form-control-focus()
-
Breaking Se renombró la función
scale-color()ashift-color()para evitar colisión con la propia función de escalado de color de Sass. -
Los mixins de
box-shadowahora permiten valoresnully eliminannonede múltiples argumentos. Ver #30394. -
El mixin
border-radius()ahora tiene un valor predeterminado.
Sistema de colores
-
El sistema de colores que funcionaba con
color-level()y$theme-color-intervalse eliminó en favor de un nuevo sistema de colores. Todas las funcioneslighten()ydarken()en nuestro código base se reemplazaron portint-color()yshade-color(). Estas funciones mezclarán el color con blanco o negro en lugar de cambiar su luminosidad en una cantidad fija.shift-color()teñirá o sombreará un color dependiendo de si su parámetro de peso es positivo o negativo. Ver #30622 para más detalles. -
Se añadieron nuevos tintes y sombras para cada color, proporcionando nueve colores separados para cada color base, como nuevas variables de Sass.
-
Mejor contraste de color. Se aumentó la relación de contraste de color de 3:1 a 4.5:1 y se actualizaron los colores azul, verde, cian y rosa para garantizar el contraste WCAG 2.1 AA. También se cambió nuestro color de contraste de
$gray-900a$black. -
Para soportar nuestro sistema de colores, hemos añadido nuevas funciones personalizadas
tint-color()yshade-color()para mezclar nuestros colores adecuadamente.
Actualizaciones del grid
-
¡Nuevo breakpoint! Se añadió el nuevo breakpoint
xxlpara1400pxy superior. Sin cambios en los demás breakpoints. -
Gutters mejorados. Los gutters ahora se establecen en rems, y son más estrechos que en v4 (
1.5rem, o aproximadamente24px, frente a los30pxanteriores). Esto alinea los gutters de nuestro sistema de grid con nuestras utilidades de espaciado.- Se añadió una nueva clase de gutter
(
.g-*,.gx-*y.gy-*) para controlar gutters horizontales/verticales, gutters horizontales y gutters verticales. - Breaking Se renombró
.no-guttersa.g-0para coincidir con las nuevas utilidades de gutter.
- Se añadió una nueva clase de gutter
(
-
Las columnas ya no tienen
position: relativeaplicado, por lo que puede que tengas que añadir.position-relativea algunos elementos para restaurar ese comportamiento. -
Breaking Se eliminaron varias clases
.order-*que solían no usarse. Ahora solo proporcionamos.order-1a.order-5por defecto. -
Breaking Se eliminó el componente
.mediaya que puede replicarse fácilmente con utilidades. Ver #28265 y la página de utilidades flex para un ejemplo. -
Breaking
bootstrap-grid.cssahora solo aplicabox-sizing: border-boxa la columna en lugar de resetear el box-sizing global. De esta manera, nuestros estilos de grid pueden usarse en más lugares sin interferencias. -
$enable-grid-classesya no deshabilita la generación de clases de contenedor. Ver #29146. -
Se actualizó el mixin
make-colpara que por defecto genere columnas iguales sin un tamaño especificado.
Contenido, Reboot, etc
-
RFS ahora está habilitado por defecto. Los encabezados que usan el mixin
font-size()ajustarán automáticamente sufont-sizepara escalar con el viewport. Esta función antes era opcional en v4. -
Breaking Se revisó por completo nuestra tipografía de display para reemplazar nuestras variables
$display-*con un Sass map$display-font-sizes. También se eliminaron las variables individuales$display-*-weightpor una sola$display-font-weighty se ajustaron losfont-size. -
Se añadieron dos nuevos
tamaños de encabezado .display-*,.display-5y.display-6. -
Los enlaces están subrayados por defecto (no solo en hover), a menos que sean parte de componentes específicos.
-
Se rediseñaron las tablas para refrescar sus estilos y reconstruirlas con variables CSS para mayor control sobre el estilo.
-
Breaking Las tablas anidadas ya no heredan estilos.
-
Breaking Se eliminaron
.thead-lighty.thead-darken favor de las clases de variantes.table-*que pueden usarse para todos los elementos de la tabla (thead,tbody,tfoot,tr,thytd). -
Breaking El mixin
table-row-variant()se renombró atable-variant()y acepta solo 2 parámetros:$color(nombre del color) y$value(código de color). El color del borde y los colores de acento se calculan automáticamente basándose en las variables factor de la tabla. -
Se dividieron las variables de padding de celdas de tabla en
-yy-x. -
Breaking Se eliminó la clase
.pre-scrollable. Ver #29135 -
Breaking Las utilidades
.text-*ya no añaden estados hover y focus a los enlaces. Las clases helper.link-*pueden usarse en su lugar. Ver #29267 -
Breaking Se eliminó la clase
.text-justify. Ver #29793 -
Se reseteó el
padding-lefthorizontal predeterminado en los elementos<ul>y<ol>del valor predeterminado del navegador de40pxa2rem. -
Se añadió
$enable-smooth-scroll, que aplicascroll-behavior: smoothglobalmente, excepto para los usuarios que solicitan movimiento reducido a través de la media queryprefers-reduced-motion. Ver #31877
RTL
- Las variables, utilidades y mixins específicos de dirección horizontal se han renombrado
para usar propiedades lógicas como las que se encuentran en los layouts de flexbox, ej.,
startyenden lugar deleftyright.
Formularios
-
¡Se añadieron nuevos formularios flotantes! Hemos promovido el ejemplo de Floating labels a componentes de formulario totalmente soportados. Ver la nueva página de Floating labels.
-
Breaking Se consolidaron los elementos de formulario nativos y personalizados. Checkboxes, radios, selects y otros inputs que tenían clases nativas y personalizadas en v4 se han consolidado. Ahora casi todos nuestros elementos de formulario son completamente personalizados, la mayoría sin necesidad de HTML personalizado.
.custom-checkahora es.form-check..custom-check.custom-switchahora es.form-check.form-switch..custom-selectahora es.form-select..custom-filey.form-filese reemplazaron por estilos personalizados sobre.form-control..custom-rangeahora es.form-range.- Se eliminaron
.form-control-filey.form-control-rangenativos.
-
Breaking Se eliminaron
.input-group-appendy.input-group-prepend. Ahora puedes simplemente añadir botones y.input-group-textcomo hijos directos de los input groups. -
El antiguo bug de radio de borde faltante en input group con feedback de validación finalmente se solucionó añadiendo una clase adicional
.has-validationa los input groups con validación. -
Breaking Se eliminaron las clases de layout específicas de formularios para nuestro sistema de grid. Usa nuestro grid y utilidades en lugar de
.form-group,.form-rowo.form-inline. -
Breaking Las etiquetas de formulario ahora requieren
.form-label. -
Breaking
.form-textya no establecedisplay, permitiéndote crear texto de ayuda inline o en bloque como desees simplemente cambiando el elemento HTML. -
Los iconos de validación ya no se aplican a los
<select>conmultiple. -
Se reorganizaron los archivos fuente de Sass bajo
scss/forms/, incluyendo los estilos de input group.
Componentes
- Se unificaron los valores de
paddingpara alerts, breadcrumbs, cards, dropdowns, list groups, modals, popovers y tooltips para que se basen en nuestra variable$spacer. Ver #30564.
Accordion
- Se añadió un nuevo componente accordion.
Alerts
-
Las alerts ahora tienen ejemplos con iconos.
-
Se eliminaron los estilos personalizados para
<hr>en cada alert ya que ahora usancurrentColor.
Badges
-
Breaking Se eliminaron todas las clases de color
.badge-*en favor de utilidades de fondo (ej., usa.bg-primaryen lugar de.badge-primary). -
Breaking Se eliminó
.badge-pill: usa la utilidad.rounded-pillen su lugar. -
Breaking Se eliminaron los estilos hover y focus para los elementos
<a>y<button>. -
Se aumentó el padding predeterminado de los badges de
.25em/.5ema.35em/.65em.
Breadcrumbs
-
Se simplificó la apariencia predeterminada de los breadcrumbs eliminando
padding,background-coloryborder-radius. -
Se añadió la nueva propiedad personalizada CSS
--bs-breadcrumb-dividerpara una personalización fácil sin necesidad de recompilar CSS.
Botones
-
Breaking Toggle buttons, con checkboxes o radios, ya no requieren JavaScript y tienen nuevo markup. Ya no requerimos un elemento contenedor, añade
.btn-checkal<input>y acompáñalo con cualquier clase.btnen el<label>. Ver #30650. La documentación de esto se ha movido de nuestra página de Buttons a la nueva sección de Forms. -
Breaking Se eliminó
.btn-blocken favor de utilidades. En lugar de usar.btn-blocken el.btn, envuelve tus botones con.d-gridy una utilidad.gap-*para espaciarlos según sea necesario. Cambia a clases responsivas para aún más control sobre ellos. Lee la documentación para algunos ejemplos. -
Se actualizaron nuestros mixins
button-variant()ybutton-outline-variant()para soportar parámetros adicionales. -
Se actualizaron los botones para garantizar un mayor contraste en los estados hover y active.
-
Los botones deshabilitados ahora tienen
pointer-events: none;.
Card
-
Breaking Se eliminó
.card-decken favor de nuestro grid. Envuelve tus cards en clases de columna y añade un contenedor.row-cols-*padre para recrear card decks (pero con más control sobre la alineación responsiva). -
Breaking Se eliminó
.card-columnsen favor de Masonry. Ver #28922. -
Breaking Se reemplazó el accordion basado en
.cardcon un nuevo componente Accordion.
Carousel
-
Se añadió una nueva
.carousel-darkvariante para texto, controles e indicadores oscuros (ideal para fondos más claros). -
Se reemplazaron los iconos de chevron para los controles del carousel con nuevos SVGs de Bootstrap Icons.
Close button
-
Breaking Se renombró
.closea.btn-closepor un nombre menos genérico. -
Los close buttons ahora usan una
background-image(SVG incrustado) en lugar de un×en el HTML, lo que permite una personalización más fácil sin necesidad de tocar tu markup. -
Se añadió la nueva variante
.btn-close-whiteque usafilter: invert(1)para habilitar iconos de cierre con mayor contraste sobre fondos más oscuros.
Collapse
- Se eliminó el anclaje de scroll para los acordeones.
Dropdowns
-
Se añadió la nueva variante
.dropdown-menu-darky las variables asociadas para dropdowns oscuros bajo demanda. -
Se añadió una nueva variable para
$dropdown-padding-x. -
Se oscureció el divisor del dropdown para mejorar el contraste.
-
Breaking Todos los eventos del dropdown ahora se disparan en el botón de alternar del dropdown y luego se propagan al elemento padre.
-
Los menús dropdown ahora tienen el atributo
data-bs-popper="static"establecido cuando el posicionamiento del dropdown es estático ydata-bs-popper="none"cuando el dropdown está en el navbar. Esto lo añade nuestro JavaScript y nos ayuda a usar estilos de posicionamiento personalizados sin interferir con el posicionamiento de Popper. -
Breaking Se eliminó la opción
flipdel plugin de dropdown en favor de la configuración nativa de Popper. Ahora puedes deshabilitar el comportamiento de flip pasando un array vacío para la opciónfallbackPlacementsen el modificador flip. -
Los menús dropdown ahora pueden ser clicables con una nueva opción
autoClosepara manejar el comportamiento de cierre automático. Puedes usar esta opción para aceptar el click dentro o fuera del menú dropdown para hacerlo interactivo. -
Los dropdowns ahora soportan
.dropdown-items envueltos en<li>s.
Jumbotron
- Breaking Se eliminó el componente jumbotron ya que puede replicarse con utilidades. Ver nuestro nuevo ejemplo de Jumbotron para una demo.
List group
- Se añadió un nuevo modificador
.list-group-numbereda los list groups.
Navs y tabs
- Se añadieron nuevas variables
nullparafont-size,font-weight,colory color de:hovercolora la clase.nav-link.
Navbars
- Breaking Los navbars ahora requieren un contenedor interno (para simplificar drásticamente los requisitos de espaciado y CSS necesarios).
Offcanvas
- Se añadió el nuevo componente offcanvas.
Pagination
-
Los enlaces de pagination ahora tienen
margin-leftpersonalizable que se redondea dinámicamente en todas las esquinas cuando están separados entre sí. -
Se añadieron
transitiones a los enlaces de pagination.
Popovers
-
Breaking Se renombró
.arrowa.popover-arrowen nuestra plantilla predeterminada de popover. -
Se renombró la opción
whiteListaallowList.
Spinners
-
Los spinners ahora respetan
prefers-reduced-motion: reduceralentizando las animaciones. Ver #31882. -
Se mejoró la alineación vertical de los spinners.
Toasts
-
Los toasts ahora pueden ser posicionados en un
.toast-containercon la ayuda de utilidades de posicionamiento. -
Se cambió la duración predeterminada de los toasts a 5 segundos.
-
Se eliminó
overflow: hiddende los toasts y se reemplazó conborder-radiusadecuados con funcionescalc().
Tooltips
-
Breaking Se renombró
.arrowa.tooltip-arrowen nuestra plantilla predeterminada de tooltip. -
Breaking El valor predeterminado de
fallbackPlacementsse cambió a['top', 'right', 'bottom', 'left']para mejor posicionamiento de los elementos popper. -
Breaking Se renombró la opción
whiteListaallowList.
Utilidades
-
Breaking Se renombraron varias utilidades para usar nombres de propiedades lógicas en lugar de nombres direccionales con la adición de soporte RTL:
- Se renombró
.left-*y.right-*a.start-*y.end-*. - Se renombró
.float-lefty.float-righta.float-starty.float-end. - Se renombró
.border-lefty.border-righta.border-starty.border-end. - Se renombró
.rounded-lefty.rounded-righta.rounded-starty.rounded-end. - Se renombró
.ml-*y.mr-*a.ms-*y.me-*. - Se renombró
.pl-*y.pr-*a.ps-*y.pe-*. - Se renombró
.text-lefty.text-righta.text-starty.text-end.
- Se renombró
-
Breaking Se deshabilitaron los márgenes negativos por defecto.
-
Se añadió la nueva clase
.bg-bodypara establecer rápidamente el fondo del<body>en elementos adicionales. -
Se añadieron nuevas utilidades de position para
top,right,bottomyleft. Los valores incluyen0,50%y100%para cada propiedad. -
Se añadieron las nuevas utilidades
.translate-middle-xy.translate-middle-ypara centrar horizontal o verticalmente elementos con posicionamiento absoluto/fijo. -
Se añadieron nuevas
utilidades de border-width. -
Breaking Se renombró
.text-monospacea.font-monospace. -
Breaking Se eliminó
.text-hideya que es un método anticuado para ocultar texto que no debería usarse más. -
Se añadieron utilidades
.fs-*para utilidades defont-size(con RFS habilitado). Estas usan la misma escala que los encabezados predeterminados de HTML (1-6, grande a pequeño), y pueden modificarse vía Sass map. -
Breaking Se renombraron las utilidades
.font-weight-*como.fw-*por brevedad y consistencia. -
Breaking Se renombraron las utilidades
.font-style-*como.fst-*por brevedad y consistencia. -
Se añadió
.d-grida las utilidades de display y nuevas utilidades degap(.gap) para layouts de CSS Grid y flexbox. -
Breaking Se eliminaron
.rounded-smyrounded-lg, y se introdujo una nueva escala de clases,.rounded-0a.rounded-3. Ver #31687. -
Se añadieron nuevas utilidades de
line-height:.lh-1,.lh-sm,.lh-basey.lh-lg. Ver aquí. -
Se movió la utilidad
.d-noneen nuestro CSS para darle más peso sobre otras utilidades de display. -
Se extendió el helper
.visually-hidden-focusablepara que también funcione en contenedores, usando:focus-within.
Helpers
-
Breaking Los helpers de embed responsivo se han renombrado a helpers de ratio con nuevos nombres de clase y comportamientos mejorados, así como una útil variable CSS.
- Las clases se han renombrado cambiando
byporxen el aspect ratio. Por ejemplo,.ratio-16by9ahora es.ratio-16x9. - Hemos eliminado
.embed-responsive-itemy el selector de grupo de elementos en favor de un selector más simple.ratio > *. Ya no se necesita ninguna clase, y el helper de ratio ahora funciona con cualquier elemento HTML. - El Sass map
$embed-responsive-aspect-ratiosse ha renombrado a$aspect-ratiosy sus valores se han simplificado para incluir el nombre de clase y el porcentaje como el parkey: value. - Las variables CSS ahora se generan e incluyen para cada valor en el Sass map.
Modifica la variable
--bs-aspect-ratioen el.ratiopara crear cualquier aspect ratio personalizado.
- Las clases se han renombrado cambiando
-
Breaking “Screen reader” classes are now clases “visualmente ocultas”.
- Se cambió el archivo Sass de
scss/helpers/_screenreaders.scssascss/helpers/_visually-hidden.scss - Se renombró
.sr-onlyy.sr-only-focusablea.visually-hiddeny.visually-hidden-focusable - Se renombraron los mixins
sr-only()ysr-only-focusable()avisually-hidden()yvisually-hidden-focusable().
- Se cambió el archivo Sass de
-
bootstrap-utilities.cssahora también incluye nuestros helpers. Los helpers ya no necesitan importarse en builds personalizados.
JavaScript
-
Se eliminó la dependencia de jQuery y se reescribieron los plugins en JavaScript normal.
-
Breaking Los atributos data de todos los plugins de JavaScript ahora tienen un namespace para ayudar a distinguir la funcionalidad de Bootstrap de terceros y de tu propio código. Por ejemplo, usamos
data-bs-toggleen lugar dedata-toggle. -
Todos los plugins ahora pueden aceptar un selector CSS como primer argumento. Puedes pasar un elemento DOM o cualquier selector CSS válido para crear una nueva instancia del plugin:
var modal = new bootstrap.Modal('#myModal') var dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]') -
popperConfigpuede pasarse como una función que acepta la configuración Popper predeterminada de Bootstrap como argumento, para que puedas fusionar esta configuración predeterminada a tu manera. Aplica a dropdowns, popovers y tooltips. -
El valor predeterminado de
fallbackPlacementsse cambió a['top', 'right', 'bottom', 'left']para mejor posicionamiento de los elementos Popper. Aplica a dropdowns, popovers y tooltips. -
Se eliminó el guión bajo de los métodos estáticos públicos como
_getInstance()→getInstance().