RTL
Amparate cumu attivà u supportu per u testu da diritta à sinistra in Bootstrap in u nostru layout, cumpunenti è utilità.
Fate familiarità
Hè ricumandemu di familiarizà cun Bootstrap prima leghjendu a nostra pagina di Introduzione di Introduzione . Una volta chì l'avete attraversatu, cuntinueghja à leghje quì per cumu attivà RTL.
Puderete ancu vulete leghje nantu à u prughjettu RTLCSS , cum'è u putere di u nostru approcciu à RTL.
Funzione sperimentale
A funzione RTL hè sempre sperimentale è probabilmente evolverà secondu u feedback di l'utilizatori. Avete vistu qualcosa o avete una migliione à suggerisce? Aprite un prublema , ci piacerebbe avè a vostra cunniscenza.
HTML necessariu
Ci hè dui requisiti stretti per attivà RTL in e pagine alimentate da Bootstrap.
- Mettite
dir="rtl"
nantu à l'<html>
elementu. - Aghjunghjite un
lang
attributu adattatu, cum'èlang="ar"
, nantu à l'<html>
elementu.
Da quì, avete bisognu di include una versione RTL di u nostru CSS. Per esempiu, quì hè u fogliu di stile per u nostru CSS compilatu è minificatu cù RTL attivatu:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.rtl.min.css" integrity="sha384-gXt9imSW0VcJVHezoNQsP+TNrjYXoGcrqBZJpry9zJt8PCQjobwmhMGaDHTASo9N" crossorigin="anonymous">
U mudellu di partenza
Pudete vede i requisiti sopra riflessi in stu mudellu RTL starter mudificatu.
<!doctype html>
<html lang="ar" dir="rtl">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.rtl.min.css" integrity="sha384-gXt9imSW0VcJVHezoNQsP+TNrjYXoGcrqBZJpry9zJt8PCQjobwmhMGaDHTASo9N" crossorigin="anonymous">
<title>مرحبا بالعالم!</title>
</head>
<body>
<h1>مرحبا بالعالم!</h1>
<!-- Optional JavaScript; choose one of the two! -->
<!-- Option 1: Bootstrap Bundle with Popper -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<!-- Option 2: Separate Popper and Bootstrap JS -->
<!--
<script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js" integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF" crossorigin="anonymous"></script>
-->
</body>
</html>
Esempi di RTL
Cumincià cù unu di i nostri parechji esempi RTL .
Avvicinamentu
U nostru approcciu per custruisce un supportu RTL in Bootstrap vene cun duie decisioni impurtanti chì impactanu cumu scrivemu è utilizemu u nostru CSS:
-
Prima, avemu decisu di custruisce cù u prughjettu RTLCSS . Questu ci dà alcune funzioni putenti per gestisce i cambiamenti è l'annullamenti quandu si move da LTR à RTL. Ci permette ancu di custruisce duie versioni di Bootstrap da una basa di codice.
-
Siconda, avemu rinominatu una manciata di classi direzzione per aduttà un approcciu di pruprietà logica. A maiò parte di voi avete digià interazzione cù e proprietà logiche grazia à i nostri utilità flessibili - rimpiazzanu e proprietà di direzzione cum'è
left
èright
in favorestart
èend
. Chì rende i nomi di classi è i valori adatti per LTR è RTL senza alcunu overhead.
Per esempiu, invece di .ml-3
per margin-left
, utilizate .ms-3
.
U travagliu cù RTL, attraversu a nostra fonte Sass o CSS compilatu, ùn deve micca esse assai sfarente da u nostru LTR predeterminatu.
Personalizà da a fonte
Quandu si tratta di persunalizazione , u modu preferitu hè di prufittà di variabili, carte è mixin. Stu approcciu funziona u listessu per RTL, ancu s'ellu hè post-processatu da i schedari compilati, grazia à cumu funziona RTLCSS .
Valori RTL persunalizati
Utilizendu direttive di valore RTLCSS , pudete fà una variabile output un valore diversu per RTL. Per esempiu, per diminuisce u pesu per $font-weight-bold
tutta a basa di codice, pudete aduprà a /*rtl: {value}*/
sintassi:
$font-weight-bold: 700 #{/* rtl:600 */} !default;
Chì avaristi à u seguente per u nostru CSS predeterminatu è RTL CSS:
/* bootstrap.css */
dt {
font-weight: 700 /* rtl:600 */;
}
/* bootstrap.rtl.css */
dt {
font-weight: 600;
}
Pila di font alternativa
In u casu chì aduprate un font persunalizatu, sia cuscenti chì micca tutti i fonts supportanu l'alfabetu non latinu. Per passà da a famiglia paneuropea à araba, pudete avè bisognu di utilizà /*rtl:insert: {value}*/
in a vostra pila di fonti per mudificà i nomi di famiglie di fonti.
Per esempiu, per cambià da Helvetica Neue Webfont
per LTR à Helvetica Neue Arabic
per RTL, u vostru codice Sass pare cusì:
$font-family-sans-serif:
Helvetica Neue #{"/* rtl:insert:Arabic */"},
// Cross-platform generic font family (default user interface font)
system-ui,
// Safari for macOS and iOS (San Francisco)
-apple-system,
// Chrome < 56 for macOS (San Francisco)
BlinkMacSystemFont,
// Windows
"Segoe UI",
// Android
Roboto,
// Basic web fallback
Arial,
// Linux
"Noto Sans",
// Sans serif fallback
sans-serif,
// Emoji fonts
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
LTR è RTL à u stessu tempu
Avete bisognu di LTR è RTL in a stessa pagina? Grazie à RTLCSS String Maps , questu hè abbastanza simplice. Imbulighjate i vostri @import
s cù una classa, è stabilisce una regula di rinominazione persunalizata per RTLCSS:
/* rtl:begin:options: {
"autoRename": true,
"stringMap":[ {
"name": "ltr-rtl",
"priority": 100,
"search": ["ltr"],
"replace": ["rtl"],
"options": {
"scope": "*",
"ignoreCase": false
}
} ]
} */
.ltr {
@import "../node_modules/bootstrap/scss/bootstrap";
}
/*rtl:end:options*/
Dopu avè eseguitu Sass allora RTLCSS, ogni selettore in i vostri fugliali CSS serà prepostu da .ltr
, è .rtl
per i schedari RTL. Avà pudete aduprà i dui fugliali nantu à a stessa pagina, è simpricimenti aduprà .ltr
o .rtl
nantu à i vostri wrappers di cumpunenti per aduprà una o l'altra direzzione.
Casi Edge è limitazioni cunnisciute
Mentre chì questu approcciu hè comprensibile, fate attenzione à i seguenti:
- Quandu cambiate
.ltr
è.rtl
, assicuratevi di aghjunghjedir
èlang
attributi in cunseguenza. - Caricà i dui fugliali pò esse un veru collu di buttiglia di rendiment: cunsiderà qualchì ottimisazione , è forse pruvate à carica unu di quelli fugliali in modu asincronu .
- I stili di nidificazione in questu modu impediscenu à u nostru
form-validation-state()
mixin di travaglià cum'è previstu, cusì esigenu di tweak un pocu da sè stessu. Vede # 31223 .
U casu di pane
U separatore di breadcrumb hè l'unicu casu chì richiede a so propria variabile nova - vale à dì $breadcrumb-divider-flipped
- default à $breadcrumb-divider
.