精品久久久久久亚洲精品_成人午夜网站_www日本高清_亚洲精品久久久久午夜福

RTL

Learn how to enable support for right-to-left text in Bootstrap across our layout, components, and utilities.

Get familiar

We recommend getting familiar with Bootstrap first by reading through our Getting Started Introduction page. Once you’ve run through it, continue reading here for how to enable RTL.

You may also want to read up on the RTLCSS project, as it powers our approach to RTL.

Experimental feature

The RTL feature is still experimental and will probably evolve according to user feedback. Spotted something or have an improvement to suggest? Open an issue, we’d love to get your insights.

Required HTML

There are two strict requirements for enabling RTL in Bootstrap-powered pages.

  1. Set dir="rtl" on the <html> element.
  2. Add an appropriate lang attribute, like lang="ar", on the <html> element.

From there, you’ll need to include an RTL version of our CSS. For example, here’s the stylesheet for our compiled and minified CSS with RTL enabled:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.rtl.min.css" integrity="sha384-trxYGD5BY4TyBTvU5H23FalSCYwpLA0vWEvXXGm5eytyztxb+97WzzY+IWDOSbav" crossorigin="anonymous">

Starter template

You can see the above requirements reflected in this modified RTL starter template.

<!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/bootstrap@5.0.0-beta3/dist/css/bootstrap.rtl.min.css" integrity="sha384-trxYGD5BY4TyBTvU5H23FalSCYwpLA0vWEvXXGm5eytyztxb+97WzzY+IWDOSbav" 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/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js" integrity="sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf" crossorigin="anonymous"></script>

<!-- Option 2: Separate Popper and Bootstrap JS -->
<!--
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.1/dist/umd/popper.min.js" integrity="sha384-SR1sx49pcuLnqZUnnPwx6FCym0wLsk5JZuNx2bPPENzswTNFaQU1RDvt3wT4gWFG" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.min.js" integrity="sha384-j0CNLUeiqtyaRmlzUHCPZ+Gy5fQu0dQ6eZ/xAww941Ai1SxSY+0EQqNXNE6DZiVc" crossorigin="anonymous"></script>
    -->
</body>
</html>

RTL examples

Get started with one of our several RTL examples.

Approach

Our approach to building RTL support into Bootstrap comes with two important decisions that impact how we write and use our CSS:

  1. First, we decided to build it with the RTLCSS project. This gives us some powerful features for managing changes and overrides when moving from LTR to RTL. It also allows us to build two versions of Bootstrap from one codebase.

  2. Second, we’ve renamed a handful of directional classes to adopt a logical properties approach. Most of you have already interacted with logical properties thanks to our flex utilities—they replace direction properties like left and right in favor start and end. That makes the class names and values appropriate for LTR and RTL without any overhead.

For example, instead of .ml-3 for margin-left, use .ms-3.

Working with RTL, through our source Sass or compiled CSS, shouldn’t be much different from our default LTR though.

Customize from source

When it comes to customization, the preferred way is to take advantage of variables, maps, and mixins. This approach works the same for RTL, even if it’s post-processed from the compiled files, thanks to how RTLCSS works.

Custom RTL values

Using RTLCSS value directives, you can make a variable output a different value for RTL. For example, to decrease the weight for $font-weight-bold throughout the codebase, you may use the /*rtl: {value}*/ syntax:

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

Which would ouput to the following for our default CSS and RTL CSS:

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

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

Alternative font stack

In the case you’re using a custom font, be aware that not all fonts support the non-Latin alphabet. To switch from Pan-European to Arabic family, you may need to use /*rtl:insert: {value}*/ in your font stack to modify the names of font families.

For example, to switch from Helvetica Neue Webfont for LTR to Helvetica Neue Arabic for RTL, your Sass code look like this:

$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 and RTL at the same time

Need both LTR and RTL on the same page? Thanks to RTLCSS String Maps, this is pretty straightforward. Wrap your @imports with a class, and set a custom rename rule for 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*/

After running Sass then RTLCSS, each selector in your CSS files will be prepended by .ltr, and .rtl for RTL files. Now you’re able to use both files on the same page, and simply use .ltr or .rtl on your components wrappers to use one or the other direction.

Edge cases and known limitations

While this approach is understandable, please pay attention to the following:

  1. When switching .ltr and .rtl, make sure you add dir and lang attributes accordingly.
  2. Loading both files can be a real performance bottleneck: consider some optimization, and maybe try to load one of those files asynchronously.
  3. Nesting styles this way will prevent our form-validation-state() mixin from working as intended, thus require you tweak it a bit by yourself. See #31223.

The breadcrumb case

The breadcrumb separator is the only case requiring its own brand new variable— namely $breadcrumb-divider-flipped —defaulting to $breadcrumb-divider.

Additional resources

返回頂部
精品久久久久久亚洲精品_成人午夜网站_www日本高清_亚洲精品久久久久午夜福

      国产精品视频一| 欧美日韩亚洲一区二| 国产精品红桃| 久久久久久久综合狠狠综合| 日韩一区二区精品| 国产一区二区三区免费不卡| 欧美日韩蜜桃| 美女日韩在线中文字幕| 欧美一级播放| 亚洲一区在线视频| 99视频精品全国免费| 亚洲国产精品福利| 欧美激情在线免费观看| 久久精品99国产精品酒店日本| 日韩亚洲在线观看| 亚洲大胆视频| …久久精品99久久香蕉国产 | 日韩一级大片| 激情欧美一区二区三区| 噜噜噜久久亚洲精品国产品小说| 亚洲少妇最新在线视频| 国产久一道中文一区| 欧美啪啪一区| 欧美在线综合视频| 亚洲欧美精品一区| 亚洲免费小视频| 伊人久久大香线蕉综合热线| 国产亚洲欧洲| 欧美a一区二区| 久久亚洲二区| 欧美成人免费全部观看天天性色| 久久精品国产一区二区电影| 最新国产乱人伦偷精品免费网站 | 亚洲欧美日韩一区二区三区在线观看| 亚洲精品黄色| av不卡在线| 精久久久久久| 国产精品国产三级国产专播品爱网| 欧美电影在线免费观看网站| 久久九九热免费视频| 亚洲一区在线播放| 西瓜成人精品人成网站| 久久精品国产精品亚洲综合| 久久久噜噜噜久噜久久| 久久野战av| 欧美激情亚洲视频| 午夜激情久久久| 久久精品国产2020观看福利| 久久精品国语| 欧美日韩高清一区| 国产精品无码永久免费888| 国产一区二区三区黄视频| 亚洲第一级黄色片| 国产在线视频欧美| 亚洲黄色免费| 亚洲经典一区| 在线欧美一区| 在线亚洲电影| 亚洲天堂成人在线视频| 香蕉久久夜色精品| 亚洲综合视频1区| 老司机精品福利视频| 欧美日韩一区二区三区免费看| 麻豆国产va免费精品高清在线| 欧美乱妇高清无乱码| 国产女主播一区二区| 亚洲国产精品传媒在线观看| 亚洲视频一区在线观看| 久久夜色精品国产噜噜av| 久久精品国产免费看久久精品| 蜜桃久久av| 欧美精品色网| 国外视频精品毛片| 中文日韩在线视频| 欧美大片第1页| 国产亚洲欧洲| 亚洲欧美视频在线观看| 欧美一二三区在线观看| 欧美激情亚洲自拍| 国产自产高清不卡| 亚洲欧美日韩综合| 欧美精品在线免费| 亚洲丰满少妇videoshd| 久久精品亚洲乱码伦伦中文| 国产精品久久久久久一区二区三区 | 另类酷文…触手系列精品集v1小说| 欧美日韩亚洲一区| 亚洲欧洲美洲综合色网| 久热精品视频在线观看| 欧美电影专区| 亚洲成人在线视频播放| 久久久91精品国产| 国产一区二区精品丝袜| 午夜免费久久久久| 国产女优一区| 欧美一区二区三区在线观看| 国产精品入口麻豆原神| 亚洲在线成人精品| 国产精品日韩精品| 亚洲男人第一av网站| 国产精品久久一区二区三区| 一区二区三区欧美激情| 欧美日韩一区二区视频在线| 99视频超级精品| 欧美色123| 午夜伦欧美伦电影理论片| 国产日韩欧美在线播放| 日韩网站在线观看| 欧美啪啪成人vr| 亚洲午夜精品一区二区三区他趣| 国产精品福利网| 欧美一区二视频| 在线观看亚洲专区| 欧美精品国产| 亚洲欧美日韩精品久久| 国产一区二区在线观看免费| 久久久久国色av免费观看性色| 亚洲国产高清一区二区三区| 欧美成人第一页| 亚洲视频中文字幕| 一区二区三区在线观看国产| 欧美二区不卡| 亚洲综合成人在线| 国内精品美女在线观看| 麻豆精品国产91久久久久久| 999亚洲国产精| 国产亚洲欧美激情| 欧美大尺度在线| 亚洲一区二区在线观看视频| 黄色成人在线网址| 欧美片第一页| 久久久中精品2020中文| 国产精品99久久99久久久二8 | 亚洲综合视频1区| 在线电影院国产精品| 欧美视频免费| 免费一级欧美片在线播放| 国产主播一区二区三区| 另类成人小视频在线| 亚洲一区三区在线观看| 亚洲国产高潮在线观看| 国产精品亚洲а∨天堂免在线| 欧美xart系列高清| 欧美一区二视频| 狠狠色噜噜狠狠色综合久 | 日韩午夜高潮| 狠狠色狠狠色综合| 国产精品视频xxxx| 欧美日韩岛国| 欧美大片91| 久久婷婷影院| 久久精品国语| 久久精品中文字幕一区二区三区 | 亚洲精品一区在线观看| 国产农村妇女精品| 国产精品高清在线| 欧美激情bt| 欧美激情免费在线| 久久综合九色综合久99| 欧美在线免费观看| 亚洲欧美视频一区二区三区| 一本久道久久综合狠狠爱| 亚洲日本乱码在线观看| 一区精品在线播放| 在线精品亚洲一区二区| 国产日韩在线视频| 国产亚洲女人久久久久毛片| 国产精品羞羞答答| 国产精品自在在线| 国产欧美日韩另类视频免费观看 | 国产精品毛片在线| 国产精品麻豆va在线播放| 欧美日韩在线一区二区| 欧美激情影院| 欧美午夜不卡| 国产精品少妇自拍| 国产亚洲一二三区| 黄色av一区| 亚洲精品永久免费| 亚洲在线第一页| 久久精品99久久香蕉国产色戒| 亚洲国产三级网| 亚洲激情偷拍| 亚洲夜间福利| 久久精品国产精品亚洲综合| 久久亚洲色图| 欧美精品亚洲二区| 欧美午夜在线一二页| 国产精品一卡二卡| 国语自产在线不卡| 亚洲狼人精品一区二区三区| 一区二区三区欧美激情| 欧美一区国产一区| 免费一区二区三区| 欧美视频日韩视频在线观看| 欧美电影在线观看| 国产精品捆绑调教| 激情综合在线| 一区二区三区四区国产| 久久精品亚洲一区|