Avatar billede nemlig Professor
21. september 2010 - 22:44 Der er 16 kommentarer og
1 løsning

Specialeffekt ved mouseover image

Hejsa.
Jeg leder efter et script/vejledning til en navigationsfunktion på en forside på et site.

Forestil jer en forside, hvor der på midten af siden, vises en firkant med  2 x 2 figurer/billeder. De 4 figurer skal virke som link til nogle undersider.

Ved mouseover skal den "aktive" figur fremhæves, fx ved at den toner mere frem, mens de 3 øvrige nedtones. Samtidig skal der vises en tekstinfo i en div et andet sted på forsiden, som fortæller lidt om den "aktive" figur.

Kan css løse dette?
Avatar billede dwr Nybegynder
21. september 2010 - 22:52 #1
Jeg ved ikke lige med teksten. Det kræver (tror jeg) vist javascript. Hvad fremhævning angår, så kan det gøres ved hjælp af opacity og :hover.

Læsning til hvordan kan findes her:
http://www.w3schools.com/Css/css_image_transparency.asp

Dette er selvfølgelig ikke en løsning på dit problem, men så det lige og tænkte "hjælp til selvhjælp om ikke andet da" :)
Avatar billede showsource Seniormester
22. september 2010 - 00:37 #2
Det skulle lige prøves.
Testet i IE8 og chrome samt firfox

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html><head><title>Js/php gallery</title>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

<style type="text/css">

.imglinkover {
    margin: 40px;
    border: solid black;
    border-width: 1px;
    filter: alpha(opacity=100);
    -moz-opacity: 1.0;
    opacity: 1.0;
        }

.imglinkout {
    margin: 40px;
    border: solid black;
    border-width: 1px;
    filter: alpha(opacity=45);
    -moz-opacity: 0.45;
    opacity: 0.45;
        }

</style>

<script type="text/javascript">

var imgtext = new Array();
imgtext[0] = 'Hold musen over et billede';
imgtext[1] = 'Tekst til billede et';
imgtext[2] = 'Tekst til billede to';
imgtext[3] = 'Tekst til billede tre';
imgtext[4] = 'Tekst til billede fire';


function show(idref,todo) {

    if(img_ref = document.getElementById(idref)) {

    var textref = document.getElementById("tekstref");
    textref.removeChild(textref.firstChild);

        if(todo) {
        img_ref.setAttribute("class", "imglinkover");
        textref.appendChild(document.createTextNode(imgtext[todo]));
        }else{
        img_ref.setAttribute("class", "imglinkout");
        textref.appendChild(document.createTextNode(imgtext[0]));
        }

    }

}
</script>

</head>
<body>


<div style="padding: 4px; text-align: center;">

    <a href="#"><img src="billede_et.jpg" width="150" id="img_1" class="imglinkout" onmouseover="show(this.id,1);"  onmouseout="show(this.id);"></a>
    <a href="#"><img src="billede_to.jpg" width="150" id="img_2" class="imglinkout" onmouseover="show(this.id,2);"  onmouseout="show(this.id);"></a>
    <br />
    <a href="#"><img src="billede_tre.jpg" width="150" id="img_3" class="imglinkout" onmouseover="show(this.id,3);"  onmouseout="show(this.id);"></a>
    <a href="#"><img src="billede_fire.jpg" width="150" id="img_4" class="imglinkout" onmouseover="show(this.id,4);"  onmouseout="show(this.id);"></a>


    <div style="margin-top:  24px;" id="tekstref">Hold musen over et billede</div>


</div>

</body></html>
Avatar billede nemlig Professor
22. september 2010 - 16:02 #3
Sejt....:) Det virker næsten.
Jeg anvender IE8, men alle 4 billeder er nedtonet hele tiden.
I Firefox er alle også nedtonet, men ved mouseover, vises det pågældende billede med fuld styrke.

Ønsket er at alle 4 billeder vises med fuld styrke, og ved mouseover, skal de øvrige 3 nedtones, og billedet med mouseover vises fortsat med fuld styrke.
Det vil være helt perfekt, hvis billedet med mouseover kunne synliggøres endnu mere, fx med en smule zoom.

Og teksten nederst er lige i skabet.
Mange tak foreløbig.
Avatar billede nemlig Professor
22. september 2010 - 16:22 #4
Lille ændring - zoom er ikke afgørende...
Avatar billede showsource Seniormester
22. september 2010 - 18:10 #5
Hmm, ok, og hvor mange bajser vil du så gi' for at få det ændret til ønsket opsætning ? :O)
Og nej, man kan desværre ikke bruge point til noget som helst !

Anyway, ved mouseover, skulle billede gerne være 100% synligt, også i IE ?
Avatar billede nemlig Professor
22. september 2010 - 20:54 #6
Billedet bliver ikke synligt i IE8. Alle 4 billeder er nedtonet - også ved mouseover.

Og jeg giver da gerne en bajer eller 2 :)
Avatar billede showsource Seniormester
23. september 2010 - 07:23 #7
Får du vist teksten i IE ?

Ogdu bor garanteret ikke i Kbh. så det med øllet bliver nok ikke til noget :O()))

Har en masse at lave i dag, men måske jeg prøver noget i aften/i morgen tidlig.

Den tekst som skal vises, er der linieskift i den ?
Eller måske et lille billede ?
Avatar billede nemlig Professor
23. september 2010 - 17:44 #8
Teksterne vises korrekt i både FF og IE8. Linjeskift kan godt blive aktuelt, men <br> kan jeg vel bare skrive sammen med teksten, og det med et lille ikon/billed lyder som en smart ting.
Avatar billede showsource Seniormester
23. september 2010 - 20:35 #9
Den måde mit ex. virker på, vil ikke vise linieskift, heller ikke med br.
Men har fået brygget noget sammen, omend jeg ikke tror det er optimalt.
Det med at forstørre er en mere kringlet sag.
Flg. ex. forstørrer også, men bemærk hvordan det hele rykker sig.

(midlertidig løsning:)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html><head><title>Js/php gallery</title>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

<style type="text/css">

.img_standard {
    margin: 24px;
    border: solid black;
    border-width: 1px;
    filter: alpha(opacity=100);
    -moz-opacity: 1.0;
    opacity: 1.0;
        }

.img_smooth {
    margin: 24px;
    border: solid black;
    border-width: 1px;
    filter: alpha(opacity=35);
    -moz-opacity: 0.35;
    opacity: 0.35;
        }

.tekstbox {
    visibility: hidden;
    display: none;
    font-size: 1.2em;
    font-weight: bold;
    margin-top: 16px;
    padding: 8px;
    }

.maindiv {
    margin: 0px auto;
    padding: 16px;
    width: 440px;
    text-align: center;
        }

</style>

<script type="text/javascript">


function show(idref) {

var textref = document.getElementById("tekst_"+idref);
var allways = document.getElementById("tekst_0");
var img_ref = document.getElementById("img_"+idref);

    if(img_ref && textref && allways) {

    textref.style.display = 'block';
    textref.style.visibility = 'visible';
    allways.style.display = 'none';
    allways.style.visibility = 'hidden';
    img_ref.style.width = 160+'px';

        for(i = 1; i < 5; i++) {

            if(i != idref) {
            var img_other = document.getElementById("img_"+i);
            img_other.setAttribute("class", "img_smooth");
            }

        }

    }

}


function hide(idref) {

var allways = document.getElementById('tekst_0');
var tekst = document.getElementById('tekst_'+idref);
var img_ref = document.getElementById("img_"+idref);

tekst.style.display = 'none';
tekst.style.visibility = 'hidden';

allways.style.display = 'block';
allways.style.visibility = 'visible';
    img_ref.style.width = 150+'px';

    for(i = 1; i < 5; i++) {
    var img_s = document.getElementById("img_"+i);
    img_s.setAttribute("class", "img_standard");
    }

}


</script>

</head>
<body>


<div class="maindiv">

    <a href="#"><img src="billede_et.jpg" width="150" id="img_1" class="img_standard" onmouseover="show(1);"  onmouseout="hide(1);"></a>
    <a href="#"><img src="billede_to.jpg" width="150" id="img_2" class="img_standard" onmouseover="show(2);"  onmouseout="hide(2);"></a>

    <br />

    <a href="#"><img src="billede_tre.jpg" width="150" id="img_3" class="img_standard" onmouseover="show(3);"  onmouseout="hide(3);"></a>
    <a href="#"><img src="billede_fire.jpg" width="150" id="img_4" class="img_standard" onmouseover="show(4);"  onmouseout="hide(4);"></a>

    <div class="tekstbox" style="visibility: visible; display: block;" id="tekst_0">Hold musen over et billede</div>

    <div class="tekstbox" id="tekst_1">Tekst til billede 1</div>
    <div class="tekstbox" id="tekst_2">Noget tekst til billede 2<br />Med et linieskift</div>
    <div class="tekstbox" id="tekst_3">Billede 3</div>
    <div class="tekstbox" id="tekst_4"><img src="billede_fire.jpg" width="60" align="top" style="margin: 8px;">Billede 4 tekst</div>

</div>


</body></html>
Avatar billede showsource Seniormester
25. september 2010 - 09:32 #10
Nåh, fik leget med det:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html><head><title>Js/php gallery</title>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

<style type="text/css">

.img_standard {
    border: solid black;
    border-width: 1px;
    filter: alpha(opacity=100);
    -moz-opacity: 1.0;
    opacity: 1.0;
        }

.img_smooth {
    border: solid black;
    border-width: 1px;
    filter: alpha(opacity=35);
    -moz-opacity: 0.35;
    opacity: 0.35;
        }

.tekstbox {
    visibility: hidden;
    display: none;
    font-size: 1.2em;
    font-weight: bold;
    margin-top: 16px;
    padding: 8px;
    }

.maindiv {
    margin: 0px auto;
    padding: 16px;
    width: 400px;
    min-height: 460px;
    text-align: center;
        }

.spacegif {
    display: none;
    visibility: hidden;
    width: 150px;
    height: 218px;
          }

</style>

<script type="text/javascript">

var img_x = false;
var img_y = false;

function show(idref) {

var textref = document.getElementById('tekst_'+idref);
var allways = document.getElementById('tekst_0');
var spacer = document.getElementById('space_'+idref);
var img_ref = document.getElementById('img_'+idref);

    if(img_ref && spacer && textref && allways) {

    textref.style.display = 'block';
    textref.style.visibility = 'visible';
    allways.style.display = 'none';
    allways.style.visibility = 'hidden';

    var oP = getPos(img_ref);
    img_x = oP.x;
    img_y = oP.y;

        for(i = 1; i < 5; i++) {

            if(i != idref) {
            var img_other = document.getElementById('img_'+i);
            img_other.setAttribute('class', 'img_smooth');
            }

        }


    var css = img_ref.style;
    css.position = 'absolute';
    css.top = (oP.y-2)+'px';
    css.left = (oP.x-4)+'px';
    css.width = 160+'px';

    spacer.style.display = 'block';
    spacer.style.visibility = 'visible';


    }

}


function hide(idref) {

var textref = document.getElementById('tekst_'+idref);
var allways = document.getElementById('tekst_0');
var img_ref = document.getElementById('img_'+idref);

    if(img_ref && textref && allways) {

    textref.style.display = 'none';
    textref.style.visibility = 'hidden';

    allways.style.display = 'block';
    allways.style.visibility = 'visible';

        for(i = 1; i < 5; i++) {
        var img_s = document.getElementById('img_'+i);
        img_s.setAttribute('class', 'img_standard');
        }

    var css = img_ref.style;
    css.top = img_y+'px';
    css.left = img_x+'px';
    css.width = 150+'px';

    }

}

function getPos(o) {

<!-- http://www.eksperten.dk/spm/796670 -->

    for(var _x=_y=0;o!=null;_x+=o.offsetLeft,_y+=o.offsetTop,o=o.offsetParent);
    return {x:_x,y:_y}
}



</script>

</head>
<body>


<div class="maindiv">

    <div style="float: left;">
    <a href="#"><img src="billede_et.jpg" width="150" id="img_1" class="img_standard" onmouseover="show(1);"  onmouseout="hide(1);"></a>
    <img src="spacer.gif" id="space_1" class="spacegif" border="0">
    </div>

    <div style="float: right;"><a href="#">
    <img src="billede_to.jpg" width="150" id="img_2" class="img_standard" onmouseover="show(2);"  onmouseout="hide(2);"></a>
    <img src="spacer.gif" id="space_2" class="spacegif" border="0">
    </div>

    <div style="clear: both;">&nbsp;</div>

    <div style="float: left;">
    <a href="#"><img src="billede_tre.jpg" width="150" id="img_3" class="img_standard" onmouseover="show(3);"  onmouseout="hide(3);"></a>
    <img src="spacer.gif" id="space_3" class="spacegif" border="0">
    </div>

    <div style="float: right;">
    <a href="#"><img src="billede_fire.jpg" width="150" id="img_4" class="img_standard" onmouseover="show(4);"  onmouseout="hide(4);"></a>
    <img src="spacer.gif" id="space_4" class="spacegif" border="0">
    </div>

    <div style="clear: both;">&nbsp;</div>

    <div class="tekstbox" style="visibility: visible; display: block;" id="tekst_0">Hold musen over et billede</div>

    <div class="tekstbox" id="tekst_1">Tekst til billede 1</div>
    <div class="tekstbox" id="tekst_2">Noget tekst til billede 2<br />Og et linieskift</div>
    <div class="tekstbox" id="tekst_3">Billede 3</div>
    <div class="tekstbox" id="tekst_4"><img src="billede_fire.jpg" width="60" align="top" style="margin: 8px;">Billede til 4 tekst</div>

</div>


</body></html>
Avatar billede nemlig Professor
25. september 2010 - 09:44 #11
Waoovvv - det virker perfekt under FF, men IE8 driller lidt, da de øvrige billeder ikke nedtones.... Er det mon nemt løst.

Nu kan jeg da vist ikke nøjes med 2 bajere...:)
Avatar billede showsource Seniormester
25. september 2010 - 13:18 #12
Jeg ved ikke lige du.
Jeg bruger selv IE8 på en xp og win7, og her virker det fint nok.
Det er nok noget setup for IE som hindrer at det virker ?
Avatar billede showsource Seniormester
26. september 2010 - 20:31 #13
Den del der med at forstørre, synes jeg du skal droppe, medmindre det laves i flash.
Avatar billede nemlig Professor
26. september 2010 - 20:50 #14
Ja - det er er heller ikke afgørende. Ærgerligt at det ikke virker korrekt i IE8. Jeg afvikler koden på en localhost-installation (Wampserver). Det kan være at jeg skal prøve at smide det på et webhotel.
Avatar billede showsource Seniormester
27. september 2010 - 11:20 #15
Hmm, tror ikke det vil ændre på det, at koden ligger et andet sted.
Har rodet lidt mere med det, men jeg synes du skal holde dig fra "forstørring"

Her er en div til nedtone billeder.
Og et billede som "billedholder" til forstørring.

Men der er lige lidt bøf.
I FF, hvis man klikker tilbageknappen, vises siden som ved mouseover.
Og i IE "smutter" placering for "billedholder" på billederne til venstre ?
Og hvis man er "hurtig" med musen, bliver "billedholder" og div til nedtoning ved med at være synlig.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html><head><title>Js/php gallery</title>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

<style type="text/css">

.img_solid {
    border: solid black;
    border-width: 1px;
    width: 160px;
    height: 231px;
    cursor: pointer;
        }

.tekstbox {
    visibility: hidden;
    display: none;
    font-size: 1.2em;
    font-weight: bold;
    margin-top: 16px;
    padding: 8px;
    text-align: center;
          }

.maindiv {
    margin: 0px auto;
    padding: 16px;
    width: 400px;
    min-height: 460px;
    text-align: center;
        }

#smoothdiv {
    visibility: hidden;
    display: none;
    position: absolute;
    top: 0px;
    left: 0px;
    filter: alpha(opacity=75);
    -moz-opacity: 0.75;
    opacity: 0.75;
    background-color: white;
    width: 400px;
    min-height: 460px;
    z-index: 5;
          }

#img_holder {
    visibility: hidden;
    display: none;
    position: absolute;
    top: 0px;
    left: 0px;
    background-color: yellow;
    border: solid black;
    border-width: 1px;
    cursor: pointer;
    z-index: 6;
            }

</style>

<script type="text/javascript">

var links = new Array();
links[1] = '/';
links[2] = '/js/exp/';
links[3] = '/js/';
links[4] = '/php/';


function get_id(idref) {

<!-- exp.dk -->

    if (document.all && document.getElementById) {
    return document.all(idref);
    } else if (!document.all && document.getElementById) {
    return document.getElementById(idref);
    } else {
    return false;
    }
}


function getPos(o) {

<!-- http://www.eksperten.dk/spm/796670 -->

    for(var _x=_y=0;o!=null;_x+=o.offsetLeft,_y+=o.offsetTop,o=o.offsetParent);
    return {x:_x,y:_y}
}


function main_XY() {

var divref = get_id('mainbox');

    if(divref && topdiv) {
    xw = divref.offsetWidth;
    yw = divref.offsetHeight;

    var oP = getPos(divref);
    var smoothcss = topdiv.style;

    smoothcss.top = oP.y+'px';
    smoothcss.left = oP.x+'px';
    smoothcss.width = xw+'px';
    smoothcss.height = yw+'px';
    }


}

function show(idref) {

var textref = get_id('tekst_'+idref);
var allways = get_id('tekst_0');
var img_ref = get_id('img_'+idref);

    if(img_ref && textref && allways && spacegif && topdiv) {

    topdiv.style.display = 'block';
    topdiv.style.visibility = 'visible';
    textref.style.display = 'block';
    textref.style.visibility = 'visible';
    allways.style.display = 'none';
    allways.style.visibility = 'hidden';


    var pic = "image_"+idref+ ".jpg";
    spacegif.getElementsByTagName("img")[0].setAttribute("src", pic);

    var oP = getPos(img_ref);
    var imgcss = spacegif.style;
    imgcss.display = 'block';
    imgcss.visibility = 'visible';
    imgcss.top = (oP.y-6)+'px';
    imgcss.left = (oP.x-4)+'px';

    url_id = idref;

    }
}

function go_url() {

    if(links[url_id]) {
    document.location.href=links[url_id];
    }
}

function hide() {

    if(spacegif && topdiv && url_id) {

    var textref = get_id('tekst_'+url_id);
    var allways = get_id('tekst_0');

    textref.style.display = 'none';
    textref.style.visibility = 'hidden';

    allways.style.display = 'block';
    allways.style.visibility = 'visible';

    var imgcss = spacegif.style;
    imgcss.display = 'none';
    imgcss.visibility = 'hidden';

    var divcss = topdiv.style;
    divcss.display = 'none';
    divcss.visibility = 'hidden';
    }

}

window.onload = Function('main_XY()');
window.onresize = Function('main_XY()');
</script>

</head>
<body>


<div class="maindiv" id="mainbox">

    <div style="float: left;">
    <img src="image_1.jpg" id="img_1" class="img_solid" onmouseover="show(1);">
    </div>

    <div style="float: right;">
    <img src="image_2.jpg" id="img_2" class="img_solid" onmouseover="show(2);">
    </div>

    <div style="clear: both;">&nbsp;</div>

    <div style="float: left;">
    <img src="image_3.jpg" id="img_3" class="img_solid" onmouseover="show(3);">
    </div>

    <div style="float: right;">
    <img src="image_4.jpg" id="img_4" class="img_solid" onmouseover="show(4);">
    </div>

    <div style="clear: both;">&nbsp;</div>


</div>

    <div class="tekstbox" style="visibility: visible; display: block;" id="tekst_0">Hold musen over et billede</div>

    <div class="tekstbox" id="tekst_1">Tekst til billede 1</div>
    <div class="tekstbox" id="tekst_2">Noget tekst til billede 2<br />Og et linieskift</div>
    <div class="tekstbox" id="tekst_3">Billede 3</div>
    <div class="tekstbox" id="tekst_4"><img src="image_4.jpg" width="60" align="top" style="margin: 8px;">Billede til 4 tekst</div>


    <div id="smoothdiv">&nbsp;</div>

    <div id="img_holder"><img src="spacer.gif" width="170" height="245" border="0" onmouseout="hide();" onclick="hide();go_url();"></div>


<script type="text/javascript">

var topdiv = get_id('smoothdiv');
var spacegif = get_id('img_holder');

var url_id = false;

</script>
</body></html>
Avatar billede nemlig Professor
02. oktober 2010 - 10:52 #16
Desværre - det fungerer ikke helt. Lad os lukke den her. Jeg har fået en masse inspiration, og arbejder videre på en løsning.
Tusind tak for din store indsats - det er næsten for meget :)

Sender du et svar.
Avatar billede showsource Seniormester
02. oktober 2010 - 20:11 #17
Ja, jeg ved ikke hvorfor det ikke vil virke for dig ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester