A következő címkéjű bejegyzések mutatása: css3. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: css3. Összes bejegyzés megjelenítése

2013. május 4., szombat

Egyéni submit gombok CSS3-mal, árnyékolás

Múltkor egyéni menüsort készítettünk, most egy űrlap gombját fogjuk egyedivé tenni. Ha weboldalt készítünk, általában látványterv alapján készítjük el a sitebuildet, de nem kell mindig képet tenni az egyes elemek mögé, mert ez is lassítja az oldal megjelenését.

Először is létrehozunk html-ben egy űrlapot, hogy legyen mit megformáznunk:

<form method="post" action="valami.php">
            <label>Név: </label><input type="text" size="40" name="nev"><br />
            <label>Üzenet: </label><textarea rows="5" cols="40"></textarea><br />
            <input type="submit" name="submit" id="button" value="Küldés">

</form>

CSS3-ban a formázást egyszerűen meg tudjuk adni űrlapok esetében. Általánosítva, ha nem használunk id-t, vagy class-t, így néz ki: input[type="submit"]. Ekkor az input elemek submit típusára adjuk meg a formázást.
A gombunk lekerekített lesz, ezt már ismerjük: border-radius-szal adható meg.
Hátterének adhatunk színátmenetet, vagy 1 színből is állhat (jelen esetben átmenetes lesz). A betű színe is megadható, félkövérítjük, hogy jobban olvasható legyen.
A dizájn során a grafikusok szeretik túl effektelni ezeket a részeket, így lett újabb trend során általános használat az árnyékolás, akár a teljes doboz köré, vagy csak a betű köré. Alap állás szerint először csak a gomb köré rakunk árnyékot, amit box-shadow-val tudunk megtenni. Ennél összesen 8 értéket tudunk megadni:
  • horizontális eltávolodás
  • vertikális eltávolodás
  • elhalványodás
  • spread, mely az árnyék nagyságát adja meg
  • RGB-ben a 3 szín megadás
  • átlátszóság, melynek értéke 0.1 és 1 közötti
Most a formázás összességében így néz ki:

 input[type="submit"]{
                border:none;
                background: #bfd255; /* Old browsers */
                background: -moz-linear-gradient(top,  #bfd255 0%, #8eb92a 41%, #72aa00 57%, #9ecb2d 100%); /* FF3.6+ */
                background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#bfd255), color-stop(41%,#8eb92a), color-stop(57%,#72aa00), color-stop(100%,#9ecb2d)); /* Chrome,Safari4+ */
                background: -webkit-linear-gradient(top,  #bfd255 0%,#8eb92a 41%,#72aa00 57%,#9ecb2d 100%); /* Chrome10+,Safari5.1+ */
                background: -o-linear-gradient(top,  #bfd255 0%,#8eb92a 41%,#72aa00 57%,#9ecb2d 100%); /* Opera 11.10+ */
                background: -ms-linear-gradient(top,  #bfd255 0%,#8eb92a 41%,#72aa00 57%,#9ecb2d 100%); /* IE10+ */
                background: linear-gradient(to bottom,  #bfd255 0%,#8eb92a 41%,#72aa00 57%,#9ecb2d 100%); /* W3C */
                filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#bfd255', endColorstr='#9ecb2d',GradientType=0 ); /* IE6-9 */
                width:120px;
                height:25px;
                color:#FFFFFF;
                font-weight:bold;
                -webkit-border-radius: 6px;
                -moz-border-radius: 6px;
                border-radius: 6px;
                margin:5px 0;
                -webkit-box-shadow:  1px 1px 2px 2px rgba(40, 140, 40, 1);
                box-shadow:  1px 1px 2px 2px rgba(40, 140, 40, 1);
            }


A hover eseménynél a formázást módosítjuk és itt is alkalmazzuk a transitionst, hogy effektesebb legyen, ezzel a felhasználó számára élvezhetőbbé tehetjük az oldalt. Itt a szövegnek adunk árnyékot, melyet a text-shadow-val tudunk megtenni. Itt a következő értékeket kell megadni:
  • horizontális távolság
  • vertikális távolság
  • blur-radius, ami a szín erősségét jelöli
  • árnyék színe itt hexadecimáls formában
Ennek a css kódja a következő:

input[type="submit"]:hover{
                -webkit-transition: all 500ms linear;
                -moz-transition: all 500ms linear;
                -ms-transition: all 500ms linear;
                -o-transition: all 500ms linear;
                transition: all 500ms linear;
                color:#75AC03;
                background:#BCD053;
                text-shadow: 2px 1px 3px #FFFFFF;
                filter: dropshadow(color=#FFFFFF, offx=2, offy=1);
               
            }


Végeredményben kaptunk egy egyedi gombot (jelen leírás a teljesség igénye nélkül készült), mely fölé az egeret húzva lassan megváltozik a háttere és színe, így nemcsak, hogy nem kell képet alkalmaznunk mindkét állapotában, hanem a tervezés során szabadabban alkothatjuk meg az ilyen elemeinket.


2013. április 21., vasárnap

Egyéni menü CSS3-mal



Múltkor áttekintettük, hogy milyen egyéni hátteret lehet készíteni kép felhasználás nélkül, csupán CSS3-mal. Most menüszerkezetet fogunk készíteni CSS3-mal és animációt is teszünk rá.

Először is készítsünk egy menüt, melyben van pár menüpont. HTML5-öt használva a body-n belül nav tagek közt tudjuk definiálni.

<nav>
<a href="#">Kezdőlap</a>
                <a href="#">Rólunk</a>
                <a href="#">Szolgáltatásaink</a>
                <a href="#">Elérhetőség</a>
</nav>

A menüpontoknak bármilyen formázást adhatunk, így meghatározzuk a betű színét és akár hátteret is kaphat. Kiindulásként kap egy narancsos betűszínt, kivastagítjuk, az aláhúzást eltűntetjük a linkről és kap egy kis paddingot, hogy legyen távolság a pontok között.

nav a{
text-decoration:none;
color:#FF7E22;
                font-weight:bold;
                padding:10px;
}

Így most egy átlagos menü megjelenése van és most jön a lényeg. CSS3-ban meg lehet adni transition-t, mellyel késleltetett változást idézhetünk elő és így olyan hatása lesz, mintha egy animáció futna le a háttérben. Ennél is figyelni kell a böngészőkre –webkit, -moz, -ms, és –o előtaggal tudjuk működésre bírni a különböző böngészőkben. Ezt a hover eseményre tesszük rá és csupán a betűszínt módosítjuk, illetve háttérszínt adunk neki.

nav a:hover{
-webkit-transition: all 600ms linear;
                -moz-transition: all 600ms linear;
                -ms-transition: all 600ms linear;
                -o-transition: all 600ms linear;
                transition: all 600ms linear;
                color:#FEFEFE;
                background:#FF7E22;
}

Ennek eredménye az lesz, ha bármely menüpont fölé visszük az egeret, annak 600ms alatt megváltozik a betűszíne és megjelenik a háttér. Az all megnevezés azt jelöli, hogy mindenre érvényes a transition, értéke lehet: all, color, background, height, weight, outline.
A linear az animáció típusát jelöli, melynek értéke lehet a javascriptből jól ismert: easy, linear, easy-in, easy-out, easy-in-out.
Az átváltás ideje secondban és milisecondban adható meg.




Ezzel a technikával könnyedén egyedivé tehetjük bármely menü szerkezetünket és remekül alkalmazható legördülő menü esetében is, így nem terheljük a felhasználó gépét, és nem áll fenn a veszélye annak, hogy nem engedélyezte böngészőjében a javascriptet, és ezért nem jelenne meg valami.

2013. március 17., vasárnap

background - újdonság CSS3-ban

Egy kód megírása során figyelnünk kell arra, hogy optimalizált legyen, az oldal gyorsan betöltődjön, hiszen manapság ha egy weboldal betöltődése több, mint 1-2 másodpercig eltart, a felhasználó azonnal odébb áll, hiszen gyakorta sok hasonló honlapot talál.
Egy weboldalnak esztétikus megjelenést kölcsönöz a megfelelő háttérkép kiválasztása, vagy egy szín, ami az oldal alapját adja. Új trendként elterjedt a színátmenetes háttérkép, melyhez már nem szükséges egy képet szerkesztenünk, mert CSS3-ban megoldották ezt a problémánkat, csakúgy, mint a több kép egyszeri kezelését is.
Kezdjünk egy kis ismétléssel. CSS-ben megadhatunk háttérszínt hexadecimális, RGB, vagy név megadással. (Az RGB megadás során negyedik paraméterben az áttetszőség adható meg.)

background-color: #0000ff;
background-color:(0,0,255);
background-color: blue;

Megadhatunk egy konkrét képet:

background-image:url('hatter.jpg');

Háttérkép esetén külön megadhatunk dolgokat, mint ismétlődjön-e a kép, illetve mely tengely mentén (repeat, x-repeat, y-repeat).

background-repeat: no-repeat;

Illetve megadhatjuk a pozícióját (center, top, bottom, left, right). Ezeket párba állítva is megadhatjuk, ekkor ez első érték bal, közép vagy jobb oldal, a másik érték, fent, középen, vagy lent. Ugyanakkor ezeket px-ben is megadhatjuk.

background-position: left top;

Ha body-nak adunk meg háttérképet, akkor beállíthatjuk azt is, hogy a kép mindig ugyanúgy ott maradjon, vagy a szöveggel együtt mozogjon (fixed, scroll).

background-attachment:fixed;

Ezeket egy sorban is meghatározhatjuk, így első paraméter lesz a szín, amit a kép hivatkozás követ, ezután a pozíció meghatározása, majd az ismétlődés megadása.

background: #0000FF url('hatter.jpg') center top no-repeat;

A CSS3 lehetőséget ad arra, hogy több háttérképet adjunk meg egy divnek, ezt nevezzük multi-backgroundnak.

background: url(bg1.png), url(bg2.jpg);

Emellett kódból meg tudjuk valósítani, hogy színátmenetes legyen egy háttér. Ehhez több sorban kell megadnunk az értékeket, hogy minden böngészőre hasson, illetve korábbi változatokra is.

firefox 3.6-tól érvényes
background: -moz-linear-gradient(top,  #3b679e 0%, #2b88d9 50%, #207cca 51%, #7db9e8 100%);

Chrome,Safari4-től
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#3b679e), color-stop(50%,#2b88d9), color-stop(51%,#207cca), color-stop(100%,#7db9e8));



Chrome10-től, Safari5.1-től
background: -webkit-linear-gradient(top,  #3b679e 0%,#2b88d9 50%,#207cca 51%,#7db9e8 100%);


Opera 11.10-től
background: -o-linear-gradient(top,  #3b679e 0%,#2b88d9 50%,#207cca 51%,#7db9e8 100%);



IE10-től
background: -ms-linear-gradient(top,  #3b679e 0%,#2b88d9 50%,#207cca 51%,#7db9e8 100%); 

W3C
background: linear-gradient(to bottom,  #3b679e 0%,#2b88d9 50%,#207cca 51%,#7db9e8 100%);



IE 6-9
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3b679e', endColorstr='#7db9e8',GradientType=0 );

A sokféle megadás ellenére is érdemes egy alap színt meghatározni arra az esetre, ha valamely böngésző nem képes az átmenet megjelenítésére.



A képen nem ismétlődés miatt van középen egy erősebb sáv, a gradiens lett így meghatározva.
Remek segítség ehhez a http://www.css3generator.com/, melyben megadhatjuk a színeket és a kódot legenerálja a számukra.

További hasznos információkat a http://www.w3.org/TR/css3-background/ oldalon találtok.

2013. február 23., szombat

Kéthasábos HTML sablon



Most elkészítünk egy oldalt, egy alap sablon mintával, mely a későbbiekben könnyen újra hasznosítható lesz. Ahogy ígértem kéthasábos elrendezésű, dives kialakítású lesz. Régebben táblázattal alakították ki az oldalakat, de ez már elavult technika.
Először a html kódot írjuk meg

<!DOCTYPE html>
<html>
            <head>
                        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                        <meta name="description" content="Kéthasábos minta oldal elkészítése">
                        <meta name="keywords" content="weblap, minta, kéthasábos">
                        <link rel="stylesheet" type="text/css" href="style.css">
            </head>         
            <body>
                        <header>
                        </header>
                        <div class="tarto">
                                   <div class="bal">
                                   </div>
                                   <div class="jobb">
                                   </div>
                        </div>
                        <footer>
                        </footer>
            </body>
</html>

Deklaráljuk a DOCTYPE-ot, majd megadjuk a meta tagokat a head részben és link tagben hivatkozunk a külső css-re, melyben a tényleges formázást fogjuk elvégezni.
Ezután a body részében csinálunk egy fejrészt, melyet html5 szabvány szerint headerként adunk meg. Következik egy tartó div, mely a két oszlopot magába foglalja, ezt most a könnyebben érthetőség végett neveztem el jobb és bal-nak. Class-ként adjuk meg, akkor a css-ben ponttal hivatkozunk rá. Megadhatjuk id-ként is ekkor # jelet kell elé tenni. A különbség a kettő között, hogy az id által megadott div egyszer szerepelhet az oldalon, de class-ra többször is hivatkozhatunk.
A css-be a következő részletet írjuk:

body{background:#BBEE99;}
header{
            width:1024px;
            margin:0 auto;
            height:150px;
            background: #b4e391;
}
.tarto{
            width:1024px;
            margin:0 auto;
}
.bal{
            width:200px;
            float:left;
            min-height:100%;
            background:#66FF00;
.jobb{
            width:804px;
            float:left;
            background:#ffffff;
}
footer{
            clear:both;
            width:1024px;
            margin:0 auto;
            height:50px;
            background: #ffffff;
}         

Minden div-nek fontos, hogy méretet adjunk. Jelen esetben 1024px szélességű weboldalt készítünk, melyet középre igazítunk margin: 0 auto-val. A height adja meg a magasságot, a background pedig a háttérszínt.
A bal és jobb classt balra lebegtetjük (float:left;), így ha a méretük alapján elférnek egymás mellett, akkor úgy fog kinézni, ahogy akartuk.

Ha már egy alap oldalt csinálunk tegyünk bele menüt és tartalmat. A fejrészbe kerülhet logó, szlogen, vagy akár megosztó gombok is. Most csak egy címet írunk ki rá h1-es tagek között és hogy ne legyen olyan egyhangú, a háttérnek CSS3-mal színátmenetet adunk. Ezt már csak az explorer régebbi változata nem támogatja, éppen ezért kell megadni egy alap színt is. Így nem kell képként beilleszteni színátmenetes  részeket és az oldal gyorsabban megjelenik majd.
HTML kód:
<header>
            <h1>Első weboldalam</h1>
</header>
CSS formázás:
header{
            width:1024px;
            margin:0 auto;
            height:150px;
            background: #b4e391; /* Old browsers */
            background: -moz-linear-gradient(top,  #b4e391 0%, #61c419 50%, #ffffff 100%); /* FF3.6+ */
            background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b4e391), color-stop(50%,#61c419), color-stop(100%,#ffffff)); /* Chrome,Safari4+ */
            background: -webkit-linear-gradient(top,  #b4e391 0%,#61c419 50%,#ffffff 100%); /* Chrome10+,Safari5.1+ */
            background: -o-linear-gradient(top,  #b4e391 0%,#61c419 50%,#ffffff 100%); /* Opera 11.10+ */
            background: -ms-linear-gradient(top,  #b4e391 0%,#61c419 50%,#ffffff 100%); /* IE10+ */
            background: linear-gradient(to bottom,  #b4e391 0%,#61c419 50%,#ffffff 100%); /* W3C */
            filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#b4e391', endColorstr='#ffffff',GradientType=0 ); /* IE6-9 */
}
header h1{
            padding:40px;
}
A háttér megadásánál minden sornál láthatod, hogy mely böngészőre lesz hatással, azért kell ennyi féle képpen megadni.
A h1-nek adunk egy padding-ot, mely 40pixellel le és betolja a szöveget.

Most a bal oldal lesz a menü helye, a jobb oldal a tartalomé. A menüszerkezetet listaként definiáljuk és <a href=””></a> tagek között adjuk meg az oldalak linkjét.
HTML kód:
<div class="bal">
            <ul>
                        <li><a href="index.html">Főoldal</a></li>
                        <li><a href="bemutatkozas.html">Bemutatkozás</a></li>
                        <li><a href="esemenyek.html">Események</a></li>
                        <li><a href="Kapcsolat.html">Kapcsolat</a></li>
            </ul>
</div>
CSS formázás:
.bal{
            width:200px;
            float:left;
            min-height:100%;
            background:#66FF00;
}
.bal ul{
            list-style-type:none;
}
.bal li{
            width:200px;
            padding:10px;
            height:20px;
}
.bal li a{
            color:#004400;
            display:block;
            padding:5px 0 5px 20px;
            font-size:18px;
}
.bal li a:hover{
            background-color:#004400;
            color:#66FF00;
}
A listának nem lesz lista jelölője, ezért állítjuk be a list-style-type:none-t. A linknél tudjuk megadni a szöveg színét, a hoverrel adjuk meg azt, hogy hogyan nézzen ki, ha az egér fölötte van. Adhatunk a linknek class-t, mellyel jelölhetjük, hogy épp melyik link az aktív, hogy a látogató számára egyértelmű legyen, hol van.

A jobb oldal egy egyszerű szöveget tartalmaz; a címet <h1></h1> között adjuk meg, a tartalmat pedig <p></p> között, jelen esetben egyszerű ipsum szöveget, mely mindig jó szolgálatot tesz, amikor azt akarjuk tesztelni, hogyan fog kinézni az oldal egy hosszabb szöveggel. Ebbe teszünk egy képet is a példa kedvéért. A <br /> a sortöréseket jelöli.
HTML kód:
<div class="jobb">
            <h1>Főoldal</h1>
            <p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sollicitudin consequat ante, nec dictum ligula tempor sit amet. Fusce sagittis lacinia ullamcorper. Donec justo libero, pulvinar in vehicula non, euismod sodales lorem. Mauris erat lectus, fermentum at venenatis in, eleifend in libero. Mauris convallis malesuada odio at consequat. Duis non leo quis justo tempus volutpat sit amet sit amet purus. Suspendisse potenti. Sed lobortis tortor ut ante blandit eget laoreet lacus bibendum. Aenean sollicitudin commodo lorem in lacinia. Nunc bibendum feugiat bibendum. Aliquam adipiscing neque et nisi pretium scelerisque. Nulla eleifend vehicula sodales. Donec erat arcu, congue condimentum semper quis, convallis ut leo.<br /><br />
Pellentesque fringilla commodo tortor, ut dignissim diam feugiat at. Fusce ornare sem risus. Duis vestibulum lobortis scelerisque. Mauris at est id purus malesuada porta. In pulvinar iaculis arcu, non faucibus tellus tempus non. Praesent pellentesque orci at ante sodales consequat. Suspendisse quis leo et metus condimentum aliquam nec eget libero. Quisque aliquam, justo et vehicula sagittis, ipsum libero posuere diam, vitae mattis libero libero eu risus.
<br /><br />
<img src="rozsa.jpg" alt="rozsa" title="rozsa" width="150">
Nam a nibh id felis commodo dignissim vel non velit. Nunc viverra adipiscing sollicitudin. Phasellus vehicula egestas ipsum, a tristique orci fermentum sed. Donec dictum congue leo, vel scelerisque dolor volutpat a. Suspendisse consectetur tempor faucibus. Mauris dapibus, purus et congue tempus, lorem nisl volutpat eros, eu pulvinar nunc magna sit amet diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas in magna nisl. Suspendisse vitae lorem magna, id elementum magna.
            </p>
</div>

CSS formázás:
.jobb{
            width:804px;
            float:left;
            background:#ffffff;
            padding:10px;
}
.jobb h1{
            margin:10px 0;
}
.jobb p{
            text-align:justify;
            line-height:120%;
}
.jobb img{
            float:right;
            padding:5px;
}

A többi oldal kialakítása ugyanígy néz ki. Ha a menü <a href=…> tagjában megadott néven mented el az aloldalakat, akkor kész az első statikus oldalad. A kinézeten könnyedén tudsz javítani, jelen esetben nem törekedtem a szép design kialakítására.