Preskoči na glavni sadržaj Preskoči na navigaciju dokumenata

Naučite kako omogućiti podršku za tekst koji se piše zdesna nalijevo u Bootstrapu kroz naš izgled, komponente i uslužne programe.

Upoznajte se

Preporučujemo da se prvo upoznate sa Bootstrapom tako što ćete pročitati našu stranicu Uvod za početak rada . Nakon što ga prođete, nastavite čitati ovdje kako omogućiti RTL.

Možda biste željeli pročitati i RTLCSS projekat , jer on pokreće naš pristup RTL-u.

Eksperimentalna karakteristika

RTL funkcija je još uvijek eksperimentalna i vjerovatno će se razvijati prema povratnim informacijama korisnika. Primetili ste nešto ili želite da predložite poboljšanje? Otvorite problem , voljeli bismo da dobijemo vaše uvide.

Potreban HTML

Postoje dva stroga zahtjeva za omogućavanje RTL-a na stranicama koje pokreće Bootstrap.

  1. Postavite dir="rtl"na <html>element.
  2. Dodajte odgovarajući langatribut, kao što lang="ar"je , na <html>element.

Odatle ćete morati uključiti RTL verziju našeg CSS-a. Na primjer, evo tablice stilova za naš kompajlirani i minimizirani CSS sa omogućenim RTL-om:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.rtl.min.css" integrity="sha384-gXt9imSW0VcJVHezoNQsP+TNrjYXoGcrqBZJpry9zJt8PCQjobwmhMGaDHTASo9N" crossorigin="anonymous">

Početni šablon

Gore navedene zahtjeve možete vidjeti u ovom modificiranom RTL starter predlošku.

<!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>

RTL primjeri

Započnite s jednim od naših nekoliko RTL primjera .

Pristup

Naš pristup izgradnji RTL podrške u Bootstrap dolazi s dvije važne odluke koje utiču na to kako pišemo i koristimo naš CSS:

  1. Prvo smo odlučili da ga izgradimo sa RTLCSS projektom. Ovo nam daje neke moćne karakteristike za upravljanje promjenama i zaobilaženjem pri prelasku sa LTR na RTL. Takođe nam omogućava da napravimo dve verzije Bootstrapa iz jedne baze koda.

  2. Drugo, preimenovali smo nekoliko klasa usmjerenih kako bismo usvojili pristup logičkih svojstava. Većina vas je već stupila u interakciju s logičkim svojstvima zahvaljujući našim fleksibilnim uslužnim programima—oni zamjenjuju svojstva smjera poput lefti rightu korist starti end. To čini imena i vrijednosti klasa prikladnima za LTR i RTL bez ikakvih dodatnih troškova.

Na primjer, umjesto .ml-3za margin-left, koristite .ms-3.

Rad sa RTL-om, preko našeg izvornog Sass-a ili kompajliranog CSS-a, ipak ne bi trebao biti mnogo drugačiji od našeg zadanog LTR-a.

Prilagodite iz izvora

Kada je u pitanju prilagođavanje , preferirani način je da se iskoristi prednosti varijabli, mapa i miksina. Ovaj pristup radi isto za RTL, čak i ako je naknadno obrađen iz kompajliranih datoteka, zahvaljujući tome kako RTLCSS radi .

Prilagođene RTL vrijednosti

Koristeći RTLCSS direktive vrijednosti , možete napraviti promjenljivu izlaz različitu vrijednost za RTL. Na primjer, da biste smanjili težinu za $font-weight-boldcijelu kodnu bazu, možete koristiti /*rtl: {value}*/sintaksu:

$font-weight-bold: 700 #{/* rtl:600 */} !default;

Što bi proizvelo sljedeće za naš zadani CSS i RTL CSS:

/* bootstrap.css */
dt {
  font-weight: 700 /* rtl:600 */;
}

/* bootstrap.rtl.css */
dt {
  font-weight: 600;
}

Alternativni skup fontova

U slučaju da koristite prilagođeni font, imajte na umu da svi fontovi ne podržavaju nelatinično pismo. Da biste prešli sa panevropske na arapsku porodicu, možda ćete morati da koristite /*rtl:insert: {value}*/u svom skupu fontova da izmenite imena porodica fontova.

Na primjer, da biste se prebacili sa Helvetica Neue Webfontza LTR na Helvetica Neue Arabicza RTL, vaš Sass kod izgleda ovako:

$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 i RTL u isto vrijeme

Trebate i LTR i RTL na istoj stranici? Zahvaljujući RTLCSS String Maps , ovo je prilično jednostavno. Omotajte svoje @imports klasom i postavite prilagođeno pravilo preimenovanja za 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*/

Nakon pokretanja Sass-a, a zatim RTLCSS-a, svaki selektor u vašim CSS datotekama će biti preveden sa .ltr, a .rtlza RTL datoteke. Sada možete koristiti obje datoteke na istoj stranici i jednostavno koristite .ltrili .rtlna omotima komponenti da biste koristili jedan ili drugi smjer.

Rubni slučajevi i poznata ograničenja

Iako je ovaj pristup razumljiv, obratite pažnju na sljedeće:

  1. Prilikom prebacivanja .ltri .rtl, pobrinite se da dodate diri langatribute u skladu s tim.
  2. Učitavanje oba fajla može biti pravo usko grlo u performansama: razmislite o nekoj optimizaciji i možda pokušajte da učitate jedan od tih fajlova asinhrono .
  3. Stilovi ugniježđenja na ovaj način će spriječiti da naš form-validation-state()miksin radi kako je predviđeno, pa ćete ga morati malo sami podesiti. Pogledajte #31223 .

Slučaj sa mrvicama

Razdjelnik hljebnih mrvica je jedini slučaj koji zahtijeva vlastitu potpuno novu varijablu— naime — zadanu vrijednost .$breadcrumb-divider-flipped$breadcrumb-divider

Dodatni resursi