Autor Zpráva
Bubák
Profil
V jedné diskusi napsal peta, že:
to je "prasarna" uplne nejvetsi, ktera dela v IE veliky binec, michat do jednoho dagu float a position:absolute/relative
Protože je zájem v tomto tématu a nechtěl jsem příliš rozvíjet OT, udělal jsem to jako nový dotaz

Můj mázor je odlišný:
float + position: relative; jsem párkrát použil a neměl jsem s tím žádný problém
float + position: absolute; tohle jsem párkrát viděl, ale smysl téhle konstrukce mi uniká


float + position: relative - nevidím na tom nic divného, nechám prvek floatovat a kousek si ho posunu. párkrát jsem to dělal s obrázky, abych je měl "hezčeji" umístěné vedle textu.

float + position: absolute; - neznám žádný důvod, proč to použít, protože floatovaný element je vytržen za své pozice, absolutně pozicovaný taky. Pro zajímavost jsem to dneska testnul, ve všech prohlížečích (v Konqueroru jsem to zatím netestoval) se to chová podle očekávání, nefloatuje se, deklarace je zbytečná, ale bez problémů se napozicuje podle deklarace absolutní pozice.
habendorf
Profil
Bubák: No, pokusím se to trochu rozmotat. Tvoje závěry jsou sice celkem správné, cesty kterými k nim docházíš už zas tolik ne.

1) float + position: relative;
nechám prvek floatovat a kousek si ho posunu To není zrovna šťastné řešení, od toho je k dispozici margin.
Jinak ta konstrukce je naprosto běžná, mám floatovaný prvek a potřebuju, aby mi vytvářel souřadnice pro nějaký jiný abs. pozicovaný prvek. Typické použití je např. floatovaný image-replacement. Např. stránku kterou právě čteš bych řešil takto:
do h1 bych dal text "diskuse.Jak psát web.cz" (s odkazem) a udělal tomu image replacement (na to potřebuju pro h1 dát position:relative), celý h1 bych floatnul doleva, vyhledávací form floatnul doprava, pod to cleaner a další obsah.

2) float + position: absolute; je blbost, ale floatovaný element je vytržen za své pozice, absolutně pozicovaný taky už není až tak pravda. Floatovaný element stále ovlivňuje své okolí, zatímco element s position:absolute funguje stejně, jako kdybys na něj z rubu přilepil žvejkačku a někam ho plácnul, hlava nehlava překryje co je pod ním a basta. Tak se float nechová.
Bubák
Profil
habendorf
nechám prvek floatovat a kousek si ho posunu
> To není zrovna šťastné řešení, od toho je k dispozici margin
Nenapadlo mně, že i toho docílím jednoduše marginem.

Díky za upřesnění a poučení.
Knopi
Profil
Souhlasím s Habendorfem, jen:

nechám prvek floatovat a kousek si ho posunu
> To není zrovna šťastné řešení, od toho je k dispozici margin


A co když nebudu chtít, aby mi prvek s marginem ovlivňoval okolí, tak je lepší použít position: relative; - jednou se mi tato choulostivá situace přihodila, a jak jsem si liboval... :o)
peta
Profil *
habendorf
Tak to te musim zklamat, ale
float + position: relative; je prasarna, ktera dela zcela specificke problemy. Nemuzu ti rici presne jake, protoze to uz min 3 roky nepouzivam. Proste vim, ze kdyz jsem to nekde pouzil, tak pak uz jsem se s tim nedomluvil v ruznych prohlizecich. Neco jineho je dat to kazde zvlast do prvku. Ale dat to do 1 je fujka, ver mi.
Bubák
Profil
peta
Se zcela specifickým problémem jsem se nepotkal v žádném z prohlížečů, ve kterých jsem "prasarnu" testoval. pokud to nepoužíváš už min 3 roky, tak z toho, možná nesprávně usuzuji, že to nemuselo fungovat v IE 4, Netscape.7x a Opera 6.0, které v té době mizely ze scény. Věřím ti.
Věř tomu, že v dnes používaných prohlížečích jsem s tím neměl specifické, ba ani nespecifické problémy.
karm
Profil *
Nechci otravovat, ale kdyby někdo mohl mrknout na tuhle stránku a vyjádřit se ohledně těch malých obrázků - jestli je to dobře, špatně, a jak to udělat správně (viz tato diskuze ohledně float a position). Znovu opakuju, že se to teprve snažím naučit a každá kvalifikovaná rada mi pomůže.
karm
Profil *
pardon, odkaz na stránku : http://zskajov.aspweb.cz/index2.htm
Plaváček
Profil
peta

float + position: relative; je prasarna

Není to žádná prasárna a není problém dát cokoliv do 1 prvku, když člověk ví, co dělá. Habendorf celou problematiku shrnul stručně a přesně a na Péťovy výkřiky, nedoložené žádnými fakty, prosím, neberte zřetel.
Plaváček
Profil
karm

Tipnul bych, že za tvůj problém může peekaboo bug http://ie-brouci.dero.name/peekaboo.html a povětšinou postačí pro IE nastavit nějakou šířku pro nadřazený prvek (vesměs postačí nastavit width=100% pro IE pomocí podmíněného komentáře. Tuším, že na tvém webu je to blok s class="textjust", ale nezkoumal jsem kod podrobně).
Gappa
Profil
Já dnes narazil na něco trochu odlišného:

Potřeboval jsem do floatnutých náhledů obrázků umístit checkbox, který sloužil k výběru (tak to bylo v grafickém nárhu).


<div>
<input type="checkbox" />
<img src="..." alt="" />
</div>



div {
float: left;
position: relative;
}

div input {
position: absolute;
top: 5px; /* ci jakkoliv jinak */
left: 5px;
}

img {
width: 100px; /* take jen jako priklad */
height: 100px;
}


Jaký na to máte názor? Mě to příde vcelku normální - pokud zde můj uvedený příklad obsahuje nějakou chybu, tak vězte, že jsem asi něco zpackal teď, protože jinak mi to fungovalo v IE/FF/Opera :)

Ještě se tam někde poflakoval odkaz (obaloval obrázek), ale to není až tak podstatné.
Knopi
Profil
Jaký na to máte názor?

Podobná konstrukce se běžně používá, když člověk ví co dělá, jak už říkal Plaváček, ten kdo tady tvrdil, že je to prasárna, nevěděl co povidá.

V podstatě, když člověk chce vytvořit svůj vlastní souřadnicový systém libovolnému prvku například vlastností absolute, tak mu ani nic jiného nezbývá, než nastavit nadřazenému bloku position: relative;. Tento nadřazený blok pak může mít pevné rozměry, float...atd. Kdybychom mu nenastavili position: relative;, pak by ten vnořený libovolný prvek se vstahoval k celé stránce na ploše a ne k bloku, v kterém bysme ho chtěli mít.
habendorf
Profil
Knopi: pak by ten vnořený libovolný prvek se vstahoval k celé stránce na ploše

Jen to upřesním, vztahoval by se k nejbližšímu nadřazenému prvku s nastavenou position.
Knopi
Profil
habendorf: Jo..., to je přesné. :o)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0