<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cmacias.com &#187; css</title>
	<atom:link href="http://www.cmacias.com/category/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cmacias.com</link>
	<description>Otro blog más de diseño</description>
	<lastBuildDate>Sat, 06 Aug 2011 18:26:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Otro sistema de pestañas</title>
		<link>http://www.cmacias.com/otro-sistema-de-pestanas/</link>
		<comments>http://www.cmacias.com/otro-sistema-de-pestanas/#comments</comments>
		<pubDate>Sat, 28 May 2011 17:23:27 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=453</guid>
		<description><![CDATA[Hace ya algún tiempo había creado un pequeño tutorial de como crear un sistema de pestañas independiente de frameworks Js. Para una iniciación no estaba mal, aunque tenía algúnas limitaciones que impedían añadir &#8220;subpestañas&#8221; o determinados tags usados en el script, lo que a la larga lo convertía en uno de tantos scripts que pasan [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-470" title="tabs" src="http://www.cmacias.com/wp-content/uploads/2011/05/tabs.jpg" alt="" width="425" height="107" /></p>
<p>Hace ya algún tiempo había creado un pequeño tutorial de <a title="Un sencillo sistema de pestañas" href="http://www.cmacias.com/un-sencillo-sistema-de-pestanas/" target="_blank">como crear un sistema de pestañas</a> independiente de frameworks Js. Para una iniciación no estaba mal, aunque tenía algúnas limitaciones que impedían añadir &#8220;subpestañas&#8221; o determinados tags usados en el script, lo que a la larga lo convertía en uno de tantos scripts que pasan al olvido.</p>
<p>Es por ello que decidí rehacer el código. Más sencillo, más claro y obviamente más útil. Este nuevo sistema permite añadir pestañas dentro de un panel, e incluso utilizar nuevos divs para el caso de que los contenedores a usar ya lo sean.</p>
<p>Empezamos creando el contenedor que tendrá nuestro sistema de pestañas. Un simple div nos valdrá.</p>
<pre class="html">&lt;div id="panel"&gt;&lt;/div&gt;</pre>
<p>Dentro de este panel, añadiremos las pestañas. Al igual que en muchos sistemas, utilizaremos listas, aunque bien podríamos utilizar simples enlaces.</p>
<pre class="html">&lt;ul id="tabs"&gt;
  &lt;li&gt;opción 1&lt;/li&gt;
  &lt;li&gt;opción 2&lt;/li&gt;
  &lt;li&gt;opción 3&lt;/li&gt;
  &lt;li&gt;opción 4&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>Bien, ahora crearemos un panel donde se ubicarán las contenidos de cada pestaña. Una buena estructura sería una capa (div) principal, y otra tantas capa (div) por cada pestaña</p>
<pre class="html">&lt;div id="paneles"&gt;
  &lt;div&gt;&lt;/div&gt;
  &lt;div&gt;&lt;/div&gt;
  &lt;div&gt;&lt;/div&gt;
  &lt;div&gt;&lt;/div&gt;
&lt;/div&gt;</pre>
<p>Todo junto nos quedaría así</p>
<pre class="html">&lt;div id="panel"&gt;
  &lt;ul id="tabs"&gt;
    &lt;li&gt;opción 1&lt;/li&gt;
    &lt;li&gt;opción 2&lt;/li&gt;
    &lt;li&gt;opción 3&lt;/li&gt;
    &lt;li&gt;opción 4&lt;/li&gt;
  &lt;/ul&gt;
  &lt;div id="paneles"&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</pre>
<p>Lo interesante es crear los estilos y no depender de imágenes. Estos estilos aplicarán las esquinas redondeadas de las pestañas al igual que en los sistemas windows, con excepción &#8211; como no &#8211; a los explorer, que no disponen de propiedad de &#8220;redondeo&#8221;.</p>
<pre class="css">/* tamaño y forma del panel principal */
#panel {
  position: relative;
  width:400px;
  height: 300px;
  margin: 100px 0px 0px 100px;
}
/* configuracion de las pestañas */
#tabs {
  position:absolute;
  left: 0px;
  top: 0px;
  margin:0;
  padding:0;
  width: 400px;
  overflow: hidden;
  z-index: 20;
}
#tabs li {
  float:left;
  */
  esto produce compatibilidad al redondear
  en los distintos navegadores
  /*
  -webkit-user-select: none;
  -moz-user-select: none;
  -khtml-user-select: none;
  */
  esto impide seleccionar el contenido
  de las pestañas eliminando ese feo
  efecto de selección al clickar y
  arrastrar
  */
  user-select: none;
  list-style: none;
  margin: 1px 1px 0px 0px;
  display: block;
  height: 21px;
  line-height: 21px;
  padding: 0px 8px;
  outline: 0px none;
  font-family: arial;
  font-size: 10px;
  text-decoration: none;
  color: #000;
  border: 1px solid #91A7B4;
  border-bottom-width: 0px;
  background: #fff;
  border-radius: 4px 4px 0px 0px;
  cursor: pointer;
}
#tabs li.active {
  margin-top: 0px;
  height: 21px;
  line-height: 19px;
  border-top: 3px solid #324A62;
  cursor: default;
}
/* Configuración de los paneles */
#panel #paneles {
  position:absolute;
  left: 0px;
  top: 23px;
  width: 398px;
  height: 275px;
  border: 1px solid #91a7b4;
  border-radius: 0px 4px 4px 4px;
  background: #fff;
  overflow: hidden;
}
#panel #paneles &gt; div{
  margin:10px;
  width: 378px;
  height: 255px;
  font-family: arial;
  font-size: 12px;
  text-decoration: none;
  color: #000;
  overflow: auto;
}</pre>
<p>Y el javascript que hace que funcione todo esto</p>
<pre class="js">function cm_tabs(options)
{
  if((options.tab &amp;&amp; options.tab != '') &amp;&amp;
     (options.container &amp;&amp; options.container != ''))
  {
    var tabs		= document.getElementById(options.tab).children;
    var containers	= document.getElementById(options.container).children;

    for(var i=0; i&lt; tabs.length; i++)
    {
      tabs[i].i = i;
      containers[i].style.display = 'none';

      tabs[i].onclick = function()
      {
        for(var e=0; e &lt; containers.length; e++)
        {
          tabs[e].className = ''
          containers[e].style.display = 'none';
        }
        tabs[this.i].className = 'active';
        containers[this.i].style.display = 'block';
      }
    }

    if(options.active &amp;&amp; options.active &lt;= tabs.length &amp;&amp; options.active != '')
    {
      tabs[(options.active-1)].className = 'active';
      containers[(options.active-1)].style.display = 'block';
    } else {
      tabs[0].className = 'active';
      containers[0].style.display = 'block';
    }
  }
  return false;
}</pre>
<p>Finalmente ejecutamos el javascript con los parámetros que más nos convengan.</p>
<pre class="js">&lt;script type="text/javascript"&gt;
  cm_tabs({tab : 'tabs', container : 'paneles', active : 1});
&lt;/script&gt;</pre>
<p>Donde la propiedad &#8220;tab&#8221; representa el ID del contenedor de las pestañas, &#8220;container&#8221; de los paneles que conforman el contenido de las pestañas. Esto nos permitiría dado el caso, colocar las pestañas en un lado y el contenedor en otro. Finalmente &#8220;active&#8221; representa la pestaña que queremos se muestre como activa el ejecutar el script. Así de sencillo.</p>
<p>El código completo y listo para funcionar lo podéis obtener de los siguientes enlaces:<br />
[ <a title="Ejemplo de pestañas simples" onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/otros_tabs/tabs_simple.html','tab_simple','width=640,height=480,left='+(screen.availWidth/2-320)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/otros_tabs/tabs_simple.html">ejemplo de pestañas</a> ] [ <a onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/otros_tabs/tabs.html','','width=640,height=480,left='+(screen.availWidth/2-320)+',top='+(screen.availHeight/2-240)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/otros_tabs/tabs_simple.html">otro ejemplo más complejo</a> ] [ <a title="Descarga de ejemplos" href="../wp-content/uploads/demos/otros_tabs/tabs.rar">descargar</a> ]</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css%2C" title="en Bitacoras encuentre blogs que hablan acerca de  'css,'." rel="tag">css,</a>, <a href="http://bitacoras.com/canales/javascript" title="en Bitacoras encuentre blogs que hablan acerca de  'javascript'." rel="tag">javascript</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/otro-sistema-de-pestanas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Listados de posts en el admin de wordpress 3.1</title>
		<link>http://www.cmacias.com/listados-de-posts-en-el-admin-de-wordpress-3-1/</link>
		<comments>http://www.cmacias.com/listados-de-posts-en-el-admin-de-wordpress-3-1/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 00:54:23 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=432</guid>
		<description><![CDATA[Con gran ilusión actualizo un blog al recién sacado del horno Worpress 3.1 &#8211; eso si, en local, que las cosas hay que probarlas antes &#8211; y me llevo la primera sorpresa negativa. O soy yo que estoy pitoño o los listados de posts en el backend de WordPress no se ven como debiera. Mmmm, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-435" title="wordpress-logo" src="http://www.cmacias.com/wp-content/uploads/2011/02/wordpress-logo-e1298595202363.png" alt="" width="425" height="273" /></p>
<p>Con gran ilusión actualizo un blog al recién sacado del horno Worpress 3.1 &#8211; eso si, en local, que las cosas hay que probarlas antes &#8211; y me llevo la primera sorpresa negativa. O soy yo que estoy pitoño o los listados de posts en el backend de WordPress no se ven como debiera. Mmmm, empezamos mal.</p>
<p>Si bien es cierto, esto tiene una sencilla solución y sin necesidad de tener que tocar css de la administración ni plugins ni cosas raras.</p>
<p>Abrimos nuestro archivo functions.php y añadimos la siguientes líneas</p>
<pre class="php">function extra_css_admin() {

&nbsp;&nbsp; &nbsp;echo '&lt;link rel="stylesheet" type="text/css" media="all" href="'.TEMPLATEURL.'/admin-css.css" /&gt;';
}
add_action('admin_head', 'extra_css_admin');</pre>
<p>Con esto lo que conseguimos es añadir una nueva hoja de estilos a la zona de administración del wordpress y es aquí donde empieza la magia creando una hoja de estilos llamada &#8220;admin-css.css&#8221; &#8211; aunque también se puede llamar de otras formas &#8211; y dentro añadimos estas 3 declaraciones.</p>
<pre class="php">.posts {
&nbsp;&nbsp;&nbsp; &nbsp;width: auto !important;
}
.fixed .column-comments.sortable a, .fixed .column-comments.sorted a {
&nbsp;&nbsp;&nbsp; &nbsp;height: 16px;
}
.posts div {
&nbsp;&nbsp;&nbsp; &nbsp;height: auto;
}</pre>
<p>De esta manera sobreescribimos las css del propio wordpress mientras no sacan un parche que lo arregle.</p>
<p>Editado : Esto sólo ocurre con algunos plugins instalados.</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/wordpress%2C" title="en Bitacoras encuentre blogs que hablan acerca de  'wordpress,'." rel="tag">wordpress,</a>, <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/listados-de-posts-en-el-admin-de-wordpress-3-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maquillando los input de tipos radio y checkbox.</title>
		<link>http://www.cmacias.com/maquillando-los-input-de-tipos-radio-y-checkbox/</link>
		<comments>http://www.cmacias.com/maquillando-los-input-de-tipos-radio-y-checkbox/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 08:35:58 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[diseño]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=406</guid>
		<description><![CDATA[Una de mis mayores obsesiones en la web son los campos de formulario. Son los elementos menos personalizables del html, ya que siempre nos obligan a utilizar javascript bien para reemplazar ese elemento o para implementar una funcionalidad que se pierde al utilizar css en un desplegable o en un campo de tipo file. Los [...]]]></description>
			<content:encoded><![CDATA[<p>Una de mis mayores obsesiones en la web son los campos de formulario. Son los elementos menos personalizables del html, ya que siempre nos obligan a utilizar javascript bien para <a title="Mejorando los selectBox" href="http://www.cmacias.com/mejorando-los-selectbox/" target="_blank">reemplazar ese elemento</a> o para implementar una funcionalidad que se pierde al utilizar css <a title="cambiando el aspecto de un SelectBox" href="http://www.cmacias.com/cambiando-el-aspecto-de-los-selectbox/" target="_blank">en un desplegable</a> o <a title="Maquillar un file upload" href="http://www.cmacias.com/maquillar-un-file-upload-2/" target="_blank">en un campo de tipo file</a>.</p>
<p>Los navegadores modernos (olvidaros de explorer) y las css avanzadas, nos permiten modificar &#8211; en este caso &#8211; y sin utilizar javascript, los input de tipo &#8220;checkbox&#8221; y &#8220;radio&#8221; con la ayuda de las etiquetas &#8220;label&#8221;, pudiendo personalizarlos hasta límites inimaginables. Como siempre, el límite lo pone nuestra creatividad.</p>
<p>Esto lo conseguimos con esta estructura</p>
<pre class="php">&lt;input type="checkbox" name="check_01" id="check_01" /&gt;
&lt;label for="check_01"&gt;Opción&lt;/label&gt;</pre>
<p>Con una imagen similar a esta</p>
<p><img title="check_02" src="http://www.cmacias.com/wp-content/uploads/2010/10/check_02.png" alt="" width="16" height="32" /><br />
<br clear="all" /></p>
<p>Y estas pequeñas líneas de css</p>
<pre class="css">input[type=checkbox] {display: none;}
input[type=checkbox] + label {
&nbsp;&nbsp; &nbsp;background: #fff;
&nbsp;&nbsp; &nbsp;display: inline-block;
&nbsp;&nbsp; &nbsp;width: 16px;
&nbsp;&nbsp; &nbsp;height: 16px;
&nbsp;&nbsp; &nbsp;background: url(img/check_02.png) 0px 0px no-repeat;
&nbsp;&nbsp; &nbsp;text-indent: -1000em;
}
input[type=checkbox]:checked + label {
background: url(img/check_02.png) 0px -16px no-repeat;
}</pre>
<p>Las cuales tienen una explicación muy sencilla.<br />
input[type=checkbox] nos permite seleccionar todos los campos &#8220;<strong>input</strong>&#8221; de tipo &#8220;<strong>checkbox</strong>&#8220;.</p>
<p>input[type=checkbox] + label nos permite seleccionar todos los campos &#8220;<strong>input</strong>&#8221; de tipo &#8220;<strong>checkbox</strong>&#8221; y además, el elemento &#8220;<strong>label</strong>&#8221; que se encuentre a continuación. No debe haber ningún otro elemento depués del campo &#8220;<strong>input</strong>&#8220;.</p>
<p>input[type=checkbox]:checked + label, nos permite seleccionar todos los campos &#8220;<strong>input</strong>&#8221; de tipo &#8220;<strong>checkbox</strong>&#8221; cuyo atributo &#8220;<strong>checked</strong>&#8221; sea igual a &#8220;<strong>checked</strong>&#8221; y además, el elemento &#8220;<strong>label</strong>&#8221; que se encuentre a continuación.</p>
<p>De esta manera, podemos hacer cosas similares a las que he montado en un ejemplo.</p>
<p>[ <a onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/checkbox/index.html','checkbox','width=940,height=450,left='+(screen.availWidth/2-470)+',top='+(screen.availHeight/2-225)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/checkbox/index.html">ejemplo</a> ] [ <a title="Descarga personalización de radio y checkbox" href="http://www.cmacias.com/wp-content/uploads/demos/checkbox/checkbox.zip">descargar ejemplo</a> ]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/maquillando-los-input-de-tipos-radio-y-checkbox/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Reiniciar el aspecto de los botones con css</title>
		<link>http://www.cmacias.com/reiniciar-el-aspecto-de-los-botones-con-css/</link>
		<comments>http://www.cmacias.com/reiniciar-el-aspecto-de-los-botones-con-css/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 21:57:46 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=379</guid>
		<description><![CDATA[Al maquetar con css un sitio web &#8211; por lo general &#8211; se suele utilizar un reseteador de css, que deja a cero las propiedades de todos los elementos. Esto nos permite poder moldearlos a nuestro antojo, permitiendo que en la gran mayoría de los navegadores se visualice de la misma manera. Sin embargo, nuestro [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cmacias.com/reiniciar-el-aspecto-de-los-botones-con-css/button/" rel="attachment wp-att-391"><img src="http://www.cmacias.com/wp-content/uploads/2010/02/button.jpg" alt="" title="button" width="425" height="119" class="aligncenter size-full wp-image-391" /></a><br />
Al maquetar con css un sitio web &#8211; por lo general &#8211; se suele utilizar un reseteador de css, que deja a cero las propiedades de todos los elementos.</p>
<p>Esto nos permite poder moldearlos a nuestro antojo, permitiendo que en la gran mayoría de los  navegadores se visualice de la misma manera.</p>
<p>Sin embargo, nuestro querido <a href="http://www.getfirefox.com">Firefox</a>, se guarda una <strong>desagradable sorpresa</strong> y probablemente más de uno se haya dado cuenta. Y es que cuando tratamos de meter &#8211; por ejemplo &#8211; dentro de un  elemento <strong>&lt;button&gt;</strong> una etiqueta &#8211; por ejemplo un <strong>&lt;span&gt;</strong>, este nos deja un pequeño padding que nos impide colocar el <strong>&lt;span&gt;</strong> a nuestro gusto por mucho <strong>padding</strong> que le quitemos, por lo que terminamos metiendo una posición absoluta y pasamos el trago.</p>
<p>No es una solución que me agrada, ya que un simple padding a cero, debería bastar. Para conseguir arreglar esto, debemos añadir la siguiente línea a nuestro reseteador.</p>
<pre class=&quot;php&quot;>
&lt;style&gt;
   /** Eliminando el padding de los botones **/
   button::-moz-focus-inner { padding:0;border:none }
&lt;/style&gt;
</pre>
<p>Ahora podemos maquetar a gusto dentro de los elementos <strong>&lt;button&gt;</strong> sin miedo a nuevas e inesperadas sorpresas &#8230; o no ?</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/tips" title="en Bitacoras encuentre blogs que hablan acerca de  'tips'." rel="tag">tips</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/reiniciar-el-aspecto-de-los-botones-con-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Doble Scroll en Opera</title>
		<link>http://www.cmacias.com/doble-scroll-en-opera/</link>
		<comments>http://www.cmacias.com/doble-scroll-en-opera/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 23:07:35 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[opera]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=242</guid>
		<description><![CDATA[No es la primera vez &#8211; y seguro que tampoco la última &#8211; que al comprobar en Opera algún diseño, salen dos barras de scroll juntas. Ni que decir tiene que me he vuelto un maniático a la hora de maquetar una web y conseguir que se vea igual de bien en los navegadores principales [...]]]></description>
			<content:encoded><![CDATA[<p>No es la primera vez &#8211; y seguro que tampoco la última &#8211; que al comprobar en Opera algún diseño, salen dos barras de scroll juntas.</p>
<p><img src="http://www.cmacias.com/wp-content/uploads/2009/29/doblescroll.jpg" alt="Doble scroll en Opera" width="425" height="200" /><br style="clear:all" /></p>
<p>Ni que decir tiene que me he vuelto un maniático a la hora de maquetar una web y conseguir que se vea igual de bien en los navegadores principales (no veas que subidón para el EGO) y el problema de Opera me empezaba a desesperar un poco.</p>
<p>Hoy, por casualidad he descubierto que poniendo esto en la hoja de estilos, conseguimos solucionar el problema.</p>
<pre class="css">/** Hack para el scroll doble de opera **/
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0)
{
   html { overflow: auto; }

   body { overflow: auto; }
}</pre>
<p>Espero que sirva de utilidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/doble-scroll-en-opera/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cambiando el aspecto de los SelectBox</title>
		<link>http://www.cmacias.com/cambiando-el-aspecto-de-los-selectbox/</link>
		<comments>http://www.cmacias.com/cambiando-el-aspecto-de-los-selectbox/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 15:08:01 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=216</guid>
		<description><![CDATA[Como siempre y siguiendo mi manía de darle forma a los controles &#8220;feos&#8221; de los navegadores, vemos una forma de poder cambiar los &#8220;SelectBox&#8221; de forma sencilla. De forma similar a como cambiabamos los campos de tipo file, debemos crear una estructura alrededer de los campos selectBox de una forma parecida a esta &#60;div class="selectBox"&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Como siempre y siguiendo mi manía de darle forma a los controles &#8220;feos&#8221; de los navegadores, vemos una forma de poder cambiar los &#8220;SelectBox&#8221; de forma sencilla.</p>
<p>De forma similar a como cambiabamos los campos de tipo file, debemos crear una estructura alrededer de los campos selectBox de una forma parecida a esta</p>
<pre>&lt;div class="selectBox"&gt;
   &lt;div class="box" id="box"&gt;Plantar un arbol&lt;/div&gt;
   &lt;select name="mySelectBox" id="mySelectBox"&gt;
      &lt;option value="1" class="primero"&gt;Plantar un arbol&lt;/option&gt;
      &lt;option value="2"&gt;Escribir un libro&lt;/option&gt;
      &lt;option value="3" selected="selected"&gt;Ser Padre&lt;/option&gt;
      &lt;option value="4"&gt;Hacer un Blog&lt;/option&gt;
      &lt;option value="5" class="ultimo"&gt;Un texto largo para ver que efecto produce&lt;/option&gt;
   &lt;/select&gt;
&lt;/div&gt;</pre>
<p>Donde el div principal es el contenedor del Select, y el div &#8220;box&#8221; donde escribiremos la selección del combo. Para poder realizar la última acción, crearemos un evento &#8220;onchange&#8221; que aplicaremos a nuestro comboBox para poder pasar los datos de la selección al div &#8220;box&#8221;.</p>
<pre>onchange="this.parentNode.getElementsByTagName('div')[0].innerHTML=this.options[this.selectedIndex].text"</pre>
<p>Y evidentemente le daremos unos &#8220;colorines&#8221; para que quede &#8220;bonito&#8221;.</p>
<pre>&lt;style type="text/css"&gt;
div.selectBox {
   position: relative;
   width: 150px;
   height: 22px;
   border: 1px solid #036;
   background: url(button.png) 130px center no-repeat;
}
   div.selectBox div.box {
      position: absolute;
      left: 3px;
      top: 3px;
      width: 124px;
      height: 16px;
      line-height: 16px;
      font-family: arial;
      font-size: 11px;
      color: #036;
      overflow: hidden;
   }
   div.selectBox select {
      position: absolute;
      left: -1px;
      top: -1px;
      width: 152px;
      height: 24px;
      border: 1px solid #036;
      opacity: 0;
      filter: alpha(Opacity=0);
      -moz-opacity: 0;
      cursor: pointer;
      z-index:100;
   }
      div.selectBox select option{
         padding: 4px;
         font-size: 11px;
         color: #036;
         border-bottom: 1px solid #eee;
         cursor: pointer;
      }
      div.selectBox select option.ultimo{
         border-bottom: 0px none;
      }
&lt;/style&gt;</pre>
<p>Para complementar estos estilos, añadimos la siguiente imagen que hará las veces de botón</p>
<p><img src="http://www.cmacias.com/wp-content/uploads/2009/button.png" alt="Botón" width="16" height="16" /><br style="clear:both;" /></p>
<p>El resultado funciona en todos los navegadores, exceptuando nuestro querido amigo &#8220;Explorer6&#8243; donde no sé si se verá correctamente al tener una &#8220;emulación&#8221; del mismo.</p>
<p>[ <a href="http://www.cmacias.com/wp-content/uploads/demos/selectbox/selectBox.html" onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/selectbox/selectBox.html','selectbox','width=240,height=64,left='+(screen.availWidth/2-120)+',top='+(screen.availHeight/2-32)+'');return false;">demo</a> ] [ <a href="http://www.cmacias.com/wp-content/uploads/demos/selectbox/selectBox.zip">descargar</a> ]</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/dise%C3%B1o" title="en Bitacoras encuentre blogs que hablan acerca de  'diseño'." rel="tag">diseño</a>, <a href="http://bitacoras.com/canales/javascript" title="en Bitacoras encuentre blogs que hablan acerca de  'javascript'." rel="tag">javascript</a>, <a href="http://bitacoras.com/canales/tips" title="en Bitacoras encuentre blogs que hablan acerca de  'tips'." rel="tag">tips</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/cambiando-el-aspecto-de-los-selectbox/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Emulando a los iframes con css</title>
		<link>http://www.cmacias.com/emulando-a-los-iframes-con-css/</link>
		<comments>http://www.cmacias.com/emulando-a-los-iframes-con-css/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 00:43:53 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=101</guid>
		<description><![CDATA[Hoy con unos conocimientos mínimos de css, es posible construir layout complejos con la apariencia de una aplicación de escritorio. Entonces orgullosos miramos una y otra vez nuestro layout, que además valida xhtml 1.1, copiamos la url y lo comprobamos en Ópera y también en Safari. Y nada, que somos unos hachas&#8230; hasta que nos [...]]]></description>
			<content:encoded><![CDATA[<p><img title="Layout frame" src="http://www.cmacias.com/wp-content/uploads/2008/12/layour-frame.jpg" alt="Layout frame" width="425" height="190" /><br style="clear:both" /></p>
<p>Hoy con unos conocimientos mínimos de css, es posible construir layout complejos con la apariencia de una aplicación de escritorio.</p>
<p>Entonces orgullosos miramos una y otra vez nuestro layout, que además valida xhtml 1.1, copiamos la url y lo comprobamos en Ópera y también en Safari. Y nada, que somos unos hachas&#8230; hasta que nos dá por mirarlo en Explorer 6 (porque en el 7 y el 8 aún queda decente), y nos damos cuenta de que no se vé lo que se debería ver, acordándonos de que es imposible combinar las posiciones left y right, top y bottom.</p>
<p>Pero bueno, soluciones haylas, solo hay que exprimirse un poco el cerebro y atacar a explorer por donde le duele.</p>
<p>Y es por eso, que hice unos experimentos con layouts compatibles con los navegadores buenos y los malos. Solo un pero. Si tenéis el explorer 6 instalado con el &#8220;multiple Explorer&#8221;, aunque este renderiza como explorer 6, es detectado en los comentarios como explorer 7.</p>
<p>[ <a onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/layouts_css/frames-01.html','frames','width=700,height=500,left='+(screen.availWidth/2-350)+',top='+(screen.availHeight/2-250)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/layouts_css/frames-01.html">ejemplos de layouts</a> ] [ <a title="Descargar ejemplos" href="http://www.cmacias.com/wp-content/uploads/demos/layouts_css/layouts-frames.zip" target="_blank">descargar</a> ]</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/xhtml" title="en Bitacoras encuentre blogs que hablan acerca de  'xhtml'." rel="tag">xhtml</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/emulando-a-los-iframes-con-css/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>position:fixed compatible con todos los navegadores</title>
		<link>http://www.cmacias.com/positionfixed-compatible-con-todos-los-navegadores/</link>
		<comments>http://www.cmacias.com/positionfixed-compatible-con-todos-los-navegadores/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 23:28:11 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=99</guid>
		<description><![CDATA[Siempre he pensado que las buenas ideas o soluciones a problemas estaban ahí, al lado nuestra, y que además no eran complicadas. Solo hay que pensar con claridad y pensar en algo simple. Vía divinentd, me encuentro con un código muy, muy simple, que consigue el efecto &#8220;fixed&#8221; para todos los navegadores. Estos serían las [...]]]></description>
			<content:encoded><![CDATA[<p>Siempre he pensado que las buenas ideas o soluciones a problemas estaban ahí, al lado nuestra, y que además no eran complicadas. Solo hay que pensar con claridad y pensar en algo simple.</p>
<p>Vía <a title="Emulando position:fixed" href="http://divinentd.com/experiments/emulating-position-fixed.html" target="_blank">divinentd</a>, me encuentro con un código muy, muy simple, que consigue el efecto &#8220;fixed&#8221; para todos los navegadores.</p>
<p>Estos serían las css</p>
<pre class="css">html, body {
   height: 100%;
   overflow: hidden;
}
#container {
   height: 100%;
   overflow: auto;
   position: relative;
   z-index: 2;
}
#div1 {
   position: absolute;
   top: 0;
   left: 0;
   z-index: 1;
}
#div2 {
   position: absolute;
   top: 0;
   right: 0;
   z-index: 1;
}
#div3 {
   position: absolute;
   bottom: 0;
   right: 0;
   z-index: 1;
}
#div4 {
   position: absolute;
   bottom: 0;
   left: 0;
   z-index: 1;
}</pre>
<p>Y esta, un ejemplo de estructura</p>
<pre class="html">&lt;div id="container"&gt;
   &lt;div id="content"&gt;
      &lt;h1&gt;Emulando position: Fixed;&lt;/h1&gt;
      &lt;p&gt;Añade un texto&lt;/p&gt;
      &lt;p&gt;O tu contenido...&lt;/p&gt;
   &lt;/div&gt;
&lt;/div&gt;
&lt;div id="div1"&gt;div id="div1&lt;/div&gt;
&lt;div id="div2"&gt;div id="div2&lt;/div&gt;
&lt;div id="div3"&gt;div id="div3&lt;/div&gt;
&lt;div id="div4"&gt;div id="div4&lt;/div&gt;</pre>
<p>Lo que estamos haciendo realmente es permitir que el contenido alcance el 100% de alto desde el <strong><span style="color: #3366ff;">body </span></strong>y escondiendo el scroll con la propiedad <span style="color: #3366ff;"><strong>overflow</strong></span>. A continuación, entra en escena la capa contenedora, que se prolonga hasta el 100% del documento, y permitimos el uso del scroll, de forma que da la sensación de que el scroll pertenece al body.</p>
<p>Y ya entonces es cuando creamos la capa o capas con la que queremos emular el position:fixed. Su posición pasa a ser absoluta con respecto al <strong><span style="color: #3366ff;">body</span></strong>, de forma que solamente se generará la barra de scroll desde la capa <span style="color: #3366ff;"><strong>contenedora</strong></span>. Simple, útil y sin hacks.</p>
<p>La única limitación que le veo es que al <strong>generarse scroll</strong>, el contenido de la capa contenedora se mueve un poco (la mitad del ancho de la barra de <strong>scroll</strong>), mientras que los elementos que emulen a la posición fixed siguen en su lugar. Esto podría llegar a generar un pequeño desfase en la colocación de algún elemento. Por lo que como dicen en la tele, &#8220;<strong><span style="color: #993366;">Úsese con moderación</span></strong>&#8220;.</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/xhtml" title="en Bitacoras encuentre blogs que hablan acerca de  'xhtml'." rel="tag">xhtml</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/positionfixed-compatible-con-todos-los-navegadores/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Layout 100% alto</title>
		<link>http://www.cmacias.com/layout-100-alto-ii/</link>
		<comments>http://www.cmacias.com/layout-100-alto-ii/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 23:32:33 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=90</guid>
		<description><![CDATA[Después de haber navegado mucho buscando la versión perfecta &#8211; que pienso que no existe &#8211; yo hago mi pequeña y humilde propuesta. Yo desde luego que le voy a sacar mucho provecho. Si desde luego a alguien más le sirve y le evita tener que darle a la cabeza, otra alegría que me llevo. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="Layout al 100% de alto" src="http://www.cmacias.com/wp-content/uploads/2008/26/layout100.jpg" alt="Layout al 100% de alto" width="425" height="190" /><br style="clear:both" /><br />
Después de haber navegado mucho buscando la versión perfecta &#8211; que pienso que no existe &#8211; yo hago mi pequeña y humilde propuesta. Yo desde luego que le voy a sacar mucho provecho. Si desde luego a alguien más le sirve y le evita tener que darle a la cabeza, otra alegría que me llevo.</p>
<p>La idea se basa en una estrucura similar a esta</p>
<pre class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;Layout al 100% de alto&lt;/title&gt;
&lt;link type="text/css" href="layout.css" rel="stylesheet" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="layout"&gt;
   &lt;div id="cabecera"&gt;capa cabecera&lt;/div&gt;
   &lt;div id="lateral"&gt;capa lateral&lt;/div&gt;
   &lt;div id="contenido"&gt;capa contenido&lt;/div&gt;
   &lt;div id="pie"&gt;capa pie&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Y la hoja de estilos pretende ser algo como esto, y después intento explicar el porqué y como.</p>
<pre class="css">html,body {
   height:100%;
/* necesario para las sub-alturas */
}

body {
   margin:0;
   padding:0;
   overflow-x: hidden;
/* Para evitar el feo scroll horizontal de explorer 7 */
   background:#fff;
}

body, div, p {
   font-family: verdana;
   font-size:12px;
   color:#000;
}

div#layout {
   position:relative;
/* necesario para el posicionamiento */
   margin:0 auto;
/* lo centramos, aunque no funciona para explorer 5 */
   width:750px;
   height:auto !important;
/* para los navegadores de verdad */
   height:100%;
/* Para que explorer lo interprete como alto mínimo */
   min-height:100%;
/* para los navegadores de verdad */
   background:#f0f0f0;
}

div#cabecera {
   background:#cc0000;
   height: 80px;
   padding:10px;
   color: #fff;
}

div#lateral {
   float: left;
   width: 150px;
   padding: 10px;
   padding-bottom: 50px;
/* Este padding debe ser igual a la altura del footer */
   background: #ccc;
}

div#contenido {
   padding: 10px;
   padding-bottom: 50px;
/* Este padding debe ser igual a la altura del footer */
   margin-left: 170px;
/* 150px del ancho del lateral
    más 20px del padding del mismo */
   background: #eeeAA0;
}

div#pie {
   position:absolute;
   width:730px;
/* 750px del ancho del layout menos 20px del padding */
   height: 30px;
   padding:10px;
   color: #fff;
   bottom:0;
/* lo encajamos al fondo de todo */
   background:#006699;
}</pre>
<p>Lo primero de todo es permitir alcanzar un 100% de altura a la entidad más importante de la estructura, y en este caso me refiero a las etiquetas <span style="color: #993366;">&lt;html&gt;</span> y <span style="color: #993366;">&lt;body&gt;</span>, por lo que les damos una altura del 100%.</p>
<p>Acto seguido a la capa &#8220;<span style="color: #3366ff;"><strong>layout</strong></span>&#8221; que es la que va a contener el resto de elementos, la posicionamos de forma relativa. Esto nos permite posicionar otros elementos con respecto al contenedor principal, es decir, a la capa &#8220;<span style="color: #3366ff;"><strong>layout</strong></span>&#8220;. Después le aplicamos el famoso truco dándole un mínimo de altura del 100%, altura automática declarándola como <span style="color: #ff0000;">!important</span>, y para hacerlo compatible con los navegadores de mentira, volvemos a declarar la altura al 100%. Esto evidentemente no anula la altura anterior para los navegadores buenos, ya que hemos puesto el <span style="color: #ff0000;">!important</span>.</p>
<p>La <span style="color: #993366;">cabecera </span>y las columnas <span style="color: #993366;">contenido</span> y <span style="color: #993366;">lateral</span>, no tienen nada fuera del otro mundo, a no ser un &#8220;<span style="color: #ff9900;">padding-bottom</span>&#8221; que es igual a la altura de nuestro <span style="color: #993366;">footer</span>. Esto se debe a que el footer lo posicionamos de forma absoluta, a 0px del fondo (<span style="color: #ff6600;">bottom:0px;</span>) por lo que siempre estará pegado al fondo y puede llegar a tapar con su altura parte del texto de las capas citadas.</p>
<p>Espero haberme explicado del porqué de determinados estilos, aunque como dice un conocido</p>
<blockquote><p>No me enteré de lo que dijo, pero si funciona me vale</p></blockquote>
<p>Pués eso. Solo apuntar para terminar, que las capas lateral y contenido no se estiran con el resto del layout &#8211; eso sería otra historia. Lo que pretendía con este tutorial era que el footer se mantenga siempre abajo de todo e independiente del tamaño de la ventana y del contenido del mismo, que se mantuviera igual.</p>
<p>Alguien me preguntaba por la mañana si esto sirve para el caso en que el lateral necesite tener un color de fondo que alcance hasta el footer. Mi respuesta es si. Simplemente crearíamos un fondo del ancho deseado, y lo colocaríamos de fondo en la capa layout repitiéndose verticalmente.</p>
<p>[ <a title="Layout al 100% de alto" onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/layout/index.html','layout','width=800,height=600,left='+(screen.availWidth/2-400)+',top='+(screen.availHeight/2-300)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/layout/index.html" target="_blank">demo</a> ] [ <a title="Layout al 100% de alto" href="http://www.cmacias.com/wp-content/uploads/demos/layout/layout.zip" target="_blank">descargar</a> ]</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/xhtml" title="en Bitacoras encuentre blogs que hablan acerca de  'xhtml'." rel="tag">xhtml</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/layout-100-alto-ii/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Layout web 100% de alto css</title>
		<link>http://www.cmacias.com/layout-web-100-de-alto-css/</link>
		<comments>http://www.cmacias.com/layout-web-100-de-alto-css/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 23:30:38 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[pataletas]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=89</guid>
		<description><![CDATA[El título del post es muy representativo de una búsqueda cualquiera en google de algo similar. Me hacen mucha gracia las reuniones de las &#8220;instituciones&#8221; o &#8220;individuos&#8221; que tratan de modernizar las tecnologías como html y css, y todos los post relacionados que piden cosas de las que realmente podemos prescindir, y de las que [...]]]></description>
			<content:encoded><![CDATA[<p>El título del post es muy representativo de una búsqueda cualquiera en google de algo similar.</p>
<p>Me hacen mucha gracia las reuniones de las &#8220;instituciones&#8221; o &#8220;individuos&#8221; que tratan de modernizar las tecnologías como html y css, y todos los post relacionados que piden cosas de las que realmente podemos prescindir, y de las que llegamos a ellas por otras vías &#8211; pienso &#8211; más lógicas, como integrar javascript con css, variables en las css, y un largo etc.</p>
<p>Y digo yo, por que no reunirse para cosas más lógicas y necesarias como por ejemplo poder jugar con medidas en tantos por cien y la posibilidad de poder restarle valores absolutos ?</p>
<p>Yo vería muy lógico el poder darle una vuelta de tuerca a todo esto, y poder llegar a algo como</p>
<pre class="css">   #header    { height: 150px; }
   #content   { height: 100%-250px; }
   #footer    { height: 100px; }
</pre>
<p>Creo que eso es bastante más útil que otras cosas que realmente pienso que no sirven más que para acarrearnos más problemas. Quién no se ha peleado con un layout y ha tenido que tirar finalmente de javascript porque lo que pretendía hacer no era posible sólo con css ?</p>
<p>Después está el tema del famoso ACID test. Tanta cosa para poder llegar al 100%. No será más fácil hacer propuestas &#8211; ellos que pueden &#8211; para conseguir cosas útiles ? No voy a ser yo &#8211; entre otras cosas &#8211; el que vaya a hacer una web con un smiley compuesto de formas ilógicas de encontrar en una web.</p>
<p>En fin, lo que en principio iba a ser un post para hacer mi propuesta de layout al 100% de alto, se convirtió en una pequeña pataleta fruto de la pelea que mantuve anteayer con una interface rebelde e &#8220;imposible&#8221; de hacer sin javascript &#8211; por lo menos si la quería hacer compatible con &#8220;otros&#8221; navegadores.</p>
<p><img title="mejor sin IE" src="http://www.cmacias.com/wp-content/uploads/2008/26/mejorsinie.jpg" alt="mejor sin IE" width="425" height="140" /></p>
<p>Y no voy a seguir, sinó pediría una orden de alejamiento para los programadores de explorer. Calla, calla, que te pierdes.</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/javascript" title="en Bitacoras encuentre blogs que hablan acerca de  'javascript'." rel="tag">javascript</a>, <a href="http://bitacoras.com/canales/pataletas" title="en Bitacoras encuentre blogs que hablan acerca de  'pataletas'." rel="tag">pataletas</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/layout-web-100-de-alto-css/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

