Avatar billede scuttlebutt Nybegynder
06. august 2001 - 15:37 Der er 12 kommentarer og
1 løsning

Sidelæns scroll (med OnMouseOver)

Hej!

Jeg forsøger at få en bred HTML tabel til at kunne scrolle på tværs, men kender kun <DIV scroll:auto> tricket.

Hvordan slipper jeg uden om standard Windows-scrollbaren, så tabellen i stedet rykker sig, når man holder musen henover et stykke grafik?

Venlig hilsen Scuttlebutt.
Avatar billede jakoba Nybegynder
06. august 2001 - 15:44 #1
som du er inde på kan du bruge mouseover og java script:

<a href=\"java script:void(0)\"
  onmouseover=\"window.timeHandle=setInterval(\'scrollBy(10,0)\',30);\"
  onmouseout=\"clearInterval(window.timeHandle);\"><img src=\"dingrafik.gif\"></a>

mvh JakobA
Avatar billede jakoba Nybegynder
06. august 2001 - 15:50 #2
som skrevet ovenfor scrolle det det vindue du har linket i. Det kan være irriterende når grafikken siver uf fra under musepointeren.
normalt bruger man en anden ramme:  parent.denandenramme.scrollBy( ... );
men jeg mener også du kan bruge en div direkte:
                              document.all[\'ditdivnavn\'].scrollBy( ... );
noget usikker, så test.
Avatar billede scuttlebutt Nybegynder
06. august 2001 - 15:53 #3
Jeg er ikke nogen haj til JavaScript, så jeg spørger lige:

Skal der være en funktion, der hedder \"void\", eller er ovenstående kode alt, hvad jeg behøver?

Og så lige: \"window\" i  \"window.timeHandle\" - refererer det til hele browservinduet?

Foreløbig tak!
Scuttlebutt.
Avatar billede scuttlebutt Nybegynder
06. august 2001 - 15:54 #4
jeg havde ikke set dit svar #2, så jeg går straks i gang! :-)
Avatar billede jakoba Nybegynder
06. august 2001 - 16:01 #5
både  void() og scrollBy() er peredefineret i window objektet i javascript. Så du behøver ikke skrive yderligere kode.
Det springene punkt er om en DIV er såmeget et \'window-objekt\' at det har scrollBy() defineret. Jeg tror ikke det er det i NS4.7, så der skal der nok et layer til
Avatar billede scuttlebutt Nybegynder
06. august 2001 - 16:14 #6
Jeg har fået den til at acceptere mit DIV ID i stedet for \"Window\" i \"window.timeHandle\", men kan ikke umiddelbart slippe for scrollbaren i min <DIV>;
Skriver jeg <DIV... scroll:auto> ignorerer den JavaScript-funktionen, og skriver jeg <DIV... scroll:none> virker JavaScriptet, men påvirker hele browservinduet, og ikke kun <DIV>\'en...
Avatar billede jakoba Nybegynder
06. august 2001 - 16:35 #7
Ups. du skal IKKE ændre i adresseringen af timeHandle. den skal ligge i hele dokumentets vindue. Det er kun addresseringen af scrollBy(...) der skal ændres i.

Men det er vist desværre ikke det der får det til at scrolle forkert.

Olebole har lavet et script meget tæt på det du ønsker. Måske du kan descifrere hvad det er jeg har forkert. (han bruger ikke funktionen scrollBy() men direkte ændring af postion variablene (se funktionerne getT og scrollUp/Down i:
http://www.olebole.f2s.com/scroller/
til sideværts skulle det være:
ie4          document.all.content.style.pixelLeft;
nn4          document.contentClip.document.content.left;
dom          document.getElementById(\"content\").style.left);
}

Ellers må vi blot håbe Olebole kommer forbi her.

mvh JakobA
Avatar billede scuttlebutt Nybegynder
06. august 2001 - 16:48 #8
Nu har jeg indsat følgende kode i min side:
  onmouseover=\"window.timeHandle=setInterval(\'document.all.galleri.scrollBy(10,0)\',30);\"
  onmouseout=\"clearInterval(window.timeHandle);\"><img src=\"dingrafik.gif\"></a>

-hvor galleri. er ID\'et på den <DIV> der skal scrolle. Men \"Der opstod fejl på siden!\"... Ved du hvorfor?
Avatar billede scuttlebutt Nybegynder
06. august 2001 - 17:08 #9
På http://www.dhtmlshock.com/scrollers/APScrollableArea/default.asp findes den lodrette version af den scroll-type, jeg søger.

Jeg opretter gerne et nyt spørgsmål til 300 pts, hvis nogen kan modellere dette script om til at scrolle sidelæns!
Avatar billede jakoba Nybegynder
06. august 2001 - 17:18 #10
Lad være med det. 85 er rigeligt når du har et script der blot skal konverteres.

hang on...
Avatar billede jakoba Nybegynder
06. august 2001 - 17:51 #11
Så er der noget derhenaf:
http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp95707.html
men det ser ud til at jeg ikke kan specificere bredden i det svrollende område til at være bredere end brugerens vindue. Det betyder at teksten klemmes sammen og flyder nedenud af det viste areal hvis ikke der er plads nok.

Jeg ved ikke hvordan jeg kan komme udenom det problem.
Anybody ?
Avatar billede scuttlebutt Nybegynder
08. august 2001 - 11:57 #12
Nu er set lykkedes at få fingre i det rette script. Jeg poster det her til hjælp for andre.
Tak til dig, Jakoba!

--

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
<style type=\"text/css\"> 
#divSimpleScroller1Control{position:absolute; width:40; left:330; top:10; z-index:1; text-align: right}
#divSimpleScroller1Container{position:absolute; width:320; height:240; overflow:hidden; top:10; left:10; clip:rect(0,320,240,0); font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; font-size: 11px}
</style>
<script language=\"JavaScript\">
//
// begin revised absolutely positioned simple scroller object scripts
// Extension developed by David G. Miles
// Dreamweaver Extensions available from: http://www.z3roadster.net/dreamweaver/
// Original Simple Scroll code developed by Aaron Boodman
// dHTML Scripts available from: http://www.youngpup.net/
//
ypSimpleScroll.prototype.scrollVerticallyUp = function() { this.startScroll(90) }
ypSimpleScroll.prototype.scrollVerticallyDown = function() { this.startScroll(270) }
ypSimpleScroll.prototype.scrollWest = function() { this.startScroll(180) }
ypSimpleScroll.prototype.scrollEast = function() { this.startScroll(0) }
ypSimpleScroll.prototype.startScroll = function(deg, speed) {
if (this.aniTimer) window.clearTimeout(this.aniTimer)
this.overrideScrollAngle(deg)
this.speed = speed ? speed : this.origSpeed
this.lastTime = (new Date()).getTime() - this.y.minRes
this.aniTimer = window.setTimeout(this.gRef + \".scroll()\", this.y.minRes)
}
ypSimpleScroll.prototype.endScroll = function() {
this.aniTimer = window.clearTimeout(this.aniTimer)
this.speed = this.origSpeed
}
ypSimpleScroll.prototype.overrideScrollAngle = function(deg) {
deg = deg % 360
if (deg % 90 == 0) {
var cos = deg == 0 ? 1 : deg == 180 ? -1 : 0
var sin = deg == 90 ? -1 : deg == 270 ? 1 : 0
} else {
var angle = deg * Math.PI / 180
var cos = Math.cos(angle)
var sin = Math.sin(angle)
sin = -sin
}
this.fx = cos / (Math.abs(cos) + Math.abs(sin))
this.fy = sin / (Math.abs(cos) + Math.abs(sin))
this.stopH = deg == 90 || deg == 270 ? this.scrollLeft : deg < 90 || deg > 270 ? this.scrollW : 0
this.stopV = deg == 0 || deg == 180 ? this.scrollTop : deg < 180 ? 0 : this.scrollH
}
ypSimpleScroll.prototype.overrideScrollSpeed = function(speed) {
this.speed = speed
}
ypSimpleScroll.prototype.scrollTo = function(stopH, stopV, aniLen) {
if (stopH != this.scrollLeft || stopV != this.scrollTop) {
if (this.aniTimer) window.clearTimeout(this.aniTimer)
this.lastTime = (new Date()).getTime()
var dx = Math.abs(stopH - this.scrollLeft)
var dy = Math.abs(stopV - this.scrollTop)
var d = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2))
this.fx = (stopH - this.scrollLeft) / (dx + dy)
this.fy = (stopV - this.scrollTop) / (dx + dy)
this.stopH = stopH
this.stopV = stopV
this.speed = d / aniLen * 1000
window.setTimeout(this.gRef + \".scroll()\", this.y.minRes)
}
}
ypSimpleScroll.prototype.jumpTo = function(nx, ny) {
nx = Math.min(Math.max(nx, 0), this.scrollW)
ny = Math.min(Math.max(ny, 0), this.scrollH)
this.scrollLeft = nx
this.scrollTop = ny
if (this.y.ns4)this.content.moveTo(-nx, -ny)

else
{
this.content.style.left = -nx
this.content.style.top = -ny
}
}
ypSimpleScroll.minRes = 10
ypSimpleScroll.ie = document.all ? 1 : 0
ypSimpleScroll.ns4 = document.layers ? 1 : 0
ypSimpleScroll.dom = document.getElementById ? 1 : 0
ypSimpleScroll.mac = navigator.platform == \"MacPPC\"
ypSimpleScroll.mo5 = document.getElementById && !document.all ? 1 : 0
ypSimpleScroll.prototype.scroll = function() {
this.aniTimer = window.setTimeout(this.gRef + \".scroll()\", this.y.minRes)
var nt = (new Date()).getTime()
var d = Math.round((nt - this.lastTime) / 1000 * this.speed)
var nx = d * this.fx + this.scrollLeft
var ny = d * this.fy + this.scrollTop
var xOut = (nx >= this.scrollLeft && nx >= this.stopH) || (nx <= this.scrollLeft && nx <= this.stopH)
var yOut = (ny >= this.scrollTop && ny >= this.stopV) || (ny <= this.scrollTop && ny <= this.stopV)
if (nt - this.lastTime != 0 &&
((this.fx == 0 && this.fy == 0) ||
(this.fy == 0 && xOut) ||
(this.fx == 0 && yOut) ||
(this.fx != 0 && this.fy != 0 && xOut && yOut)))
{
this.jumpTo(this.stopH, this.stopV)
this.endScroll()
}
else {
this.jumpTo(nx, ny)
this.lastTime = nt
}
}
function ypSimpleScroll(id, left, top, width, height, speed, contentWidth, initLeft, initTop)
{
var y = this.y = ypSimpleScroll
if (!initLeft) initLeft = 0
if (!initTop) initTop = 0
if (!contentWidth) contentWidth = width
if (document.layers && !y.ns4) history.go(0)
if (y.ie || y.ns4 || y.dom) {
this.loaded = false
this.id = id
this.origSpeed = speed
this.aniTimer = false
this.op = \"\"
this.lastTime = 0
this.clipH = height
this.clipW = width
this.scrollTop = initTop
this.scrollLeft = initLeft
this.gRef = \"ypSimpleScroll_\"+id
eval(this.gRef+\"=this\")
var d = document
d.write(\'<style type=\"text/css\">\')
d.write(\'#\' + this.id + \'Container { left:\' + left + \'px; top:\' + top + \'px; width:\' + width + \'px; height:\' + height + \'px; clip:rect(0 \' + width + \' \' + height + \' 0); overflow:hidden; }\')
d.write(\'#\' + this.id + \'Container, #\' + this.id + \'Content { position:absolute; }\')
d.write(\'#\' + this.id + \'Content { left:\' + (-initLeft) + \'px; top:\' + (-initTop) + \'px; width:\' + contentWidth + \'px; }\')
d.write(\'</style>\')
}
}
ypSimpleScroll.prototype.load = function() {
var d, lyrId1, lyrId2
d = document
lyrId1 = this.id + \"Container\"
lyrId2 = this.id + \"Content\"
this.container = this.y.dom ? d.getElementById(lyrId1) : this.y.ie ? d.all[lyrId1] : d.layers[lyrId1]
this.content = obj2 = this.y.ns4 ? this.container.layers[lyrId2] : this.y.ie ? d.all[lyrId2] : d.getElementById(lyrId2)
this.docH = Math.max(this.y.ns4 ? this.content.document.height : this.content.offsetHeight, this.clipH)
this.docW = Math.max(this.y.ns4 ? this.content.document.width : this.content.offsetWidth, this.clipW)
this.scrollH = this.docH - this.clipH
this.scrollW = this.docW - this.clipW
this.loaded = true
this.scrollLeft = Math.max(Math.min(this.scrollLeft, this.scrollW),0)
this.scrollTop = Math.max(Math.min(this.scrollTop, this.scrollH),0)
this.jumpTo(this.scrollLeft, this.scrollTop)
}

// end absolutely positioned simple scroller object scripts
var divSimpleScroller1YP  = new ypSimpleScroll(\"divSimpleScroller1\", 10, 10, 320, 240, 200, 320)

</script>
</head>

<body bgcolor=\"#FFFFFF\" text=\"#000000\" onLoad=\"divSimpleScroller1YP.load()\">
<!-- begin absolutely positioned simple scroller object-->
<div id=\"divSimpleScroller1Control\">
  <table width=\"50\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
    <tr>
      <td height=\"240\" valign=\"bottom\" align=\"center\"> <a href=\"java script:;return false;\" onMouseOver=\"divSimpleScroller1YP.scrollEast();return false;\" onMouseOut=\"divSimpleScroller1YP.endScroll();return false;\">[east]</a><br>
        <a href=\"java script:;return false;\" onMouseOver=\"divSimpleScroller1YP.scrollWest();return false;\" onMouseOut=\"divSimpleScroller1YP.endScroll();return false;\">[west]</a></td>
    </tr>
  </table>
</div>
<div id=\"divSimpleScroller1Container\">
  <div id=\"divSimpleScroller1Content\"> <b>Scroll Area Content Start</b>
    <p> Lorem ipsum dolor sit amet, consectetur adipscing elit, sed diam nonnumy
      eiusmod tempor incidunt ut labore et dolore magna aliquam erat volupat.</p>
    <p>Et harumd dereud facilis est er expedit distinct. Nam liber a tempor cum
      soluta nobis eligend optio comque nihil quod a impedit anim id quod maxim
      placeat facer possim omnis es voluptas assumenda est, omnis dolor repellend.
      Temporem autem quinsud et aur office debit aut tum rerum necesit atib saepe
      eveniet ut er repudiand sint et molestia non este recusand.</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipscing elit, sed diam nonnumy
      eiusmod tempor incidunt ut labore et dolore magna aliquam erat volupat.</p>
    <p>Et harumd dereud facilis est er expedit distinct. Nam liber a tempor cum
      soluta nobis eligend optio comque nihil quod a impedit anim id quod maxim
      placeat facer possim omnis es voluptas assumenda est, omnis dolor repellend.
      Temporem autem quinsud et aur office debit aut tum rerum necesit atib saepe
      eveniet ut er repudiand sint et molestia non este recusand.</p>
    Lorem ipsum dolor sit amet, consectetur adipscing elit, sed diam nonnumy eiusmod
    tempor incidunt ut labore et dolore magna aliquam erat volupat.
    <p></p>
    <p>Et harumd dereud facilis est er expedit distinct. Nam liber a tempor cum
      soluta nobis eligend optio comque nihil quod a impedit anim id quod maxim
      placeat facer possim omnis es voluptas assumenda est, omnis dolor repellend.
      Temporem autem quinsud et aur office debit aut tum rerum necesit atib saepe
      eveniet ut er repudiand sint et molestia non este recusand.</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipscing elit, sed diam nonnumy
      eiusmod tempor incidunt ut labore et dolore magna aliquam erat volupat.</p>
    <p>Et harumd dereud facilis est er expedit distinct. Nam liber a tempor cum
      soluta nobis eligend optio comque nihil quod a impedit anim id quod maxim
      placeat facer possim omnis es voluptas assumenda est, omnis dolor repellend.
      Temporem autem quinsud et aur office debit aut tum rerum necesit atib saepe
      eveniet ut er repudiand sint et molestia non este recusand.</p>
    Lorem ipsum dolor sit amet, consectetur adipscing elit, sed diam nonnumy eiusmod
    tempor incidunt ut labore et dolore magna aliquam erat volupat.
    <p></p>
    <p>Et harumd dereud facilis est er expedit distinct. Nam liber a tempor cum
      soluta nobis eligend optio comque nihil quod a impedit anim id quod maxim
      placeat facer possim omnis es voluptas assumenda est, omnis dolor repellend.
      Temporem autem quinsud et aur office debit aut tum rerum necesit atib saepe
      eveniet ut er repudiand sint et molestia non este recusand.</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipscing elit, sed diam nonnumy
      eiusmod tempor incidunt ut labore et dolore magna aliquam erat volupat.</p>
    <p>Et harumd dereud facilis est er expedit distinct. Nam liber a tempor cum
      soluta nobis eligend optio comque nihil quod a impedit anim id quod maxim
      placeat facer possim omnis es voluptas assumenda est, omnis dolor repellend.
      Temporem autem quinsud et aur office debit aut tum rerum necesit atib saepe
      eveniet ut er repudiand sint et molestia non este recusand.</p>
    <b>Scroll Area Content End</b> </div>
</div>
<!-- end absolutely positioned simple scroller object -->
</body>
</html>
Avatar billede jakoba Nybegynder
08. august 2001 - 19:32 #13
takker.
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