Quiero el efecto jQuery slideToggle pero quiero usar transiciones CSS3 para invocar la GPU en un dispositivo iOS para que la transición sea más fluida.¿Cómo obtener el mismo efecto que jQuery's slideToggle usando CSS 3 transitions?
Respuesta
se puede lograr esto mediante la transición height
, padding
's y border-width
. He aquí un ejemplo:
$('.run-css').click(function() {
$('.cont').toggleClass('toggled');
});
.cont {
width: 100px;
height: 100px;
border: 1px #CCC solid;
background-color: #EEE;
padding: 5px;
-webkit-transition: height .3s linear, padding-top .3s linear, padding-bottom .3s linear, border-top-width .3s linear, border-top-width .3s linear;
transition: height .3s linear, padding-top .3s linear, padding-bottom .3s linear, border-top-width .3s linear, border-top-width .3s linear;
}
.toggled {
overflow: hidden;
padding-top: 0;
padding-bottom: 0;
height: 0;
border-width: 0 1px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<button class="run-css">CSS slideToggle</button>
<div class="cont">Toggle this div</div>
Creo que Animatable debería hacer el truco. Es un marco de CSS Transitions, y aunque yo no desarrollo iOS, Lea Verou menciona que lo prueba en FF y Chrome para iOS.
Hay otras bibliotecas de animación CSS, como move.js que usan transiciones CSS y javascript.
gracias por la respuesta. – sevens
Lo sentimos, pero este no es compatible con CSS3 a menos que sepa la altura exacta. No hay forma de animar entre 0 y automático. Si conoce la altura exacta, puede generar algunos códigos de transición aquí: http://css3generator.com/
Eso es lo que estoy buscando la solución sin mencionar 'height' – Muhammed
Cierto, no puede animar entre 0 y la altura automática, pero puede alternar la altura máxima.
Alterne (a través de JS) entre la altura máxima: 0 y la altura máxima: 1000 px y obtendrá el resultado logrado, aunque no será tan suave como la función slideToggle de jQuery.
Combínalo con un fundido de opacidad y se ve bastante bien. Sin embargo, sugiero solo usar esta técnica en contenedores relativamente cortos, ya que los más grandes pueden crear una animación desigual.
Interesante. Jugué con esto y no es el tamaño del contenedor lo que lo hace desigual ... es la diferencia entre la 'altura máxima' y la altura real del contenido. Por lo tanto, es posible que también necesite saber la altura del contenido, si desea evitar una experiencia espasmódica (y si conoce la altura del contenido, puede hacer una transición de "altura"). – bryanbraun
.container {
overflow-y: hidden;
max-height: 0;
transition: max-height 0.5s ease;
}
.container.open {
max-height: 1000px; /* approx */
}
- 1. Eliminar el efecto de bola que rebota en slidetoggle
- 2. UIViewControllers Transitions Effect Like iBooks ¿Efecto de apertura de libro?
- 3. ¿Cómo funciona jQuerys $ .each()?
- 4. Coma en CSS, selectores múltiples que usan el mismo CSS
- 5. ¿Cómo se puede lograr un efecto "knockout" usando CSS?
- 6. jquery - slideToggle no suave
- 7. Efecto de fundido de gradiente alfa con CSS 3
- 8. Efecto CSS impresionante
- 9. Cómo aplicar el efecto múltiple en el mismo elemento
- 10. Crear efecto de resaltado en texto con relleno usando CSS
- 11. cómo obtener el valor del estilo CSS usando jquery
- 12. ¿Cómo puedo obtener el valor CSS heredado usando Javascript?
- 13. CSS surte efecto después de que la página haya procesado
- 14. Componente WebBrowser que no muestra CSS 3
- 15. Efecto de tipografía con CSS
- 16. Pasar verdadero/falso a slideToggle()
- 17. ¿Cómo puedo lograr este efecto Flash usando jQuery?
- 18. efecto profundidad usando Javascript (jQuery)
- 19. contenido que desaparece al usar jquery slideToggle en IE7
- 20. ¿Es posible recortar el efecto de texto de esta manera usando CSS/CSS3 solamente?
- 21. JQuery slideToggle tipo de visualización
- 22. CSS: cómo establecer el ancho del control de formulario para que todos tengan el mismo ancho?
- 23. slideToggle y: visible
- 24. Pasar variables a Rails StateMachine gem transitions
- 25. Usando System.Drawing, ¿cómo puedo dibujar algo que imite el efecto de un marcador de resaltado amarillo?
- 26. ¿Estas afirmaciones sobre los indicadores tienen el mismo efecto?
- 27. ¿Cómo actualizar el mismo EditText usando TextWatcher?
- 28. ¿Cómo creo este efecto usando javascript?
- 29. ¿Cómo obtener una imagen de fondo para imprimir usando css?
- 30. jquery - cómo agregar/eliminar clases en slideToggle?
No desarrollo iOS, así que no puedo probarlo, pero ¿qué pasa con move.js o animatable? En lugar de alternar, solo tiene una sentencia if/else a la que corresponde el elemento. –