Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ikkunan avaaminen & siirtäminen

Sivun loppuun

MIB [01.08.2009 16:29:45]

#

Aloin tässä tekemään uutta ulkoasu, kuvilla. Nyt minulla on muutama kuva, mitä painamalla tiettyyn kohtaan pitäisi ilmestyä kuvallinen laatikko, jossa on tekstiä. Tätä laatikkoa pitäisi pystyä myös siirtämään.
Esimerkkinä vasen alareuna "Habbo" -kuva http://habborator.org
Koitin tuolta noita JS tiedostoja tonkia, mutta oli kaikki kirjoitettu putkeen, niin en viitsinyt saada selvää niin suurista tiedostoista.

Ps. Tässä pitää myös olla se "Close" kohta, kuten tuolla Habboratorissa.

Teuro [01.08.2009 19:05:52]

#

css määrite display voisi olla oikea hakusana. Esimerkiksi js koodin avulla toteutettu yksinkertainen koodi.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fi" xml:lang="fi">
	<head>
		<title>Display</title>
		<script type="text/javascript">
			function muutaTilaa(elementti){
				nakyvilla = document.getElementById(elementti);

				if(nakyvilla.style.display == 'block'){
					nakyvilla.style.display = 'none';
				}else{
					nakyvilla.style.display = 'block';
				}
			}
		</script>
	</head>
	<body>
	<a href="javascript:muutaTilaa('piilossa')">Muuta</a>
	<div id="piilossa" style="display: block;">
		<p>Tekstiä</p>
	</div>
	</body>
</html>

MIB [01.08.2009 21:15:32]

#

Kiitos avusta. Nyt pitäisi saada vielä se siirtely mahdollisuus. Jos sivussa on kolme diviä: yläosa, keskiosa ja alaosa, niin miten saan niin, että kun yläosa-divistä ottaa kiinni, niin tätä voi siirtää?

Grez [01.08.2009 21:20:12]

#

Javascriptillä. Kannattaa ehkä tutustua johonkin valmiiseen kirjastoon, esim. jQuery ennemmin kuin alkaa ihan alusta asti itse tekemään. (tai no riippuu tietysti tekeekö vaan tekemisen vuoksi vai pitääkö saada jotain aikaseksikin)

MIB [02.08.2009 10:32:48]

#

<script>
var dragapproved=false
var minrestore=0
var initialwidth,initialheight
var ie5=document.all&&document.getElementById
var ns6=document.getElementById&&!document.all

function iecompattest(){
return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function drag_drop(e){
if (ie5&&dragapproved&&event.button==1){
document.getElementById("dwindow").style.left=tempx+event.clientX-offsetx+"px"
document.getElementById("dwindow").style.top=tempy+event.clientY-offsety+"px"
}
else if (ns6&&dragapproved){
document.getElementById("dwindow").style.left=tempx+e.clientX-offsetx+"px"
document.getElementById("dwindow").style.top=tempy+e.clientY-offsety+"px"
}
}

function initializedrag(e){
offsetx=ie5? event.clientX : e.clientX
offsety=ie5? event.clientY : e.clientY
document.getElementById("dwindowcontent").style.display="none"
tempx=parseInt(document.getElementById("dwindow").style.left)
tempy=parseInt(document.getElementById("dwindow").style.top)

dragapproved=true
document.getElementById("dwindow").onmousemove=drag_drop
}

function loadwindow(url,width,height){
if (!ie5&&!ns6)
window.open(url,"","width=width,height=height,scrollbars=1")
else{
document.getElementById("dwindow").style.display=''
document.getElementById("dwindow").style.width=initialwidth=width+"px"
document.getElementById("dwindow").style.height=initialheight=height+"px"
document.getElementById("dwindow").style.left="30px"
document.getElementById("dwindow").style.top=ns6? window.pageYOffset*1+30+"px" : iecompattest().scrollTop*1+30+"px"
document.getElementById("cframe").src=url
}
}


function closeit(){
document.getElementById("dwindow").style.display="none"
}

function stopdrag(){
dragapproved=false;
document.getElementById("dwindow").onmousemove=null;
document.getElementById("dwindowcontent").style.display=""
}

</script>
<div id="dwindow" style="position:absolute;cursor:move;display:none" onMousedown="initializedrag(event)" onMouseup="stopdrag()" onSelectStart="return false">
<div align="right" style="background-color:navy"><img src="close.gif" onClick="closeit()"></div>
<div id="dwindowcontent" style="height:100%">
<iframe id="cframe" src="" width=100% height=100%></iframe>
</div>
</div>

<script>
if (ns6) window.onload=new Function('loadwindow("testi.html",400,400)')
else
loadwindow("testi.html",400,400)
</script>

Tälläisen löysin, mutta se ei toimi ihan halutulla tavalla. Tämä hakee toisen sivun, ja näyttää tässä ikkunassa, kun sen pitäisi näyttää esimerkiksi teksti, mikä on johonkin diviin kirjoitettu. Toinen huonopuoli on se, että sisältö häviää, kun tätä koittaa siirtää.

jo123 [02.08.2009 13:38:35]

#

Googletappas drag and drop javascript, niin löytyy muutamiakin esimerkkejä.

Smuliii [02.08.2009 13:47:28]

#

Jotain tälläistä siis etsit: http://highslide.com/#examples ?

peg [02.08.2009 13:56:30]

#

Olisiko tästä apuja.

<HEAD>

<SCRIPT LANGUAGE="JavaScript">

<!-- Begin
N = (document.all) ? 0 : 1;
var ob;
function MD(e) {
if (N) {
ob = document.layers[e.target.name];
X=e.x;
Y=e.y;
return false;
}
else {
ob = event.srcElement.parentElement.style;
X=event.offsetX;
Y=event.offsetY;
   }
}
function MM(e) {
if (ob) {
if (N) {
ob.moveTo((e.pageX-X), (e.pageY-Y));
}
else {
ob.pixelLeft = event.clientX-X + document.body.scrollLeft;
ob.pixelTop = event.clientY-Y + document.body.scrollTop;
return false;
      }
   }
}
function MU() {
ob = null;
}

if (N) {
document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
}
document.onmousedown = MD;
document.onmousemove = MM;
document.onmouseup = MU;
//  End -->
</script>
</HEAD>

<BODY>

<div id="p" style="position:absolute;left:50;top:300;">
<img src=../pics/pata.gif name="p">
</div>

<div id="r" style="position:absolute;left:50;top:350;">
<img src=../pics/ruutu.gif name="r">
</div>

<div id="c" style="position:absolute;left:100;top:300;">
<img src=../pics/risti.gif name="c">
</div>

<div id="h" style="position:absolute;left:100;top:350;">
<img src=../pics/hertta.gif name="h">
</div>

<div id="a" style="position:absolute;left:50;top:200;">
<img src=../pics/pa.gif name="a">
</div>

<div id="b" style="position:absolute;left:50;top:250;">
<img src=../pics/ru.gif name="b">
</div>

<div id="d" style="position:absolute;left:100;top:200;">
<img src=../pics/ri.gif name="d">
</div>

<div id="e" style="position:absolute;left:100;top:250;">
<img src=../pics/he.gif name="e">
</div>

<div id="x" style="position:absolute;left:50;top:100;">
<img src=../pics/pa.gif name="a">
</div>

<div id="y" style="position:absolute;left:50;top:150;">
<img src=../pics/ru.gif name="b">
</div>

<div id="z" style="position:absolute;left:100;top:100;">
<img src=../pics/ri.gif name="d">
</div>

<div id="q" style="position:absolute;left:100;top:150;">
<img src=../pics/he.gif name="e">
</div>
klikkaa jotakin maata, vedä ja pudota haluamaasi paikkaan.<br>
Käytäthän IE 7 selainta.

tsuriga [02.08.2009 21:49:04]

#

MIB kirjoitti:

Nyt pitäisi saada vielä se siirtely mahdollisuus. Jos sivussa on kolme diviä: yläosa, keskiosa ja alaosa, niin miten saan niin, että kun yläosa-divistä ottaa kiinni, niin tätä voi siirtää?

jQuerystä tuli mieleen sortable:

<html>
 <head>
  <title>jQuery UI Sortable</title>
  <script type="application/javascript" src="js/jquery-1.3.2.min.js"></script>
  <script type="application/javascript" src="js/jquery-ui-1.7.2.custom.min.js"></script>
  <script type="application/javascript">

$(function() {
  $("body").sortable({ opacity: 0.6 });
});

  </script>
  <style type="text/css">

.box {
    background-color: lightgrey;
    outline: grey dotted thin;
    margin: 1em;
}

  </style>
 </head>
 <body>
  <div class="box" id="header">
   <h1>Header</h1>
   <p>Foo</p>
  </div>
  <div class="box" id="content">
   <p>Content</p>
  </div>
  <div class="box" id="footer">
   <span>Footer</span>
  </div>
 </body>
</html>

MIB [03.08.2009 12:15:50]

#

Tälläisen löysin, ja vähän muokkasin:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Javascript Drag and Drop Example.</title>

<style type="text/css">
<!--
.vidFrame { position: absolute; display: none; background-color: #ffdead; border: 1px solid #ffffff; width: 60%; height: 40%;}
a:link { color: white; text-decoration: none;}
a:visited { color: white; text-decoration: none;}
a:hover { color: white; text-decoration: none;}
a:href { color: white; text-decoration: none;}
body { background-color: black; }
.move { cursor: move;}
-->
</style>

<script language="JavaScript" type="text/javascript">
<!--
   function moveHandler(e){
      if (e == null) { e = window.event }
      if (e.button<=1&&dragOK){
         savedTarget.style.left=e.clientX-dragXoffset+'px';
         savedTarget.style.top=e.clientY-dragYoffset+'px';
         return false;
      }
   }

   function dragHandler(e){
      var htype='-moz-grabbing';
      if (e == null) { e = window.event; htype='move';}
      var target = e.target != null ? e.target : e.srcElement;
      orgCursor=target.style.cursor;
      if (target.className=="vidFrame") {
         savedTarget=target;
         target.style.cursor=htype;
         dragOK=true;
         dragXoffset=e.clientX-parseInt(vidPaneID.style.left);
         dragYoffset=e.clientY-parseInt(vidPaneID.style.top);
         document.onmousemove=moveHandler;
         document.onmouseup=cleanup;
         return false;
      }
   }

   function avaa(vidId) {
      if (vidPaneID.style.display=='block') {
         vidPaneID.style.display='none';
         vidPaneID.innerHTML='';
      } else {
         vidPaneID.style.display='block';
         vidPaneID.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" class="move" onmousedown="dragHandler(e)"><tr width="100%"><td bgcolor="navy" width="100%"><div style="float: right;"><a href="javascript:avaa()">Sulje</a>&nbsp;</div></td></tr></table>';
         var vidstring ='MoiMoi';
         vidPaneID.innerHTML+=vidstring;
      }
   }

   function cleanup(e) {
      document.onmousemove=null;
      document.onmouseup=null;
      savedTarget.style.cursor=orgCursor;
      dragOK=false;
   }
   document.onmousedown=dragHandler;
//-->
</script>
</head>
<body>
<A HREF="javascript:avaa()">Avaa ikkuna t&auml;st&auml;!</A>
<div id='vidPane' class='vidFrame'></div>
<script language="JavaScript" type="text/javascript">
<!--
   var savedTarget=null; // The target layer (effectively vidPane)
   var orgCursor=null;   // The original Cursor (mouse) Style so we can restore it
   var dragOK=false;     // True if we're allowed to move the element under mouse
   var dragXoffset=0;    // How much we've moved the element on the horozontal
   var dragYoffset=0;    // How much we've moved the element on the verticle
   vidPaneID = document.getElementById('vidPane'); // Our movable layer
   vidPaneID.style.top='50px';                     // Starting location horozontal
   vidPaneID.style.left='50px';                    // Starting location verticle
//-->
</script>
</body>
</html>

Nyt vain on sellainen ongelma, että pitäisi saada tehtyä niin, että vain tuosta navyn värisestä tablesta voisi siirtää koko höskää. En ole siinä onnistunut.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta