z-index, overflow, position probléma
Sziasztok CSS Guruk!
Serettem volva egy olyan képnézegetőt készíteni, ami nem dob fel egy ablakot hanem hover állapotra csak felnagyítja a képet, de a következő problémába ütköztem: nézd meg itt.
Mint láthatjátok a képeket eltakarják az utánna következő képek, és a befoglaló doboz szélei is.
Hogy miért ezt a módszert választottam azon ne vitatkozzunk, a lényeg hogy lehet e egyáltalán megoldást találni a problémára js alkalmazása nélkül, vagy javascript hekket kell alkalmazzak.
Sajnos tudom hogy a problémát a keret overflow:hidden, és scroll -ja okozza de mivel a környezet megköveteli ezt kell alkalmazzam.
Mint már mondtam első körben szeretném tiszta css el megoldani a problémát!
Hiába állítgatom a z-indexet nem akarja a tutit.
Akinek van bármi ötlete várom.
css:html:
■ Serettem volva egy olyan képnézegetőt készíteni, ami nem dob fel egy ablakot hanem hover állapotra csak felnagyítja a képet, de a következő problémába ütköztem: nézd meg itt.
Mint láthatjátok a képeket eltakarják az utánna következő képek, és a befoglaló doboz szélei is.
Hogy miért ezt a módszert választottam azon ne vitatkozzunk, a lényeg hogy lehet e egyáltalán megoldást találni a problémára js alkalmazása nélkül, vagy javascript hekket kell alkalmazzak.
Sajnos tudom hogy a problémát a keret overflow:hidden, és scroll -ja okozza de mivel a környezet megköveteli ezt kell alkalmazzam.
Mint már mondtam első körben szeretném tiszta css el megoldani a problémát!
Hiába állítgatom a z-indexet nem akarja a tutit.
Akinek van bármi ötlete várom.
css:
body {
background:#FFFFFF none repeat scroll 0 0;
color:#3E362F;
font-family:verdana,Trebuchet MS,arial;
font-size:11px;
margin:0;
padding:0;
z-index: 0;
}
.content{
margin: 50px auto;
width: 366px;
display: block;
padding: 4px 0 0 4px;
height: 394px;
overflow-y: scroll;
overflow-x: hidden;
z-index: 1;
border: 1px solid #000;
}
.content .picc{
position: relative;
float: left;
margin: 0 4px 4px 0;
padding: 0;
width: 112px;
height: 112px;
z-index: 1;
}
.content .picc a{
position: absolute;
top: 0;
left: 0;
display: block;
border: 4px solid #EAE7D2;
margin: 0;
padding: 2px;
width: 100px;
height: 100px;
text-align: center;
z-index: 1;
background: #fff;
}
.content .picc a.active{
border: 4px solid #FF5511;
}
.content .picc a img{
width: 100px;
height: 100px;
border: 0 none;
z-index: 1;
}
.content .picc a:hover{
display: block;
position: absolute;
top: -50px;
left: -50px;
border: 4px solid #708E0C;
width: 200px;
height: 200px;
z-index: 10
}
.content .picc a:hover img{
width: 200px;
height: 200px;
}
<div class="content">
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
<div class="picc">
<a href="javascript:void(0);"><img alt="" src="pic_medium.gif" /></a>
</div>
</div>
z-index
akkor még csak a probléma
ha a .picc pozícionálását
egyébként a megoldás sztem tök egyszerű, csak nem sikerül rájönnöm. na mind1 majd később jót röhögök magamon :)
Szerk.: egyébként CSS-ben a vége felé az utolsó z-index után lemaradt a pontosvessző, itt ".content .picc a.active" pedig az active elé véletlen pontot raktál kettőspont helyett... de ez csak mellékes
absolute / z-index
példa
ui: persze arra ne is számíts hogy IE6-7 alatt működni fog, már az overflow-t se tudja lekezelni.
ie
ilyesmi hatást szeretnél
ez sem jó
Ez még el is menne, tény hogy
.
nem lehetséges
szerk: Gábor múltkori blogbejegyzésének szellemében én azt mondom, hogy az ie6 és ie7 használók ellesznek enélkül a "feature" nélkül is, úgyhogy kiegészítettem a kódot egy conditional commenttel (megnéztem most ie7 alatt és ott sem jó, ezért nem csak a 6-osra érvényesek azok a css szabályok), így legalább nem rontja el a layoutot, viszont használható marad teljes mértékben. azoknak az a elemeknek a href tulajdonságaival azért remélem csinálsz majd valamit (például belinkeled a nagy képet), főleg ha már szemantikusabbra csináltam a html-t.
ettől függetlenül nekifuthatsz a js-nek is. :)
Nem rossz
A te megoldásod egész jó, még kicsit próbálkozok js el, de ha nem lessz szebb marad a te javaslatod.
A listaelem jó ötlet, tényleg okosabb megoldás DOM tekintetében, és annyira nem zavar a csak befelé nagyobbodó kép sem.
Ami inkább zavaró hogy IE7 is problémás, még meglátom mi lessz.
És természetesen lessz jelentőssége a href-nek is nem véletlenül választottam az <a> teget.
Köszi a megoldást, lehet hogy ez marad.
javascript
CSS-ben ha valamelyik böngésző nem kompatibilis valamilyen utasításra, akkor nincs mit tenni. Lehet, hogy ezt a problémát valahogy kiszenvedik neked, de holnap belefutsz egy másik problémába, holnapután egy megint másikba
gratulálok
ehhez nincs is nagyon mit hozzátenni. remélem te a webfejlesztést nem "merészeled" a szakmádnak nevezni.