<?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>Staicu Ionuţ-Bogdan &#187; CSS</title>
	<atom:link href="http://www.iamntz.com/category/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iamntz.com</link>
	<description>the Frontend Developer</description>
	<lastBuildDate>Mon, 23 Jan 2012 04:55:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>How to increase touch area on link &amp; buttons</title>
		<link>http://www.iamntz.com/2832/frontend-developer/how-to-increase-touch-area-on-link-buttons/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/2832/frontend-developer/how-to-increase-touch-area-on-link-buttons/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 13:35:11 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=2832</guid>
		<description><![CDATA[If you are using a html version of a site you will notice that sometimes you wont get the touch areas like it should. You have to touch very carefully with your tip of you finger and maybe you will succeed. If you are designing a mobile app, you will want to add a small [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2832/frontend-developer/how-to-increase-touch-area-on-link-buttons/'>How to increase touch area on link &#038; buttons</a>. <br/>
	<a href='http://www.iamntz.com/2832/frontend-developer/how-to-increase-touch-area-on-link-buttons/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>If you are using a html version of a site you will notice that sometimes you wont get the touch areas like it should. You have to touch very carefully with your tip of you finger and <em>maybe</em> you will succeed.</p>
<p>If you are designing a mobile app, you will want to add a small button (let&#8217;s say a <em>back</em> button) with a small arrow on it. If you are doing it right, you will probably use some sprite image with few other parts in it. One way is to add more white space in that sprite and take in consideration few more pixels, then in <acronym title="Cascading Style Sheet - http://w3.org">CSS</acronym> you specify a bigger width/height and everyone is happy. Except de developer. You will face the problem of getting the coordinates of your sprites, small tweaks using firebug and so on. Also, you may have issues when you are trying to position that element in page.</p>
<h3>My solution</h3>
<p>Very easy, very neat, very CSS:</p>
<pre class="brush: css; title: ; notranslate">
.back { position:relative; width:10px;height:10px }
  .back:before {
    content:&quot;.&quot;;
    text-indent:-9999px;
    left:-10px;
    right:-10px;
    bottom:-10px;
    top:-10px;
    background:#c00; /* you can remove this */
    position:absolute;
    opacity:0;
  }
</pre>
<p>That&#8217;s all. Basically you extend the active area without changing the space that initial area will cover. </p>
<p>Pretty neat, no?</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2832/frontend-developer/how-to-increase-touch-area-on-link-buttons/'>How to increase touch area on link &#038; buttons</a>. <br/>
	<a href='http://www.iamntz.com/2832/frontend-developer/how-to-increase-touch-area-on-link-buttons/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/2832/frontend-developer/how-to-increase-touch-area-on-link-buttons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O mică notă despre selectorii CSS</title>
		<link>http://www.iamntz.com/2092/frontend-developer/o-mica-nota-despre-selectorii-css/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/2092/frontend-developer/o-mica-nota-despre-selectorii-css/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 10:53:58 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[n00b]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=2092</guid>
		<description><![CDATA[Am văzut următoarea chestie de foarte multe ori: Pentru un markup de genul: Unde este problema? Problema este că, în cazul în care specificăm mai multe stiluri, repetăm excesiv: Apoi, dacă o luăm logic, vedem că #topNav nu poate fi decât în interiorul #header, li nu poate fi decât într-un ul (în contextul dat), care, [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2092/frontend-developer/o-mica-nota-despre-selectorii-css/'>O mică notă despre selectorii CSS</a>. <br/>
	<a href='http://www.iamntz.com/2092/frontend-developer/o-mica-nota-despre-selectorii-css/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Am văzut următoarea chestie de foarte multe ori:</p>
<pre class="brush: css; title: ; notranslate">
#header #topNav ul li a {
/* some css properties */
}
</pre>
<p>Pentru un markup de genul:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;header id=&quot;header&quot;&gt;
	&lt;nav id=&quot;topNav&gt;
		&lt;ul&gt;
			&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Menu item&lt;/a&gt;&lt;/li&gt;
			[...]
			&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Menu item&lt;/a&gt;&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/nav&gt;
&lt;/header&gt;
</pre>
<h3>Unde este problema?</h3>
<p>Problema este că, în cazul în care specificăm mai multe stiluri, repetăm excesiv:<span id="more-2092"></span></p>
<pre class="brush: css; title: ; notranslate">
#header #topNav ul li a:hover {}
#header #topNav ul li.active a {}
</pre>
<p>Apoi, dacă o luăm logic, vedem că <code>#topNav</code> nu poate fi decât în interiorul <code>#header</code>, <code>li</code> nu poate fi decât într-un <code>ul</code> (în contextul dat), care, la rândul lui, este în <code>#topNav</code>. De asemenea, <code>a</code> nu poate fi decât în&#8230; <code>li</code>. Are sens?</p>
<h3>Cum e corect?</h3>
<pre class="brush: css; title: ; notranslate">
#topNav a {}
#topNav .active a {}
</pre>
<p>Arată mult mai frumos, nu?</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2092/frontend-developer/o-mica-nota-despre-selectorii-css/'>O mică notă despre selectorii CSS</a>. <br/>
	<a href='http://www.iamntz.com/2092/frontend-developer/o-mica-nota-despre-selectorii-css/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/2092/frontend-developer/o-mica-nota-despre-selectorii-css/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>input type=&#8221;search&#8221;</title>
		<link>http://www.iamntz.com/1549/frontend-developer/input-typesearch/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1549/frontend-developer/input-typesearch/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 09:54:11 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS 3]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1549</guid>
		<description><![CDATA[Dacă săptămâna trecută ți-am povestit despre placeholder, acum îți voi povesti puțin despre input type="search". La fel ca și placeholder, search este un atribut nou, semantic, introdus de html5. Problema numărul unu este că nu e cross browser. Adică IE nu știe de el. Din fericire, input-urile necunoscute sunt afișate ca input type="text", deci suntem [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1549/frontend-developer/input-typesearch/'>input type=&#8221;search&#8221;</a>. <br/>
	<a href='http://www.iamntz.com/1549/frontend-developer/input-typesearch/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Dacă săptămâna trecută ți-am povestit despre <a href="http://www.iamntz.com/1502/frontend-developer/input-placeholder/"><code>placeholder</code></a>, acum îți voi povesti puțin despre <code>input type="search"</code>. La fel ca și <code>placeholder</code>, <code>search</code> este un atribut nou, semantic, introdus de html5. Problema numărul unu este că nu e cross browser. Adică IE nu știe de el. Din fericire, input-urile necunoscute sunt afișate ca <code>input type="text"</code>, deci suntem &#8230; în siguranță, ca să zic așa.</p>
<p>Problema numărul doi este că browserele în care merge sunt ușor încăpățânate. Safari și Chrome (webkit) afișează într-un fel, Firefox 4 în alt fel. De exemplu, în webkit nu poți suprascrie următoarele stiluri: <span id="more-1549"></span></p>
<pre class="brush: css; title: ; notranslate">
input[type=search] {
        padding: 30px;            /* Overridden by padding: 1px; */
        font-family: Georgia;     /* Overridden by font: -webkit-small-control; */
        border: 5px solid black;  /* Overridden by border: 2px inset; */
        background: red;          /* Overridden by background-color: white; */
}
</pre>
<p><a href="http://css-tricks.com/webkit-html5-search-inputs/">Via</a>.</p>
<p>Problema o rezolvi relativ ușor, folosind următoarea regulă în css:</p>
<pre class="brush: css; title: ; notranslate">input[type=&quot;search&quot;] { -webkit-appearance: textfield; }</pre>
<p>Enjoy!</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1549/frontend-developer/input-typesearch/'>input type=&#8221;search&#8221;</a>. <br/>
	<a href='http://www.iamntz.com/1549/frontend-developer/input-typesearch/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1549/frontend-developer/input-typesearch/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IE9 FTW!</title>
		<link>http://www.iamntz.com/1214/frontend-developer/ie9-ftw/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1214/frontend-developer/ie9-ftw/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 10:24:24 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[IE9]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1214</guid>
		<description><![CDATA[Am instalat și eu IE9 într-o mașină virtuală, să văd și eu despre ce naiba vorbește toată lumea. Prima impresie? Rapid! În mașină virtuală mi se încarcă mai repede decât orice browser rulat nativ (nu virtualizat) iar taburile se deschid instant (spre deosebire de IE8, în care dura vreo 2-3 secunde până se deschidea un [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1214/frontend-developer/ie9-ftw/'>IE9 FTW!</a>. <br/>
	<a href='http://www.iamntz.com/1214/frontend-developer/ie9-ftw/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Am instalat și eu IE9 într-o mașină virtuală, să văd și eu despre ce naiba vorbește toată lumea. Prima impresie? Rapid! În mașină virtuală mi se încarcă mai repede decât orice browser rulat nativ (nu virtualizat) iar taburile se deschid instant (spre deosebire de IE8, în care dura vreo 2-3 secunde până se deschidea un nou tab). Cu toate astea, există anumite probleme:</p>
<ol>
<li>Cufon nu merge;</li>
<li>Document Mode: IE9 <a href=" http://sp2.ro/74168c">fute layout-ul</a> la <a href="http://www.mxhost.ro">un site</a> ce merge fără probleme pe orice alt browser (inclusiv ie7/8);</li>
<li>Același Document Mode IE9 introduce o chestie căreia îi simțeam lipsa. Not! <a href="http://screencast.com/t/ZDk5NDgx">Jumping bug</a>!</li>
</ol>
<p>Din păcate însă, astfel de probleme au fost și când a fost lansat IE8 beta (care culmea, era la fel de standard compliant ca <del datetime="2010-10-05T09:52:22+00:00">un schnitzel într-un motor de avion</del> IE9). Știu că se voi primi suficiente mailuri de la clienți supărați că nu li se vede site-ul bine într-un browser aflat într-un stadiu beta. Și mai știu că unii se vor supăra și că alții vor înțelege că nu pot oferi suport tehnic pentru un browser aflat în stadiu beta.</p>
<p>Alte chestii amestecate:</p>
<ol>
<li>Dacă îi dai view source la o pagină ai o surpriză plăcută: ai syntax highlight!</li>
<li><del datetime="2010-10-06T10:07:51+00:00">Butonul de compatibility mode l-au mutat, nefiind nevoie să intri în meniuri</del>. Chestia asta există și în IE8, dar&#8230; nu am văzut-o. Bonus, există și shortcut (alt+7,8,9) pentru diverse moduri. Din păcate însă, scurtăturile astea merg doar dacă ai focus pe developer toolbar. No biggie.<br />
Cu toate astea, ar fi fost ok dacă se putea alege modul de compatibilitate (la click dreapta, de exemplu) între IE7 și IE8. Totodată, o chestie care mă amuză: existența unei astfel de funcții înseamnă oare că <acronym title="Microsoft http://microsoft.com">MS</acronym> recunoaște că versiunea anterioară era de căcat? <img src='http://www.iamntz.com/wp-includes/images/smilies/biggrin.gif' alt=':D' class='wp-smiley' /> </li>
<li>Pentru a adăuga un site la favorite este nevoie de minim două click-uri și mișcarea mouse-ului.</li>
<li>Când vrei să validezi un site din Dev Toolbar te duce întâi pe site-ul MS după care pe site-ul W3C. Eu înțeleg că vor să facă statistici cu modul de utilizare, dar totuși&#8230;</li>
<li><code>text-shadow</code> lipsește. Cu desăvârșire. Ce dacă are vreo 3-4 ani de când a apărut și este suportat nativ de restul browserelor (fără niciun prefix)? IE9 e mai tare!</li>
</ol>
<p>Momentan atât. Timpul nu îmi permite un review mai amănunțit. Cei de la Nettuts se pare că <a href="http://net.tutsplus.com/articles/reviews/internet-explorer-9-beta-reviewed-and-benchmarked">au avut mai mult timp</a>. <img src='http://www.iamntz.com/wp-includes/images/smilies/biggrin.gif' alt=':D' class='wp-smiley' /> </p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1214/frontend-developer/ie9-ftw/'>IE9 FTW!</a>. <br/>
	<a href='http://www.iamntz.com/1214/frontend-developer/ie9-ftw/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1214/frontend-developer/ie9-ftw/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Sfaturi pentru wanna be</title>
		<link>http://www.iamntz.com/1152/frontend-developer/sfaturi-pentru-wanna-be/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1152/frontend-developer/sfaturi-pentru-wanna-be/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 18:16:17 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1152</guid>
		<description><![CDATA[Acest post este scris la draci, după modificat câteva zeci de mii de linii de cod (ultimele două luni), deci iertată-mi fie incoerența. Așadar. Dacă tot de dai mare web developer sau ceva de genul, bagă în plm la cap următoarele: Unele elemente au implicit display:block Exemplu:p, form, div etc Altele au implicit display:inline (cum [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1152/frontend-developer/sfaturi-pentru-wanna-be/'>Sfaturi pentru wanna be</a>. <br/>
	<a href='http://www.iamntz.com/1152/frontend-developer/sfaturi-pentru-wanna-be/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Acest post este scris la draci, după modificat câteva zeci de mii de linii de cod (ultimele două luni), deci iertată-mi fie incoerența.</p>
<p>Așadar. Dacă tot de dai mare web developer sau ceva de genul, bagă în plm la cap următoarele:</p>
<ul>
<li>Unele elemente au implicit <code>display:block</code> Exemplu:p, form, div etc</li>
<li>Altele au implicit <code>display:inline</code> (cum ar fi span, em, strong), <code>display:table-cell</code> (td, th) șamd.</li>
<li>În sfârșit, altele capătă <code>display:block</code> în momentul în care îi aplici un float.</li>
</ul>
<p>Altfel spus: nu mai folosi ca dobitocu&#8217; toate proprietățile doar să fie! Să dai display:block la un div sau la un element cu float este echivalent cu a pune o clanță la clanța de la ușă!</p>
<p>Ah, da, și folosește-te în plm de clase și id-uri! Nu pune ca tâmpitu&#8217; stiluri inline!</p>
<p>Și pentru clienți: utilizatorii site-ului vostru nu dau doi bani că site-ul <em>arată</em> diferit în browsere diferite. De fapt, sunt șanse MINIME ca un utilizator să nu observe asta! Și știi de ce? Pentru că utilizatorii folosesc un singur browser! Dacă nu <em>funcționează</em> la fel în toate browserele ar trebui să-ți faci probleme!</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1152/frontend-developer/sfaturi-pentru-wanna-be/'>Sfaturi pentru wanna be</a>. <br/>
	<a href='http://www.iamntz.com/1152/frontend-developer/sfaturi-pentru-wanna-be/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1152/frontend-developer/sfaturi-pentru-wanna-be/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tag-uri HTML despre care probabil nu știai mai nimic</title>
		<link>http://www.iamntz.com/901/frontend-developer/tag-uri-html-despre-care-probabil-nu-stiai-mai-nimic/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/901/frontend-developer/tag-uri-html-despre-care-probabil-nu-stiai-mai-nimic/#comments</comments>
		<pubDate>Sat, 14 Aug 2010 14:51:35 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=901</guid>
		<description><![CDATA[Cred că orice om are un punct în care începe să uite chestii învățate cu mult timp în urmă dar nefolosite. Bănuiesc că așa funcționează creierul, nu știu exact. Dar cum programatorii sunt oameni (am spulberat și mitul ăsta!), se întâmplă ca unele coduri ori să fie uitate ori să fie trecute cu vederea. Și [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/901/frontend-developer/tag-uri-html-despre-care-probabil-nu-stiai-mai-nimic/'>Tag-uri HTML despre care probabil nu știai mai nimic</a>. <br/>
	<a href='http://www.iamntz.com/901/frontend-developer/tag-uri-html-despre-care-probabil-nu-stiai-mai-nimic/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Cred că orice om are un punct în care începe să uite chestii învățate cu mult timp în urmă dar nefolosite. Bănuiesc că așa funcționează creierul, nu știu exact. Dar cum programatorii sunt oameni (am spulberat și mitul ăsta!), se întâmplă ca unele coduri ori să fie uitate ori să fie trecute cu vederea. Și m-am gândit să fac o listă cu coduri folosite mai rar decât ar trebui.</p>
<p>De ce ai folosi aceste tag-uri „exotice”? Cel mai bun motiv este păstrarea unui cod cu o structură semantică. Un alt motiv ar fi evitarea adăugării de clase peste clase diverselor elemente din pagină.</p>
<h3>Tabele</h3>
<h5>Tag-ul <code>table</code></h5>
<p>Chiar dacă tot hype-ul în jurul codului fără tabele de acum cinci ani s-a stins, încă mai sunt clienți care cer &#8211; și evident, programatori care fac &#8211; cod fără tabele. Nimic greșit, nu? Doar atunci când ai date&#8230; tabulare. Probabil tag-ul <code>table</code> sună ca o fosilă și ar trebui lăsat să moară. Nimic mai fals! Este viu, este util și te scutește de bătăi de cap. A început să fie folosit pentru design pe la mijlocul anilor &#8217;90 din motive foarte întemeiate: războiul browserelor era în floare, fiecare browser avea un mod unic de a interpreta <acronym title="Cascading Style Sheet - http://w3.org">CSS</acronym> iar tabelele erau singura soluție pentru programatorii ce vroiau un site cross-browser.</p>
<p>Cu toate astea, întrebarea rămâne: Cum recunoști datele tabulare? Când pot folosi tabele fără frică? Dacă poți aranja informația respectivă într-un fișier excel foarte ușor, atunci ai nevoie de un tabel!<span id="more-901"></span></p>
<h5>Tag-ul <code>th</code> (table head)</h5>
<p>Tag-ul <code>th</code> îl folosești când ai de afișat un cap de tabel. Am văzut tot felul de artificii, de la clasă suplimentară pentru un <code>td</code> până la folosirea tag-ului <code>strong</code> într-un <code>td</code>. În plus, ce scapă destul de mulți din vedere este că un cap de tabel poate fi și în altă parte decât sus (ex: stânga).<br />
<a href="http://reference.sitepoint.com/html/th">Detalii</a>.</p>
<h5>Tag-ul <code>colgroup</code></h5>
<p>Trebuie să recunosc, până acum vreo două luni nu am folosit prea mult aceste tag-uri. Ca să specifici lățimea unei celule de tabel poți adăuga câte o clasă pentru fiecare <code>td</code> sau <code>th</code> și să ajustezi proprietățile clasei respective. Folosind <code>colgroup</code> poți defini proprietățile celulelor dintr-o coloană întreagă. Rezultatul? Nicio <del datetime="2010-08-14T09:38:58+00:00">carie</del> clasă aiurea!<br />
<a href="http://reference.sitepoint.com/html/colgroup">Detalii</a>.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;table&gt;
	&lt;colgroup class=&quot;col1&quot;&gt;&lt;/colgroup&gt;
	&lt;colgroup class=&quot;col2&quot;&gt;&lt;/colgroup&gt;
	&lt;colgroup class=&quot;col3&quot;&gt;&lt;/colgroup&gt;
	&lt;tr&gt;
		&lt;td&gt;continut col 1&lt;/td&gt;
		&lt;td&gt;continut col 2&lt;/td&gt;
		&lt;td&gt;continut col 3&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
</pre>
<h5>Tag-ul <code>col</code></h5>
<p>Se foloseşte în combinaţie cu <code>colgroup</code> şi, spre deosebire de mai sus-numitul <code>colgroup</code>, <code>col</code> te ajută să setezi doar lăţimea coloanelor. Ar mai fi de menţionat că tag-urile <code>col</code> sunt de tip self-closed (<code>&lt;col /&gt;</code>) dacă folosești un doctype <acronym title="eXtensible HyperText Markup Language - http://w3.org">XHTML</acronym>.<br />
<a href="http://reference.sitepoint.com/html/col">Detalii</a>.</p>
<h5>Tag-urile <code>tbody</code>, <code>thead</code> și <code>tfoot</code></h5>
<p>Aici sunt două chestii funny:</p>
<ul>
<li>Chiar dacă nu specifici, <code>tbody</code> este adăugat automat de (unele) browsere.</li>
<li>Ordinea <em>corectă</em> într-un tabel este următoarea: <code>thead</code>, <code>tfoot</code> și <code>tbody</code>. Chiar dacă footer-ul apare la început în cod, în browsere este randat corect.</li>
</ul>
<p>Detalii <a href="http://reference.sitepoint.com/html/tbody">tbody</a>, <a href="http://reference.sitepoint.com/html/thead">thead</a> şi <a href="http://reference.sitepoint.com/html/tfoot">tfoot</a>.</p>
<h3>Formulare</h3>
<p>Da, și la formulare există tag-uri nefolosite sau folosite puțin. Hai să vedem care sunt acestea.</p>
<h5><code>fieldset</code></h5>
<p>În practică am întâlnit diverse situații în care existau părți ale unui formular împărțite în&#8230; <code>div</code>-uri. Aparent, nu e nimic greșit în asta, dar definiția tag-ului <code>div</code> sună cam așa:</p>
<blockquote><p>îl folosești atunci când n-ai un tag mai bun</p></blockquote>
<p>Prin urmare, folosești&#8230; <code>fieldset</code>.<br />
<a href="http://reference.sitepoint.com/html/fieldset">Detalii</a>. </p>
<p>Poți grupa elementele unui formular foarte ușor și poți folosi următorul tag:</p>
<h5><code>legend</code></h5>
<p>Tag-ul ăsta este genul de tag la care te întrebi: „de ce naiba există așa ceva?”. Răspunsul? SE-MAN-TI-CĂ! Da, poți folosi un <code>h3</code> în locul lui, dar&#8230; de ce ai face-o? Tag-ul <code>legend</code> îți adaugă un titlu <code>fieldset</code>-ului curent (se poate folosi doar într-un <code>fieldset</code>).<br />
<a href="http://reference.sitepoint.com/html/legend">Detalii</a>.</p>
<h5><code>label</code></h5>
<p><code>label</code> este un tag aparte. Chiar dacă este folosit de mulți, nu este folosit <em>corect</em> de mulți. În teorie, tag-ul <code>label</code> ajută la adăugarea unui text lângă un element de formular. Fie că este input (de orice fel), fie că este <code>textarea</code>, fie că este <code>select</code>. Ceea ce mulți nu știu este că pot face elementul din interiorul unui <code>label</code> să „răspundă” la click pe textul din <code>label</code>. Astfel, în situația unui chestionar &#8211; de exemplu &#8211; este suficient să faci un click pe text pentru a selecta bifa (nu doar pe bifă; Apple, ar trebui să iei în considerare chestia asta în OSX 10.7!). Modalități de folosire:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;label&gt;&lt;input type=&quot;checkbox&quot; /&gt; Bifează asta!&lt;/label&gt;
</pre>
<pre class="brush: xml; title: ; notranslate">
&lt;label for=&quot;check&quot;&gt;Bifează asta!&lt;/label&gt;
&lt;input type=&quot;checkbox&quot; id=&quot;check&quot; name=&quot;check&quot; /&gt;
</pre>
<p>Da, este nevoie să ai ambele atribute: și <code>id</code> și <code>name</code> pentru a funcționa corect.</p>
<p><em>Atenție! NU recomand plasarea tag-ului <code>select</code> în interiorul unui <code>label</code>, deoarece va deveni inutilizabil!</em>.<br />
<a href="http://reference.sitepoint.com/html/label">Detalii</a>.</p>
<h5><code>button</code></h5>
<p>S-a întâmplat vreodată să ai nevoie ca într-un tag <code>input type="submit"</code> să ai nevoie de o imagine? O săgeată, o bifă, un X, orice. Sau o literă boldată, un text italic sau alte minuni d&#8217;astea? Sau poate un sliding door? Răspunsul scurt: nu ai cum fără a adăuga <acronym title="Cascading Style Sheet - http://w3.org">CSS</acronym> suplimentar. Soluția? <code>button</code>!</p>
<pre class="brush: xml; title: ; notranslate">
&lt;button type=&quot;submit&quot; name=&quot;submit_button&quot; value=&quot;submit_form&quot;&gt;&lt;img src=&quot;ok.gif&quot; alt=&quot;ok&quot;/&gt; &lt;strong&gt;S&lt;/strong&gt;a&lt;em&gt;v&lt;/em&gt;e&lt;/button&gt;
</pre>
<p>Combinația de tag-uri este perfect validă. Singura problemă este la modul în care <acronym title="Microsoft Internet Explorer 6">IE6</acronym> se comportă: dacă toate browserele trimit serverului valoarea atributului <code>value</code>, <acronym title="Microsoft Internet Explorer 6">IE6</acronym> se prostește la maxim și trimite ce este în interiorul tag-ului. Dar cum am observat foarte rar situații în care programatorul backend folosește validarea ȘI la butonul de submit, consider că e destul de safe de folosit (nu 100%, dar&#8230; e ok). O altă problemă &#8211; tot cu <acronym title="Microsoft Internet Explorer 6">IE6</acronym> &#8211; este că în cazul în care ai mai mult de un buton pe pagină, nu e capabil să îți spună pe care ai apăsat (ceea ce nu se întâmplă dacă folosești <code>input type="submit"</code>.<br />
<a href="http://reference.sitepoint.com/html/button">Detalii</a>.</p>
<h5><code>optgroup</code></h5>
<p>Folosind acest tag, poți grupa elementele unui <code>select</code>, astfel încât au un soi de titlu boldat.<br />
<a href="http://reference.sitepoint.com/html/optgroup/label">Detalii</a>.</p>
<h3>Alte tag-uri</h3>
<p>Dacă tag-urile de mai sus se pot folosi fie în interiorul unui tabel fie în interiorul unui formular, ce urmează acum sunt tag-uri ce pot fi folosite oriunde, fără a ține cont (prea mult) de parent. Sunt un fel de copii rebeli, dacă vrei. <img src='http://www.iamntz.com/wp-includes/images/smilies/biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<h5><code>dl</code>/<code>dt</code>/<code>dd</code></h5>
<p>Poți folosi un <code>dl</code> (definition list) atunci când ai o listă cu titlu pentru fiecare element. Cel mai bun exemplu care îmi vine în minte acum este o pagină de genul Q&#038;A.<br />
<a href="http://reference.sitepoint.com/html/dl">Detalii</a>.</p>
<h3>Încheiere</h3>
<p>Cam astea sunt tag-urile cărora le-am simțit lipsa în unele proiecte la care am lucrat peste munca altora. Nu sunt tag-uri imperios necesare, întrucât poți face artificii foarte ușor pentru a le înlocui, dar, dacă există, de ce să nu le folosești, nu?</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/901/frontend-developer/tag-uri-html-despre-care-probabil-nu-stiai-mai-nimic/'>Tag-uri HTML despre care probabil nu știai mai nimic</a>. <br/>
	<a href='http://www.iamntz.com/901/frontend-developer/tag-uri-html-despre-care-probabil-nu-stiai-mai-nimic/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/901/frontend-developer/tag-uri-html-despre-care-probabil-nu-stiai-mai-nimic/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Compresia fișierelor CSS on the fly</title>
		<link>http://www.iamntz.com/844/frontend-developer/compresia-fisierelor-css-on-the-fly/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/844/frontend-developer/compresia-fisierelor-css-on-the-fly/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 12:07:00 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Optimization]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=844</guid>
		<description><![CDATA[Cred că toată lumea vrea un site mai rapid. În urmă cu 10-15 ani, când toți se chinuiau să scoată un timp de încarcare de maxim zece secunde (parcă așa zicea Jacob Nielsen), viteza medie de conectare era în jur de 56kbs. Cam cum merge în realitate internetul mobil de la Vodafone sau RDS (că [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/844/frontend-developer/compresia-fisierelor-css-on-the-fly/'>Compresia fișierelor CSS on the fly</a>. <br/>
	<a href='http://www.iamntz.com/844/frontend-developer/compresia-fisierelor-css-on-the-fly/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Cred că toată lumea vrea un site mai rapid. În urmă cu 10-15 ani, când toți se chinuiau să scoată un timp de încarcare de maxim zece secunde (parcă așa zicea Jacob Nielsen), viteza medie de conectare era în jur de 56kbs. Cam cum merge în realitate internetul mobil de la Vodafone sau RDS (că în teorie merge cu 7.2mbs e altă poveste). Acum însă, vitezele de conectare sunt amețitoare. Zeci de Mbs, totul zbârnâie, totul&#8230; Stai! A crescut viteza, au crescut și așteptările utilizatorilor. Astfel, cele zece secunde s-au transformat în 1-3 secunde. Au apărut biblioteci JS, au apărut framework-uri CSS, astfel încât odată cu viteza a crescut și dimensiunea paginilor. </p>
<p>Și dacă nu avem cum să mai creștem viteza, optimizăm dimensiunile!</p>
<p>Astfel, au apărut <a href="http://developer.yahoo.com/performance/rules.html">regulile de performanță</a> de la yahoo. Și printre regulile astea, cele mai importante consider că sunt cele de micșorare:</p>
<ul>
<li>gzip;</li>
<li>minification (pentru că minificare sună aiurea <img src='http://www.iamntz.com/wp-includes/images/smilies/biggrin.gif' alt=':D' class='wp-smiley' /> ).</li>
</ul>
<p><span id="more-844"></span></p>
<p>Cu gzip o rezolvi rapid. <a href="http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/">Câteva rânduri</a> în <code>.htaccess</code> și ai terminat. Cu minificarea (?!) însă&#8230; E mai greu. Pentru că, nu-i așa, întotdeauna se găsește ceva de modificat la site când nu ești acasă. Iar editarea unui cârnat pe o singură linie de câteva zeci de mii de caractere poate fi o experiență nu tocmai plăcută. </p>
<p>Prin urmare poți folosi editarea on the fly. Nu știu însă cum se comportă pe site-uri cu un trafic considerabil&#8230; <img src='http://www.iamntz.com/wp-includes/images/smilies/smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Scriptul face următoarea chestie: Combină mai multe fișiere, șterge toate comentariile, spațiile aiurea, tab-urile aiurea și toate rândurile noi:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
header('Content-type: text/css');
ob_start(&quot;compress&quot;);
function compress($buffer) {
  $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', ' ', $buffer);
  $buffer = str_replace(array(&quot;\r\n&quot;, &quot;\r&quot;, &quot;\n&quot;, '  ', '    ', '    '), ' ', $buffer);
  $buffer = str_replace(&quot;\t&quot;, &quot; &quot;, $buffer);
  return $buffer;
}
include('screen.css');
include('style.css');
include('comments.css');
ob_end_flush();
</pre>
<p>Și rezultatul îl poți vedea pe blogul meu:<br />
<div class="demoDownload"><a href="http://www.iamntz.com/wp-content/themes/myNtz-2/style.php" class="demoLink">Demo</a></div></p>
<h3>Cum se folosește?</h3>
<ol>
<li>Faci un fișier, să zicem <code>screen.php</code></li>
<li>Înlocuiești
<pre class="brush: xml; title: ; notranslate">
&lt;link rel='stylesheet' href='screen.css' type='text/css' /&gt;
&lt;link rel='stylesheet' href='style.css' type='text/css' /&gt;
&lt;link rel='stylesheet' href='comments.css' type='text/css' /&gt;
</pre>
<p>Cu </p>
<pre class="brush: xml; title: ; notranslate">
&lt;link rel='stylesheet' href='screen.php' type='text/css' /&gt;
</pre>
</li>
<li>Gata <img src='http://www.iamntz.com/wp-includes/images/smilies/biggrin.gif' alt=':D' class='wp-smiley' />  </li>
</ol>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/844/frontend-developer/compresia-fisierelor-css-on-the-fly/'>Compresia fișierelor CSS on the fly</a>. <br/>
	<a href='http://www.iamntz.com/844/frontend-developer/compresia-fisierelor-css-on-the-fly/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/844/frontend-developer/compresia-fisierelor-css-on-the-fly/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Două coloane la preț de una</title>
		<link>http://www.iamntz.com/740/frontend-developer/doua-coloane-la-pret-de-una/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/740/frontend-developer/doua-coloane-la-pret-de-una/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 20:30:58 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=740</guid>
		<description><![CDATA[Cred că una din provocările vieții de front end developer este să faci o listă cu&#8230; Două coloane. În teorie, este simplu: La o listă de forma: Bagi -ul ăsta: De ce în teorie? Pentru că lista nu va arăta &#8211; cum e normal, de altfel &#8211; ca o listă pe două coloane ci ca [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/740/frontend-developer/doua-coloane-la-pret-de-una/'>Două coloane la preț de una</a>. <br/>
	<a href='http://www.iamntz.com/740/frontend-developer/doua-coloane-la-pret-de-una/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Cred că una din provocările vieții de front end developer este să faci o listă cu&#8230; Două coloane. În teorie, este simplu:</p>
<p>La o listă de forma:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;ol&gt;
	&lt;li&gt;1&lt;/li&gt;
	&lt;li&gt;2&lt;/li&gt;
	&lt;li&gt;3&lt;/li&gt;
	&lt;li&gt;4&lt;/li&gt;
	&lt;li&gt;5&lt;/li&gt;
&lt;/ol&gt;
</pre>
<p>Bagi <acronym title="Cascading Style Sheet - http://w3.org">CSS</acronym>-ul ăsta:</p>
<pre class="brush: css; title: ; notranslate">
li {
	width:50%;
	float:left
}
</pre>
<p>De ce în teorie? Pentru că lista nu va arăta &#8211; cum e normal, de altfel &#8211; ca o listă pe două coloane ci ca una în zig-zag:</p>
<pre class="brush: xml; title: ; notranslate">
1 - 2
3 - 4
5
</pre>
<p>Ceea ce, între noi fie vorba, e cam nasol. Mai ales când vrei să afișezi o listă ordonată.</p>
<h3>Soluția</h3>
<p>jQuery, desigur!</p>
<pre class="brush: jscript; title: ; notranslate">
$('li').slice(0, Math.ceil($('li').length/2)).addClass('leftside'); // selectăm prima jumătate de listă și îi adăugăm o clasă
</pre>
<p>Și puțin CSS:</p>
<pre class="brush: css; title: ; notranslate">
li {
	width:50%;
	margin-left:50%;
}
li.leftside {
	float:left;
	clear:left;
	margin-left:0;
}
</pre>
<p>Și gata. Avem o listă cu două coloane.</p>
<div class="demoDownload"><a href="/experiments/lista2coloane.php" class="demoLink">Demo</a></div>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/740/frontend-developer/doua-coloane-la-pret-de-una/'>Două coloane la preț de una</a>. <br/>
	<a href='http://www.iamntz.com/740/frontend-developer/doua-coloane-la-pret-de-una/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/740/frontend-developer/doua-coloane-la-pret-de-una/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Puțin despre eCSStender</title>
		<link>http://www.iamntz.com/713/frontend-developer/putin-despre-ecsstender/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/713/frontend-developer/putin-despre-ecsstender/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 16:47:56 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=713</guid>
		<description><![CDATA[Ultimul articol apărut pe A List Apart tratează problema extensiilor CSS3 dependente de browser. În articol se specifică în mod express border-radius, dar în aceeași categorie intră și alte chestii cool apărute în ultima vreme prin specificațiile CSS: opacity, box-shadow, text-shadow, rgba() și altele (selectori CSS3). Aaron, autorul articolului, argumentează &#8211; pe bună dreptate &#8211; [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/713/frontend-developer/putin-despre-ecsstender/'>Puțin despre eCSStender</a>. <br/>
	<a href='http://www.iamntz.com/713/frontend-developer/putin-despre-ecsstender/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alistapart.com/articles/stop-forking-with-css3/">Ultimul articol</a> apărut pe A List Apart tratează problema extensiilor CSS3 dependente de browser. În articol se specifică în mod express <code>border-radius</code>, dar în aceeași categorie intră și alte chestii cool apărute în ultima vreme prin specificațiile CSS: <code>opacity</code>, <code>box-shadow</code>, <code>text-shadow</code>, <code>rgba()</code> și altele (<a href="http://www.iamntz.com/610/frontend-developer/selectori-css-si-pseudo-clase/">selectori CSS3</a>).</p>
<p><em>Aaron</em>, autorul articolului, argumentează &#8211; pe bună dreptate &#8211; absurditatea folosirii unui cod de forma:</p>
<pre class="brush: css; title: ; notranslate">
.this-is-absurd {
  border-radius: 10px 5px;
  -moz-border-radius: 10px 5px;
  -webkit-border-top-left-radius: 10px;
  -webkit-border-top-right-radius: 5px;
  -webkit-border-bottom-right-radius: 10px;
  -webkit-border-bottom-left-radius: 5px;
  -o-border-radius: 10px 5px;
  -khtml-border-top-left-radius: 10px;
  -khtml-border-top-right-radius: 5px;
  -khtml-border-bottom-right-radius: 10px;
  -khtml-border-bottom-left-radius: 5px;
}
</pre>
<p>Nu știu dacă sunt lucruri mai absurde în CSS decât repetarea codului, astfel încât fiecare browser să înțeleagă ce i se zice.</p>
<h3>Soluția salvatoare!</h3>
<p>Soluția stă în&#8230; produsul autorului, desigur! Pe numele de scenă <a href="http://ecsstender.org">eCSStender</a>. Toate bune și frumoase până la un punct: punctul în care trebuie să-l folosești. <img src='http://www.iamntz.com/wp-includes/images/smilies/biggrin.gif' alt=':D' class='wp-smiley' />  <span id="more-713"></span></p>
<p>Pentru că:</p>
<ul>
<li>Are vreo 10kb;</li>
<li>Nu prea face nimic de capul lui, de fapt. Are nevoie de plugin-uri (2-3-4kb fiecare) și de un <em>selector engine</em>. Cum ar fi.. Sizzle (da, cel din jQuery);</li>
<li>Cum sunt șanse maxime să încarci tot jQuery, nu doar Sizzle, mai adaugi vreo 20kb;</li>
</ul>
<p><small>Cei 10+20kb precizați sunt valabili doar dacă ai gzip activat pe server <img src='http://www.iamntz.com/wp-includes/images/smilies/wink.gif' alt=';)' class='wp-smiley' /> </small></p>
<h3>De ce nu ai folosi eCSStender (cu tot cu plugin-uri)?</h3>
<ul>
<li><code>eCSStender.CSS3-selectors.js</code> este plugin-ul care ar putea promite cel mai mult. Dacă nu ar ocupa 7kb pentru&#8230; Nimic. Nu știu alții cum sunt, dar eu prefer fie să adaug o clasă manual pentru cine nu suportă (<acronym title="Microsoft Internet Explorer 6">IE6</acronym>) selectori avansați, fie să le adaug din jQuery. </li>
<li><code>eCSStender.CSS3-color.js</code> mi se pare cel mai util, mai ales că este 50% funcțional (poți folosi <code>rgba()</code> doar pentru backgrounds. Oricum, între a folosi plugin-ul și a folosi soluția <a href="http://kilianvalkhof.com/2010/css-xhtml/how-to-use-rgba-in-ie/">asta</a>, parcă aș alege varianta a doua&#8230;</li>
<li><code>eCSStender.CSS3-backgrounds-and-borders.js</code> ar fi fost super. Dacă ar merge. Dar înlocuiește bucata de cod de care am povestit mai sus cu:
<pre class="brush: jscript; title: ; notranslate">
(function(){
        if ( typeof eCSStender == undefined ){ return; }
        var e = eCSStender;
        e.disableCache();
        e.register(
          { 'fragment': 'radius',
            'test':     function()
            {
              return ( ! e.isSupported( 'property', 'border-top-left-radius: 3px' ) &amp;&amp;
                       ( e.isSupported( 'property', '-moz-border-radius-topleft: 3px' ) ||
                         e.isSupported( 'property', '-webkit-border-bottom-left-radius: 3px' ) ||
                         e.isSupported( 'property', '-khtml-border-bottom-left-radius: 3px' ) ) );
            },
            'fingerprint': 'net.easy-designs.border-radius'
          },
          false,
          function( selector, properties, medium ){
            var style_block = selector + ' { ';

            // mozilla currently messes up the individual assignment, so we need to manage that
            var transpose = false;
            if ( e.isSupported( 'property', '-moz-border-radius-topleft: 3px' ) )
            {
              transpose = true;
            }

            // shorthand
            if ( typeof( properties['border-radius'] ) != 'undefined' )
            {
              // handle radii or just plain old corners
              var
              radii = properties['border-radius'].split('/'),
              corners = [];
              if ( radii.length &gt; 1 )
              {
                var horiz = e.trim( radii[0] ).split(' ');
                var vert  = e.trim( radii[1] ).split(' ');
                // handle mirroring
                if ( horiz.length &lt; 4 )
                {
                  if ( typeof( horiz[1] ) == 'undefined' ){ horiz[1] = horiz[0]; }
                  if ( typeof( horiz[2] ) == 'undefined' ){ horiz[2] = horiz[0]; }
                  if ( typeof( horiz[3] ) == 'undefined' ){ horiz[3] = horiz[1]; }
                }
                if ( vert.length &lt; 4 )
                {
                  if ( typeof( vert[1] ) == 'undefined' ){ vert[1] = vert[0]; }
                  if ( typeof( vert[2] ) == 'undefined' ){ vert[2] = vert[0]; }
                  if ( typeof( vert[3] ) == 'undefined' ){ vert[3] = vert[1]; }
                }
                // some browsers can't handle compund radii yet
                var compound = true;
                if ( ! e.isSupported( 'property', '-webkit-border-bottom-left-radius: 3px 3px' ) &amp;&amp;
                     ! e.isSupported( 'property', '-moz-border-radius-bottomleft: 3px 3px' ) &amp;&amp;
                     ! e.isSupported( 'property', '-khtml-border-bottom-left-radius: 3px 3px' ) )
                {
                  compound = false;
                }
                for ( var i=0; i&lt;4; i++ )
                {
                  corners[i] = compound ? horiz[i] + ' ' + vert[i] : horiz[i];
                }
              }
              else
              {
                corners = properties['border-radius'].split(' ');
              }
              if ( corners.length &gt; 1 )
              {
                // webkit/konquerer is a little funky with multiple-assignment
                if ( e.isSupported( 'property', '-webkit-border-bottom-left-radius: 3px' ) ||
                     e.isSupported( 'property', '-khtml-border-bottom-left-radius: 3px' ) )
                {
                  style_block += '-webkit-border-top-left-radius: ' + corners[0] + '; ' +
                                 '-webkit-border-top-right-radius: ' + corners[1] + '; ' +
                                 '-webkit-border-bottom-right-radius: ' + corners[2] + '; ' +
                                 '-webkit-border-bottom-left-radius: ' + corners[3] + '; ' +
                                 '-khtml-border-top-left-radius: ' + corners[0] + '; ' +
                                 '-khtml-border-top-right-radius: ' + corners[1] + '; ' +
                                 '-khtml-border-bottom-right-radius: ' + corners[2] + '; ' +
                                 '-khtml-border-bottom-left-radius: ' + corners[3] + '; ';
                }
                else
                {
                  style_block += '-moz-border-radius-topleft: ' + corners[0] + '; ' +
                                 '-moz-border-radius-topright: ' + corners[1] + '; ' +
                                 '-moz-border-radius-bottomright: ' + corners[2] + '; ' +
                                 '-moz-border-radius-bottomleft: ' + corners[3] + '; ';
                }
              }
              else
              {
                style_block += '-moz-border-radius: ' + properties['border-radius'] + '; ' +
                               '-webkit-border-radius: ' + properties['border-radius'] + '; ' +
                               '-khtml-border-radius: ' + properties['border-radius'] + '; ';
              }
              properties['border-radius'] = null;
            }

            for ( var prop in properties )
            {
              if ( e.isInheritedProperty( properties, prop ) ) { continue; };
              if ( transpose )
              {
                style_block += prop.replace( /border-(top|bottom)-(left|right)-radius/, '-moz-border-radius-$1$2' ) +
                               ': ' + properties[prop] + '; ';
              }
              else
              {
                style_block += prop + ': ' + properties[prop] + '; ';
              }
            }
            style_block += '} ';
            e.embedCSS( style_block, medium );
          }
        );
      })();
</pre>
<p>Acum, să-mi fie cu iertare, dar eu prefer să adaug o clasă suplimentară pentru fiecare <code>border-radius</code> (dacă îl folosesc mai mult de o dată)&#8230;
</li>
</ul>
<h3>De ce ai folosi eCSStender?</h3>
<p>Singurul motiv bun pe care îl văd în momentul de față este că vei avea un cod mai curat și valid. Dar având în vedere că site-urile se optimizează și pentru accesul prin conexiuni mai slabe (cum ar fi GPRS), mă îndoiesc că validarea este un criteriu <em>atât</em> de important.</p>
<h3>Alternativa</h3>
<p>O alternativă la eCSStender, dar axată doar pe <acronym title="Microsoft Internet Explorer">IE</acronym>, de „doar” 40kb, ar fi <a href="http://code.google.com/p/ie7-js/">ie7</a></p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/713/frontend-developer/putin-despre-ecsstender/'>Puțin despre eCSStender</a>. <br/>
	<a href='http://www.iamntz.com/713/frontend-developer/putin-despre-ecsstender/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/713/frontend-developer/putin-despre-ecsstender/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Formulare custom: checkbox &amp; radio v.2</title>
		<link>http://www.iamntz.com/625/frontend-developer/formulare-custom-checkbox-radio-v-2/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/625/frontend-developer/formulare-custom-checkbox-radio-v-2/#comments</comments>
		<pubDate>Sat, 29 May 2010 09:52:56 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=625</guid>
		<description><![CDATA[După ce m-a muștruluit bine Ionuț, mi-am făcut puțin timp să revizuiesc scriptul: Ce s-a schimbat? Păi.. Multe: Elementul stilizat nu mai e un span ci un a(nchor). Astfel putem avea și „pătrățelul” de focus (se poate naviga doar cu tastatura); Un singur bind pentru ambele elemente; Cod mai puțin și un pic mai optimizat [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/625/frontend-developer/formulare-custom-checkbox-radio-v-2/'>Formulare custom: checkbox &#038; radio v.2</a>. <br/>
	<a href='http://www.iamntz.com/625/frontend-developer/formulare-custom-checkbox-radio-v-2/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>După ce m-a muștruluit bine <a href="http://www.iamntz.com/616/frontend-developer/formulare-custom-checkbox-radio/comment-page-1/#comment-480">Ionuț</a>, mi-am făcut puțin timp să revizuiesc scriptul:</p>
<pre class="brush: jscript; title: ; notranslate">
$('form input:radio').wrap('&lt;a class=&quot;fakeRadio&quot;/&gt;');
$('form input:checkbox').wrap('&lt;a class=&quot;fakeCheckbox&quot;/&gt;');
$('form input:checked').parent().addClass('checked');

$('form').delegate('input:radio, input:checkbox', 'change', function(){
	var t=$(this);
	if(this.type==='radio'){t.closest('form').find('input[name=&quot;'+this.name+'&quot;]').parent().removeClass('checked');}
	if(this.checked===true) { t.parent().addClass('checked') }else { t.parent().removeClass('checked');}
}).delegate('a.fakeRadio, a.fakeCheckbox', 'focus blur', function(e){
	if(e.type==='focusin'){$(this).addClass('focus')}else {$(this).removeClass('focus')}
});
</pre>
<h3>Ce s-a schimbat?</h3>
<p>Păi.. Multe:</p>
<ol>
<li>Elementul stilizat nu mai e un <code>span</code> ci un <code>a</code>(nchor). Astfel putem avea și „pătrățelul” de focus (se poate naviga doar cu tastatura);</li>
<li>Un singur bind pentru ambele elemente;</li>
<li>Cod mai puțin și un pic mai optimizat (am folosit jQuery unde a fost cu adevărat necesar, folosindu-mă de metode javascript built in);</li>
<li>CSS-ul și HTML-ul (nu mai este necesară folosirea tag-ului <code>label</code>).</li>
</ol>
<h3><acronym title="Cascading Style Sheet - http://w3.org">CSS</acronym>-ul</h3>
<pre class="brush: css; title: ; notranslate">
.fakeRadio,
.fakeCheckbox {
	display:inline-block;
	background:url(checkbox.png) no-repeat left top;
	width:16px;
	height:16px;
	cursor:default;
	overflow:hidden;
}
*:first-child+html .fakeRadio,
*:first-child+html .fakeCheckbox {font-size:1em;overflow:visible}

.fakeCheckbox.checked {background-position:right top;}

.fakeRadio {background-position:left bottom;}
.fakeRadio.checked {background-position:right bottom;}

.fakeRadio.focus,
.fakeCheckbox.focus {outline:1px dotted #444;}

.fakeRadio input,
.fakeCheckbox input { opacity: 0; filter:alpha(opacity=0); margin:0;padding:0; }
</pre>
<ol>
<li>Am renunțat la <code>float:left</code> în favoarea lui <code>display:inline-block</code>. Nu merge pe niște versiuni antice de Firefox, dar consider că e un sacrificiu rezonabil. <a href="http://reference.sitepoint.com/css/display#compatibilitysection">[1]</a> </li>
<li>Am combinat cele două imagini într-una singură. Un request mai puțin către server <img src='http://www.iamntz.com/wp-includes/images/smilies/tongue.gif' alt=':P' class='wp-smiley' />  </li>
<li>Cum nu se putea să meargă totul extrem de bine, <acronym title="Microsoft Internet Explorer 7">IE7</acronym> face figuri. Prin urmare, <code>font-size</code> și <code>overflow:visible</code> sunt cam musai;</li>
<li>Opacity e mai „sexy” decât scoaterea din decor.”
</ol>
<h3><acronym title="Hyper Text Markup Language - http://w3.org">HTML</acronym>-ul</h3>
<p>În principiu, poți avea un <code>radio</code> sau un <code>checkbox</code> oriunde (într-un formular, desigur):</p>
<pre class="brush: xml; title: ; notranslate">
&lt;form action=&quot;index_submit&quot; method=&quot;get&quot;&gt;
	&lt;h1&gt;Radio buttons&lt;/h1&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;label&gt; &lt;input type=&quot;radio&quot; name=&quot;myradio&quot; /&gt; Test cu &amp;lt;label&amp;gt;&lt;/label&gt;&lt;/li&gt;
		&lt;li&gt; &lt;input type=&quot;radio&quot; checked=&quot;checked&quot; name=&quot;myradio&quot; /&gt; Test fără &amp;lt;label&amp;gt; &lt;/li&gt;
		&lt;li&gt;&lt;label&gt; &lt;input type=&quot;radio&quot; name=&quot;myradio&quot; /&gt; Test cu &amp;lt;label&amp;gt;&lt;/label&gt;&lt;/li&gt;
		&lt;li&gt; &lt;input type=&quot;radio&quot; name=&quot;myradio&quot; /&gt; Test fără &amp;lt;label&amp;gt; &lt;/li&gt;
	&lt;/ul&gt;

	&lt;h1&gt;Chekbox&lt;/h1&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;label&gt; &lt;input type=&quot;checkbox&quot; name=&quot;check[]&quot; /&gt;  Test cu &amp;lt;label&amp;gt;&lt;/label&gt;&lt;/li&gt;
		&lt;li&gt; &lt;input checked=&quot;checked&quot; type=&quot;checkbox&quot; name=&quot;check[]&quot; /&gt;  Test fără &amp;lt;label&amp;gt;&lt;/li&gt;
		&lt;li&gt;&lt;label&gt; &lt;input type=&quot;checkbox&quot; name=&quot;check[]&quot; /&gt;  Test cu &amp;lt;label&amp;gt;&lt;/label&gt;&lt;/li&gt;
		&lt;li&gt; &lt;input type=&quot;checkbox&quot; name=&quot;check[]&quot; /&gt;  Test fără &amp;lt;label&amp;gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/form&gt;
</pre>
<h3>DEMO!</h3>
<p>Dacă fanii l-au cerut, îl dăm!<br />
<div class="demoDownload"><a href="http://iamntz.com/experiments/checkbox" class="demoLink">Demo</a></div></p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/625/frontend-developer/formulare-custom-checkbox-radio-v-2/'>Formulare custom: checkbox &#038; radio v.2</a>. <br/>
	<a href='http://www.iamntz.com/625/frontend-developer/formulare-custom-checkbox-radio-v-2/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/625/frontend-developer/formulare-custom-checkbox-radio-v-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

