Saltu al ĉefa enhavo Saltu al navigado de dokumentoj
Check
in English

Karuselo

Bildprezenta komponanto por bicikli tra elementoj - bildoj aŭ lumbildoj - kiel karuselo.

Kiel ĝi funkcias

La karuselo estas bildoprezento por bicikli tra serio da enhavo, konstruita kun CSS 3D transformoj kaj iom da JavaScript. Ĝi funkcias kun serio de bildoj, teksto aŭ kutima markado. Ĝi ankaŭ inkluzivas subtenon por antaŭaj/sekvaj kontroloj kaj indikiloj.

En retumiloj kie la Page Visibility API estas subtenata, la karuselo evitos gliti kiam la retpaĝo ne estas videbla por la uzanto (kiel kiam la retumila langeto estas neaktiva, la retumila fenestro estas minimumigita, ktp.).

La animacia efiko de ĉi tiu komponanto dependas de la prefers-reduced-motionamaskomunikila demando. Vidu la sekcion pri reduktita moviĝo de nia dokumentaro pri alirebleco .

Bonvolu konscii, ke nestitaj karuseloj ne estas subtenataj, kaj karuseloj ĝenerale ne konformas al alireblaj normoj.

Ekzemplo

Karuseloj ne aŭtomate normaligas dimensiojn de lumbildoj. Kiel tia, vi eble bezonos uzi pliajn ilojn aŭ kutimajn stilojn por taŭge grandeco de enhavo. Dum karuseloj subtenas antaŭajn/postajn kontrolojn kaj indikilojn, ili ne estas eksplicite postulataj. Aldonu kaj agordu laŭplaĉe.

La .activeklaso devas esti aldonita al unu el la lumbildoj alie la karuselo ne estos videbla. Ankaŭ nepre agordu unikan idpor .carousellaŭvolaj kontroloj, precipe se vi uzas plurajn karuselojn sur ununura paĝo. Kontrolaj kaj indikilaj elementoj devas havi data-bs-targetatributon (aŭ hrefpor ligiloj) kiu kongruas kun la idde la .carouselelemento.

Nur diapozitivoj

Jen karuselo kun nur diapozitivoj. Notu la ĉeeston de la .d-blockkaj .w-100sur karuselaj bildoj por malhelpi retumilon defaŭltan bildan vicigon.

html
<div id="carouselExampleSlidesOnly" class="carousel slide" data-bs-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
</div>

Kun kontroloj

Aldonante la antaŭajn kaj sekvajn kontrolojn. Ni rekomendas uzi <button>elementojn, sed vi povas ankaŭ uzi <a>elementojn kun role="button".

html
<div id="carouselExampleControls" class="carousel slide" data-bs-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleControls" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleControls" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

Kun indikiloj

Vi ankaŭ povas aldoni la indikilojn al la karuselo, kune kun la kontroloj, ankaŭ.

html
<div id="carouselExampleIndicators" class="carousel slide" data-bs-ride="true">
  <div class="carousel-indicators">
    <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
    <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
    <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
  </div>
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

Kun bildotekstoj

Aldonu subtitolojn al viaj diapozitivoj facile per la .carousel-captionelemento en iu ajn .carousel-item. Ili povas esti facile kaŝitaj sur pli malgrandaj vidfenestroj, kiel montrite malsupre, kun laŭvolaj montraj utilecoj . Ni kaŝas ilin komence per .d-nonekaj revenigas ilin sur mezgrandaj aparatoj kun .d-md-block.

html
<div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="false">
  <div class="carousel-indicators">
    <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
    <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="1" aria-label="Slide 2"></button>
    <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="2" aria-label="Slide 3"></button>
  </div>
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="..." class="d-block w-100" alt="...">
      <div class="carousel-caption d-none d-md-block">
        <h5>First slide label</h5>
        <p>Some representative placeholder content for the first slide.</p>
      </div>
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
      <div class="carousel-caption d-none d-md-block">
        <h5>Second slide label</h5>
        <p>Some representative placeholder content for the second slide.</p>
      </div>
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
      <div class="carousel-caption d-none d-md-block">
        <h5>Third slide label</h5>
        <p>Some representative placeholder content for the third slide.</p>
      </div>
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

Crossfade

Aldonu .carousel-fadeal via karuselo por vigligi diapozitivojn per fada transiro anstataŭ diapozitivo. Depende de via karusela enhavo (ekz., tekstaj nur diapozitivoj), vi eble volas aldoni .bg-bodyaŭ iun kutiman CSS al la .carousel-items por ĝusta interkruciĝo.

html
<div id="carouselExampleFade" class="carousel slide carousel-fade" data-bs-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

Aldonu data-bs-interval=""al .carousel-itempor ŝanĝi la kvanton da tempo por prokrasti inter aŭtomate biciklado al la sekva ero.

html
<div id="carouselExampleInterval" class="carousel slide" data-bs-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active" data-bs-interval="10000">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item" data-bs-interval="2000">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleInterval" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleInterval" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

Malebligu tuŝan svingadon

Karuseloj subtenas svingadon maldekstren/dekstren sur tuŝekranaj aparatoj por moviĝi inter lumbildoj. Ĉi tio povas esti malŝaltita uzante la data-bs-touchatributon. La ĉi-suba ekzemplo ankaŭ ne inkluzivas la data-bs-rideatributon, do ĝi ne aŭtomate ludas.

html
<div id="carouselExampleControlsNoTouching" class="carousel slide" data-bs-touch="false">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleControlsNoTouching" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleControlsNoTouching" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

Malhela varianto

Aldonu .carousel-darkal la .carouselpor pli malhelaj kontroloj, indikiloj kaj subtitoloj. Kontroloj estis inversigitaj de sia defaŭlta blanka plenigo kun la filterCSS-posedaĵo. Subtitoloj kaj kontroloj havas kromajn Sass-variablojn kiuj personigas la colorkaj background-color.

html
<div id="carouselExampleDark" class="carousel carousel-dark slide" data-bs-ride="carousel">
  <div class="carousel-indicators">
    <button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
    <button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="1" aria-label="Slide 2"></button>
    <button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="2" aria-label="Slide 3"></button>
  </div>
  <div class="carousel-inner">
    <div class="carousel-item active" data-bs-interval="10000">
      <img src="..." class="d-block w-100" alt="...">
      <div class="carousel-caption d-none d-md-block">
        <h5>First slide label</h5>
        <p>Some representative placeholder content for the first slide.</p>
      </div>
    </div>
    <div class="carousel-item" data-bs-interval="2000">
      <img src="..." class="d-block w-100" alt="...">
      <div class="carousel-caption d-none d-md-block">
        <h5>Second slide label</h5>
        <p>Some representative placeholder content for the second slide.</p>
      </div>
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
      <div class="carousel-caption d-none d-md-block">
        <h5>Third slide label</h5>
        <p>Some representative placeholder content for the third slide.</p>
      </div>
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

Propra transiro

La transira daŭro de .carousel-itempovas esti ŝanĝita per la $carousel-transition-durationSass-variablo antaŭ kompili aŭ kutimajn stilojn se vi uzas la kompilitan CSS. Se pluraj transiroj estas aplikataj, certigu, ke la transformtransiro unue estas difinita (ekz transition: transform 2s ease, opacity .5s ease-out).

Sass

Variabloj

Variabloj por ĉiuj karuseloj:

$carousel-control-color:             $white;
$carousel-control-width:             15%;
$carousel-control-opacity:           .5;
$carousel-control-hover-opacity:     .9;
$carousel-control-transition:        opacity .15s ease;

$carousel-indicator-width:           30px;
$carousel-indicator-height:          3px;
$carousel-indicator-hit-area-height: 10px;
$carousel-indicator-spacer:          3px;
$carousel-indicator-opacity:         .5;
$carousel-indicator-active-bg:       $white;
$carousel-indicator-active-opacity:  1;
$carousel-indicator-transition:      opacity .6s ease;

$carousel-caption-width:             70%;
$carousel-caption-color:             $white;
$carousel-caption-padding-y:         1.25rem;
$carousel-caption-spacer:            1.25rem;

$carousel-control-icon-width:        2rem;

$carousel-control-prev-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>");
$carousel-control-next-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>");

$carousel-transition-duration:       .6s;
$carousel-transition:                transform $carousel-transition-duration ease-in-out; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)

Variabloj por la malhela karuselo :

$carousel-dark-indicator-active-bg:  $black;
$carousel-dark-caption-color:        $black;
$carousel-dark-control-icon-filter:  invert(1) grayscale(100);

Uzado

Per datumaj atributoj

Uzu datumajn atributojn por facile kontroli la pozicion de la karuselo. data-bs-slideakceptas la ŝlosilvortojn prevnext, kiu ŝanĝas la glitpozicion rilate al ĝia nuna pozicio. Alternative, uzu data-bs-slide-topor transdoni krudan glitan indekson al la karuselo data-bs-slide-to="2", kiu movas la glitpozicion al aparta indekso komencanta per 0.

La data-bs-ride="carousel"atributo estas uzata por marki karuselon kiel vigliganta ekde la paĝa ŝarĝo. Se vi ne uzas data-bs-ride="carousel"pravalorigi vian karuselon, vi devas mem pravalorigi ĝin. Ĝi ne povas esti uzata en kombinaĵo kun (redunda kaj nenecesa) eksplicita JavaScript-komencigo de la sama karuselo.

Per JavaScript

Voku karuselon mane per:

const carousel = new bootstrap.Carousel('#myCarousel')

Opcioj

Ĉar opcioj povas esti pasigitaj per datumaj atributoj aŭ JavaScript, vi povas almeti opcionomon al data-bs-, kiel en data-bs-animation="{value}". Nepre ŝanĝu la kazon de la opcionomo de " camelCase " al " kebab-case " kiam vi pasas la opciojn per datumaj atributoj. Ekzemple, uzu data-bs-custom-class="beautifier"anstataŭ data-bs-customClass="beautifier".

Ekde Bootstrap 5.2.0, ĉiuj komponantoj subtenas eksperimentan rezervitan datuman atributon data-bs-config, kiu povas enhavi simplan komponan agordon kiel JSON-ĉeno. Kiam elemento havas data-bs-config='{"delay":0, "title":123}'kaj data-bs-title="456"atributojn, la fina titlevaloro estos 456kaj la apartaj datumaj atributoj anstataŭigos valorojn donitajn sur data-bs-config. Krome, ekzistantaj datumaj atributoj povas enhavi JSON-valorojn kiel data-bs-delay='{"show":0,"hide":150}'.

Nomo Tajpu Defaŭlte Priskribo
interval nombro 5000 La kvanto da tempo por prokrasti inter aŭtomate biciklado de objekto.
keyboard bulea true Ĉu la karuselo devus reagi al klavaraj eventoj.
pause string, bulea "hover" Se agordita al "hover", paŭzas la bicikladon de la karuselo mouseenterkaj rekomencas la bicikladon de la karuselo mouseleave. Se agordita al false, ŝvebi super la karuselo ne paŭzos ĝin. Sur tuŝ-ebligitaj aparatoj, kiam agordita al "hover", biciklado paŭzos touchend(post kiam la uzanto finis interagi kun la karuselo) dum du intervaloj, antaŭ aŭtomate rekomenco. Ĉi tio estas aldone al la musa konduto.
ride string, bulea false Se agordita al true, aŭtomate ludas la karuselon post kiam la uzanto permane biciklas la unuan eron. Se agordita al "carousel", aŭtomate ludas la karuselon dum ŝarĝo.
touch bulea true Ĉu la karuselo devus subteni maldekstren/dekstren glitajn interagojn sur tuŝekranaj aparatoj.
wrap bulea true Ĉu la karuselo devas bicikli kontinue aŭ havi malfacilajn haltojn.

Metodoj

Nesinkronaj metodoj kaj transiroj

Ĉiuj API-metodoj estas nesinkronaj kaj komencas transiron . Ili revenas al la alvokanto tuj kiam la transiro estas komencita sed antaŭ ol ĝi finiĝas . Krome, metodovoko sur transira komponento estos ignorita .

Vidu nian JavaScript-dokumentaron por pliaj informoj .

Vi povas krei karuselan ekzemplon per la karusela konstrukciisto, ekzemple, por pravalorigi per pliaj opcioj kaj komenci bicikli tra eroj:

const myCarouselElement = document.querySelector('#myCarousel')
const carousel = new bootstrap.Carousel(myCarouselElement, {
  interval: 2000,
  wrap: false
})
Metodo Priskribo
cycle Biciklas tra la karuselaj eroj de maldekstre dekstren.
dispose Detruas la karuselon de elemento. (Forigas konservitajn datumojn sur la DOM-elemento)
getInstance Senmova metodo kiu ebligas al vi akiri la karuselan petskribon asociitan al DOM-elemento, vi povas uzi ĝin tiel: bootstrap.Carousel.getInstance(element).
getOrCreateInstance Senmova metodo kiu resendas karuselan petskribon asociitan al DOM-elemento aŭ kreas novan se ĝi ne estis pravigita. Vi povas uzi ĝin tiel: bootstrap.Carousel.getOrCreateInstance(element).
next Bicikloj al la sekva ero. Revenas al la alvokanto antaŭ ol la sekva ero estas montrita (ekz., antaŭ ol la slid.bs.carouselevento okazas).
nextWhenVisible Ne bicikligu karuselon al la sekva kiam la paĝo ne estas videbla aŭ la karuselo aŭ ĝia patro ne estas videblaj. Revenas al la alvokanto antaŭ ol la cela objekto estis montrita .
pause Maldaŭrigas la karuselon de bicikli tra eroj.
prev Ciklas al la antaŭa ero. Revenas al la alvokanto antaŭ ol la antaŭa ero estis montrita (ekz., antaŭ ol la slid.bs.carouselevento okazas).
to Biciklas la karuselon al aparta kadro (bazita 0, simile al tabelo). Revenas al la alvokanto antaŭ ol la cela objekto estis montrita (ekz., antaŭ ol la slid.bs.carouselevento okazas).

Eventoj

La karuselklaso de Bootstrap elmontras du okazaĵojn por hokado en karuselfunkciecon. Ambaŭ okazaĵoj havas la sekvajn kromajn trajtojn:

  • direction: La direkto en kiu la karuselo glitas (aŭ "left""right").
  • relatedTarget: La DOM-elemento kiu estas glita en lokon kiel la aktiva objekto.
  • from: La indekso de la aktuala ero
  • to: La indekso de la sekva ero

Ĉiuj karuselaj eventoj estas pafitaj ĉe la karuselo mem (te ĉe la <div class="carousel">).

Eventa tipo Priskribo
slid.bs.carousel Pafite kiam la karuselo kompletigis sian glitan transiron.
slide.bs.carousel Pafas tuj kiam la slideekzempla metodo estas alvokita.
const myCarousel = document.getElementById('myCarousel')

myCarousel.addEventListener('slide.bs.carousel', event => {
  // do something...
})