Jump to content
MediaWiki

OOUI/Koncepce

From mediawiki.org
< OOUI
This page is a translated version of the page OOUI/Concepts and the translation is 100% complete.
OOUI
OOUI je v režimu údržby. Nový kód by měl používat Codex .
Úvod
Začínáme
Práce s widgety
Související odkazy

v · d · u

Určité základní myšlenky nebo podobné možnosti konfigurace sdílejí různé prvky/widgety, které spolu přímo nesouvisejí. Tato stránka dokumentuje některé z nich.

Overlays

Prvky některých widgetů jsou umístěny mimo normální tok, "on top of" (nad vším ostatním na stránce), jejich rozměry jsou omezeny pouze zobrazovací oblastí prohlížeče – například vyskakovací okno PopupButtonWidget nebo nabídka DropdownWidget .

Příklad widgetu PopupButton

Příklad DropdownWidgetu

Omezení CSS tomu však občas brání. Například:

  • Pokud je widget umístěn uvnitř kontextu překrývání (jiného než kořenového), vytvořeného např. pomocí vlastnosti z-index, není možné zobrazit vyskakovací okno "na" obsahu mimo tento kontext překrývání.
  • Pokud je widget umístěn uvnitř posouvatelné oblasti vytvořené pomocí vlastnosti overflow , není možné, aby se vyskakovací okno rozšířilo mimo své rozměry.
    • Speciální případ: Pokud je widget umístěn uvnitř OOUI dialogu.

Abyste se tomu vyhnuli, můžete zadat "překryvnou vrstvu" (pomocí konfigurační volby $overlay), uvnitř které bude vyskakovací okno umístěno (místo aby bylo uvnitř widgetu). Překryv je prvek DOM, který by měl být mimo postiženou oblast, aby jeho obsah mohl být umístěn požadovaným způsobem.

Ve většině případů by měl být překryvný prvek přímým potomkem prvku ‎<body>. (Použití samotného těla je také podporováno, ale nedoporučuje se, protože ztěžuje sledování toho, co tam vložilo vyskakovací okna.) Můžete předat true pro automatické vytvoření takového prvku pomocí OO.ui.getDefaultOverlay(). Pro prvky uvnitř dialogových oken byste měli použít vlastnost dialogu this.$overlay.

Mezi widgety a další prvky podporující možnost konfigurace $overlay patří:

  • PopupButtonWidget
  • LookupElement
  • CapsuleMultiselectWidget
  • ComboBoxInputWidget
  • DropdownWidget
  • FieldLayout
  • FieldsetLayout

Příklad

V tomto příkladu jsou uvnitř dialogového okna umístěna dvě téměř identická vyskakovací tlačítka. Jediný rozdíl je v tom, zda se použije překrytí, či nikoli. (Další podrobnosti o standardním kódu naleznete v OOUI/Windows/Dialogs a OOUI/Widgety/Tlačítka a přepínače#Vyskakovací tlačítka.)

functionMyDialog(config){
MyDialog.super.call(this,config);
}
OO.inheritClass(MyDialog,OO.ui.Dialog);
MyDialog.static.name='myDialog';
MyDialog.static.title='Simple dialog';
MyDialog.prototype.initialize=function(){
MyDialog.super.prototype.initialize.call(this);
varpopupButton1=newOO.ui.PopupButtonWidget({
label:'Popup button (without $overlay)',
popup:{
$content:$('<p>Popup contents.</p><p>Popup contents.</p><p>Popup contents.</p>'),
padded:true
}
}),
popupButton2=newOO.ui.PopupButtonWidget({
$overlay:this.$overlay,
label:'Popup button (with $overlay)',
popup:{
$content:$('<p>Popup contents.</p><p>Popup contents.</p><p>Popup contents.</p>'),
padded:true
}
}),
panel=newOO.ui.PanelLayout({
padded:true,
expanded:false
});
panel.$element.append(popupButton1.$element,popupButton2.$element);
this.$body.append(panel.$element);
};
MyDialog.prototype.getBodyHeight=function(){
return100;
};
varwindowManager=newOO.ui.WindowManager();
$(document.body).append(windowManager.$element);
windowManager.addWindows([newMyDialog()]);
windowManager.openWindow('myDialog');

Vyskakovací okno prvního tlačítka nemůže přesahovat rozměry dialogu, zobrazuje se pouze jeho malá část a pro zobrazení celého obsahu je nutné rolovat. Vyskakovací okno druhého tlačítka se může a je zobrazeno plně.

AltStyle によって変換されたページ (->オリジナル) /