Skip to content

baooab/douban-movies

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

douban-movies

豆瓣电影 Top 250


使用豆瓣开放 API(https://api.douban.com/v2/movie/top250) 写成的。

以下是全部代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <title>豆瓣电影Top250</title>
    <style>
        body {
            font-family: Georgia, serif;
            background-color: #f5f5d5;
            word-spacing: 0.2em;
            font-size: .7em;
            padding: .7em;
            text-shadow: 0 1px 1px #ccc;
        }

        hr {
            margin: .7em auto;
            border-width: 1px;
            border-color: black;
            border-style: dashed;
            border-bottom: none;
        }

        strong {
            color: green;
        }

        hr.placeholder {
            border-color: #fff;
            clear: both;
        }

        .zb-container {
            position: relative;
        }

        .zb-float-div {
            display: inline-block;
            float: left;
            margin: 1px;
        }

        .zb-float-div:nth-of-type(2n) {
            background-color: rgba(0,0,0,.1);
        }

        .zb-pagination {
            display: inline-block;
            list-style: none;
            padding: 0;
            margin: 0;
        }

        .zb-pagination li{
            display: inline-block;
            padding: .03em;
        }

        footer {
            margin-top: 1.2em;
            color: grey;
        }

        a {
            text-decoration: none;
            color: #000;
        }

        a:hover {
            text-decoration: underline;
        }

        ul > li.active, ul > li:hover {
            background-color: pink;
            border-radius: 50%;
            font-size: 1.4em;
        }

    </style>

  </head>

  <body class="container">

       <header id="page-header"></header>

       页数→
       <ul class="zb-pagination">
            <li><a href="?start=0">1</a></li>
            <li><a href="?start=20">2</a></li>
            <li><a href="?start=40">3</a></li>
            <li><a href="?start=60">4</a></li>
            <li><a href="?start=80">5</a></li>
            <li><a href="?start=100">6</a></li>
            <li><a href="?start=120">7</a></li>
            <li><a href="?start=140">8</a></li>
            <li><a href="?start=160">9</a></li>
            <li><a href="?start=180">10</a></li>
            <li><a href="?start=200">11</a></li>
            <li><a href="?start=220">12</a></li>
            <li><a href="?start=240">13</a></li>
       </ul>

       <hr>

       <main id="page-main">加载中...</main>

       <hr class="placeholder"><hr>

       页数→
       <ul class="zb-pagination">
            <li><a href="?start=0">1</a></li>
            <li><a href="?start=20">2</a></li>
            <li><a href="?start=40">3</a></li>
            <li><a href="?start=60">4</a></li>
            <li><a href="?start=80">5</a></li>
            <li><a href="?start=100">6</a></li>
            <li><a href="?start=120">7</a></li>
            <li><a href="?start=140">8</a></li>
            <li><a href="?start=160">9</a></li>
            <li><a href="?start=180">10</a></li>
            <li><a href="?start=200">11</a></li>
            <li><a href="?start=220">12</a></li>
            <li><a href="?start=240">13</a></li>
       </ul>

       <footer id="page-footer">(c) 2016 张宝制作</footer>

    <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
    <script>
(function () {

    "use strict";

    var start = getParameterByName('start');

    handleGetJSON(start);

    function handleGetJSON(start) {
        let url = 'https://api.douban.com/v2/movie/top250?callback=?';
        if (start) {
            url = url + '&start=' + start;
        }

        $.ajaxSettings.async = false;
        $.getJSON(url)
            .done(function (movies) {
                renderMovies(handleMovies(movies));
            })
            .fail(function (err) {
                console.log(err.statusText);
            });
    }

    function handleMovies(movies) {
        var headerTmpl = `<strong>${movies.title}</strong> / 共${movies.count}部电影,从第${movies.start + 1}部电影开始显示,一共${movies.total}部电影。`;
        var contentTmpl = movies => `
          ${movies.subjects.map((movie, index) => `
            <div class="zb-float-div">
               <strong>${start + index + 1}</strong> <a href="${movie.alt}" target="_blank">${movie.title} ${movie.original_title}${movie.year})</a><br>
               导演:<a href="${movie.directors[0].alt}" target="_blank">${movie.directors[0].name}</a><br>
               主演:<a href="${movie.casts[0].alt}" target="_blank">${movie.casts[0].name}</a><br>
               类型:${movie.genres.join(" / ")}<br>
               评分:${movie.rating.average}
            </div>
          `).join("")}
        `;
        contentTmpl = contentTmpl(movies);
        return { contentTmpl, headerTmpl };
    }

    function renderMovies(moviesData) {
        document.getElementById('page-header').innerHTML = moviesData.headerTmpl;
        document.getElementById('page-main').innerHTML = moviesData.contentTmpl;
    }

    function renderError() {
        document.getElementById('page-main').innerHTML = '数据获取失败:(';
    }

    function getParameterByName(name, url) {
        if (!url) {
          url = window.location.href;
        }
        name = name.replace(/[\[\]]/g, "\\$&");
        var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
            results = regex.exec(url);
        if (!results) return null;
        if (!results[2]) return '';
        return decodeURIComponent(results[2].replace(/\+/g, " "));
    }

    start = start ? parseInt(start) : 0;
    let page = parseInt(start / 20 + 1);
    let selector = "ul li:nth-child(" + page +")";
    $(selector).addClass('active');
})();


    </script>
  </body>
</html>

About

豆瓣电影 Top 250

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages