jQuery's .animate()
wymusza styl overflow: hidden
po uruchomieniu, mieszając z moim animowanym elementem, ponieważ mam inny element, który zwisa, z ujemną pozycją, poza nim. czy tak jest, aby tego uniknąć?jQuery .animate() wymusza styl "przepełnienie: ukryty"
Odpowiedz
Jest to kod źródłowy:
if (isElement && (p === "height" || p === "width")) {
// Make sure that nothing sneaks out
// Record all 3 overflow attributes because IE does not
// change the overflow attribute when overflowX and
// overflowY are set to the same value
opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
...
...
...
}
if (opt.overflow != null) {
this.style.overflow = "hidden";
}
można komentować tego, czy chcesz, lub po prostu użyć $('element').animate().css('overflow', 'visible');
jak sugerowano wcześniej.
Powód ustawienia przepełnienia na ukryty polega na tym, że elementy w ramach animacji będą zawarte w elemencie podczas animacji. Na przykład, jeśli zmniejszysz szerokość elementu, jego zawartość może spróbować wydłużyć i "wypaść" na dół.
Jest to wyjaśnione w kodzie źródłowym powyżej komentarza:
// Upewnij się, że nic nie wymyka się
nadzieję, że wyjaśnia to za Ciebie.
Doskonałe wyjaśnienie. – pilau
Innym sposobem jest zadeklarowanie elementu jako ! Important w css.
Na przykład.
.somediv {
overflow: visible !important;
}
@ScottGreenfield Nie w Chrome 17.0 – Sawny
@ScottGreenfield - to nie jest poprawne. ! ważne ma pierwszeństwo przed stylami śródliniowymi. –
http://www.w3.org/TR/CSS2/cascade.html#cascading-order Znaczące deklaracje stylu w stylu normalnym, niezależnie od specyfiki, style śródliniowe mają najwyższą specyfikę, ale nie mają pierwszeństwa przed stylami zadeklarowanymi ważny. –
można przekazać:
function(e){$('#something').css('overflowY', 'scroll');}
do .animate() parametr opcje, w zależności do uruchomienia gdy animacja jest 'kompletna', tak:
$('#something').animate({
width: '100px',
height: '100px',
overflowY: 'scroll !important' //doesn't work
}, { duration: 500, queue: false, complete: function(e){$('#something').css('overflowY', 'scroll');} });
Każde z tych rozwiązań zadziałało, ale znalazłem podstęp:
$(myDiv).animate(
{ height: newHeight},
{ duration: 500,
queue: false,
easing: 'easeOutExpo',
step: function() {
$(myDiv).css("overflow","visible");
}
}
);
Wymuś css na każdym etapie animacji. Mam nadzieję, że to pomoże.
Idealny! Właśnie tego potrzebowałem, dzięki. –
PERFECT "Eagle" (2 posty w górę). Gdybym nie natknął się na twoją odpowiedź, szukałbym za to godzin.
"Orzeł" Wysłano prawidłowy sposób postępowania w tej sprawie.
Wszystkie inne rozwiązania są po prostu hackami. To był poprawny sposób (powtarzając), dlatego daje ci wszystkie opcje podczas korzystania z klasy "animuj". Poniżej przedstawiono niektóre z dostępnych ustawień (z dokumentacji, https://api.jquery.com/animate/). Potrzebowałem ustawienia "kompletny", aby wykonać akcję po zakończeniu animacji.
duration (default: 400)
easing (default: swing)
queue (default: true)
specialEasing
step
progress
complete
start
done
fail
always
To będzie sprawiają, że praca z animacji znacznie łatwiejsze i będę używał tego formatu, czy nie jest to potrzebne, dla wszystkich animacji w przyszłości.
To nie jest odpowiedź. Opublikuj jako komentarz! Jednak odpowiedź, o której wspomniałeś, jest największym hackerem w moich oczach. Dodajesz przepełnienie: widoczne na każdym etapie animacji, który jest zupełnie niepotrzebny, ponieważ musisz ustawić tylko jeden raz. Furtermore jquery usuwa przepełnienie: ukrywa się po zakończeniu animacji, więc nie musisz tego robić samodzielnie. – Fuzzyma
Moja preferowana odpowiedź to użycie $.Animation.prefilter
. Here is a jsfiddle.net example.
Ustaw filtr wstępny:
jQuery.Animation.prefilter(function(element, properties, options) {
if (options.overrideOverflow) {
jQuery(element).css("overflow", options.overrideOverflow);
}
});
następnie użyć go
$(myDiv).animate(
{ height: newHeight},
{
duration: 500,
overrideOverflow: "visible" // Replace "visible" with your desired overflow value
}
);
Należy pamiętać, że nie można użyć nazwy funkcji overflow
dlatego że używa jQuery wewnętrznie.
Chociaż funkcja ta była już od jakiegoś czasu w jQuery, wydaje się, że dokumentacja nie jest kompletna. Ale draft documentation is available.
zobaczyć również https://github.com/jquery/api.jquery.com/issues/256
To jest schludne podejście. Nie sięgnąłem do metod dostępnych na obiekcie jQuery.Animation. Dziękuję za wskazanie. –
Podczas korzystania $('element').animate().css('overflow', 'visible');
może powodować problemy, jeśli overflow-x
i overflow-y
są już określone dla danego elementu.
W tych przypadkach należy użyć parametru $('element').animate().css('overflow', '');
, który usuwa atrybut przepełnienia i zachowuje nienaruszone wartości overflow-x
i overflow-y
.
- 1. CSS przepełnienie ukryty i bezwzględne położenie
- 2. Jquery animate bottom problem
- 3. ToggleClass animate jQuery?
- 4. jQuery animate scroll
- 5. jquery animate pozycja w procentach
- 6. jQuery animate() i oblicz, CSS()
- 7. jQuery animate + = i najnowsza wersja
- 8. jquery: $(). Animate() nie jest funkcją
- 9. overflow-x: ukryty zrywa przerwanie jquery scroll
- 10. Jquery: jeśli element jest ukryty, wykonaj czynność?
- 11. Przepełnienie: ukryty nie działa podczas korzystania z tabel
- 12. Kivy: Jak sprawić, aby widget zachowywał się jak przepełnienie: ukryty
- 13. CSS przepełnienie przewijanie i ukryty pasek przewijania (iOS)
- 14. przepełnienie: ukryty nie działa z tłumaczeniem w dodatnim kierunku
- 15. Użyj dwóch przycisków (obrazów), aby przewinąć DIV ustawiony na przepełnienie: ukryty; z jQuery
- 16. Czy attr() w jQuery wymusza małe litery?
- 17. Problemy z jquery animate() i Google Chrome
- 18. jak używać ważne w jQuery animate() funkcji
- 19. jQuery Animate - nie animuje absolutnego DIV
- 20. Przewiń do góry strony, używając jquery animate
- 21. jQuery animate() działa tylko na drugim kliknięciu
- 22. jQuery - animate/zjeżdżalnia do wysokości: 100%
- 23. styl JQuery wartość wskazania
- 24. Jak przesłonić ukryty styl GWT dla nagłówka DataGrid
- 25. Jak znaleźć pierwszy element ukryty przez JQuery
- 26. jquery, jak rozpoznać div jest ukryty?
- 27. jQuery zmienia styl elementu HTML
- 28. Dlaczego sterownik Selenium Firefox uważa, że mój modal nie jest wyświetlany, gdy rodzic ma przepełnienie: ukryty?
- 29. Java Animate JLabel
- 30. Kontenery jquery-ui przepełnienie zawartości kontenera
możesz użyć $ ('element'). Animate(). Css ('overflow', 'visible'); dla niektórych testów możesz napisać jakiś kod? – Tim
Działa to, ponieważ .animate() ustawia przepełnienie tylko raz, gdy się zaczyna! thanks =) – PulledBull
Ten sam problem, hacl – Moak