Uždaryti
Jei aktyviai domiesi kompiuterinės grafikos naujovėmis, web dizainu, svetainių kūrimu, užsiprenumeruok E-grafika.lt turinį per RSS!
Nori pareikšti savo nuomonę? Peržiūrėti video pamokas? Gauti tik nariams prieinamų resursų? Sužinoti apie naujienas pirmasis? Tada registruokis!
Jeigu jau esi užsiregistavęs, prisijunk ir diskutuok forumuose, komentuok naujienas, straipsnius, video pamokas, bendrauk su kitais bendruomenės nariais!

Straipsnis

Margin ir padding savybės — panašumai ir skirtumai

Margin ir padding CSS savybės

Neretai žmonėms, neseniai susipažinusiems su pakopiniais stiliais (Cascading Style Sheets — CSS), iškyla klausimas, kuo skiriasi dvi CSS savybės: margin ir padding? Nors kai kuriais atvejais pritaikius vieną ar kitą savybę matomas rezultatas atrodo taip pat, iš tikrųjų jų paskirtys yra skirtingos. Todėl neapsigauokite manydami, kad galite naudoti vieną ar kitą savybę priklausomai nuo jūsų nuotaikos!

Pradžiai noriu parodyti, kokiais atvejais abi savybės, iš pirmo žvilgsnio, atlieka tą pačią funkciją. Tarkime, kad HTML dokumente turime h1 elementą ir po juo — šiek tiek teksto.

<h1>Naujienos antraštė</h1>
Mano naujienos turinys.

Toliau nurodykime CSS aprašą h1 identifikatoriui.

h1 { margin-bottom: 50px; }

Dabar atsidarykime HTML dokumentą savo naršyklėje. Pamatysite, kad tekstas, esantis po h1 elementu yra gerokai atitrauktas į apačią. Plačiau nieko neaiškinęs šiek tiek pakeisiu CSS aprašą.

h1 { padding-bottom: 50px; }

Kaip matote, dabar vietoj margin-bottom nurodžiau padding-bottom. Atsidarę HTML dokumentą savo naršyklėje turėtumėte pamatyti, kad rezultatas toks pat — tekstas, esantis po h1 elementu yra atitrauktas nuo viršaus.

Taigi iškyla elementarus klausimas — kam reikalingos dvi savybės, atliekančios tą pačią funkciją? Palaukite! Skirtumą vizualiai pamatysite, kai pridėsime h1 elementui rėmelį (tiksliau tik apatinę rėmelio kraštinę).

h1 { padding-bottom: 50px; border-bottom: 5px solid #DDD; }

Savo naršyklėje peržiūrėkite, kaip atrodo jūsų rezultatas. Įsidemėkite rėmelio santykį su h1 elementu ir po juo esančiu tekstu. Tada vėl pakeiskite iš padding-bottom į margin-bottom.

h1 { margin-bottom: 50px; border-bottom: 5px solid #DDD; }

Aha! Dabar rėmelis nuo antraštės elemento (h1) nebėra atitrauktas, tačiau tekstas, esantis po elementu, išliko savo pozicijoje. Ar jau pradedate suprasti, kuo skiriasi padding nuo margin? Dar ne? Gerai, tada panagrinėkime žemiau pateiktą paveiksliuką su brėžiniu.

Margin ir padding CSS

Sunumeravau brėžinyje pavaizduotas keturias sritis:

1 — bloko margin sritis. Realioje situacijoje niekados tiesiogiai neišvysite šios srities, kadangi ji yra nematoma. Tiek margin, tiek padding galima pamatyti tik iš elementų išsidėstymo, pavyzdžiui, dviejų blokų, kurių fono spalva juoda. Pačio margin (ar padding) nematysime, tačiau atkreipsime dėmesį į tai, jog du elementai yra atitolę vienas nuo kito kažkokiu atstumu. Taigi tas atstumas ir bus margin.

2 — bloko rėmelis (parodytas tik tam, kad būtų lengviau pamatyti bloko ribas).

3padding sritis. Šios srities taip pat tiesiogiai nepamatysite, o tuo labiau negalėsime nurodyti jos spalvos ar kitų CSS savybių. Tai tiesiog neįmanoma! wink

4 — turinio sritis. Turinys atitraukiamas nuo bloko kraštų tiek, kiek nurodėme bloko elementui padding.

Taigi, trumpai tariant, margin savybė nurodo, kiek elementas turi būti atitraukiamas nuo kitų elementų (arba puslapio kraštų), o padding savybė — kiek turi būti atitrauktas turinys, esantis tame elemente.

Margin ir padding savybių nurodymas

Tiek margin, tiek padding savybei galima nurodyti keturias reikšmes, t. y. kiekvienai kraštinei.

identifikatorius 
{  
    margin-top: 10px;
    margin-bottom: 10px;
    margin-left: 10px;
    margin-right: 10px;
}

identifikatorius 
{  
    padding-top: 10px;
    padding-bottom: 10px;
    padding-left: 10px;
    padding-right: 10px;
}

Arba paprastesnis variantas — nurodyti visų kraštinių atitraukimo reikšmes vienoje eilutėje.

identifikatorius 
{  
	margin: 10px 10px 10px 10px;
}

identifikatorius 
{  
	padding: 10px 10px 10px 10px;
}

Reikšmės nurodomos kiekvienos kraštinei pagal laikrodžio rodyklę, tad primoji reikšmė — atitraukimas nuo viršaus, antroji — nuo dešinės, trečia — nuo apačios ir ketvirtoji — nuo kairiosios pusės. Tarkime, kad norime nurodyti atitraukimą tik nuo viršaus ir apačios.

identifikatorius 
{  
	margin: 10px 0;
}

identifikatorius 
{  
	padding: 10px 0;
}

Šiuo atveju pirmoji reikšmė nurodo, kad atitraukimas bus pritaikytas 10px nuo viršaus ir apačios, o nuo šonų 0.

identifikatorius 
{  
	margin: 10px;
}

identifikatorius 
{  
	padding: 10px;
}

Pagal aukščiau pateiktus pavyzdžius, atitraukimas bus pritaikytas nuo visų kraštų po 10px. Taigi žemiau pateikti du variantai veikimo atžvilgiu bus visiškai vienodi.

identifikatorius 
{  
	margin: 10px 10px 10px 10px;
}

identifikatorius 
{  
	margin: 10px;
}

Atitraukimą galima nurodyti dviejais matavimo vienetais: pikseliais (taškais, angl. pixelspx) arba procentais (%). Beje, tiek margin, tiek padding savybei galima nurodyti reikšmes abiejais vienetais.

identifikatorius 
{  
	padding: 10px 5%;
}

Apibendrinimas

Margin ir padding savybės pakopiniuose stiliuose yra labai svarbios, kadangi jomis galime keisti tam tikrų blokų pozicijas, gražiai išdėlioti HTML elementus ir sukoduoti tvarkingą dizainą. Nepamirškite, kad šios dvi savybės skirasi ir naudokite jas atitinkamai. Tikiuosi, kad įsidemėjote margin ir padding savybių prasmę ir ateityje jums nebekils dvejonių, kokiais atvejais naudoti vieną ar kitą savybę.

Data ir laikas 2009-05-17 04:09:51   Autorius adijux   Gairės Gairės: Cascading Style Sheets, Patarimai naujokams

Komentarai

Imago 2009-05-21 23:15:37
Imago Dekui uz pamoka, nors tai ir senai zinojau razz tik, kad kiek prisimenu, tai IE ir Firefox/Opera siek tiek kitaip priskaito Padding/margin ir negausi vienodo rezultato. I css koda berods reikia ivesti dar kazkokia eilute, tik neprisimenu kokia ir kada (gal si info pasenusi, nes jau senokai nemeginau IE7)
 
adijux 2009-05-21 23:20:36
adijux Galima panaikinti visus margin ir padding labai paprastai.

html, body { margin: 0; padding: 0 }


Arba dar geriau naudoti kokį nors reset CSS failą (galima pasigūglinti, tačiau šiek tiek apie CSS reset failus užsiminta ir video pamokoje). wink
 
Imago 2009-05-21 23:30:39
Imago Atradau senuose koduose, ka reikedavo iterpti i css, bet cia dar prie IE6, tai kiek tai padeda ir ar isvis reikia su IE7 nlb zinau

overflow-x: hidden;
display:inline;

Tikslios ju veikimo paskirties ir naudojimo nezinau, nes nepamenu nei is kur emiau nei kam naudojau smile tik zinau kad cia kazkas su divú position budavo
 
napalias 2009-06-06 13:23:08
napalias dispay infline reiki aiterpti kai naudojama float. Kitokiu atveju blogai parastes bus pavaizduotos. Jausis skirtumas ziurint per ff ir ie
 
dvneo 2009-05-22 19:03:50
dvneo Su šiomis komandomis susidurti teko jau nuo html laiku smile 

O šiaip labai išsamiai viskas palygintai ir paaiškinta yes
 
napalias 2009-06-06 13:09:00
napalias padding skirtumas issryskeje tarp ie ir ff ivedus width ir height. kad to nebutu galima daudoti hack

 
div.{ 
width:180px!important; 
width:200px; 
height:30px!important; 
height:50px; 
} 
 


su important skirta narsyklems kurios tesisingai suprant box modeli pagal w3 standarus (yra ir kitu budu kai ta problema spresti.)
 
adijux 2009-06-06 13:45:17
adijux Na !important naudoti nerekomenduočiau, nes šis prierašas prideda „svorio“ tam tikrai CSS savybei. Paprastai CSS kalboje tas „svoris“ siejamas su hierarchija. Pateiksiu pavyzdį.

<div id="blokas"> 
     
  <div id="antraste"> 
         
    <h1>Antraštė</h1> 
         
  </div> 
     
</div>


#blokas #antraste h1 { color: blue; } 
 
#antraste h1 { color: green; }


Tarkime, kad pradžioje nurodėme h1 elemento (kuris yra #antraste bloke, o pastarasis dar yra #blokas bloke) teksto spalvą mėlyną.
Tačiau vėliau bandome priskirti h1 elemento teksto spalvą žalią, tik šį kartą nenurodome visos hierarchijos CSS kode, o tik dalį, t. y. #antraste h1 { }. Atsivertę HTML dokumentą su tokiais CSS aprašais savo naršyklėje pamatysime, kad antraštės teksto spalva bus ne žalia, nors ir nurodėme antrąjį aprašą (#antraste h1 { color: green; }), o mėlyna, kadangi pirmasis aprašas turi daugiau „svorio“. 

Tačiau pridėję prierašą !important prie antrojo aprašo galėtume nurodyti, kad antrojo aprašo color savybės reikšmė yra svarbesnė, negu nurodyta kituose aprašuose.

#antraste h1 { color: green !important; }


Bėda ta, kad vieną kartą panaudojus !imporant CSS faile, prierašą gali tekti pridėti ir kitur, kadangi taip sudarkome numatytąją CSS hierarchiją. 

#blokas #antraste h1 { color: blue; } 
 
#blokas #antraste h1 { color: green; }


Aukščiau pateikti du aprašai yra lygiaverčiai, todėl naršyklė panaudos tą, kuris nurodytas paskutinis. Taigi visumoje matysime, kad dabar antraštės teksto spalva yra žalia. wink
 
napalias 2009-06-09 11:51:39
napalias bet kai css failas nera didelis, tai parasyti important kur kas patogiau nei kurti nau css faila ie narsyklems.

ir important veikia tada kai tokia seka

width:180px!important; 
width:200px; 

standartines narsykles paima important o toliau net nebeziuri;
o ie nesuteikia pirmenybes important ir toliau ima antra reiksme;
 
mcq 2009-06-07 13:24:01
mcq Ačiū, pravertė. :]
 

Skaitomiausi straipsniai

Spalvos dizaine

Nekyla nė abejonės, kad spalvos tiek spaudos, tiek tinklalapio dizaine yra vienas iš svarbiausių rodiklių, lemiančių gražų dizainą. Atrodo, jog spalvas galima rinktis pagal nuožiūrą, tačiau, deja, tai ne visada pasiteisina. Pastaruoju metu pastebėjau, kokias klaidas daro pradedantieji savamoksliai dizaineriai, todėl galiausiai nusprendžiau aprašyti tas klaidas ir paaiškinti, kaip jų išvengti.

Esminė problema yra ta, kad kai kurie žmonės sugeba sukurti patrauklius dizaino elementus, juos tvarkingai išdėstyti, tačiau neteisingų spalvų pasirinkimas sugadina, sudarko vaizdą, o tai nulemia galutinį sukurto dizaino rezultatą.

Todėl pasistengsiu kuo detaliau išnarplioti dažnai pasitaikančias spalvų derinimo klaidas, šiek tiek apžvelgsiu bendrąją spalvos teoriją ir, žinoma, pateiksiu tiek tinkamų, tiek netinkamų spalvų derinių pavyzdžių.


Tinklalapių kūrimas: pirmieji žingsniai

Žmonės, kurie domisi interneto naujovėmis, lankomais tinklalapiais, portalais, anksčiau ar vėliau iškelia sau klausimą — kaip sukurti tinklalapį? Klausimas iš pirmo živlgsnio atrodo visiškai „nekaltas“ ir gana paprastas: be išvedžijimų, nesuprantamų žodžių ar mokslinių terminų. Tačiau asmenims, kuriems šis klausimas užduodamas (čia, manau, nereikia nė minėti, kad žmogus, kurio klausiama, išmano tinklalapių kūrimo subtilybes), visiškai nesuprantama, kaip galima užduoti tokį naivų klausimą?

Stebitės, kodėl tai naivus klausimas? Jeigu taip, tada pamąstykite, iš ko susideda tinklalapio kūrimo procesas. Deja, nemanykite, kad solidų, gerą tinklalapį galima sukurti per kelias valandas ar dienas. Reikia turėti aiškią internetinės svetainės plėtros viziją, patirties, įgūdžių, daug laiko, kolegų (partnerių) ar draugų, kurie padėtų kurti tinklalapį, motyvacijos ir, be abejo, reikia turėti tikslą.

Išvardijau nemažai reikalavimų (raktažodžių), pagal kuriuos turėtumėte orientuotis kurdami tinklalapį, tačiau vien mano tuščiažodžiavimas nepadės jums sužinoti apie interneto svetainių kūrimo aspektus, todėl šiame straipsnyje aptarsiu kiekvieną sritį atskirai, pasidalinsiu savo patirtimi ir nukreipsiu jus teisinga linkme.


Technikos apvalintų kampų elementams kurti

Naršydami įvairiuose tinklalapiuose tikriausiai pastebėjote, kad vis dažniau yra naudojami užapvalinti kampai (angl. rounded corners): juos galima pamatyti tinklalapio komentarų blokuose, viršutinėse/apatinėse (header/footer), turinio (content) blokuose bei kitose struktūros dalyse.

Apvalintų kampų elementus sukurti galima ne vienu, o keletu būdų. Elementų kampams apvalinti kartais naudojama JavaScript kalba, tačiau rimčiausia priežastis, kodėl šis būdas nelabai populiarus, — išjungtas JavaScript palaikymas kai kurių lankytojų naršyklėje. Taip pat galime sukurti apvalintus elementus panaudoję pakopinių stilių (CSS) savybes ir paveikslėlius. Dar kitas būdas — kuris yra ateities sprendimas — CSS3. Tai nauja pakopinių stilių specifikacija, kuri dar nėra užbaigta, tačiau kai kurios naršyklės jau palaiko keletą naujosios specifikacijos savybių.

Taigi, panagrinėsime dažniausiai taikomus sprendimus elementų kampų apvalinimui: pavyzdžius, pliusus ir minusus; palyginsime aptariamus sprendimus.


Naujausi komentarai straipsniuose

autorius Martyna

http://img294.imageshack.us/i/kodel.png/

va man taip nesusiligiuoja, ka daryti?

autorius krienas

"Antrinės spalvos gaunamos sumaišius dvi pirmines spalvas, o tretinės — sumaišius dvi antrines." Šiaip jau, pagal schemą, tretinė spalva gaunama sumaišius ne dvi antrines, o pirminę su antrine: yellow(primary)+green(secondary)=yellow-green(tertiary).

O šiaip geras, išsamus lietuviškas straipsnis, ačiū autoriui; kam sunkiau su anglų kalba, yra Alvydo Jonaičio knyga "Spalvotyra".

autorius adijux

Daugumai žmonių atvirkščiai: jie nenori, kad nuorodos atsidarytų naujame lange. Manau, kad jeigu žmogus nori, kad nuoroda atsidarytų naujame lange, jis paspaus dešinįjį pelės mygtuką ir pasirinks „Open link in a new window“ arba „Open link in a new tab“. wink

autorius Christine

šeip aš dirbu su paprastomis programomis kaip notepad++ ir keletu kitų. norėčiau sužinot gal yra kitokių programuų su kuriom taip pat nesunku dirbti, bet turi daugiau galimybių ir nemokamai galima parsisiųsti? ar tai tik svajuko dramblionė?

autorius Christine

straipsnis geras tikrai, tik man užkliuvo vienas dalykas. Kai įdedate nuorodas, norėtųsi, kad jos atsidarytų kitame puslapyje, nes paskui sunku rasti kelią atgal, užima laiko arba nesinori giliau naršyti to puslapio į kurį davėte nuorodas.