Pereiti prie turinio

CSS klausimas dėl margin.


Rekomenduojami pranešimai

Turiu tokį div:

<div id="tooplate_middle">

		<h1>BE ACTIVE<span>with the best coffee</span></h1>

		<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ut lorem id mauris cursus pellentesque. Donec lobortis magna at orci blandit ac lobortis ipsum vestibulum.</p>

		<a href="#"><span>+</span> More</a>

	</div>

 

CSS:

#tooplate_middle {
width: 900px;
height: 220px;
padding: 30px 45px;
margin: 0 auto;
color: #c5dcea;
font-size: 20px;
}

#tooplate_middle h1 {
font-weight: normal;
font-family: sans-serif;
font-size: 50px;
color: white;
padding-top: 30px;
letter-spacing: 3px;
text-shadow: 1px 1px 1px #555;
}

#tooplate_middle h1 span {
margin-left: 30px;
font-size: 30px;
color: orange;
}

#tooplate_middle p {
margin-top: 10px;
font-family: sans-serif;
font-size: 20px;
}

#tooplate_middle a {
text-decoration: none;
color: white;
font-family: sans-serif;
font-weight: bold;
}

#tooplate_middle a span {
color: orange;
}

 

Tarkime noriu, kad <a> būtų per 20px žemiau nuo <p>, bandžiau ties tooplate_middle_a įvesti margin-top: 20px; , bet jokio efekto nedavė. Tada pabandžiau tooplate_middle_p įvesti margin-bottom: 20px ir suveikė - nuoroda pasislinko 20px į apačią. Noriu paklausti, kodėl veikė tik antras būdas, nors man jie atrodo vienodi.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

"<p>" kadangi esas teksto "tag" automatiskai gauna margin-bottom tam tikra skaiciu sugeneruota narsykles. Tad resetinus margin-bottom ant <p> i margin-bottom:0px; ir dedant ant <A> MARGIN viskas veiks intuitiviai. Sitokiems dalykams labai padeda reset.css. Ivesk reset.css i "Google" ir rasi atitinkamus failus.

 

Gilinantis i problema:

Margin atitraukia nuo elemento be jo margin. PVZ: <p> sukuria aplink save dezute tam tikro dydzio o papildomi margin atitraukia ta dezute nuo kitu elementu. Tavo atveju kai dejai ant <a> margin-top:20px tau reikejo deti didesni skaiciu (25px ar daugiau) ir butu veikia kadangi <p> jau turi tam tikra skaiciu margin-bottom (apie 20px).

 

 

Jeigu nori isitikint su savo debug (firebug ar google chrome inspectorium) uzdek pelyte ant p tago kur dom view(visas html matosi) ir pamatysi zemiau geltona ar raudona elemento pratesima ( tai margin ).

 

Sekmes :)

 

 

 

Turiu tokį div:

<div id="tooplate_middle">

		<h1>BE ACTIVE<span>with the best coffee</span></h1>

		<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ut lorem id mauris cursus pellentesque. Donec lobortis magna at orci blandit ac lobortis ipsum vestibulum.</p>

		<a href="#"><span>+</span> More</a>

	</div>

 

CSS:

#tooplate_middle {
width: 900px;
height: 220px;
padding: 30px 45px;
margin: 0 auto;
color: #c5dcea;
font-size: 20px;
}

#tooplate_middle h1 {
font-weight: normal;
font-family: sans-serif;
font-size: 50px;
color: white;
padding-top: 30px;
letter-spacing: 3px;
text-shadow: 1px 1px 1px #555;
}

#tooplate_middle h1 span {
margin-left: 30px;
font-size: 30px;
color: orange;
}

#tooplate_middle p {
margin-top: 10px;
font-family: sans-serif;
font-size: 20px;
}

#tooplate_middle a {
text-decoration: none;
color: white;
font-family: sans-serif;
font-weight: bold;
}

#tooplate_middle a span {
color: orange;
}

 

Tarkime noriu, kad <a> būtų per 20px žemiau nuo <p>, bandžiau ties tooplate_middle_a įvesti margin-top: 20px; , bet jokio efekto nedavė. Tada pabandžiau tooplate_middle_p įvesti margin-bottom: 20px ir suveikė - nuoroda pasislinko 20px į apačią. Noriu paklausti, kodėl veikė tik antras būdas, nors man jie atrodo vienodi.

Redagavo freepeeG
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dezutes aukstis tiesiogiai proporcingas font-size; Ir dezutes ilgis priklauso nuo display. Default <p> display:block; tai 100% auksciau herakijos esancio containerio (dazniausiai div). O margin priklauso nuo narsykles. Del to patariu naudoti reset.css ar panasiai, kad tiesiog viska liaudiskai sakant "nunulintu". PVZ: H1-H6 turi margin-top ir margin-bottom ir gana didelius tai reset.css nunulina ir viskas vyksta intuitiviai. O siaip naudok debug.

Man asmeniskai geriausiai Google Chrome. Paspausk kita peles mygtuka ant norimo elemento ir pasirink "Inspect ...." ir pamatyti debug visa. :)

Aišku.

 

Minėjai: <p> sukuria aplink save dezute tam tikro dydzio

 

Ar yra koks standartas norint sužinoti konkretų dydį ar čia priklauso nuo naršyklės ir pan?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

"<p>" kadangi esas teksto "tag" automatiskai gauna margin-bottom tam tikra skaiciu sugeneruota narsykles. Tad resetinus margin-bottom ant <p> i margin-bottom:0px; ir dedant ant <A> MARGIN viskas veiks intuitiviai. Sitokiems dalykams labai padeda reset.css. Ivesk reset.css i "Google" ir rasi atitinkamus failus.

 

Gilinantis i problema:

Margin atitraukia nuo elemento be jo margin. PVZ: <p> sukuria aplink save dezute tam tikro dydzio o papildomi margin atitraukia ta dezute nuo kitu elementu. Tavo atveju kai dejai ant <a> margin-top:20px tau reikejo deti didesni skaiciu (25px ar daugiau) ir butu veikia kadangi <p> jau turi tam tikra skaiciu margin-bottom (apie 20px).

 

 

Jeigu nori isitikint su savo debug (firebug ar google chrome inspectorium) uzdek pelyte ant p tago kur dom view(visas html matosi) ir pamatysi zemiau geltona ar raudona elemento pratesima ( tai margin ).

 

Sekmes :)

 

siūlau neklaidinti žmonių, jei pats nežinai.

 

Margin atitraukia nuo elemento be jo margin. PVZ: <p> sukuria aplink save dezute tam tikro dydzio o papildomi margin atitraukia ta dezute nuo kitu elementu. Tavo atveju kai dejai ant <a> margin-top:20px tau reikejo deti didesni skaiciu (25px ar daugiau) ir butu veikia kadangi <p> jau turi tam tikra skaiciu margin-bottom (apie 20px).

 

Taip, jei nenaudojant reseto jokio, p po defaultu turi marginą. BET. Ir tu manai, kad a marginas collapsina su p marginu todėl ir neveikia? Vat paimk, pamėgink uždėti tą savo minimą didesnį margin anchorui - tarkim 50px, 100px ar 1000px - ar veiks? Neveiks. Ir čia nieko bendro nėra su kažkokiais naršyklės CSS defaultais :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 savaičių...

siūlau neklaidinti žmonių, jei pats nežinai.

 

 

 

Taip, jei nenaudojant reseto jokio, p po defaultu turi marginą. BET. Ir tu manai, kad a marginas collapsina su p marginu todėl ir neveikia? Vat paimk, pamėgink uždėti tą savo minimą didesnį margin anchorui - tarkim 50px, 100px ar 1000px - ar veiks? Neveiks. Ir čia nieko bendro nėra su kažkokiais naršyklės CSS defaultais :)

 

Tiesiog issiskaityk ka sakau. Ir isidek i jsfiddle ir suprasi :) As kalbu apie jo varianta..

Ir ne marginai collapsina.. Marginai isvis skaiciuojami nuo block elementu. <a> yra inline default.. Tai pats labai klaidini zmogu :). Tiesiog bandau paaiskint zmogui paprastais zodziais. Gi esme ne pasirodyt kuo protingesniu ,o padet. :)

Redagavo freepeeG
Nuoroda į pranešimą
Dalintis kituose puslapiuose

https://jsfiddle.net/nwzkadkp/

 

Jei kyla problemos su linkais dažnai padeda display block, tik turėk omeny, kad padarius a block level elementu jis automatiškau užims 100% pločio, tad greičiausiai reikės ir width taisyklės.

Redagavo Saruncikas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tiesiog issiskaityk ka sakau. Ir isidek i jsfiddle ir suprasi :) As kalbu apie jo varianta..

Ir ne marginai collapsina.. Marginai isvis skaiciuojami nuo block elementu. <a> yra inline default.. Tai pats labai klaidini zmogu :). Tiesiog bandau paaiskint zmogui paprastais zodziais. Gi esme ne pasirodyt kuo protingesniu ,o padet. :)

 

O tai ką tu čia parašei? Cituoju:

 

Tavo atveju kai dejai ant <a> margin-top:20px tau reikejo deti didesni skaiciu (25px ar daugiau) ir butu veikia kadangi <p> jau turi tam tikra skaiciu margin-bottom (apie 20px).

 

Jo atveju, marginą ant <a> jis galėjo nors ir 156264584896px dėti, jis vistiek neveiktų.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...