
Category Archives: Varios
“Juegos online, la mejor universidad para los community managers”. Entrevista en Primerocomunico.com
Hace unas semanas tuve el privilegio de ser entrevistado por Sergio Escobar en su blog “Primero comunico, luego existo“, en relación a la figura del Community Manager. Dicha entrevista tuvo una estupeda acogida, y uno de mis comentarios sobre cómo el juego online World of Warcraft fue mi “escuela” en temas de gestión de comunidades.
Sergio me propuso retomar la entrevista y centrarnos precisamente en ese aspecto, cómo los juegos online pueden ser una gran escuela para los responsables de comunidad.
Aquí está la nueva entrevista. ¡Gracias Sergio!
Español: Segunda lengua materna en el mundo y tercera en Internet
De acuerdo a un estudio de la revista Ethnology, el español sube al segundo lugar como lengua materna en el mundo y ocupa la tercera posición en Internet tras el inglés y el chino. Esto lo dijo Carmen Caffarel, directora del Instituto Cervantes, pocas horas antes de la reunión anual del Patronato del Instituto Cervantes presidida por los Reyes de España.
El español es uno de los seis idiomas oficiales de la ONU (árabe, chino, español, francés, inglés y ruso) y tras el chino mandarín, es la lengua más hablada del mundo por el número de personas que la tienen como lengua materna.
Por otro lado, el español es el segundo idioma más estudiado en el mundo tras el inglés, con al menos 17,8 millones de estudiantes, si bien otras fuentes indican que se superan los 46 millones de estudiantes distribuidos en 90 países, y la tercera lengua más usada en Internet (8,2% del total). Se espera que para el 2050 lo hable el 10% de la población mundial, con Estados Unidos como primer país hispanohablante.
El español es la lengua oficial de más de 20 países: Argentina, Bolivia (junto con el quechua y el aymara), Chile, Colombia, Costa Rica, Cuba, Ecuador, El Salvador, Guatemala, Guinea Ecuatorial (junto con el francés), Honduras, México, Nicaragua, Panamá, Paraguay (junto con el guaraní), Puerto Rico, Perú (junto con el quechua y el aymara), República Dominicana, Sahara Occidental (junto con el árabe), España (junto con el catalán, vasco y gallego), Uruguay, Venezuela.

No por nada en internet primero se abrió la posibilidad para registrar dominios con “Ñ” antes de que la ICANN adoptara los caracteres distintos del inglés.
Top 10 de Idiomas mas hablados en el mundo
- Chino mandarín
El idioma más hablado en el mundo es el del país con más habitantes, China. Se trata de una lengua muy complicada de aprender, ya que cada palabra puede ser pronunciada de 4 formas distintas. Muchas personas fuera de China están interesadas en aprender chino, ya que en pocos años habrá mucha demanda de este idioma para tratar con el emergente mercado chino. - Español
El español es el idioma oficial de España y de casi todos los países de Sudamérica y Centroamérica. Además, en EE.UU. la población hispana es muy considerable. - Inglés
El inglés es el idioma más internacional, aunque “sólo” cuenta con algo más de 300 millones de hablantes nativos. Es idioma oficial en EE.UU., Canadá, Reino Unido, Australia y otros países. - Hindi/Urdu
El hindi es la lengua oficial en India y el urdu la de Pakistán. Sin embargo, se considera que son variaciones de un mismo idioma. En India, el hindi comparte cooficialidad con otras 22 lenguas, habladas en distintos estados del país. - Portugués
El portugués es el idioma oficial de Portugal y Brasil. También se habla en Macao, Angola, Venezuela y Mozambique. - Bengalí
El bengalí es el idioma oficial de Bangladesh, de donde provienen la mayoría de hablantes nativos de este idioma. - Malayo/Indonesio
Las diferencias entre el malayo y el indonesio son comparables a las que pueda haber entre el español de España y el de América. El malayo se habla principalmente en Malasia y Brunei (como lengua oficial) y la península de Malaca, Filipinas, Tailandia, Singapur y Sumatra, mientras que el indonesio es el idioma oficial de Indonesia. - Árabe
El árabe es lengua oficial en veinte países, como Arabia Saudí, Argelia, Marruecos, Egipto, Irak, Israel, Túnez, Libia, Líbano, etc. - Ruso
El ruso es lengua oficial en Rusia, Bielorrusia, Kirguizistán y Kazajstán y cooficial en Ucrania, Estonia y Letonia. - Japonés
El japonés es el idioma oficial en Japón y la isla de Angaur (Palau).
Links:
- El español sube al segundo lugar como lengua materna en el mundo y ocupa la tercera posición en Internet (ADN.es)
- Top 10 – Idiomas mas hablados en el mundo (Top Top 10)
Los usuarios del iPhone se defienden del Droid
Si bien hay uno que otro usuario que no esté muy contento con su iPhone, también es cierto que habemos millones que estamos encantados con nuestros iPhones y el vídeo de arriba es prueba de ello. El vídeo es una respuesta a uno que lanzará hace unas semanas Verizon, en el que promocionaban el Droid, atacando las debilidades del iPhone. Pues bien I Don’t Care (No me importa) que tan bueno sea el Droid.
Top 10 Broadband, un mashup para indicar la velocidad de nuestra conexión a internet

Top 10 Broadband es un mashup de Google Maps en el que los usuarios pueden indicar la zona en la que viven y la velocidad de su conexión.
Además, pueden seleccionar un ícono para indicar cual es su ISP, aunque se trata de un mashup solo para Gran Bretaña. Aún así, la idea es buena y sería interesante verlo plasmado en España, para dejar bien sentado cuales son los peores proveedores de conexión a internet.
Via Mapperz
Comunidad en red: ¿Qué hace exactamente un Community Manager?

Pese a que en las empresas anglosajonas el rol del Community Manager es perfectamente entendido, muchas compañías de nuestro país aún sufren de una miopía más que notable en todo lo relacionado con las comunidades virtuales.
Para muestra, un par de ofertas de trabajo en las que se solicita un “Community Manager”. Una de ellas apareció en el periódico de más tirada de nuestro país (pódeis ver el anuncio aquí y aquí). Vista la misma, tomo una entrada de Jorge Molinera en el Blog de la Aerco, donde comenta lo siguiente:
“Definitivamente, el Community Manager no es un becario contratado para que nos rellene de contenido el blog de la empresa.”
En estos anuncios no solo se demuestra un absoluto desconocimiento de la figura del responsable de comunidad, sino una falta de conocimiento absoluto de las nuevas tecnologías.
Tomemos algunos ejemplos más extraídos de estos anuncios.
- “Licenciado en Publicidad, Periodismo, etc.” ¿Qué quiere decir “etc”? ¿Licenciado en Físicas? ¿O en Historia del Arte? ¿Hemos de entender que Periodismo y Publicidad son la misma cosa?!
- “Conocimiento de Redes Sociales“. Vamos, como poner una oferta de empleo para un cirujano y pedir “conocimientos de anatomía”.
- “TeGnología de la Web 2.0“. Claro, ¿cómo contratar a alguien sin conocimientos en tegnología?
- “Conocimientos de HTML, Flash, etc“. Así en sus ratos libres, nos puede diseñar páginas web.
- “Salario de 700 euros bruto al mes“. Y porque existe un salario mínimo que impide que sea aun más bajo, que si no…
Es evidente que estas empresas, seas cuales sean, van a fracasar irremediablemente en su estrategia de comunidad. Luego echarán la culpa a las “nuevas teGnologías”, o a la persona que contraten para desempeñar este puesto. Darán un pésimo servicio a sus clientes y, desgraciadamente, dejarán un poso de incertidumbre sobre la labor de todos los que desempeñamos esta función.
Sobre las funciones que el Community Manager realiza en muchas empresas, os recomiendo este exhaustivo post de Connie Bensen, donde recoge perfectamente las distintas áreas en las que un Community Manager debe estar implicado, y que da una idea de la dimensión estratégica de este puesto en las empresas punteras.
Por mi parte, y de una manera más generalista, definiría la actividad del Community Manager en 5 grandes directrices:

1. Escuchar:
Monitorizar constantemente la red en busca de conversaciones sobre nuestra empresa, nuestros competidores o nuestro mercado
2. Circular esta información internamente
A raiz de esta escucha, debe ser capaz de extraer lo relevante de la misma, crear un discurso entendible, y hacérselo llegar a las personas correspondientes dentro de la organización
3. Explicar la posición de la empresa a la comunidad.
El Community Manager es la persona más apropiada para explicar la posición de la empresa en aspectos concretos a la comunidad, de una manera positiva y abierta, transformando la “jerga interna” de la compañía en un lenguaje común.
4. Buscar líderes, tanto interna como externamente.
La relación entre la comunidad y la empresa está sustentada en la labor de sus líderes y personas de alto potencial. El Community Manager debe ser capaz de identificar y “reclutar” a estos líderes, no solo entre la comunidad sino, sobre todo, dentro de la propia empresa
5. Encontrar vías de colaboración ente la comunidad y la empresa
La inmensa mayoría de directores desconoce cómo la comunidad puede ayudar a hacer crecer su empresa. No es algo que hayan utilizado nunca en su carrera, ni que hayan estudiado en las escuelas de negocios. El Community Manager debe ser la persona que les muestre “el camino” y les ayude a diseñar una estrategia clara de colaboración.
ACTUALIZACIÓN: Si comparamos estas ofertas con aquellas que se realizan en USA y los requisitos que se piden… no puedo seguir, se me salta la lágrima (ver ofertas de trabajo en Mashable Social Media Guide Jobs). Así nos luce el pelo.
En eTc | Community Manager, valor en alza
Nota: Si quieres conocer más sobre mi trabajo o mis intereses puedes leer mi blog, Comunidad en la red, o seguirme en twitter, @joseantoniogall.
Serie ‘Comunidad en red’ de Jose Antonio Gallego en eTc:
- ¡Escucha!, primera lección de Social Media para las empresas
-¿Estás preparado para Google Sidewiki?
- Las empresas y la innovacion abierta de las APIs
Consejos prácticos para impresionar con tu startup
Para aquellos que llevamos el espíritu emprendedor por dentro es probable que la más reciente edición del TC50 (con mucho sabor latino) nos haya dejado la inquietud de realizar alguno de nuestros proyectos personales. Sin embargo, uno de los obstáculos que se te puede presentar es el siguiente: Una vez logres llevar tus ideas a lo concreto y obtengas el financiamiento inicial para montar tu aplicación, la clave del éxito será vendérselo al público. Eventos como el TechCrunch50 son oportunidades que como emprendedores podemos aprovechar para catapultar nuestros proyectos, pero para hacer que una presentación de esa magnitud te rinda frutos, tienes que rockearla.
Cuando de hacer una demostración se trata, es bueno que sigamos algunos parámetros. Primero, debes estar consciente de quién es tu público y luego, no olvidar un par de consejos para impactar a cada uno de los miembros de tu audiencia.
Divide tu público en cuatro secciones

En primer lugar, los analistas. Debes estar preparado para recibir oleadas de visitantes de todo tipo de sitios web. Ellos te darán un gran influjo de atención y con alguna que otra reseña sobre tu producto, dirigirán el tráfico hacia donde tú quieres. Si la calidad es alta, estos visitantes regresarán. Aprovecha el repentino incremento en las visitas y reúne todo tipo de información, registra el comportamiento de tus visitantes y solicítales retroalimentación.
El segundo grupo es la cobertura mediática. Las reseñas que hacen los medios probablemente sea un arma de doble filo porque pueden atraer atención sobre ti, como ya mencioné, pero en eventos como estos, la preocupación mayor suele ser darle cobertura a la mayor cantidad de cosas que se pueda. La calidad de la crítica queda en segundo plano a veces, aunque no intencionalmente según Josh Catone, quien ha cubierto eventos como el TechCrunch y el DEMO.
Tercero, encontramos a los inversionistas: De nuevo, lo más importante es hacer una buena demostración y demostrar el potencial de tu start-up, que es el argumento más convincente del que puedes hacer uso para obtener un poco de plata para seguir trabajando en él.
Allí tenemos el ejemplo de Yammer, el ganador del TC 2008, que obtuvo el premio gracias a la falta de modelos de negocios frente al frenesí alrededor de Twitter. Yammer supo ofrecer un modelo de negocios bastante elaborado y combinando una buena presentación que dirigió la atención hacia su servicio, la promesa del retorno de la inversión y la continuidad en la calidad de su producto, logro posicionarse bastante bien.
El cuarto grupo es el que más nos interesa: el de los emprendedores. Jason Calacanis, miembro del jurado del TC50, les presenta una serie de consejos para que puedan hacer el mejor uso de sus 15 minutos de fama (aunque como ya verán, en realidad deben ser menos de 15).
Los consejos de Calacanis
Hay apenas una delgada línea entre una excelente presentación y una horrible presentación. Y para asegurarnos de que estemos siempre en la primera categoría, Jason nos propone un par de consejos básicos que debemos seguir (18 en total), entre los que destacan:
- Enseña tu producto en los primeros 60 segundos. No presentes toneladas de información, mantente dentro de lo que realmente importa: ¿qué haces y por qué lo haces mejor que los demás?
- Tomate la menor cantidad de tiempo posible: deja a tu público con ganas de más, en vez de aburrirlos hasta el cansancio con estadísticas y datos.
- Habla de lo que has hecho, no de lo que planeas hacer: si no tienes un producto que enseñar, no tomes el riesgo de quedar en mal. Asegúrate de comprender a tu competencia y distínguete de ella.
- PowerPoint es la muerte. Ya no es 1995 y el PowerPoint no te ayudará a dejar una buena impresión.
- Al momento de las preguntas, responde con brevedad y no pretendas saber la respuesta cuando no es así.
- Cuando hay problemas técnicos, tienes que seguir con tu presentación porque el tiempo es valioso. Es bueno que tengas un par de anécdotas ya preparadas, para mantener la atención en ti y no en una pantalla en blanco o tu asistente luchando porque funcione.
Entre otras varias recomendaciones, Calacanis nos sugiere formas de cómo arruinar nuestra presentación.
Proyectos exitosos de emprendedores exitosos como Santiago Siri, que participó por segunda vez en el TC50 2009 con The Whuffie Bank, de seguro no presentó su anterior proyecto (Popego) hablando de sus logros previos, o del tamaño del mercado; ni siquiera hablando en términos generales del panorama competitivo al que se enfrenta.
Hay otras recomendaciones de orden comunicativo como cambiar los tonos de voz y tomar en cuenta la puntualidad, pero no hay que olvidar que lo más importante es el contenido de nuestro producto y que las demostraciones son sólo la forma para darlo a conocer.
Luis Eduardo Barrueto para Maestros del Web.
Agrega tu comentario | Enlace permanente al artículo
Un e-mail dice más que mil palabras
Medios, corporaciones y nosotros explicamos todo el fenómeno de las comunidades virtuales y el proceso de socialización en la Web bajo un sólo termino: Redes Sociales. El problema ocurre cuando este se ubica en contextos erróneos o se pretende que todas las personas lo entiendan de igual manera; como resultado el concepto está sobredimensionado y muchas veces mal empleado.
La verdad, cuestiono ese uso universal y casi endiosado que muchos le están dando, porque no reconocen que más allá del éxito de Facebook, Youtube o Twitter hay un proceso de años en donde gente apasionada de las comunicaciones y las computadoras, entendía que detrás de cada ordenador esperaba alguien capaz de expresarse y aprender. Construir comunidad en la Web no es nuevo, a medida que una herramienta se convierte en una extensión del cuerpo terminamos ignorando su presencia e incluso olvidamos como era la vida antes de obtenerla.
Comunidad virtual
Cuando por allá en 1985 crearon la WELL (Whole Earth Lectronic Link), un sistema de conferencias, en donde las personas conversaban e intercambiaban información por correo electrónico, tuvieron que esperar ocho años para reunir ocho mil usuarios; tiempo después una comunidad llamada Facebook en sólo cinco años alcanzó los 300 millones.
Algunos somos hijos de la era digital, pero no nacimos con el Kindle ni el Iphone debajo del brazo. Hemos vivido el proceso, yo todavía recuerdo el TV de mi abuelo, aquel monstruo gigantesco que cuando encendía sólo dejaba ver un punto brillante en su pantalla, hasta que minutos después y por arte de magia, la imagen se apoderaba totalmente del cristal.
No entiendo porque dejamos de lado plataformas virtuales de comunicación tan simples y utilizadas como el e-mail, los chats, las listas de noticias, los foros, etc. para comprender el origen y forma de las famosas Redes Sociales, que no podrían funcionar sin ellas.
Problemas de definición
Jeremiah Owyang en el post “Interlaced: Email and Social Networks”, cuestiona la atribución que recibe Facebook de ser la Red Social más grande, ignorando la enorme cantidad de usuarios del correo electrónico, el cual también posee perfiles para que las personas expresen su identidad, interactúen y se conecten con otras, e incluso que estos puedan ser privados. Características, que según Owyang debe tener toda Red Social.
El primer “directorio” que consulté para contactar a mis amigos en la Web fue el de Hotmail, después apareció el Space enlazado al servicio del Messenger; para entonces podía modificar su tema, subir fotos y armar grupos. Hoy, Yahoo y Microsoft a través de su plataforma de correo y mensajería instantánea, ofrecen la posibilidad de conexión con algunas de las comunidades virtuales más conocidas (Twitter, Facebook, Flickr, Last.fm,etc.).
Cuestión de rutina
Qué tan exitosa resulte la propuesta de ambos, no lo sabremos hasta que pase algún tiempo, sólo me queda claro su afán por seguir vigentes. Además, la realidad es que plataformas como la de Facebook ofrecen una interactividad completa, que hace del correo, simplemente un requisito más; si es o no una Red Social, esa discusión se las dejo a ustedes.
“Es nuestra misión –nuestra misión esencial, central, crucial- transformarnos de meros seres sociales en criaturas comunitarias. Es el único modo en que la evolución humana podrá seguir su curso.” M. Scott Peck
Dany Correa para Maestros del Web.
Agrega tu comentario | Enlace permanente al artículo
The Mystery Of The CSS Float Property
![]()
Years ago, when developers first started to make the transition to HTML layouts without tables, one CSS property that suddenly took on a very important role was the float property. The reason that the float property became so common was that, by default, block-level elements will not line up beside one another in a column-based format. Since columns are necessary in virtually every CSS layout, this property started to get used — and even overused — prolifically.
The CSS float property allows a developer to incorporate table-like columns in an HTML layout without the use of tables. If it were not for the CSS float property, CSS layouts would not be possible except using absolute and relative positioning — which would be messy and would make the layout unmaintainable.
In this article, we’ll discuss exactly what the float property is and how it affects elements in particular contexts. We’ll also take a look at some of the differences that can occur in connection with this property in the most commonly-used browsers. Finally, we’ll showcase a few practical uses for the CSS float property. This should provide a well-rounded and thorough discussion of this property and its impact on CSS development.
Definition and Syntax
The purpose of the CSS float property is, generally speaking, to push a block-level element to the left or right, taking it out of the document flow. This allows naturally-flowing content to wrap around the floated element. This concept is similar to what you see every day in print literature, where photos and other graphic elements are aligned to one side while other content (usually text) flows naturally around the left- or right-aligned element.
The photo above shows the “Readers’ sites” section of .net magazine, which displays 3 readers’ photos each aligned left in their respective columns with text wrapping around the aligned images. That is the basic idea behind the float property in CSS layouts, and demonstrates one of the ways it has been used in table-less design.
The effectiveness of using floats in multi-columned layouts was explained by Douglas Bowman in 2004 in his classic presentation No More Tables:
Bowman explained the principles behind table-less design, using Microsoft’s old site as a case study. Floats were used prominently in his mock overhaul of the Microsoft layout.
Syntax
The float CSS property can accept one of 4 values: left, right, none, and inherit. It is declared as shown in the code below.
#sidebar {
float: left;
}
The most commonly-used values are left and right. A value of none is the default, or initial float value for any element in an HTML page. The value inherit, which can be applied to nearly any CSS property, does not work in Internet Explorer versions up to and including 7.
The float property does not require the application of any other property on a CSS element for float to function correctly, however, float will work more effectively under specific circumstances.
Generally, a floated element should have an explicitly set width (unless it is a replaced element, like an image). This ensures that the float behaves as expected and helps to avoid issues in certain browsers.
#sidebar {
float: left;
width: 350px;
}
Specifics on Floated Elements
Following is a list of exact behaviours of floated elements according to CSS2 Specifications:
- A left-floated box will shift to the left until its leftmost margin edge (or border edge if margins are absent) touches either the edge of the containing block, or the edge of another floated box
- If the size of the floated box exceeds the available horizontal space, the floated box will be shifted down
- Non-positioned, non-floated, block-level elements act as if the floated element is not there, since the floated element is out of document flow
- Margins of floated boxes do not collapse with margins of adjacent boxes
- The root element (
<html>) cannot be floated - An inline element that is floated is converted to a block-level element
Float in Practice
One of the most common uses for the float property is to float an image with text wrapping it. Here is an example:
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper.
Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui.
Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus.
The CSS applied to the image in the box above is as follows:
img {
float: left;
margin: 0 15px 5px 0;
border: solid 1px #bbb;
}
The only property required to make this effect work is the float property. The other properties (margin and border) are there for aesthetic reasons. The other elements inside the box (the <p> tags with text inside them) do not need any styles applied to them.
As mentioned earlier, floated elements are taken out of document flow, and other block elements remain in flow, acting as if the floated element is not even there. This is demonstrated visually below:
In the above example, the <p> element is a block-level element, so it ignores the floated element, spanning the width of the container (minus padding). All non-floated, block-level elements will behave in like manner.
The text in the paragraph is inline, so it flows around the floated element. The floated box is also given margin settings to offset it from the paragraph, making it visually clear that the paragraph element is ignoring the floated box.
Clearing Floats
Layout issues with floats are commonly fixed using the CSS clear property, which lets you “clear” floated elements from the left or right side, or both sides, of an element.
Let’s take a look at an example that commonly occurs — a footer wrapping to the right side of a 2-column layout:
If you view this page in IE6 or IE7, you won’t see any problems. The left and right columns are in place, and the footer is nicely tucked underneath. But in Firefox, Opera, Safari, and Chrome, you’ll see the footer jump up beside the left column. This is caused by the float applied to the columns. This is the correct behaviour, even though it is a more problematic one. To resolve this issue, we use the aforementioned clear property, applied to the footer:
#footer {
clear: both;
}
The result is shown below:
The clear property will clear only floated elements, so applying clear: both to both columns would not cause the footer to drop down, because the footer is not a floated element.
So use clear on non-floated elements, and even occasionally on floated elements, to force page elements to occupy their intended space.
Fixing the Collapsed Parent
One of the most common symptoms of float-heavy layouts is the “collapsing parent”. This is demonstrated in the example below:
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper.
Notice that the bottom of the floated image appears outside its parent. The parent does not fully expand to hold the floated image. This is caused by what we discussed earlier: the floated element is out of the natural document flow, so all block elements will render as if the floated element is not even there. This is not a CSS bug; it’s in line with CSS specifications. All browsers render the same in this example. It should be pointed out that, in this example, adding a width to the container prevents the issue from occurring in IE, so this would normally be something you would have to resolve in Firefox, Opera, Safari, or Chrome.
Solution 1: Float the container
The easiest way to fix this problem is to float the containing parent element:
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper.
Now the container expands to fit all the child elements. But unfortunately this fix will only work in a limited number of circumstances, since floating the parent may have undesirable effects on your layout.
Solution 2: Adding Extra Markup
This is an outdated method, but is an easy option. Simply add an extra element at the bottom of the container and “clear” it. Here’s how the HTML would look after this method is implemented:
<div id="container"> <img src="http://media1.smashingmagazine.com/wp-content/uploads/2009/10/lifesaver.jpg" width="200" height="222" alt="" /> <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper.</p> <div class="clearfix"></div> </div>
And the resulting CSS applied to the new element:
.clearfix {
clear: both;
}
You could also do this by means of a <br /> tag with an inline style. In any case, you will have the desired result: the parent container will expand to enclose all of its children. But this method is not recommended since it adds nonsemantic code to your markup.
Solution 3: The :after Pseudo-Element
The :after pseudo-element adds an element to the rendered HTML page. This method has been used quite extensively to resolve float-clearing issues. Here is how the CSS looks:
.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
The CSS class “clearfix” is applied to any container that has floating children and does not expand to enclose them.
But this method does not work in Internet Explorer up to version 7, so an IE-only style needs to be set with one of the following rules:
.clearfix {
display: inline-block;
}
.clearfix {
zoom: 1;
}
Depending on the type of issue you’re dealing with, one of the above two solutions will resolve the issue in Internet Explorer. It should be noted that the zoom property is a non-standard Microsoft proprietary property, and will cause your CSS to become invalid.
So, because the :after pseudo-element solution does not work in IE6/7, is a little bit bloated code-wise, and requires additional invalid IE-only styles, this solution is not the best method, but is probably the best we’ve considered so far.
Solution 4: The Overflow Property
By far the best, and easiest solution to resolve the collapsing parent issue is to add overflow: hidden or overflow: auto to the parent element. It’s clean, easy to maintain, works in almost all browsers, and does not add extra markup.
You’ll notice I said “almost” all browsers. This is because it does not work in IE6. But, in many cases, the parent container will have a set width, which fixes the issue in IE6. If the parent container does not have a width, you can add an IE6-only style with the following code:
// This fix is for IE6 only
.clearfix {
height: 1%;
overflow: visible;
}
In IE6, the height property is incorrectly treated as min-height, so this forces the container to enclose its children. The overflow property is then set back to “visible”, to ensure the content is not hidden or scrolled.
The only drawback to using the overflow method (in any browser) is the possibility that the containing element will have scrollbars or hide content. If there are any elements with negative margins or absolute positioning inside the parent, they will be obscured if they go beyond the parent’s borders, so this method should be used carefully. It should also be noted that if the containing element has to have a specified height, or min-height, then you would definitely not be able to use the overflow method.
So, there really is no simple, cross-browser solution to the collapsing parent issue. But almost any float clearing issue can be resolved with one of the above methods.
Float-Related Bugs in Internet Explorer
Over the years, there have been numerous articles published online that discuss common bugs in connection with floats in CSS layouts. All of these, not surprisingly, deal with problems specific to Internet Explorer. Below, you’ll find a list of links to a number of articles that discuss float-related issues in-depth:
- The Internet Explorer Guillotine Bug
- The IE5/6 Doubled Float-Margin Bug
- IE7 Bottom Margin Bug
- The IE Escaping Floats Bug
- The IE6 Peekaboo Bug
- The IE6 “Ghost Text” Bug
- The IE6 Expanding Box Problem
- The IE6 3-pixel Gap
Changing the Float Property with JavaScript
To change a CSS value in JavaScript, you would access the style object, converting the intended CSS property to “camel case”. For example, the CSS property “margin-left” becomes marginLeft; the property background-color becomes backgroundColor, and so on. But with the float property, it’s different, because float is already a reserved word in JavaScript. So, the following would be incorrect:
myDiv.style.float = "left";
Instead, you would use one of the following:
// For Internet Explorer myDiv.style.styleFloat = "left"; // For all other browsers myDiv.style.cssFloat = "left";
Practical Uses for Float
Floats can be used to resolve a number of design challenges in CSS layouts. Some examples are discussed here.
2-Column, Fixed-Width Layout
Roger Johansson of 456 Berea Street outlines an 8-step tutorial to create a simple, cross-browser, 2-column, horizontally centered layout. The float property is integral to the chemistry of this layout.
“The layout consists of a header, a horizontal navigation bar, a main content column, a sidebar, and a footer. It is also horizontally centered in the browser window. A pretty basic layout, and not at all difficult to create with CSS once you know how to deal with the inevitable Internet Explorer bugs.”
3-Column, Equal-Height Layout
Petr Stanicek of pixy.cz demonstrates a cross-browser 3-column layout, again using float:
“No tables, no absolute positioning (no positioning at all), no hacks(!), same height of all columns. The left and right columns have fixed width (150px), the middle one is elastic.”
Floated Image with Caption
Similar to what we discussed earlier under “Float in Practice”, Max Design describes how to float an image with a caption, allowing text to wrap around it naturally.
Horizontal Navigation with Unordered Lists
The float property is a key ingredient in coding sprite-based horizontal navigation bars. Chris Spooner of Line25 describes how to create a Menu of Awesomeness, in which the <li> elements that hold the navigation buttons are floated left:

How to Create a CSS Menu Using Image Sprites
To demonstrate the importance of the float property in this example, here is a screen shot of the same image after using firebug to remove the float: left:

Grid-Based Photo Galleries
A simple use for the float property is to left-float a series of photos contained in an unordered list, which gets the same result as what you would see in a table-based layout.
Foremost Canada’s product page (above) displays their products in grid-based format, next to a left-column sidebar. The photos are displayed in an unordered list with the float property for all <li> elements set to float: left. This works better than a table-based grid, because the number of photos in the gallery can change and the layout would not be affected.
Paragon Furniture’s futons page (above) is another example of a product page using an unordered list with floated list items.
iStockphoto’s search results page (above) is a similarly-structured grid of photos, but this time the photos are contained in left-floated <div> elements, instead of <li> elements.
Aligning an <input> Field with a Button
Default styling on form elements across different browsers can be a pain to deal with. Often times, in a single-field form like a search form, it is necessary to place the <input> element next to the submit button. Here is a simple search form, with an image used for the submit button:
In every browser, the result is the same: The button appears slightly higher than the input field. Changing margins and padding does nothing. The simple way to fix this is to float the input field left, and add a small right margin. Here is the result:
Conclusion
As was mentioned at the outset, without the CSS float property, table-less layouts would be, at worst, impossible, and, at best, unmaintainable. Floats will continue to be prominent in CSS layouts, even as CSS3 begins to gain prominence — even though there have been a few discussions about layouts without the use of floats.
Hopefully this discussion has simplified some of the mysteries related to floats, and provided some practical solutions to a number of issues faced by CSS developers today.
Further Reading
- Sitepoint CSS Reference: Float
- All About Floats on CSS-Tricks
- Float Layouts @ The Autistic Cuckoo
- Simple Clearing of Floats
- Visual Formatting Model: Floats
- Floating and Clearing
About the Author
Louis Lazaris is a writer and freelance Web Developer based in Toronto, Canada. He has 9 years of experience in the web development industry and posts web design articles and tutorials on his blog, Impressive Webs. You can follow Louis on Twitter or contact him using this form.
© Louis Lazaris for Smashing Magazine, 2009. |
Permalink |
78 comments |
Add to del.icio.us | Digg this | Stumble on StumbleUpon! | Tweet it! | Submit to Reddit | Forum Smashing Magazine
CSS Differences in Internet Explorer 6, 7 and 8
One of the most bizarre statistical facts in relation to browser use has to be the virtual widespread numbers that currently exist in the use of Internet Explorer versions 6, 7 and 8. As of this writing, Internet Explorer holds about a 65% market share combined across all their currently used browsers. In the web development community, this number is much lower, showing about a 40% share.

The interesting part of those statistics is that the numbers across IE6, IE7, and IE8 are very close, preventing a single Microsoft browser from dominating browser stats — contrary to what has been the trend in the past. Due to these unfortunate statistics, it is imperative that developers do thorough testing in all currently-used Internet Explorer browsers when working on websites for clients, and on personal projects that target a broader audience.
Thanks to the many available JavaScript libraries, JavaScript testing across different browsers has become as close to perfect as the current situation will allow. But this is not true in CSS development, particularly in relation to the three currently used versions of Internet Explorer.
This article will attempt to provide an exhaustive, easy-to-use reference for developers desiring to know the differences in CSS support for IE6, IE7 and IE8. This reference contains brief descriptions and compatibility for:
- Any item that is supported by one of the three browser versions, but not the other two
- Any item that is supported by two of the three browser versions, but not the other one
This article does not discuss:
- Any item that is not supported by any of the three browser versions
- Proprietary or vendor-specific CSS
Therefore, the focus is on differences in the three, not necessarily lack of support. The list is divided into five sections:
- Selectors & Inheritance
- Pseudo-Classes and Pseudo-Elements
- Property Support
- Other Miscellaneous Techniques
- Significant Bugs and Incompatibilities
Selectors & Inheritance
Child Selectors
Example
body>p {
color: #fff;
}
Description
The child selector selects all elements that are immediate children of a specified parent element. In the example above, body is the parent, and p is the child.
Support
Bugs
In IE7, the child selector will not work if there is an HTML comment between the parent item and the child.
Chained Classes
Example
.class1.class2.class3 {
background: #fff;
}
Description
Chained classes are used when the same HTML element has multiple classes declared, like this:
<div class="class1 class2 class3"> <p>Content here.</p> </div>
Support
Bugs
IE6 appears to support this property, because it matches the last class in the chain to an element having that class, however, it does not restrict the class to an element that has all the classes in the chain, like it should.
Attribute Selectors
Example
a[href] {
color: #0f0;
}
Description
This selector allows an element to be targeted only if it has the specified attribute. In the example above, all anchor tags that have href attributes would qualify, but not anchor tags that did not have href attributes.
Support
Adjacent Sibling Selectors
Example
h1+p {
color: #f00;
}
Description
This selector targets siblings that are adjacent to the specified element. The example above would target all paragraph tags that are siblings of, and come directly after, primary heading tags. For example:
<h1>heading</h1> <p>Content here.</p> <p>Content here.</p>
In the code above, the CSS styles specified would target only the first paragraph, because it is a sibling to the <h1> tag and is adjacent. The second paragraph is a sibling, but is not adjacent.
Support
Bugs
In IE7, the adjacent sibling selector will not work if there is an HTML comment between the siblings.
General Sibling Selectors
Example
h1~p {
color: #f00;
}
Description
This selector targets all siblings that appear after a specified element. Applying this selector to the HTML example given in the previous section will select both paragraph tags, however, if one of the paragraphs appeared before the heading, that paragraph would not be targeted.
Support
Pseudo-Classes and Pseudo-Elements
Descendant Selector After :hover Pseudo-Class
Example
a:hover span {
color: #0f0;
}
Description
An element can be targeted with a selector after a :hover pseudo class, similar to how any descendant selector works. The above example would change the font color inside all <span> elements inside of anchor elements while the anchor is hovered over.
Support
Chained Pseudo-Classes
Example
a:first-child:hover {
color: #0f0;
}
Description
Pseudo-classes can be chained to narrow element selection. The above example would target every anchor tag that is the first child of its parent and apply a hover class to it.
Support
:hover on Non-Anchor Elements
Example
div:hover {
color: #f00;
}
Description
The :hover pseudo-class can apply a hover, or rollover state, to any element, not just anchor tags.
Support
:first-child Pseudo-Class
Example
div li:first-child {
background: blue;
}
Description
This pseudo-class targets each specified element that is the first child of its parent.
Support
Bugs
In IE7, the first-child pseudo-class will not work if an HTML comment appears before the targeted first child element.
:focus Pseudo-Class
Example
a:focus {
border: solid 1px red;
}
Description
This pseudo-class targets any element that has keyboard focus.
Support
:before and :after Pseudo-Elements
Example
#box:before {
content: "This text is before the box";
}
#box:after {
content: "This text is after the box";
}
Description
This pseudo-element places generated content before or after the specified element, used in conjunction with the content property.
Support
Property Support
Virtual Dimensions Determined by Position
Example
#box {
position: absolute;
top: 0;
right: 100px;
left: 0;
bottom: 200px;
background: blue;
}
Description
Specifying top, right, bottom, and left values for an absolutely positioned element will give the element “virtual” dimensions (width and height), even if width and height are not specified.
Support
Min-Height & Min-Width
Example
#box {
min-height: 500px;
min-width: 300px;
}
Description
These properties specify minimum values for either height or width, allowing a box to be larger, but not smaller, than the specified minimum values. They can be used together or individually.
Support
Max-Height & Max-Width
Example
#box {
max-height: 500px;
max-width: 300px;
}
Description
These properties specify maximum values for either height or width, allowing a box to be smaller, but not larger, than the specified minimum values. They can be used together or individually.
Support
Transparent Border Color
Example
#box {
border: solid 1px transparent;
}
Description
A transparent border color allows a border to occupy the same space as would be occupied if the border was visible, or opaque.
Support
Fixed-Position Elements
Example
#box {
position: fixed;
}
Description
This value for the position property allows an element to be positioned absolutely relative to the viewport.
Support
Fixed-Position Background Relative to Viewport
Example
#box {
background-image: url(images/bg.jpg);
background-position: 0 0;
background-attachment: fixed;
}
Description
A fixed value for the background-attachment property allows a background image to be positioned absolutely relative to the viewport.
Support
Bugs
IE6 incorrectly fixes the background image in relation to the containing parent of the element that has the background set, therefore this value only works in IE6 when its used on the root element.
Property Value “inherit”
Example
#box {
display: inherit;
}
Description
Applying the value inherit to a property allows an element to inherit the computed value for that property from its containing element.
Support
Bugs
IE6 and IE7 do not support the value inherit except when applied to the direction and visibility properties.
Border Spacing on Table Cells
Example
table td {
border-spacing: 3px;
}
Description
This property sets the spacing between the borders of adjacent table cells.
Support
Rendering of Empty Cells in Tables
Example
table {
empty-cells: show;
}
Description
This property, which only applies to elements that have their display property set to table-cell, allows empty cells to be rendered with their borders and backgrounds, or else hidden.
Support
Vertical Position of a Table Caption
Example
table {
caption-side: bottom;
}
Description
This property allows a table caption to appear at the bottom of a table, instead at the top, which is the default.
Support
Clipping Regions
Example
#box {
clip: rect(20px, 300px, 200px, 100px)
}
Description
This property specifies an area of a box that is visible, making the rest “clipped”, or invisible.
Support
Bugs
Interestingly, this property works in IE6 and IE7 if the deprecated comma-less syntax is used (i.e. whitespace between the clipping values instead of commas)
Orphaned and Widowed Text in Printed Pages
Example
p {
orphans: 4;
}
p {
widows: 4;
}
Description
The orphans property specifies the minimum number of lines to display at the bottom of a printed page. The widows property specifies the minimum number of lines to display at the top of a printed page.
Support
Page Breaks Inside Boxes
Example
#box {
page-break-inside: avoid;
}
Description
This property specifies whether a page break should occur inside of a specified element or not.
Support
Outline Properties
Example
#box {
outline: solid 1px red;
}
Description
outline is the shorthand property that encompasses outline-style, outline-width, and outline-color. This property is preferable to the border property since it does not affect document flow, thus better aiding debugging of layout issues.
Support
Alternative Values for the Display Property
Example
#box {
display: inline-block;
}
Description
The display property is usually set to block, inline, or none. Alternative values include:
inline-blockinline-tablelist-itemrun-intabletable-captiontable-celltable-columntable-column-grouptable-footer-grouptable-header-grouptable-rowtable-row-group
Support
Handling of Collapsible Whitespace
Example
p {
white-space: pre-line;
}
div {
white-space: pre-wrap;
}
Description
The pre-line value for the white-space property specifies that multiple whitespace elements collapse into a single space, while allowing explicitly set line breaks. The pre-wrap value for the white-space property specifies that multiple whitespace elements do not collapse into a single space, while allowing explicitly set line breaks.
Support
Other Miscellaneous Techniques
Media Types for @import
Example
@import url("styles.css") screen;
Description
A media type for an imported style sheet is declared after the location of the style sheet, as in the example above. In this example, the media type is “screen”.
Support
Bugs
Although IE6 and IE7 support @import, they fail when a media type is specified, causing the entire @import rule to be ignored.
Incrementing of Counter Values
Example
h2 {
counter-increment: headers;
}
h2:before {
content: counter(headers) ". ";
}
Description
This CSS technique allows auto-incrementing numbers to appear before specified elements, and is used in conjunction with the before pseudo-element.
Support
Quote Characters for Generated Content
Example
q {
quotes: "'" "'";
}
q:before {
content: open-quote;
}
q:after {
content: close-quote;
}
Description
Specifies the quote characters to use for generated content applied to the q (quotation) tag.
Support
Significant Bugs and Incompatibilities
Following is a brief description of various bugs that occur in IE6 and IE7 that are not described or alluded to above. This list does not include items that lack support in all three browsers.
IE6 Bugs
- Doesn’t support styling of the
<abbr>element - Doesn’t support classes and IDs that begin with a hyphen or underscore
<select>elements always appear at the top of the stack, unaffected byz-indexvalues:hoverpseudo-class values are ignored if anchor pseudo-classes are not in the correct order (:link,:visited,:hover)- An
!importantdeclaration on a property is overridden by a 2nd declaration of the same property in the same rule set that doesn’t use!important heightbehaves likemin-heightwidthbehaves likemin-width- Left and right margins are doubled on floated elements that touch their parents’ side edges
- Dotted borders appear identical to dashed borders
line-throughvalue fortext-decorationproperty appears higher on the text than on other browsers- List items for an ordered list that have a layout will not increment their numbers, leaving all list items preceded by the number “1″
- List items don’t support all possible values for
list-style-type - List items with a specified
list-style-imagewill not display the image if they are floated - Offers only partial support for
@font-face - Some selectors will wrongly match comments and the doctype declaration
- If an ID selector combined with a class selector is unmatched, the same ID selector combined with different class selectors will also be treated as unmatched
IE7 Bugs
- List items for an ordered list that have a layout will not increment their numbers, leaving all list items preceded by the number “1″
- List items don’t support all possible values for
list-style-type - List items with a specified
list-style-imagewill not display the image if they are floated - Offers only partial support for
@font-face - Some selectors will wrongly match comments and the doctype declaration
Some IE bugs not mentioned here occur only under particular circumstances, and are not specific to one particular CSS property or value. See the references below for some of those additional issues.
Further Resources
- Details of Changes in Internet Explorer 8
- CSS Compatibility for Internet Explorer (MSDN)
- CSS Improvements in Internet Explorer 8 (MSDN)
- Internet Explorer Exposed – CSS Bugs @ Position Is Everything
- SitePoint CSS Reference
- CSS Contents and Browser Compatibility
- 10 Useful CSS Properties Not Supported By Internet Explorer
© Louis Lazaris for Smashing Magazine, 2009. |
Permalink |
178 comments |
Add to del.icio.us | Digg this | Stumble on StumbleUpon! | Tweet it! | Submit to Reddit | Forum Smashing Magazine
Post tags: CSS, internet explorer


















Medios Sociales