Súgó - Keresés - Tagok - Naptár
Teljes változat: Pozícionálási megoldások
PC WORLD Segélyvonal > WEBSAROK > Webszerkesztés, programozás > CSS
Oldalak: 1, 2
google
Üdv mindenkinek!

Elkezdtem az első, táblázat nélküli honlapomat készíteni, amelyben minden pozícionálást CSS-ben valósítok meg.
Jól haladok, de egy apró esztétikai hibára lettem figyelmes:

Ha két input-mező van egymás alatt (jelen esetben két text-típusú), akkor az IE a kettő közt mindig kb. 2px-lel nagyobb helyet hagy, mint a Firefox és az Opera. Próbáltam már margin-t, paddinget, mindent. sad.gif
Arra emlékszem, hogy ez mindig is gond volt, de táblázatokkal sikerült kiküszöbölni a megjelenítése eltérést.

A kódom:
KÓD
Azonosító:&nbsp;&nbsp;<input type="text"></p>
     <p>Jelszó:&nbsp;&nbsp;<input type="password"></p>


És a CSS:

KÓD
.inbox p    {
     margin: 5px;
     font-size: 10px;
     cursor: default;
     }
.inbox input {
     width: 120px;
     height: 16px;
     background-color: #09548C;
     font-family: Verdana, Helvetica, Sans-serif;
     font-size: 9px;
     color: #FFFFFF;
     border-top-width: 1px;
     border-right-width: 1px;
     border-bottom-width: 1px;
     border-left-width: 1px;
     border-top-style: solid;
     border-right-style: solid;
     border-bottom-style: solid;
     border-left-style: solid;
     border-top-color: #000033;
     border-right-color: #000033;
     border-bottom-color: #000033;
     border-left-color: #000033;
     }
Gigah3rtz
Amúgy, ha nem szeretnél táblázatot itt van a dobozolás:


CSS Weblabor/Dobozolás
google
Igen, köszi, természetesen már olvastam....
Nincs is semmi gondom, csak ez... cool.gif
Ajnász
Próbáld meg, hogy nem rakod bekezdésekbe (mert nem oda vakló), hanem mondjuk egy egyszerű sortöréssel teszed új sorba. Ezután pusztán az input mezőket manipuláld a css-el. Nem tudom, hogy mi lesz az eredménye, de próba...
google
IDÉZET(Ajnász @ 2005. Jun 09., Thu 17:40)
Ezután pusztán az input mezőket manipuláld a css-el.

Azt hiszem, már próbáltam. sad.gif
Adjak neki margin-t, paddinget? roll.gif
Ajnász
Persze. Azt mindenképpen változtasd, hiszen az okozhatja csak a távolságot. Elsősorban margót változtasd, mivel padding az az input mező belső kitöltését kell szabályozza, tehát, hogy a bele írt szöveg milyen távolságra legyen a mező keretétől. A margó pedig a mező körülötti részt jelöli, ahová más elem nem "férkőzhet" be.
google
weep.gif Sajnos a különbség ugyanúgy megmaradt.
tzoli
IDÉZET(Lex @ 2005. Jun 12., Sun 23:13)
Szisztok!

Hogyan tegyem odébb kb. egy tab pozícióval a kiírást, mint a szövegszerkeztőkben?
A sor elején van egy szöveg, és utána némi kihagyással szeretnék írni. Valahogy így:

KÓD
Szöveg1                  Szöveg2

Ha lehet mellőzném a táblázatot.
tzoli
IDÉZET(Ajnász @ 2005. Jun 12., Sun 23:29)
Css, margin.
google
Mérget veszek, hogy már Ti is találkoztatok a következő problémával.
Megint az IE. twisted.gif

Szóval azt csinálja, hogy a bekezdések között (p) egy többpixeles helyet hagy, amit nem tudok eltűntetni. Margin, padding mind 0px függőleges irányban, ennek ellenére a kihagyás megvan. roll.gif

Mozilla és Opera nem csinál ilyet. Biztos meg lehet oldani ezt is valahogy, de hogyan?
Ajnász
A között mit jelent? Felette, alatta, mellette? Milyen tagben vannak a bekezdések?
google
A bekezdések (tehát a <p></p> közötti szövegek) egymáshoz viszonyított helyzete az IE-ben több pixellel tágabb, mint a többi böngészőben. Azaz csinál oda egy rést.
Azt hiszem, alattuk. roll.gif

Van egy divem, azon belül pedig a már említett bekezdések, szóval semmi extra. blink.gif

Itt a kód szóban forgó részlete:

KÓD
.bodleft    {
     float: left;
     margin: 0px;
     padding: 0px;
     width: 450px;
     }
.bodleft p    {
     margin: 0px;
     text-align: left;
     padding: 0px 16px 0px 16px;
     font-size: 11px;
     color: #000033;
     line-height: 18px;
     text-indent: 11px;
     cursor: default;
     background-image: url(images/pback.jpg);
     }


Esetleg a line-height kavarhat be? roll.gif
u.i.: Megnéztem, és nem az.
Ajnász
Ha jól értem, akkor a letter-spacing és/vagy a word-spacing tulajdonságot akarod megváltoztatni. Bár nem tudom, hogy az IE hogyan reagál rá.
google
Nem érted jól. sad.gif
Mindkettő egyébként jól működik IE alatt.

A bajom az, hogy a bekezdésekbe rakott szövegek helyzete egymástól viszonyítva több pixellel nagyobb távolságra esik IE-ben, mint a többiben Függőleges irányban. Tehát a szövegrészek - bekezdések (tehát nem a betűk, nem a szavak) között nagyobb a távolság, mint kellene. Mintha padding vagy margin lenne ott, de nincs.
Most kb. tíz pixel távolság van közöttük, IE-ben meg 14, vagy valami ilyesmi. roll.gif
Ajnász
Akkor annak marginnak kell lennie. Nézd meg, hogy nincs-e felüldefiniálva valahol. Változtasd meg a margó értékét úgy, hogy biztosan látható legyen, hogy hat-e rá a tulajdonság.
google
Most már falra mászom. mad.gif

Semmi margin nincs függőlegesen beállítva. Hatszor ellenőriztem végig.
Ezután megpróbáltam egy képet betenni az egyik bekezdés helyett. Ez már a végső elkeseredésemben történt meg. twisted.gif

És olyat láttam, amit még soha:
Az IE szépen egymás alá rendezte őket, semmi rés, ugyanúgy, mint a Mozillában.
Kivéve az utolsót: ott megvolt a rés. Tehát négy normális egy alatt, legalul pedig egy réses.

És a legelképesztőbb az egészben az, hogy a kódjuk olyannyira ugyanaz, hogy az egész oldal adatbázisból van ciklussal kiíratva. Tehát nem is értem, mi alapján azonosítja az utolsó bekezdést, amit 9 pixellel lejjebb helyez el, mint kellene. (De ezt nagyon következetesen, minden oldalon így csinálja.) blink.gif

Mi ez, ha nem X-Akta? sad.gif weep.gif
(ja, és megjegyzem, páratlan számmal nem is szoktam pozícionálni, tehát ezt a 9-et sem értem, honnan veszi...)

Később:
Valamilyen szinten rájöttem, mi a hiba.
Az előző kódban nem látható "szovala" osztályú, 4 pixel magas bekezdést húzza ki az IE 9px magasságúra, azért is kellett bele a no-repeat tulajdonság. Csak nem értem, miért húzza ki. Ha egy max-height-ot rakok bele (4px), akkor visszaugrik 0-ra, de ha belekerül egy min-height is (szintén 4px), akkor újra 9. angry.gif
Egyértelmű, hogy a magasságot nem szereti. Márpedig azt valahogy meg kell adnom. annoyed.gif
google
smile.gif ole.gif harhar.gif
Na mégis megoldottam, noha az alapprobléma mindeddig ismeretlen, és vélhetően az is marad.
Kapott az említett bekezdés egy overflow: hiddent, és most minden úgy jelenik meg, ahogy annak meg kell jelennie. tongue.gif arrow.gif IE
Kovács Gyula (MiniDisc)
Ezt a kódot:

KÓD
<div style="position: absolute; width: 150px; height: 19px; z-index: 1; left: 107px; top: 804px"


hogyan tudom css-ben megadni? Persze, úgy, hogy működjön is?
google
Gyakorlatilag úgy, hogy egy-az-egyben átírod css-fájlba. tongue.gif

KÓD
div { position: absolute; width: 150px; height: 19px; z-index: 1; left: 107px; top: 804px; }


És a divnek adj egy azonosítót, amivel csak arra hivatkozhatsz.
Kovács Gyula (MiniDisc)
Köszi. Sejtettem, mert én is erre gondoltam, csak az a baj, hogy nem igazán akaródzik működni ... hmm.gif
google
A z-index és a left, top mire kell neked? Biztosan menne azok nélkül is... ani_wink.gif
Persze függően attól, hogy mit szeretnél csinálni. Hátha meg lehet oldani nélkülük is, máshogy.
Kovács Gyula (MiniDisc)
Még mindig a szöveg elhelyezéssel küzdök. A fenti megoldás, mint kiderült jó lenne, ha a böngészők egyformán értelmeznék. (A rétegeket a Firefox kb. 15 pix-el lejjeb teszi) A floatos megoldás meg eléggé félresikerült ... Valahogy nem jön össze ez a diven belüli jobbra-balra külön szöveg pozícionálás ...

A z-index ahhoz kellett volna, hogy rá lehessen "rétegelni" a div területe fölé a keretet, és így az ebben lévő szöveget ...
google
Úgy mondanám inkább, hogy az IE teszi 15px-lel feljebb... twisted.gif tongue.gif

Az aljáról: lehet, hogy nem tűnik elsőre túl elegáns megoldásnak, de én megmondom, mit csinálnék: az egyik oldali szöveget (pl. a copyright-ot, ami úgysem változik) betenném a háttérbe. biggrin.gif Viccen kívül.

Egyébként a float-os rész miért nem megy? Mit csinál / nem csinál jól?
Kovács Gyula (MiniDisc)
A hátteres részre én is gondoltam, de mivel 1px széles a háttérkép ... biggrin.gif Jó, tudom, szerkesszem át ...

A floatra megbolondul, duplázza az alap divet.

De ha van jó megoldásod erre, azt örömmel venném ... ani_wink.gif
google
De mire pontosan? smile.gif
Az alsó sávra gondolsz? Arra ez. twisted.gif

Na, figyelj. Itt van egy apró részlet a jelenleg fejlesztés alatt álló és szigorúan titkos új odalamból: ani_wink.gif

KÓD
.tart { width: 600px; } // Ez a fő keret, ami mindent tartalmaz.
.left { float: left; width: 480px; } // Ez a bal oldali szövegdoboz.
.right { float: right; width: 120px; } // Ez a jobb oldali szövegdoboz.


A .tart osztályú diven belül van a két másik div, egymás mellett, egyik a bal oldalon, a másik a jobbon.
Kovács Gyula (MiniDisc)
Köszönöm, kipróbálom. smile.gif
Kovács Gyula (MiniDisc)
Ésss igen!
Köszönöm! worship.gif

Ami hiányzott, az a margin: 0px a p definíciójához, illetve a szélesség, és magasság megadása a lebegő diveknek!

Mégegyszer köszönöm! ani_wink.gif
Kovács Gyula (MiniDisc)
KÓD
#bottommenu {
width: 100%;
height: 30px;
background: url(images/tbmenu.gif);
margin: 0px;
text-align: center;
vertical-align: middle;
}

 #btmleft {
 float: left;
 width: 18px;
 height: 11px;
 margin: 9px 0px 0px 8px;
 padding: 0px;
 border: 0px;
 }
 
   #btmleft a {
   width: 18px;
   height: 11px;
   background: url(images/emailoff.gif) no-repeat;
   text-decoration: none;
   }
   
   #btmleft a:hover {
   background: url(images/emailon.gif) no-repeat;
   }


A bottommenu egy div, a weboldal alján. Ebbe került egy float div - btmleft (bottommenuleft) - aminek van egy alapértelmezett háttere a-val (link) megadva, illetve ugyanígy a: hover-nek szintén egy háttér. IE-ben, és Firefoxban is működik, de Firefoxban nem a teljes kép látszik, hanem a kép kb. 1-2 pixelnyi széles része. Mitől lehet ez? roll.gif

A html kód:

KÓD
<div id="bottommenu">
    <div id="btmleft"><a href="mailto:minidiscweb@gmail.com?subject=Weboldal" title="E-mail küldése a weboldal tulajdonosának.">&nbsp;</a></div>
  </div>


A weboldal itt található. Lsd. alja bal oldal.
google
Hiába nézem, semmilyen linket nem látok. sad.gif
Kovács Gyula (MiniDisc)
Nyomd meg az F5-öt Firefoxnál.

Egy boritékot kell látnod alul a verziószám felett. Internet Explorerrel látszik szépen. Csak Firefoxnál nem jó.

Arra viszont rájöttem már, hogyha beteszek összesen 5 db
KÓD
&nbsp;
-ot, akkor Firefoxnál is látszani fog, de akkor meg a pozíció csúszik el ...

Az !important sem használt ... próbálkoztam berakni a &nbsp; helyére egy átlátszó 18*11-es gif képet, de úgy meg teljesen eltünt a boriték mindkét böngészőben ...
google
Ez jó kérdés. Próbálkozz meg egy padding: 0-val. roll.gif
Kovács Gyula (MiniDisc)
De láttad a boritékot?

Ahol nem látsz padding, vagy margin 0-t, ott azért nincs, mert a betétele sem okozott pozitív változást. Ezért kivettem, feleslegesen ne legyen ott.
google
Ja értem. Úgy látom Foxival a borítékot, ahogy mondtad.
CSS-képváltással őszintén szólva még soha nem foglalkoztam, úgyhogy erre nem tudok semmilyen konkrét megoldást adni. weep.gif
Kovács Gyula (MiniDisc)
Megoldva: a float div szélességét növelnem kellett 12 px-el, és a margin-right-nak -12 px-et kellett adnom. Ne kérdezd, miért így működik - míg így is van 2 px eltérés a Firefox, és az Internet Explorer között, de még mindig jobb, mint az eddigi 12.

Már csak egy kérdés: melyik az elegánsabb a "térköz" beállítására:
<img src="images/email.gif" alt=""> <- ez, vagy
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <- ez?
google
Egyik sem elegáns, de én inkább a szöveges verziót használom. blush.gif
"Nagy" weboldalaknál inkább a gifspaceres megoldásokat láttam. Szerintem felesleges újabb kép, ráadásul sokkal bonyolultabb módosítani, mint a non-breaking space-t.
Kovács Gyula (MiniDisc)
Na, megoldva. Halgattam rád, space került végül is a html-ben. (Így 24 bájttal kisebb lett a weboldal, és kb. 100 bájttal kisebb lett a css is biggrin.gif )

Betettem a letöltés lapba is, ott is szépen megy. Mégegyszer köszi a segítséget.
google
Nagyon szívesen, örülök, ha segíthettem. smile.gif
google
Formokat szeretnék egymás mellé helyezni, természetesen táblázat nélkül. A formok csak gombot és hidden inputokat tartalmaznak, azaz a két gombot szeretném valahogyan egymás mellett látni. Vajon hogy'? roll.gif
Kovács Gyula (MiniDisc)
Első körben azt javasolnám, amit Te is nekem:
biggrin.gif

Csinálni egy div-et, ebbe két div float opcióval és ezekbe a div-ekbe form. Beállítása már az ismert módon css-el.
google
Látod, ez eszembe sem jutott... mindjárt kiderítem, hogy ér-e annyit egyáltalán az egész. twisted.gif ani_wink.gif
google
A probléma adott: van egy divem, amiben két másik div van, float left és right tulajdonságokkal, tehát két oszlopot képeznek. A bal oldali divbe szeretnék tenni még egyet, float right-tal, tehát illeszkedve a jobb széléhez.

A gond az, hogy a float ebben az esetben semmit sem ér. Így maradt a top left pozícionálás, ámde: mivel az egész weblap középre van rendezve, absolute értéket adva a positionnek nem lehet megoldani, hiszen a böngészőablak átméretezésekor más helyre kerül a div. Így position relative-val próbálkozom, ami ugye a szülőobjektumához viszonyítja a helyzetét. Ez már fix - Firefoxban és Operában, de az IE kétszer olyan messze teszi a szélétől, mint kellene (tehát ez sem jöhet így szóba).

Milyen megoldás lehet még? annoyed.gif
Charizard
Semmilyen. Mivel a float egy lebegő tulajdonság, függ a szülő div szélességétől. Innetől ha a böngésző ablak átméreteződik, az is "mozog". Sajnos csak a table megoldást tudom ebben a helyzetben ajánlani a két oszlopnak, és ebbe a diveket. Nekem sem jött össze csak divvel a dolog. Egy teljes napot próbálkoztam különböző megoldásokkal és kereséssel, de megnyugtató, szép, és tökéletes megoldást a table adott. Egy harmadik alternatíva az lehet még, hogy esetleg az IE-re beállítani a css-t (bár ebben az esetben ez nehéz lesz, mivel az IE sajnos valamiért "tolja" a floatolt diven belüli float tulajdonságot (ne kérdezd, miért), vagy még a marginnal lehetne játszani, tehát a bal oldali divbe kerülő divet IE-ben marginnal beállítani, és a kész beállításokat IE hacként menetni egy külön css fájlba.
google
Áh, akkor inkább table-lel. annoyed.gif Köszönöm, így legalább látom, mire nem érdemes pocsékolni az időt. Már megint az IE. angry.gif
Kovács Dávid ( Davs )
CSS - Weboldal táblázatok nélkül !
google
Igen, de a jelek szerint még nincs mindenre megoldás. sad.gif
Oke
Kép
Szerintetek egy ilyen szerkezetű honlapot, hogyan tudok csinálni? Nem értek a CSS-hez. Ezzel szerintem lehet. Nem?
Garono
Igen, lehet. smile.gif
Oke
Hogyan tudnék nekiállni?
Garono
Kezdj el tanulni CSS-t:
Weblabor - CSS alapjai I.-VII.
Weblabor - táblázat nélküli oldalfelépítés ani_wink.gif
atzs
Sziasztok!

Hogyan lehetne egy div-et úgy a böngészőablak aljára pozícionálni, hogy ha átméretezem az ablakot, akkor is ott legyen?

(Nehezebb verzió: Legyen a böngészőablak alján, ha a fölötte levő box nem ér el addig, különben legyen a lap alján).

Köszönöm előre is az ötleteket!
Ez a tartalom egy lebutítottváltozata. A teljes változat képekkel kiegészült megtekintéséhez kérünk, kattints ide.