Бегущая строка

PK
На сайте с 24.10.2006
Offline
99
PSK
1348

Здравствуйте. Тут возникла одна задачка, которую я пока не могу решить. Дело в том, что мне нужно сделать бегущую строку. Но с некоторой примочкой. Я хочу сделать строку из 15 перемещающихся картинок на странице. Перемещение снизу вверх. Если использовать тег <marquee></marquee> то получается что после 15-й картинки едет пустое место. Затем только после прохождения последней 15-й картинки, появляется 1-я с самого низа. А как сделать так, чтобы сразу за 15-й картинкой шла опять первая без всяких пустых мест? А то если height=500px то это некрасиво получается. Может кто хотя бы алгоритм подскажет, я думаю задачку можно решить с помощью JS.

Mmonger
На сайте с 01.12.2005
Offline
165
#1

marquee вообще deprecated. Вы совершенно правы, это лучше сделать с помощью javascript.

Попробуйте модифицировать этот скрипт:


<script type="text/javascript">

//Specify the slider's width (in pixels)
var sliderwidth="300px"
//Specify the slider's height
var sliderheight="150px"
//Specify the slider's slide speed (larger is faster 1-10)
var slidespeed=3
//configure background color:
slidebgcolor="#EAEAEA"

//Specify the slider's images
var leftrightslide=new Array()
var finalslide=''
leftrightslide[0]='<a href="http://"><img src="dynamicbook1.gif" border=1></a>'
leftrightslide[1]='<a href="http://"><img src="dynamicbook2.gif" border=1></a>'
leftrightslide[2]='<a href="http://"><img src="dynamicbook3.gif" border=1></a>'
leftrightslide[3]='<a href="http://"><img src="dynamicbook4.gif" border=1></a>'
leftrightslide[4]='<a href="http://"><img src="dynamicbook5.gif" border=1></a>'

//Specify gap between each image (use HTML):
var imagegap=" "

//Specify pixels gap between each slideshow rotation (use integer):
var slideshowgap=5


////NO NEED TO EDIT BELOW THIS LINE////////////

var copyspeed=slidespeed
leftrightslide='<nobr>'+leftrightslide.join(imagegap)+'</nobr>'
var iedom=document.all||document.getElementById
if (iedom)
document.write('<span id="temp" style="visibility:hidden;position:absolute;top:-100px;left:-9000px">'+leftrightslide+'</span>')
var actualwidth=''
var cross_slide, ns_slide

function fillup(){
if (iedom){
cross_slide=document.getElementById? document.getElementById("test2") : document.all.test2
cross_slide2=document.getElementById? document.getElementById("test3") : document.all.test3
cross_slide.innerHTML=cross_slide2.innerHTML=leftrightslide
actualwidth=document.all? cross_slide.offsetWidth : document.getElementById("temp").offsetWidth
cross_slide2.style.left=actualwidth+slideshowgap+"px"
}
else if (document.layers){
ns_slide=document.ns_slidemenu.document.ns_slidemenu2
ns_slide2=document.ns_slidemenu.document.ns_slidemenu3
ns_slide.document.write(leftrightslide)
ns_slide.document.close()
actualwidth=ns_slide.document.width
ns_slide2.left=actualwidth+slideshowgap
ns_slide2.document.write(leftrightslide)
ns_slide2.document.close()
}
lefttime=setInterval("slideleft()",30)
}
window.onload=fillup

function slideleft(){
if (iedom){
if (parseInt(cross_slide.style.left)>(actualwidth*(-1)+8))
cross_slide.style.left=parseInt(cross_slide.style.left)-copyspeed+"px"
else
cross_slide.style.left=parseInt(cross_slide2.style.left)+actualwidth+slideshowgap+"px"

if (parseInt(cross_slide2.style.left)>(actualwidth*(-1)+8))
cross_slide2.style.left=parseInt(cross_slide2.style.left)-copyspeed+"px"
else
cross_slide2.style.left=parseInt(cross_slide.style.left)+actualwidth+slideshowgap+"px"

}
else if (document.layers){
if (ns_slide.left>(actualwidth*(-1)+8))
ns_slide.left-=copyspeed
else
ns_slide.left=ns_slide2.left+actualwidth+slideshowgap

if (ns_slide2.left>(actualwidth*(-1)+8))
ns_slide2.left-=copyspeed
else
ns_slide2.left=ns_slide.left+actualwidth+slideshowgap
}
}


if (iedom||document.layers){
with (document){
document.write('<table border="0" cellspacing="0" cellpadding="0"><td>')
if (iedom){
write('<div style="position:relative;width:'+sliderwidth+';height:'+sliderheight+';overflow:hidden">')
write('<div style="position:absolute;width:'+sliderwidth+';height:'+sliderheight+';background-color:'+slidebgcolor+'" onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed">')
write('<div id="test2" style="position:absolute;left:0px;top:0px"></div>')
write('<div id="test3" style="position:absolute;left:-1000px;top:0px"></div>')
write('</div></div>')
}
else if (document.layers){
write('<ilayer width='+sliderwidth+' height='+sliderheight+' name="ns_slidemenu" bgColor='+slidebgcolor+'>')
write('<layer name="ns_slidemenu2" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"></layer>')
write('<layer name="ns_slidemenu3" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"></layer>')
write('</ilayer>')
}
document.write('</td></table>')
}
}
</script>


Всё будет хорошо, но мы приложим усилия!
Ayavryk
На сайте с 11.10.2003
Offline
209
#2
Mmonger:
marquee вообще deprecated. Вы совершенно правы, это лучше сделать с помощью javascript.

Вы совершенно неправы marquee - это не deprecated, а mauvais ton. Если это не порносайт, на нем ничего не должно дергаться, прыгать и отвлекать от контента.

А вообще 4К JS вместо одного тега - сурово. М.б. проще забить?

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
PK
На сайте с 24.10.2006
Offline
99
PSK
#3

Mmonger, спасибо за код, вроде работоспособный, сейчас мучаюсь над тем, чтобы картинки шли друг за другом без всяких пауз, медленно и плавно. Как добьюсь такого эффекта, выложу здесь. Возможно кому-нибудь пригодится

Mmonger
На сайте с 01.12.2005
Offline
165
#4
Ayavryk:
Вы совершенно неправы marquee - это не deprecated

Про моветон согласен, а про deprecated:

The BLINK and MARQUEE elements are not
defined in any W3C HTML specification and should not be used.

(http://www.w3.org/TR/WCAG10-TECHS/)

А вот все элементы из 4.01: http://www.w3.org/TR/WCAG10-HTML-TECHS/#html-index

RL
На сайте с 15.12.2006
Offline
3
#5
PSK:
сейчас мучаюсь над тем, чтобы картинки шли друг за другом без всяких пауз, медленно и плавно. Как добьюсь такого эффекта, выложу здесь. Возможно кому-нибудь пригодится

Видать не домучал.....

а жаль.

Ищу людей, которые могут выdвести по 2м словам сайт http://radiolavka.kiev.ua (http://radiolavka.kiev.ua) на первое место. - уже не ищу - САМ вывел! gsm шлюз (http://radiolavka.kiev.ua) или eccom basis (http://radiolavka.kiev.ua/static.php?id=6) Украинская раскладка с апострофом (http://klaviatura.narod.ru)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий