<?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>_nec &#187; hacks</title>
	<atom:link href="http://nec.shell8.net/tag/hacks/feed/" rel="self" type="application/rss+xml" />
	<link>http://nec.shell8.net</link>
	<description>webfejlesztés, front-end programozás, javascript, css, xhtml, ajax, air</description>
	<lastBuildDate>Wed, 24 Jun 2009 10:36:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Háromszögelés CSS-el</title>
		<link>http://nec.shell8.net/2009/05/25/haromszog-css/</link>
		<comments>http://nec.shell8.net/2009/05/25/haromszog-css/#comments</comments>
		<pubDate>Mon, 25 May 2009 06:01:24 +0000</pubDate>
		<dc:creator>_nec</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[arrow]]></category>
		<category><![CDATA[css sprite]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[háromszögek]]></category>
		<category><![CDATA[keret rajzolás]]></category>
		<category><![CDATA[kezelőfelület]]></category>
		<category><![CDATA[nyilak]]></category>
		<category><![CDATA[tabs]]></category>
		<category><![CDATA[UI elements]]></category>

		<guid isPermaLink="false">http://nec.shell8.net/?p=307</guid>
		<description><![CDATA[ A mai minimalista weboldalak kinézetét már gyakran alig két-három kép is megfelelően kiszolgálja, ha erre a design alkalmas és így a designelemek css sprite-ra rendezése lehetséges. Előfordulhat azonban, hogy a könnyebb testreszabás, színezés, különböző méretek, esetleg animáció miatt sajnos ez mégse ennyire egyszerű. 
Viszont vannak dolgok, amikhez még kép se kell.

Navigációnál és UI kezelőfelületeknél [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-360" title="border3" src="http://nec.shell8.net/wp-content/uploads/2009/05/border3.jpg" alt="border3" width="330" height="231" /> A mai minimalista weboldalak kinézetét már gyakran alig két-három kép is megfelelően kiszolgálja, ha erre a design alkalmas és így a designelemek css sprite-ra rendezése lehetséges. Előfordulhat azonban, hogy a könnyebb testreszabás, színezés, különböző méretek, esetleg animáció miatt sajnos ez mégse ennyire egyszerű. </p>
<p>Viszont vannak dolgok, amikhez még kép se kell.<br />
<span id="more-307"></span><br />
Navigációnál és UI kezelőfelületeknél gyakran láthatunk kicsi, egyszerű háromszögekből álló nyilakat. Ezeket elkészíthetjük képpel, esetleg valamely UTF8 karakterrel a html kódban. Előbbi megoldás minden színvariációra és állapotra külön képet igényel, utóbbival pozícinálási gondok lehetnek más-más böngészőkben, és megzavarhatja a felolvasó programokat &#8211; nem valami akadálymentes megoldás.</p>
<p>Mi más lehetőség marad? Ma már lehet vektorosan canvas illetve VML elemekre rajzolni, színezni, tetszőleges módon scriptelni különböző állapotokra, hogy nézzen ki az elem&#8230; de ez már érezhetően aránytalanul nagy ráfordítás ekkora feladatra.</p>
<p>Egy lehetőség maradt, amivel egyszerű, színes poligonokat rajzolhatunk és nem kell hozzá plugin, kép, de még javasript se: <em>a css keret</em>.</p>
<p>A böngészők egy elemet körbevevő, vastag keretet, azok találkozásánál egy sima, ferde egyenes mentén illesztik, ezzel elkerülve azt a problémás kérdést, hogy melyik keret hol lógjon túl az elem szélén és mennyire. A html és css vízszintes és függőleges világában ezek a ferde vonalak eléggé meglepően hatnak, ritkán is fordulnak elő, mivel csak eltérő színű és esetleg vastagságú kereteknél válnak láthatóvá.</p>
<p><img class="alignnone size-full wp-image-353" title="A böngészők keret kezelése" src="http://nec.shell8.net/wp-content/uploads/2009/05/border1.jpg" alt="A böngészők keret kezelése" width="520" /></p>
<p>Ha egy ilyen elemen a magasságot és a szélességet nullára vesszük, négy &#8220;nyilat&#8221; kapunk. Innen már csak a nemkívánatos kereteket kell áttetszővé állítani, és marad egy.</p>
<p><img class="alignnone size-full wp-image-356" title="Keretből nyilat" src="http://nec.shell8.net/wp-content/uploads/2009/05/untitled-2.jpg" alt="Keretből nyilat" width="300" height="100" /></p>
<p>Apróságokra persze oda kell figyelni,pl. a pozicionálásnál, a html elem ilyenkor mindíg a nyíl csúcsa.</p>
<p>Előjött egy IE6 bug és annak körüljárása is, úgyfest IE6 nem kezeli rendesen a transzparens kereteket, kivéve, ha <em>solid</em> stílus helyett <em>dotted</em> -re állítjuk. Mivel ez a keret amúgy se látszik, tökmindegy mire állítjuk, és ha ezzel a trükkel az összes böngészőben jó, akkor miért ne.</p>
<p>Végül a css kód ennyi:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">span<span style="color: #6666ff;">.arrow</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">hidden</span><span style="color: #00AA00;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">border-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span> <span style="color: #993333;">dotted</span> <span style="color: #993333;">transparent</span><span style="color: #00AA00;">;</span>	
	<span style="color: #000000; font-weight: bold;">border-right</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0px</span> <span style="color: #993333;">dotted</span> <span style="color: #993333;">transparent</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">border-bottom</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span> <span style="color: #993333;">dotted</span> <span style="color: #993333;">transparent</span><span style="color: #00AA00;">;</span>	
	<span style="color: #000000; font-weight: bold;">border-left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span> <span style="color: #993333;">solid</span> <span style="color: #993333;">green</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Ezáltal egy jól használható, testreszabható kis elemet kapunk, amit a mai egyszerű weboldalak és html alapú alkalmazások jól használhatnak.</p>
<p><a href="http://nec.shell8.net/projects/arrow/">Demo, és pár példa itt látható</a><br />
Tesztelve: IE6, 7, 8, chrome, ff3, safari 4.</p>
<p>Előnyök:</p>
<ul>
<li>html-css, nincs plusz kép, kevesebb http lekérés</li>
<li>gyors megjelenítés</li>
<li>testreszabhatóbb</li>
<li>mouseover adott a DOM-ból</li>
</ul>
<p>Hátrányok:</p>
<ul>
<li>kicsit nagyobb html kód (vagy js futásidő, ha utólag teszed a DOM-ba, de ez elkerülhető)</li>
<li>nem teljes a testreszabhatóság, pl nem lehet neki keretet rajzolni</li>
<li>talán valahol megtöri a rétegszemléletet, plusz html kód a design-hoz</li>
<li>IE alatt pixelesedés előfordulhat, ezt a nyil méretein finoman korrigálva javíthatjuk</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://nec.shell8.net/2009/05/25/haromszog-css/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Alfacsatornás PNG IE6ra</title>
		<link>http://nec.shell8.net/2008/07/09/alfacsatornas_png_ie6ra/</link>
		<comments>http://nec.shell8.net/2008/07/09/alfacsatornas_png_ie6ra/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 15:07:49 +0000</pubDate>
		<dc:creator>_nec</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[alphachannel]]></category>
		<category><![CDATA[explorer]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[png]]></category>
		<category><![CDATA[transparency]]></category>

		<guid isPermaLink="false">http://nec.shell8.net/?p=18</guid>
		<description><![CDATA[Sokan még ma is azt hiszik, hogy az IE7 előtti, még elterjedt Explorerek egyáltalán nem támogatják a transzparens PNG-ket. Nos valójában támogatják, habár kicsit trükkös a dolog. A DirectX és a css szűrők adta lehetőségekkel lehetséges alfacsatornás PNG -t háttérként behelyezni elemekre, s így, képeket is. De sajnos ennek a megoldásnak is sok korlátja is [...]]]></description>
			<content:encoded><![CDATA[<p>Sokan még ma is azt hiszik, hogy az IE7 előtti, még elterjedt Explorerek egyáltalán nem támogatják a transzparens PNG-ket. Nos valójában támogatják, habár kicsit trükkös a dolog. A DirectX és a css szűrők adta lehetőségekkel lehetséges alfacsatornás PNG -t háttérként behelyezni elemekre, s így, képeket is. De sajnos ennek a megoldásnak is sok korlátja is van, ezeket is megnézzük egyenként.</p>
<p><span id="more-14"></span></p>
<h3>Az alapok</h3>
<p>Maga a kód ilyen:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">filter<span style="color: #00AA00;">:</span> progid<span style="color: #3333ff;">:DXImageTransform</span><span style="color: #6666ff;">.Microsoft</span>.AlphaImageLoader<span style="color: #00AA00;">&#40;</span>enabled<span style="color: #00AA00;">=</span><span style="color: #ff0000;">'true'</span><span style="color: #00AA00;">,</span> src<span style="color: #00AA00;">=</span><span style="color: #ff0000;">'/images/alpha.png'</span><span style="color: #00AA00;">,</span> sizingMethod<span style="color: #00AA00;">=</span><span style="color: #ff0000;">'image'</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span></pre></div></div>

<p>Ez egy DirectX szűrő, amit lehet IE alatt a stíluslapokban használni. Két paraméterre figyeljünk:</p>
<ul>
<li> <strong>src</strong><br />
ami a kép elérése, az oldal gyökeréhez relatívan ( a stíluslapoktól eltérően, ahol a relatív címzés a css állomány útvonalához képest értendő)</li>
<li><strong> sizingMethod</strong><br />
ennek három beállítása van: <em>image</em>, <em>scale</em> és <em>crop</em>.<br />
Ha <em>image</em>-re állítod, a png azzal a méretekkel jelenik meg ami a kép valós mérete, függetlenül az őt tartó elem méreteitől.<br />
A <em>scale</em> mód kinyújtja a képet az őt tartó elem méreteinek megfeleően. Ez ideális egy tengely mentén nyújtott háttereknél, amikor más esetben egy tengely mentén ismétlődő hátterünk lenne &#8211; ennél a megoldásnál sajnos nincs ismétlődés, tehát így kell tervezni vele.<br />
<em>Crop</em> mód esetén levágja a kép kilógó részleteit ha kissebb, és eredeti méretben mutatja, ha nagyobb a hordozó elem. Ez közelíti meg leginkább a <em>background-image</em> viselkedését.
</li>
</ul>
<h3>Hátrányok</h3>
<p>A HTML elem, amire ráhúzod ily módon az alfacsatornás képet, elérhetetlenné válik bizonyos felhasználói interakciókra. A háttér úgy viselkedik, mintha az az elem és annak összes aleleme fölé lenne lebegtetve, holott az alelemek is jól jelennek meg (tehát nem a kép alatt). Maga az elem kattintható, de az alelemei már nem, a tartalmukat nem lehet kijelölni. Igy ha kicsit is komplexebb HTML szerkezetekre akarjuk ezt használni, javaslom az alábbi megoldást.</p>
<p>Minden ilyen elem esetén elhelyezek plusz egy layert, utolsó gyerek elemként abban az elemben, amire a png-t tenném. Mivel az IE7 és szinte minden nem-IE böngésző már jól kezeli az alfacsatornás png-ket, feltételes kommentet használok, hogy csak a kívánt böngészőkre jelenjen meg így és ne terheljen másokat.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;!--[if lt IE 7]&gt;
&lt;div class=&quot;bg&quot;&gt;&lt;/div&gt;
&lt;![endif]--&gt;</pre></div></div>

<p>Ugyanezzel a megoldással egy stíluslapot is beemelek az oldal elején ami lekezeli ezeket az eseteket. A megoldás minimális extra kódot igényel, idővel, ha az IE6 sírba vonul, problémamentesen kivehető, egyszerű és működik. Nem valid CSS megoldás, de a css amiben használom, a feltételes komment segítségével kerül be az oldalba és csak az IE6 vagy korábbi verziói látják, így emiatt se kell aggódnom.</p>
]]></content:encoded>
			<wfw:commentRss>http://nec.shell8.net/2008/07/09/alfacsatornas_png_ie6ra/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
