Avatar billede kkc Nybegynder
12. august 2006 - 11:39 Der er 8 kommentarer og
1 løsning

dynamisk tekst på et billede

Hej eksperter,

Jeg søger efter en løsning hvor en bruger kan indsætte en vilkårlig tekst, vælge font, farve og fontstørrelse og derefter trykke på en preview funktion - hvor teksten herefter indsættes på et billede.

Et eksempel på denne funktionalitet er jeg blevet 'inspireret' af på http://www.barstekstil.com/eng/a.asp

Kan man lave noget lignende i javascript ?

Er novice i js så jeg skal nok have det lidt ind med 'skeer' :o)
Avatar billede psykochicken Nybegynder
12. august 2006 - 13:40 #1
Her er et lille eksempel du kan lege videre med:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Titel</title>
<script type="text/javascript">
function dosome(id){
var elm = document.getElementById(id);
var inp = document.forms[0];

// indsæt tekst
elm.innerHTML = inp.txt1.value;

// vælg fontstørrelse
elm.style.fontSize = inp.size.value;

//hvis felt er afkrydset - fed skrift
if(inp.fed.checked==true){ elm.style.fontWeight = "bold"; }
else { elm.style.fontWeight = "normal"; }

//vælg farve
elm.style.color = inp.farve.value;
}
</script>
</head>

<body>
<div id="mytxt" style="height:25px;width:250px;border:1px solid;"></div><br><br>
<form onsubmit="dosome('mytxt');return false">
  Skriv tekst:
  <input type="text" name="txt1" size="20"><br>
  Størrelse:
  <select size="1" name="size">
    <option value="14px">14px</option>
    <option value="16px">16px</option>
    <option value="20px">20px</option>
  </select><br>
  Farve:
  <select size="1" name="farve">
    <option value="green">grøn</option>
    <option value="red">rød</option>
    <option value="blue">blå</option>
  </select><br>
  Fed:
  <input type="checkbox" name="fed"><br>
  <input type="submit" value="Indsæt"><br>
</form>
</body>

</html>
Avatar billede kkc Nybegynder
12. august 2006 - 13:58 #2
Kanon !!! - det er lige det jeg søger efter - takker mange gange
Har du et input til hvordan man kunne integrere billeder også. Ideen er den at jeg har nogle forskellige Tshirt designs hvor brugeren selv skal designe deres tekst ind over. Så processen vil være den at man først vælger billede af ønsket Tshirt - derefter indskriver man teksten - og til sidst sender dataene via formen til mig.

(opretter gerne et nyt spørgsmål - hvis ønsket)

Lægger du et svar til dine velfortjente point
Avatar billede psykochicken Nybegynder
14. august 2006 - 14:07 #3
du kunne lave noget i stil med:

Navngivning af billeder: for at få vist t-shirts med den rigtige farve kombineres value fra feltet ttype + tfarve...dvs at for at få vist en grøn Tshirt skal du have et billede, der hedder tshirt_green.gif...osv.

Så skal du bare have lavet "din_send_funktion.php", så indholdet af felterne kan blive sendt.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Titel</title>
<style type="text/css">
#container{
position:relative;
height:300px;
width:300px;
background-image:url('standard_tshirt.gif');
}
#mytxt{
position:absolute;
top:150px;
left:100px;
width:200px;
overflow:hidden;
}
</style>
<script type="text/javascript">
function dosome(){

var con = document.getElementById('container');
var elm = document.getElementById('mytxt');
var inp = document.forms[0];

// indsæt tekst
elm.innerHTML = inp.txt1.value;

// vælg fontstørrelse
elm.style.fontSize = inp.size.value;

//vælg farve
elm.style.color = inp.farve.value;

//hvis felt er afkrydset - fed skrift
if(inp.fed.checked==true){ elm.style.fontWeight = "bold"; }
else { elm.style.fontWeight = "normal"; }


//vælg tshirt type/farve
var t_col = inp.tfarve.options[inp.tfarve.selectedIndex];
con.style.backgroundImage = "url(" + inp.ttype.value + t_col.value + ")";
}

function showit(){
document.forms[0].ttype.value=this.name;
}
</script>
</head>

<body>
<!-- En container med den valgte T-shirt som baggrundsbillede -->
<div id="container">
<!-- En boks til teksten, der placeres så den passer over T-shirten -->
  <div id="mytxt">
  </div>
</div>
<br><br>

<form method="post" action="din_send_funktion.php">
  Vælg T-shirt type:
  <span>
      <img name="tshirt_" src="standard.gif" onclick="showit()" style="cursor:pointer;">
      <img name="tshirt1_" src="t1.gif" onclick="showit()" style="cursor:pointer;">
      <img name="tshirt2_" src="t2.gif" onclick="showit()" style="cursor:pointer;">
      <img name="tshirt3_" src="t3.gif" onclick="showit()" style="cursor:pointer;">
      <img name="tshirt4_" src="t4.gif" onclick="showit()" style="cursor:pointer;">
      <img name="tshirt5_" src="t5.gif" onclick="showit()" style="cursor:pointer;">
      <img name="tshirt6_" src="t6.gif" onclick="showit()" style="cursor:pointer;">
      <img name="tshirt7_" src="t7.gif" onclick="showit()" style="cursor:pointer;">
      <img name="tshirt8_" src="t8.gif" onclick="showit()" style="cursor:pointer;">
      <img name="tshirt9_" src="t9.gif" onclick="showit()" style="cursor:pointer;">
      <img name="tshirt10_" src="t10.gif" onclick="showit()" style="cursor:pointer;">
  </span>
<!-- hidden felt, hvor valget af t-shirttype gemmes og oplysningen kan senere sendes -->
  <input name="ttype" value="tshirt_" type="hidden">
  <br>

  T-shirt farve:
  <select size="1" name="tfarve">
    <option value="green.gif">grøn</option>
    <option value="red.gif">rød</option>
    <option value="blue.gif">blå</option>
  </select><br>


  T-shirt tekst:
  <input name="txt1" type="text" size="20"><br>
 
  Tekststørrelse:
  <select size="1" name="size">
    <option value="14px">str 1</option>
    <option value="16px">str 2</option>
    <option value="20px">str 3</option>
  </select><br>
 
  Farve:
  <select size="1" name="farve">
    <option value="green">grøn</option>
    <option value="red">rød</option>
    <option value="blue">blå</option>
  </select><br>
 
  Fed:
  <input type="checkbox" name="fed"><br>
 
  <input type="button" value="Vis valg" onclick="dosome()"><br>
  <br>

  <input type="submit" value="Bestil T-shirt">
</form>
</body>

</html>

/psc
Avatar billede kkc Nybegynder
14. august 2006 - 15:52 #4
Jamen det er jo bare fantastisk !!!! tusind tak.

Har lagt dit eksempel op på http://www.interbox.dk/tshirt.htm - men der ser ud til at når jeg vælger en tshirt vil 'hovedbilledet' ikke skifte. Desuden forsvinder baggrundsbilledet når jeg skriver en tekst og trykker på knappen 'vis valg'

Har jeg gjort noget forkert her ?
Avatar billede kkc Nybegynder
14. august 2006 - 16:21 #5
Ups... havde ikke fanget at billederne skulle kobles sammen med farvevalget - my fault - sorry. Har lagt en ny version op på samme adresse: Du har egentlig tænkt meget videre end jeg ;o) - jeg havde egentlig tænkt at brugeren skulle klikke på en af tshirt billeder og derefter indskrive tekst. Kan det mon lade sig gøre ?

(er fantastisk glad for dit eksempel - det har virkelig hjulpet mig videre - for ikke at sige næste hele vejen)
Avatar billede kkc Nybegynder
14. august 2006 - 16:42 #6
lige et lille tillægsspørgsmål.... kan man i javascript vælge forskellige skrifttyper ?
Avatar billede psykochicken Nybegynder
15. august 2006 - 02:08 #7
Hvis du mener at den valgte T-shirttype skal vises, så snart der klikkes på en Tshirt og brugeren derpå skal skrive direkte på T-shirten i stedet for et seperat felt kan du gøre sådan:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Vælg T-shirt type</title>
</head>

<body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Titel</title>
<style type="text/css">
#container{
position:relative;
height:297px;
width:269px;
background-image:url('standard_tshirt.jpg');
}
#mytxt{
position:absolute;
left: 79px;
top: 70px;
width: 96px;
height: 39px;
text-align:center;
overflow:hidden;
background:transparent;
border:0px;
}
</style>
<script type="text/javascript">
function dosome(){

var con = document.getElementById('container');
var elm = document.getElementById('mytxt');
var inp = document.forms[0];

// vælg fontstørrelse
elm.style.fontSize = inp.size.value;

// vælg skrifttype
elm.style.fontFamily = inp.stype.value;

//vælg farve
elm.style.color = inp.farve.value;

//hvis felt er afkrydset - fed skrift
if(inp.fed.checked==true){ elm.style.fontWeight = "bold"; }
else { elm.style.fontWeight = "normal"; }

elm.focus();
}
function empty(){ document.getElementById('mytxt').value = "";
}
function showit(pic){
document.forms[0].ttype.value=this.name;
document.getElementById('container').style.backgroundImage = "url(" + pic + ")";
dosome();
}
window.onload = dosome;
</script>
</head>

<body>
<!-- En container med den valgte T-shirt som baggrundsbillede -->
<div id="container">
<!-- En boks til teksten, der placeres så den passer over T-shirten -->
  <input type="text" id="mytxt" size="20">

</div>
<br><br>

<form method="post" action="din_send_funktion.php" onreset="setTimeout('empty();dosome()',100);">
  Vælg T-shirt type:
  <span>
      <img name="tshirt_" src="t1.jpg" onclick="showit(this.src)" style="cursor:pointer;" width="67" height="73">
      <img name="tshirt1_" src="t1.jpg" onclick="showit(this.src)" style="cursor:pointer;" width="67" height="73">
      <img name="tshirt2_" src="t2.jpg" onclick="showit(this.src)" style="cursor:pointer;" width="67" height="73">
      <img name="tshirt3_" src="t3.jpg" onclick="showit(this.src)" style="cursor:pointer;" width="67" height="73">
      <img name="tshirt4_" src="t4.jpg" onclick="showit(this.src)" style="cursor:pointer;" width="67" height="73">
      <img name="tshirt5_" src="t5.jpg" onclick="showit(this.src)" style="cursor:pointer;" width="67" height="73">
      <img name="tshirt6_" src="t6.jpg" onclick="showit(this.src)" style="cursor:pointer;" width="67" height="73">
      <img name="tshirt7_" src="t7.jpg" onclick="showit(this.src)" style="cursor:pointer;" width="67" height="73">
      <img name="tshirt8_" src="t8.jpg" onclick="showit(this.src)" style="cursor:pointer;" width="67" height="73">
    </span>
<!-- hidden felt, hvor valget af t-shirttype gemmes og oplysningen kan senere sendes -->
  <input name="ttype" value="tshirt_" type="hidden">
  <br>
 
  Skrifttype:
  <select size="1" name="stype" onchange="dosome()">
    <option value="Times New Roman">Rimes New Roman</option>
    <option value="Arial Black">Arial Black</option>
    <option value="Comic Sans MS">Comic Sans</option>
  </select><br>
 
  Tekststørrelse:
  <select size="1" name="size" onchange="dosome()">
    <option value="14px">str 1</option>
    <option value="16px">str 2</option>
    <option value="20px">str 3</option>
    <option value="24px">str 4</option>
    <option value="28px">str 5</option>
    <option value="30px">str 6</option>
  </select><br>
 
  Farve:
  <select size="1" name="farve" onchange="dosome()">
    <option value="black">sort</option>
    <option value="white">hvid</option>
    <option value="green">grøn</option>
    <option value="red">rød</option>
    <option value="blue">blå</option>
  </select><br>
 
  Fed:
  <input type="checkbox" name="fed" onclick="dosome()" value="ON"><br>
  <br>

    <input type="reset" value="nulstil"> <input type="submit" value="Bestil T-shirt">&nbsp;

</form>
</body>

</html>

NB: denne løsning kræver skrifttyper, som brugeren må formodes også at have på sin maskine !

...problemet med programmering er, at man ALTID kan tænke videre ;o)

/psc
Avatar billede kkc Nybegynder
15. august 2006 - 15:18 #8
Psykochicken du er dagens helt !!!

Hold kæft det var godt gået - respekt. Tusind tak for det flotte arbejde - du er bare en haj til javascript !! du får lige en karma 'tilmelding' oveni de andre du har i forvejen.

Kan godt være jeg engang i fremtiden melder mig på banen med hvordan skrifttyper så kan integreres - men nu slipper du.

Et svar fra dig og beskedne 200 point fra mig
Avatar billede psykochicken Nybegynder
15. august 2006 - 22:49 #9
Sikke mange fine ord....takker og bukker ;o)
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