Bootstrap 简明教程

Bootstrap - RTL

本章讨论了 Bootstrap 提供的 RTL(从右向左)支持。RTL 功能支持整个布局、组件和实用工具的从右向左文本。

Requirements

若要在 Bootstrap 提供支持的页面中启用 RTL,你必须满足两个要求。如下所示:

  1. <html> 元素上,设置 dir-"rtl"

  2. <html> 元素上,添加适当的 lang 属性,例如 lang="ar"

你需要包含 CSS 的 RTL 版本。例如,这是一个启用了 RTL 的样式表:

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.rtl.min.css" integrity="sha384-PJsj/BTMqILvmcej7ulplguok8ag4xFTPryRq8xevL7eBYSmpXKcbNVuy+P0RMgq" crossorigin="anonymous">

Starter template

以下是满足启用 RTL 要求的一个初始模板示例:

Example

可以使用 编辑和运行 选项编辑并尝试运行此代码。

<!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.3.0/dist/css/bootstrap.rtl.min.css" integrity="sha384-PJsj/BTMqILvmcej7ulplguok8ag4xFTPryRq8xevL7eBYSmpXKcbNVuy+P0RMgq" crossorigin="anonymous">

    <!--"Welcome to Tutorialspoint" written in arabic-->
    <title>مرحبًا بك في Tutorialspoint</title>
</head>
<body>
    <!--"Welcome to Tutorialspoint" written in arabic-->
    <h1>مرحبًا بك في Tutorialspoint</h1>

    <!-- Optional JavaScript; choose one of the two! -->

    <!-- Option 1: Bootstrap Bundle with Popper -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>

    <!-- Option 2: Separate Popper and Bootstrap JS -->
    <!--
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js" integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.min.js" integrity="sha384-fbbOQedDUMZZ5KreZpsbe1LCZPVmfTnH7ois6mU1QK+m14rQ1l2bGBq41eYeM/fS" crossorigin="anonymous"></script>
    -->
</body>
</html>

Customize from source

出于自定义目的,使用变量、映射和混合。对 RTL 而言,此方法与 LTR 完全相同。

Custom RTL values

通过某些 RTL CSS 值指令,您可以为 RTL 设置不同的变量输出。例如,为了减少整个代码库中的字体粗细,您可以使用此语法: /*rtl: {value} /*.

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

这将输出以下默认 CSS 和 RTL CSS:

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

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

Alternative font stack

您应该知道并非所有非拉丁字母都受支持。因此,为了从泛欧字体系列切换到阿拉伯字体系列,您可能需要在字体栈中使用 /*rtl:insert: {value} /* 来更改字体系列名称。

为了从用于 LTR 的 Helvetica Neue 字体切换为用于 RTL 的 Helvetica Neue Arabic 字体,您的 Sass 代码可能如下所示:

    $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;

RTL and LTR at the same time

您是否想同时使用 LTR 和 RTL?这非常有可能,您只需用一个类包装您的 @import,并为 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*/

在执行 Sass 和 RTLCSS 之后,CSS 文件中的每个选择器都将带有前缀 .ltr (或对于 RTL 文件为 .rtl )。现在,这两个文件都可以用于同一页面,您可以使用 .ltr.rtl 组件包装器扩展来指定要使用的方向。

在同时使用 LTR 和 RTL 实现时,您需要考虑以下几点:

The Breadcrumb case

唯一需要其自己全新变量的情况就是 breadcrumb separator ,即 $breadcrumb-divider-flipped ,默认为 $breadcrumb-divider