一、成果展示
二、代码
html代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Starter</title> <!-- font-awesome --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css" /> <!-- styles --> <link rel="stylesheet" href="styles.css" /> </head> <body> <main> <section class="container"> <!-- title --> <div class="title"> <h2>our reviews</h2> <div class="underline"></div> </div> <!-- review --> <article class="review"> <div class="img-container"> <img src="./person-1.jpeg" id="person-img" alt=""> </div> <h4 id="author">sara jones</h4> <p id="job">ux designer</p> <p id="info"> Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempore expedita obcaecati ab animi voluptatum quam necessitatibus natus minima quasi et? Quaerat nostrum ipsa nam laudantium doloremque voluptatem exercitationem, cupiditate fugiat? </p> <!-- prev next button --> <div class="button-container"> <button class="prev-btn"> <i class="fas fa-chevron-left"></i> </button> <button class="next-btn"> <i class="fas fa-chevron-right"></i> </button> </div> <!-- random button --> <button class="random-btn">suprise me</button> </article> </section> </main> <!-- javascript --> <script src="app.js"></script> </body> </html>
js代码
// local reviews data const reviews = [ { id: 1, name: "susan smith", job: "web developer", img: "https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883334/person-1_rfzshl.jpg", text: "I'm baby meggings twee health goth +1. Bicycle rights tumeric chartreuse before they sold out chambray pop-up. Shaman humblebrag pickled coloring book salvia hoodie, cold-pressed four dollar toast everyday carry", }, { id: 2, name: "anna johnson", job: "web designer", img: "https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883409/person-2_np9x5l.jpg", text: "Helvetica artisan kinfolk thundercats lumbersexual blue bottle. Disrupt glossier gastropub deep v vice franzen hell of brooklyn twee enamel pin fashion axe.photo booth jean shorts artisan narwhal.", }, { id: 3, name: "peter jones", job: "intern", img: "https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883417/person-3_ipa0mj.jpg", text: "Sriracha literally flexitarian irony, vape marfa unicorn. Glossier tattooed 8-bit, fixie waistcoat offal activated charcoal slow-carb marfa hell of pabst raclette post-ironic jianbing swag.", }, { id: 4, name: "bill anderson", job: "the boss", img: "https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883423/person-4_t9nxjt.jpg", text: "Edison bulb put a bird on it humblebrag, marfa pok pok heirloom fashion axe cray stumptown venmo actually seitan. VHS farm-to-table schlitz, edison bulb pop-up 3 wolf moon tote bag street art shabby chic. ", }, ]; // select items const img = document.getElementById("person-img"); const author = document.getElementById("author"); const job = document.getElementById("job"); const info = document.getElementById("info"); const preBtn = document.querySelector('.prev-btn'); const nextBtn = document.querySelector('.next-btn'); const randomBtn = document.querySelector('.random-btn'); // set starting item let currentItem =0; // load initial item window.addEventListener('DOMContentLoaded',function (){ showPerson(currentItem) }); // show person base on item function showPerson(){ const item = reviews[currentItem]; img.src = item.img; author.textContent =item.name; job.textContent =item.job; info.textContent =item.text; } // show next person nextBtn.addEventListener('click',function(){ currentItem++; if(currentItem>reviews.length-1){ currentItem = 0; } showPerson(); }); // show pre person preBtn.addEventListener('click',function(){ currentItem--; if(currentItem < 0){ currentItem = reviews.length-1; } showPerson(); }); // show random person randomBtn.addEventListener('click',function(){ currentItem = Math.floor(Math.random() * reviews.length) console.log("hello") showPerson(); });