Wie kann ich angular bootstrap kollabieren, kollabieren horizontal? Etwas wie here?angularjs bootstrap collapse horizontally
Antwort
Sie müssen entweder die Kollatierungsdirektive ändern oder eine neue Direktive erstellen, die darauf basiert, nur die Breite zu reduzieren. Ich würde Letzteres empfehlen, es sei denn, Sie möchten, dass alle Kollabierungsanweisungen in Ihrer App horizontal zusammenfallen.
Bitte beachten Sie die Plunk here die Verwendung einer auf der Bootstrap-Kollaps Richtlinie auf der Grundlage collapse-with
Richtlinie zu demonstrieren.
Zusätzlich zu der Änderung der Direktive müssen Sie neue Klassen hinzufügen, um den Übergang zu behandeln und eine Breite für das Element festlegen, das Sie reduzieren möchten (Sie könnten auch die Anweisung auf 100% Breite reduzieren, nicht sicher) auf Ihren Anwendungsfall aber hoffentlich Sie die Idee) erhalten:
.well {
width: 400px;
}
.collapsing-width {
position: relative;
overflow: hidden;
-webkit-transition: width 0.35s ease;
-moz-transition: width 0.35s ease;
-o-transition: width 0.35s ease;
transition: width 0.35s ease;
}
und die Richtlinie erfordert nur wenige Änderungen an den expand
, expandDone
, collapse
und collapseDone
Funktionen und das Hinzufügen von/über die CSS-Klasse zu entfernen, wie folgt:
.directive('collapseWidth', ['$transition', function ($transition, $timeout) {
return {
link: function (scope, element, attrs) {
var initialAnimSkip = true;
var currentTransition;
function doTransition(change) {
var newTransition = $transition(element, change);
if (currentTransition) {
currentTransition.cancel();
}
currentTransition = newTransition;
newTransition.then(newTransitionDone, newTransitionDone);
return newTransition;
function newTransitionDone() {
// Make sure it's this transition, otherwise, leave it alone.
if (currentTransition === newTransition) {
currentTransition = undefined;
}
}
}
function expand() {
if (initialAnimSkip) {
initialAnimSkip = false;
expandDone();
} else {
element.removeClass('collapse').addClass('collapsing-width');
doTransition({ width: element[0].scrollWidth + 'px' }).then(expandDone);
}
}
function expandDone() {
element.removeClass('collapsing-width');
element.addClass('collapse in');
element.css({width: 'auto'});
}
function collapse() {
if (initialAnimSkip) {
initialAnimSkip = false;
collapseDone();
element.css({width: 0});
} else {
// CSS transitions don't work with height: auto, so we have to manually change the height to a specific value
element.css({ width: element[0].scrollWidth + 'px' });
//trigger reflow so a browser realizes that height was updated from auto to a specific value
var x = element[0].offsetHeight;
element.removeClass('collapse in').addClass('collapsing-width');
doTransition({ width: 0 }).then(collapseDone);
}
}
function collapseDone() {
element.removeClass('collapsing-width');
element.addClass('collapse');
}
scope.$watch(attrs.collapseWidth, function (shouldCollapse) {
if (shouldCollapse) {
collapse();
} else {
expand();
}
});
}
};
}]);
Möglicherweise müssen Sie die CSS ein wenig optimieren, um sicherzustellen, dass der Abstand und die Ränder mit Ihren Anwendungsfällen konsistent sind, aber hoffentlich hilft dies.
- 1. Bootstrap Collapse - Jquery "Collapse all" -Funktion
- 2. Bootstrap Akkordeon Panel/Collapse
- 3. Bootstrap Collapse funktioniert nicht
- 4. Bootstrap Collapse - Alle erweitern
- 5. Bootstrap Collapse Akkordeon auf Hover
- 6. Bootstrap: Collapse und Tooltip zusammen
- 7. Bootstrap Collapse hat Snap \ Jitter
- 8. Bootstrap Collapse kollabiert nicht automatisch
- 9. Bootstrap Collapse Akkordeon reagiert nicht
- 10. bootstrap collapse() Funktion funktioniert nicht
- 11. Bootstrap und Datatables Collapse Zeile
- 12. Collapse Menü bootstrap Positionierung schlecht
- 13. Bootstrap ändern navbar collapse breakpoint
- 14. Erweitern Collapse Schaltflächen in AngularJS
- 15. Override Bootstrap-Tabelle border-collapse style
- 16. bootstrap collapse brokes mit Bild als Header
- 17. Bootstrap 3 Collapse (von links nach rechts)
- 18. bootstrap mobile collapse nav funktioniert nicht
- 19. Bootstrap Button Collapse zur zweiten Zeile
- 20. Bootstrap Collapse schließen div, wenn andere öffnen
- 21. bootstrap 3 collapse ('hide') öffnet alle Collapsible?
- 22. Bootstrap Collapse funktioniert nicht mit JQuery
- 23. Jquery Collapse und erweitern Plugin für Bootstrap
- 24. Bootstrap - Collapse Artikel mit 'Special' Attribut darauf
- 25. Twitter bootstrap nav collapse Ausblenden bei Klick
- 26. Bootstrap: Accordion Collapse funktioniert nicht mehr mit Bootstrap 2.0.3
- 27. expand collapse left menu mit angularjs
- 28. Wie Bootstrap Zusammenbruch von AngularJS
- 29. deaktivieren Bootstrap Navbar Taste AngularJS
- 30. AngularJS Wie AngularJS-Bootstrap-picker
Danke, @adamK, ich war auf der Suche nach so etwas auch. Irgendeine Idee, wie man das div rechtsbündig hat und es nach rechts kollabieren lässt? Wenn ich 'position: absolute' hinzufüge und versuche, die Eigenschaften' right' und 'top' zu setzen, funktioniert der Übergang nicht mehr. –
Sie könnten einfach die Klassen "collapse" und "collapse-width" nach rechts schweben ** [siehe hier] (http://plnkr.co/edit/NAIpQ1puPVMw5JKa4KMy?p=preview) **. Dies hat zwar nicht den gleichen Swipe-Effekt von rechts nach links, aber wenn die Animationsdauer kurz genug ist, könnte sie immer noch geeignet sein. Ansonsten denke ich, dass es einige Containerelemente und die gleiche Randmanipulation benötigen wird, um denselben Effekt zu erzielen. – adamK
@adamK Sehr schöne Lösung, nette Arbeit – gh9