Продолжает Marquee в asp.net - PullRequest
3 голосов
/ 23 ноября 2011

Я занимаюсь разработкой новостного сайта на asp.net и хочу создать панель новостей, которая будет перемещать новости справа налево, я сделал это с помощью тега Marquee, но проблема в том, что я хочу, чтобы он повторял свое содержимое без каких-либо джебов, как это закончено, а затем начать с начала, я хочу, чтобы это повторялось постоянно

любая помощь, пожалуйста

Заранее спасибо

Ответы [ 5 ]

4 голосов
/ 23 ноября 2011

Если вам нужна функциональность выделения, попробуйте использовать плагин jQuery, например simplyScroll v1 , который поддерживает непрерывную прокрутку (т. Е. Плавно перемещается).Обратите внимание, однако, что пометки считаются плохими для удобства использования и доступности так же, как был старый тег <blink> - см. http://en.wikipedia.org/wiki/Marquee_element#Usability_problems

2 голосов
/ 25 ноября 2011

Я верю, что это поможет вам:

 <script type="text/javascript" language="javascript">
    function objWidth(obj) {
        if (obj.offsetWidth) return obj.offsetWidth;
        if (obj.clip) return obj.clip.width;
        return 0;
    }
    var mqr = [];

    function mq(id) {
        this.mqo = document.getElementById(id);
        var wid = objWidth(this.mqo.getElementsByTagName('span')[0]) + 5;
        var fulwid = objWidth(this.mqo);
        var txt = this.mqo.getElementsByTagName('span')[0].innerHTML;
        this.mqo.innerHTML = '';
        var heit = this.mqo.style.height;
        this.mqo.onmouseout = function () {
            mqRotate(mqr);
        };
        this.mqo.onmouseover = function () {
            clearTimeout(mqr[0].TO);
        };
        this.mqo.ary = [];
        var maxw = Math.ceil(fulwid / wid) + 1;
        for (var i = 0; i < maxw; i++) {
            this.mqo.ary[i] = document.createElement('div');
            this.mqo.ary[i].innerHTML = txt;
            this.mqo.ary[i].style.position = 'absolute';
            this.mqo.ary[i].style.left = (wid * i) + 'px';
            this.mqo.ary[i].style.width = wid + 'px';
            this.mqo.ary[i].style.height = heit;
            this.mqo.appendChild(this.mqo.ary[i]);
        }
        mqr.push(this.mqo);
    }

    function mqRotate(mqr) {
        if (!mqr) return;
        for (var j = mqr.length - 1; j > -1; j--) {
            maxa = mqr[j].ary.length;
            for (var i = 0; i < maxa; i++) {
                var x = mqr[j].ary[i].style;
                x.left = (parseInt(x.left, 10) - 1) + 'px';
            }
            var y = mqr[j].ary[0].style;
            if (parseInt(y.left, 10) + parseInt(y.width, 10) < 0) {
                var z = mqr[j].ary.shift();
                z.style.left = (parseInt(z.style.left) + parseInt(z.style.width) * maxa) + 'px';
                mqr[j].ary.push(z);
            }
        }
        mqr[0].TO = setTimeout('mqRotate(mqr)', 10);
    }
 </script>

 <script type="text/javascript">
    function start() {
        new mq('m1');
        mqRotate(mqr);
    }

    window.onload = start;
 </script>

 <div id="m1" class="marquee">
    <span>Example for Continous Text</span>
 </div>
0 голосов
/ 23 ноября 2011
<asp:Literal ID="Literal1" runat="server"></asp:Literal>

Тогда вы можете дать значение для литерала.

protected void Page_Load(object sender, EventArgs e)
{
    string str = "get data from database";
    string text = "<MARQUEE>" + str + "</MARQUEE>";
    Literal1.Text = text;
}

Я думаю, что этот сайт полезен.http://www.dynamicdrive.com/dynamicindex2/

http://www.htmlcodetutorial.com/_MARQUEE.html

0 голосов
/ 23 ноября 2011

Если вам нужен скроллер новостей, вы можете попробовать этот плагин для jQuery liScroll , не знаю, хотите ли вы обновить новости без перезагрузки страницы?

Ссылка: http://www.gcmingati.net/wordpress/wp-content/lab/jquery/newsticker/jq-liscroll/scrollanimate.html

0 голосов
/ 23 ноября 2011

Я считаю, что у этого сайта есть реализация, отвечающая вашим требованиям http://www.givainc.com/labs/marquee_example.htm

SO link

...