En el mundo ideal de las CSS -¿será con CCS3?- no será necesario maquetar utilizando la propiedad «float», al menos no para la disposición en pantalla -layout-. Pero mientras tanto, los que nos dedicamos a esto del frontend development (manera de darnos autobombo) hemos tenido que recurrir a dicha propiedad más de una vez.
Y cuando la utilizamos, a menudo, ocurre un desagradable comportamiento.
¿Por qué la capa contenedora no contiene a la hija? Es más, este mismo párrafo debería aparecer en una nueva linea. ¿Es un bug de los navegadores? No, es una feature de las CSS. En la especificación de la W3C el comportamiento de float está descrito así:
Content flows down the right side of a left-floated box and down the left side of a right-floated box … Since a float is not in the flow, non-positioned block boxes created before and after the float box flow vertically as if the float didn’t exist.
El primer método que utilicé para resolver esto fue usar la propiedad overflow:
.myclass { overflow: hidden; overflow: auto; }
Sin embargo este método presenta un efecto secundario no deseable casi de inmediato, pues los elementos hijos pueden cortarse o aparecer barras de desplazamiento por posicionamiento, márgenes, etc. Esta solución la reservaría para entornos determinados, donde no aparezca ese problema. Cuidado, a mí se me ha dado hasta por seleccionar un enlace con un tabulador, donde el navegador añade un borde y ese borde hacía que aparecieran las barras de desplazamiento.
Nicolas Gallagher, aunque no fue quien me descubrió el método, es quien ha dado con la solución más optimizada y que funciona en todos los navegadores y que yo aconsejo: consiste en añadir la clase clearfix (puedes ponerle otro nombre, obviamente) al contenedor, siendo las CSS de esta clase las siguientes:
.clearfix:before, .clearfix:after { content: " "; display: table; } .clearfix:after { clear: both; } /* For IE 6/7 only */ .clearfix { *zoom: 1; }
You need to enable either the SQLite or PDO_SQLite extension for the profiler to run properly.
apt-get install php5-sqlite
sudo apache2ctl restart
Si comenzando a utilizar Symfony2 trabajáis en una mezcla de Windows y Linux que unís mediante Samba, quizás os hayáis encontrado con el siguiente error nada más comenzar:
Warning: SQLite3::exec(): database is locked
Realmente no podemos arreglarlo, puesto que la gestión de permisos de Samba no le gusta a SQLite, pero podemos evitarlo (‘workaround’, que dirían) cambiando el directorio donde se crean ciertos ficheros. Abrimos el archivo ‘app/config/config.yml’ y escribimos la siguiente configuración:
parameters: kernel.cache_dir: '/tmp/sf-test'
Fuente: http://www.kitpages.fr/fr/cms/21/symfony2-sqlite3-et-samba
UPDATE: Parece que con la versión 2.0.12 esto ya no funciona y debes incluir en app/AppKernel.php
public function getCacheDir() { //return $this->rootDir . '/my_cache/' . $this->environment; return '/tmp/sf2'.$this->environment; }
A menudo lo necesito y siempre se me olvida cómo hacerlo y lo que se puede y no se puede hacer. Así que aquí lo resumo
l:personal l:deporte
Que se puede combinar con la búsqueda normal:
l:personal l:deporte sábado
buscaría los mensajes con ‘sabado’ y las etiquetas ‘personal’ y ‘deporte’
l:personal OR l:deporte
En el controlador (actions.class.php) tenemos un método para el listado de elementos:
public function executeIndex(sfWebRequest $request) { $this->items= $this->getRoute()->getObjects(); }
Si queremos modificar el comportamiento, por ejemplo el orden en el que se muestran esos listados debemos modificar el routing.yml
item: class: sfDoctrineRouteCollection options: [...] model_methods: list: getListOrdered
Y en itemTable.class.php añadir el siguiente método (por ejemplo para ordenar por el año)
public static function getListOrdered() { return ItemTable::getInstance()->createQuery('e')->orderBy('year DESC')->execute(); }
Me parece increíble. Pero me acabo de encontrar con un error básico de cálculo. Y corregir a la persona que lo cometió me ha permitido ahorrarme más de 150€ (aparte de ganarme una mirada asesina, pero ese es otro tema).
Lo diré claro INCREMENTAR UNA CANTIDAD EN DOS PORCENTAJES NO ES LO MISMO QUE INCREMENTAR LA SUMA DE LOS PORCENTAJES.
Es decir, no es lo mismo incrementar el IVA (18%) y luego aplicar un descuento (25%) que incrementar (o decrementar en este caso) la suma (-7% = 18% – 25%).
MAL HECHO/ERROR/NO
BIEN
En definitiva, con estos datos hacerlo bien nos ha permitido ahorrar 4,5€. ¿No te parece mucho? Prueba a rehacer las cuentas para un coche (23.000€ por ejemplo). Ya te lo digo yo: 1.035€
¡Ay! ¡Qué a gusto me he quedado!
Este artículo es muy interesante para redimensionar automáticamente imágenes, videos, etc.
http://www.alistapart.com/articles/fluid-images/
Y tiene una segunda parte tan interesante o más acerca de «layout de dos columnas de la misma altura y redimensionable (líquido)». ¿Sabes de qué hablo? Si lo has sufrido fijo que sí.
He encontrado un artículo interesante sobre layouts en CSS y bordes para dos columnas. No he probado lo que aquí cuentan, pero tendré que echarle un vistazo…
http://www.smashingmagazine.com/2010/11/08/equal-height-columns-using-borders-and-negative-margins-with-css/
El modo ‘feo’ (AKA The Ugly Way), dado que rompe el paradigma MVC:
sfContext::getInstance()->getConfiguration()->loadHelpers(array('Url')); $url = url_for('mi_url', true); // El segundo parámetro (absolute) depende del destino de la variable $url
El modo ‘elegante’:
$url = sfContext::getInstance()->getController()->genUrl('mi_url', true);
o en una acción:
$this->getController()->genUrl('string');
Comentarios recientes