0

私は自分のウェブサイトに配置するRSSフィードを作成しています。JS / jQueryに関しては、私はほとんど初心者なので、どんな助けでも大歓迎です。

GoogleのFeedAPIを見つけて、独自のRSSリーダーウィジェットを作成しましたが、次に追加したい自動スクロール機能がありません。別のstackoverflowの質問から、jsfiddle.netでvTickerやこれのような自動スクローラーの例をいくつか見つけましたが、コードに合わせてそれらを適応させる方法がわからないようです。このようなものを構築する方法を説明するチュートリアルはありますか?

私のRSSフィードは、DIVコンテナを作成し、各フィードエントリのタイトル、説明、日付を含む子DIVをコンテナに追加することで作成されます。したがって、DIVコンテナをスクロールするだけで、「すべて」を実行できると思います。

編集:基本的には、コンテナdivを一番下に到達するまで垂直に下げてから、再び一番上に「ラップアラウンド」したいと思います。

これはこれまでの私のHTML/CSS/JSです。

<head>
<title>Google Feed Loader Example #1</title> 

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>

<script type="text/javascript">
    google.load("feeds", "1");

    // Our callback function, for when a feed is loaded.
function feedLoaded(result) {
    if (!result.error) {
        // Grab the container we will put the results into
    var container = document.getElementById("feed");
    container.innerHTML = '';

    // Loop through the feeds, putting the titles onto the page.
    // Check out the result object for a list of properties returned in each entry.
    // http://code.google.com/apis/ajaxfeeds/documentation/reference.html#JSON
    for (var i = 0; i < result.feed.entries.length; i++) {
      var entry = result.feed.entries[i];
      var div1 = document.createElement("div");
      div1.setAttribute("id", "title");
      div1.innerHTML = '<h3><a href="' + entry.link + '">' + entry.title + '</a></h3>';
      //div1.appendChild(document.createTextNode(entry.feedUrl));

      var div2 = document.createElement("div");
      div2.setAttribute("id", "description");
      div2.appendChild(document.createTextNode(entry.content));

      var div3 = document.createElement("div");
      div3.appendChild(document.createTextNode(entry.publishedDate));
      div3.setAttribute("id", "date");

      container.appendChild(div1);
      container.appendChild(div2);
      container.appendChild(div3);

      /*var li = document.createElement("li");
      li.innerHTML = '<h3><a href="' + entry.link + '">' + entry.title + '</a></h3>';
      li.innerHTML += '<p>' + entry.contentSnippet + '</p>';
      container.appendChild(li);*/
    }
  }
}

function OnLoad() {
  // Create a feed instance that will grab Digg's feed.
  var feed = new google.feeds.Feed("http://fastpshb.appspot.com/feed/1/fastpshb");
  feed.setNumEntries(15);
  feed.includeHistoricalEntries();
  // Calling load sends the request off.  It requires a callback function.
  feed.load(feedLoaded);
}

    google.setOnLoadCallback(OnLoad);
</script>

<style>
h1 {
background-color:   #356AA0;
}

a {
color:              #FEC659;
}

a:link {
text-decoration:    none;
}

a:visited {
text-decoration:    none;
}

a:hover {
text-decoration:    underline;
}

a:active {
text-decoration:    underline;
}

div {line-height: 1;}
/*h1, p {margin: 0;}    */

div#feed {
width:              330;
height:             150;
overflow-y:         auto;
background-color:   #F8F8F8; /* background-color when image is not shown */
border-top:         1px solid #C0C0C0;
border-bottom:      1px solid #C0C0C0; /* set grey border bottom */
border-left:        1px solid #C0C0C0; /* set grey border left */
border-right:       1px solid #C0C0C0; /* set grey border right */
}

div#title {
/*padding:          5px;*/
background-color:   #FFFFFF;
font-size:          14px; /* sets the font size of the title to 18px*/
font-weight:        bold; /* and bold of course */
color:              #FEC659;
text-decoration:    none;
}

div#description {
color:              #356AA0;
background-color:   #FFFFFF;
padding-bottom:     5px;
}

div#date {
background-color:   #FFFFFF;
color:              #000000;
border-bottom:      1px dotted #C0C0C0;
padding-bottom:     5px;
}

div#header {
width:              330;
background-color:   #356AA0;
font-size:          18px; /* sets the font size of the title to 18px*/
font-weight:        bold; /* and bold of course */
color:              #FFFFFF;
text-decoration:    none;
}

</style>

</head>


<body>
<div id="header">RSS Feed </div>
<div id="feed"></div>
</body>
</html>
4

2 に答える 2

0

リンクしたので、 vTickerを使用した例を次に示します。上記の元のコードにできるだけ変更を加えないようにしました。

<head>
<title>Google Feed Loader Example #1</title> 

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script type="text/javascript" src="http://www.jugbit.com/jquery/jquery.vticker-min.js"></script>
<script type="text/javascript">
    google.load("feeds", "1");

    // Our callback function, for when a feed is loaded.
function feedLoaded(result) {
    if (!result.error) {
        // Grab the container we will put the results into
    var container = document.getElementById("feed");
    container.innerHTML = '';
            //create a list container for vTicker
    var list = document.createElement("ul");
    container.appendChild(list);
    // Loop through the feeds, putting the titles onto the page.
    // Check out the result object for a list of properties returned in each entry.
    // http://code.google.com/apis/ajaxfeeds/documentation/reference.html#JSON
    for (var i = 0; i < result.feed.entries.length; i++) {
      var entry = result.feed.entries[i];
              //new list item
      var listItem = document.createElement("li");
      var div1 = document.createElement("div");
      div1.setAttribute("id", "title");
      div1.innerHTML = '<h3><a href="' + entry.link + '">' + entry.title + '</a></h3>';
      //div1.appendChild(document.createTextNode(entry.feedUrl));

      var div2 = document.createElement("div");
      div2.setAttribute("id", "description");
      div2.appendChild(document.createTextNode(entry.content));

      var div3 = document.createElement("div");
      div3.appendChild(document.createTextNode(entry.publishedDate));
      div3.setAttribute("id", "date");
              //add all child divs to list item
      listItem.appendChild(div1);
      listItem.appendChild(div2);
      listItem.appendChild(div3);
              //add list item to the list container
      list.appendChild(listItem);
      /*var li = document.createElement("li");
      li.innerHTML = '<h3><a href="' + entry.link + '">' + entry.title + '</a></h3>';
      li.innerHTML += '<p>' + entry.contentSnippet + '</p>';
      container.appendChild(li);*/
    }
            //add the list container to the containing div
    container.appendChild(list);
    $(container).vTicker({ 
        speed: 500,
        pause: 3000,
        animation: 'fade',
        mousePause: false,
        showItems: 3
    });
  }
}

function OnLoad() {
  // Create a feed instance that will grab Digg's feed.
  var feed = new google.feeds.Feed("http://fastpshb.appspot.com/feed/1/fastpshb");
  feed.setNumEntries(15);
  feed.includeHistoricalEntries();
  // Calling load sends the request off.  It requires a callback function.
  feed.load(feedLoaded);
}

    google.setOnLoadCallback(OnLoad);
</script>

<style>
h1 {
background-color:   #356AA0;
}

a {
color:              #FEC659;
}

a:link {
text-decoration:    none;
}

a:visited {
text-decoration:    none;
}

a:hover {
text-decoration:    underline;
}

a:active {
text-decoration:    underline;
}

div {line-height: 1;}
/*h1, p {margin: 0;}    */

div#feed {
width:              330;
height:             150;
overflow-y:         auto;
background-color:   #F8F8F8; /* background-color when image is not shown */
border-top:         1px solid #C0C0C0;
border-bottom:      1px solid #C0C0C0; /* set grey border bottom */
border-left:        1px solid #C0C0C0; /* set grey border left */
border-right:       1px solid #C0C0C0; /* set grey border right */
}

div#title {
/*padding:          5px;*/
background-color:   #FFFFFF;
font-size:          14px; /* sets the font size of the title to 18px*/
font-weight:        bold; /* and bold of course */
color:              #FEC659;
text-decoration:    none;
}

div#description {
color:              #356AA0;
background-color:   #FFFFFF;
padding-bottom:     5px;
}

div#date {
background-color:   #FFFFFF;
color:              #000000;
border-bottom:      1px dotted #C0C0C0;
padding-bottom:     5px;
}

div#header {
width:              330;
background-color:   #356AA0;
font-size:          18px; /* sets the font size of the title to 18px*/
font-weight:        bold; /* and bold of course */
color:              #FFFFFF;
text-decoration:    none;
}

</style>

</head>
<body>
<div id="header">RSS Feed </div>
<div id="feed"></div>
</body>
</html>
于 2013-03-05T19:34:19.430 に答える
0

Google が私の NEWSSHOW フィードを放棄したので、上記のコード (Danny) を変更して、簡素化されたクレジット カード サイズの Google ニュース ティッカーを作成することにしました。ほとんどの変更は、不要なものを削除し、大幅な CSS 変更を行っただけです。(HTML のインデントがめちゃくちゃで申し訳ありません。stackoverflow に投稿するのはこれが初めてです。)

URL のテスト:

http://m.gooplusplus.com/gnews360.html?b#ビジネスニュース

http://m.gooplusplus.com/gnews-hl.html?b#Business-News

<head>
<title>Google News RSS scroller - param: ?b#Business - News</title> 
<base target = "_blank" />

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script type="text/javascript" src="http://www.jugbit.com/jquery/jquery.vticker-min.js"></script>
<script type="text/javascript">
google.load("feeds", "1");

function feedLoaded(result) {
if (!result.error) {
var container = document.getElementById("feed");
container.innerHTML = '';
var list = document.createElement("ul");
container.appendChild(list);
for (var i = 0; i < result.feed.entries.length; i++) {
  var entry = result.feed.entries[i];
  var listItem = document.createElement("li");
  var div1 = document.createElement("div");
  div1.setAttribute("id", "title");
  div1.innerHTML = "<center style='background-color:#F0F0F0;padding-left:105px;color:#888888;font-size:0.9em;'>--&#160;"+
       location.hash.substr(1) + "&#160;--&#160;&#160;</center>"+ entry.content;

  listItem.appendChild(div1);
  list.appendChild(listItem);
}
container.appendChild(list);
$(container).vTicker({ 
    speed: 150,
    pause: 4000,
    animation: 'fade',
    mousePause: true,
    showItems: 1
});
}
}

function OnLoad() {
var feed = new google.feeds.Feed("http://news.google.com/news/?output=rss&topic="+location.search.substr(1)); 
feed.setNumEntries(15);
feed.includeHistoricalEntries();
feed.load(feedLoaded);
}
google.setOnLoadCallback(OnLoad);
</script>

<style>
body, table { margin:0px; }
center { text-align:left; }
td { font-size:0.8em; text-align:justify; }
font { font-size:1em; }
img { margin-top:-12px; border:2px solid #CCCCCC; }
a:hover img { border:2px solid red; }
td font div { margin-top:-15px; }
td font div img { display:none; }

a:link,a:visited {  font-size:0px; text-decoration: none; }

div {line-height: 1;}
div a b { color: blue; font-size:11px; }
div a:hover b { color: red; }

div#title { background-color:   #FFFFFF; }

div#feed { 
width:              100%;
max-width:          360px;
height:             auto;
overflow-y:         auto;
background-color:   #F0F0F0; 
border:             1px solid #C0C0C0;
}
</style>
</head>
<body><div id="feed"></div></body>
</html>    
于 2013-05-22T23:13:07.047 に答える