Avatar billede Mik2000 Professor
21. juli 2012 - 22:34 Der er 10 kommentarer og
1 løsning

Transition og transform

Hej

Jeg er ved at lave en lille chat der skal ligge nede i hjørnet.

Jeg har i den forbindelse 2 spørgsmål:

1: Vil I på nogen måde optimerer/ændre koden (er noget forkert/misforstået)?

2: Jeg vil gerne ved hjælp af transition/transform (CSS3) have den store chatbox til enten at komme op flydende i animation eller fade ind - men kan ikke få det til at virke i min kode

Herunder er min kode (ps er klar over der mangler ting ved html som doctype, titel mv):

------------------------------------------
Index.html
------------------------------------------
<html>
<head></head>
<body>
<div id="div1">Dette er den normale side eller rettere en illustration for det.</div>

<div class="chat" id="chat" onclick="this.className = 'chat2'; document.getElementById('stor_chat').className = 'stor_chat2'">Online support chat - Online</div>

<div class="stor_chat" id="stor_chat">Stor chat<br /><br />
    <span style="cursor:pointer; color:#00F;" onclick="document.getElementById('chat').className = 'chat'; document.getElementById('stor_chat').className = 'stor_chat'">Gør lille</span>
</div>

</body>
</html>

------------------------------------------
css.css
------------------------------------------
body{
    background-color:#06F;
    overflow-y: scroll;
}
#div1{
    background-color: #CCC;
    margin: 0 auto;
    width: 960px;
    min-height: 700px;
}
.chat{
    background-color:#FFF;
    position: fixed;
    bottom: 0px;
    right: 10px;
    width: 200px;
    height: 28px;
    z-index: 99;
    line-height:28px;
    font-family:Arial, Helvetica, sans-serif;
    font-size:12px;
    text-align:center;
    border-top-color:#000;
    border-top-style:solid;
    border-top-width:2px;
    border-left-color:#000;
    border-left-style:solid;
    border-left-width:2px;
    border-right-color:#000;
    border-right-style:solid;
    border-right-width:2px;
    cursor: pointer;
    border-radius: 8px 8px 0px 0px;
}
.chat2{
    display:none;
}
.stor_chat{
    display:none;
    height:1px;
}
.stor_chat2{
    background-color:#FFF;
    position: fixed;
    bottom: 0px;
    right: 10px;
    width: 300px;
    height: 300px;
    z-index: 98;
    padding-right: 8px;
    padding-left: 8px;
    padding-top: 8px;
    box-sizing:border-box;
      -moz-box-sizing:border-box;
      -webkit-box-sizing:border-box;
    font-family:Arial, Helvetica, sans-serif;
    font-size:12px;
    border-top-color:#000;
    border-top-style:solid;
    border-top-width:2px;
    border-left-color:#000;
    border-left-style:solid;
    border-left-width:2px;
    border-right-color:#000;
    border-right-style:solid;
    border-right-width:2px;
    border-radius: 8px 8px 0px 0px;
}
Avatar billede DeeDawg Nybegynder
22. juli 2012 - 00:49 #1
Eftersom CSS3 endnu ikke er en standard og ikke kan forventes at fungere i alle browsere, bør du holde dig til normen og bruge JavaScript (evt. jQuery) til den slags opgaver.

Hvad angår det resterende, så er der da plads til lidt forbedringer. Først og fremmest skal <br /> ikke bruges til at skabe mellemrum, det har vi margin og/eller padding til. Derudover er der ingen grund til at bruge et <span> element for at imitere et normalt link. Du kan bare bruge et helt normalt link, og så gøre som følgende for at fjerne linkets standard funktionalitet:

<a href="#" onclick="document.getElementById('chat').className = 'chat';document.getElementById('stor_chat').className = 'stor_chat';return false">Gør lille</a>

Dette kan ligeledes gøres for din chat knap. Du behøver ikke et <div> element for at kunne style det som en blok. Dette kan også gøres for helt normale links, bare ved at tilføje display: block; eller display: inline-block;. Du bør altid holde dig til de tags som bedst passer til indholdet, for at holde orden på din side.

Så findes der jo også shorthand alternativer til de fleste CSS-properties.

line-height:28px;
font-family:Arial, Helvetica, sans-serif;
font-size:12px;

kan forkortes til

font: 12px/28px Arial, Helvetica, sans-serif;


border-top-color:#000;
border-top-style:solid;
border-top-width:2px;
border-left-color:#000;
border-left-style:solid;
border-left-width:2px;
border-right-color:#000;
border-right-style:solid;
border-right-width:2px;

kan forkortes til

border: 2px solid #000;
border-bottom: none;


padding-right: 8px;
padding-left: 8px;
padding-top: 8px;

kan forkortes til

padding: 8px 8px 0 8px;
Avatar billede scootergrisen Nybegynder
22. juli 2012 - 03:29 #2
Prøv og lav koden om så du i stedet for at bruge 2 x div hvor du skrites til at vise og gemme dem så brug den samme div.

Så kan vi lave en transition bagefter.
Avatar billede Mik2000 Professor
22. juli 2012 - 13:27 #3
Hej

Jeg har nu forsøgt det, men ud over transition mangler er der et problem mere.

For denne linje virker ikke, så længe den ligger inde i den samme div
------
<a href="#" onclick="document.getElementById('chat').className = 'chat'; document.getElementById('content_online').style.display = 'inherit'; document.getElementById('content_chat').style.display = 'none'; return false;">Gør lille</a>
------
Dvs. man kan ikke længere lave boksen lille igen


------------------------------------------
Index.html
------------------------------------------
<html>
<head></head>
<body>
<div id="div1">Dette er den normale side eller rettere en illustration for det.</div>

<div class="chat" id="chat" onclick="document.getElementById('content_online').style.display = 'none'; document.getElementById('content_chat').style.display = 'inherit'; this.className = 'stor_chat'">
    <div id="content_online">
        Online support chat - Online
    </div>
    <div id="content_chat" style="display: none;">
        Stor chat<br /><br />
        <div style="cursor: pointer; color:#00F;" onclick="document.getElementById('chat').className = 'chat'; document.getElementById('content_online').style.display = 'inherit'; this.parrent().style.display = 'none';">Gør lille</div>
    </div>
   
   
</div>
</body>
</html>

------------------------------------------
css.css
------------------------------------------
body{
    background-color:#06F;
    overflow-y: scroll;
}
#div1{
    background-color: #CCC;
    margin: 0 auto;
    width: 960px;
    min-height: 700px;
}
.chat{
    background-color:#FFF;
    position: fixed;
    bottom: 0px;
    right: 10px;
    width: 200px;
    height: 28px;
    z-index: 99;
    font: 12px/28px Arial, Helvetica, sans-serif;
    text-align:center;
    border: 2px solid #000;
    border-bottom: none;
    cursor: pointer;
    border-radius: 8px 8px 0px 0px;
}
.stor_chat{
    background-color:#FFF;
    position: fixed;
    bottom: 0px;
    right: 10px;
    width: 300px;
    height: 300px;
    z-index: 98;
    padding: 8px 8px 0 8px;
    box-sizing:border-box;
      -moz-box-sizing:border-box;
      -webkit-box-sizing:border-box;
    font: 12px Arial, Helvetica, sans-serif;
    border: 2px solid #000;
    border-bottom: none;
    border-radius: 8px 8px 0px 0px;
}
Avatar billede Mik2000 Professor
22. juli 2012 - 13:29 #4
Den virker heller ikke selvom det er en div eller span

Vedr. det med at bruge javascript i stedet for css3, så ved jeg godt det ikke virker i alle, men så vidt jeg kan forstå vises den så bare uden transition i de browsere der ikke understøtter det indtil det kommer med. Så det går nok :)
Avatar billede scootergrisen Nybegynder
22. juli 2012 - 14:09 #5
Avatar billede Mik2000 Professor
22. juli 2012 - 14:19 #6
Tak for det ...... også næsten god.
Problemet er bare at den helst skal blive oppe selvom man tager musen væk fra feltet - dvs. man skal kunne klikke den op og ned.
Avatar billede scootergrisen Nybegynder
22. juli 2012 - 14:41 #7
Jeg har rettet på siden.
Prøv og opdater den.
Avatar billede Mik2000 Professor
22. juli 2012 - 15:57 #8
Så lykkes det - tak for hjælpen

Også tak til dig DeeDawg

Et lille tillægsspørgsmål - blot til hvis I ved det:
1: Er det muligt at lave delay på noget når det kommer ind men ikke når det kører ud?
Avatar billede scootergrisen Nybegynder
22. juli 2012 - 17:49 #9
Avatar billede Mik2000 Professor
22. juli 2012 - 18:12 #10
Tak, men den laver det både når den kører ind og ud
Avatar billede scootergrisen Nybegynder
22. juli 2012 - 22:17 #11
Prøv og læse noget mere om det.
Læs også om animation hvor du kan lave keyframes.
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