```bash
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<div class="container">
<header>
<h1>首页</h1>
</header>
<section>
<div class="slide">
<ul class="list" id="list">
<li class="item"><img src="./img/4.jpg" alt=""></li>
<li class="item"><img src="./img/2.jpg" alt=""></li>
<li class="item"><img src="./img/3.jpg" alt=""></li>
<li class="item"><img src="./img/1.jpg" alt=""></li>
</ul>
<ul class="point">
</ul>
</div>
<h3>热门商品</h3>
<div class="content">
<ul>
<li>
<img src="./img/disney.jpg" alt="">
<h4>迪士尼爱与梦想绘本(套装共15册)[3-6岁]</h4>
<p>¥ <span>131.30</span></p>
<del>¥<span>154.50</span></del>
</li>
<li>
<img src="./img/disney.jpg" alt="">
<h4>迪士尼爱与梦想绘本(套装共15册)[3-6岁]</h4>
<p>¥ <span>131.30</span></p>
<del>¥<span>154.50</span></del>
</li>
<li>
<img src="./img/disney.jpg" alt="">
<h4>迪士尼爱与梦想绘本(套装共15册)[3-6岁]</h4>
<p>¥ <span>131.30</span></p>
<del>¥<span>154.50</span></del>
</li>
<li>
<img src="./img/disney.jpg" alt="">
<h4>迪士尼爱与梦想绘本(套装共15册)[3-6岁]</h4>
<p>¥ <span>131.30</span></p>
<del>¥<span>154.50</span></del>
</li>
<li>
<img src="./img/disney.jpg" alt="">
<h4>迪士尼爱与梦想绘本(套装共15册)[3-6岁]</h4>
<p>¥ <span>131.30</span></p>
<del>¥<span>154.50</span></del>
</li>
</ul>
</div>
</section>
<footer>
<ul>
<li>
<img src="./img/home.png" alt="">
<p>首页</p>
</li>
<li>
<img src="./img/list2.png" alt="">
<p>分类</p>
</li>
<li>
<img src="./img/shopcar2.png" alt="">
<p>购物车</p>
</li>
<li>
<img src="./img/me2.png" alt="">
<p>我的</p>
</li>
</ul>
</footer>
</div>
<script src="./js/script.js"></script>
</body>
</html>
``
```css
* {
padding: 0;
margin: 0;
}
html,
body {
width: 100%;
height: 100%;
}
@media screen and (min-width: 500px){
html,
body {
font-size: 20px;
}
}
@media screen and (min-width: 600px){
html,
body {
font-size: 25px;
}
}
@media screen and (min-width: 700px){
html,
body {
font-size: 28px;
}
}
.container {
background-color: rgb(246,246,246);
height: 100%;
display: flex;
flex-direction: column;
margin: 0 auto;
}
.container header {
height: 60px;
}
.container header h1 {
text-align: center;
padding: 10px;
color: #c39862;
font-size: 25px;
font-weight: 500;
}
/* color="#c39862" */
.container section {
height: auto;
flex: 1;
overflow: auto;
}
.container section .slide {
background-color: gray;
margin: 0 auto;
overflow: hidden;
position: relative;
border-radius: 8PX;
}
.container section .slide img {
width: 100%;
height: 200px;
display: block;
}
.container section .slide .list {
list-style: none;
width: 400%;
}
.container section .slide .item {
width: 25%;
float: left;
}
.container section .slide .list::after{
content: '';
display: block;
clear: both;
}
.container section .slide .point{
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 10px;
list-style: none;
}
.point-item{
height: 8px;
width: 8px;
background-color: white;
opacity: .2;
border-radius:100px ;
margin: 0 5px;
float: left;
}
.point-item.active{
opacity: 1;
}
h3{
margin: 24px;
color: #c39862;
}
.content{
width: 100%;
}
.content ul::after{
content: '';
display: block;
width: 45%;
}
.content ul {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
list-style: none;
}
.content ul li{
width: 46%;
background-color: white;
margin-bottom: 20px;
border-radius: 10px;
}
.content ul li img{
width: 100%;
border-radius: 10px;
height: 15rem;
}
.content ul li h4{
color: rgb(60,60,60);
font-size: 15px;
margin-bottom: 5px;
display:-webkit-box;
-webkit-line-clamp:2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.content ul li p{
display: inline-block;
}
.content ul li p{
color: red;
}
.content ul li del{
font-size: 5px;
color: rgb(189,189,189);
}
.container footer {
height: 60px;
}
.container footer {
border: 1px solid rgb(237,237,237);
}
.container footer ul {
list-style: none;
display: flex;
justify-content: space-around;
}
.container footer img{
width: 30px;
height: 30px;
}
.container footer ul li p{
font-size: 5px;
}
.container footer ul li{
margin: 5px;
text-align: center;
}
.container footer ul li:first-child{
color: #c39862;
}
```css
```javascript
var slide = document.getElementsByClassName('slide')[0];
var list = document.getElementsByClassName('list')[0];
var items = document.getElementsByClassName('item');
var imgs = document.querySelectorAll('.container section .slide img')
var pointWrap = document.getElementsByClassName('point')[0];
if(window.innerWidth < 800){
slide.style.width = (window.innerWidth - 20) + 'px';
}else{
slide.style.width = 780 + 'px';
}
var slide_Width = parseInt(slide.style.width);
//轮播图
function slide_img(){
var points = [];
//创建小点函数 初始化小点
function createPoint(){
var pointDom = document.createElement('li');
pointDom.classList.add('point-item');
if(i === 0){
pointDom.classList.add('active')
}
points.push(pointDom)
pointWrap.appendChild(pointDom)
}
//让小点跟随图片改变
function setIndex(){
var index = state.index;
for(var i = 0 ; i < points.length ; i++){
points[i].classList.remove('active')
}
points[index].classList.add('active')
}
for(var i = 0; i <items.length ; i ++){
items[i].style.width = slide_Width + 'px';
createPoint(i);
}
//方便调试的list长度
list.style.width = items.length * slide_Width + 'px';
//创建个对象来记录数值
var state = {
beginX : 0,
nowX : 0,
endX : 0,
index : 0
}
//跟手函数
function slide_hand(){
var deltaX = state.nowX - state.beginX;
list.style.marginLeft = -(slide_Width * state.index) + deltaX + 'px'
}
//复位函数
function reSet(){
list.style.transition = 'all .3s'
list.style.marginLeft = (- state.index * slide_Width) + 'px';
}
//去到下一张函数如果索引小于最后一张索引 也就在最后一张之前时候执行向后滑动 否则复位
function goNext(){
if(state.index < items.length - 1 ){
state.index++;
list.style.transition = 'all .3s'
list.style.marginLeft = - state.index * slide_Width + 'px';
setIndex()
}else{
reSet();
}
}
//去到上一张函数如果索引大于零 也就在第一张之后的时候执行向前滑动 否则复位
function goPrev(){
if(state.index > 0){
state.index--;
list.style.transition = 'all .3s'
list.style.marginLeft = - state.index * slide_Width + 'px';
setIndex()
}else{
reSet();
}
}
//判断复位还是下一张函数 如果滑动距离大于轮播图宽度的五分之二就下一张或者上一张
function _judgeMove(){
var deltaX = state.endX - state.beginX;
if(deltaX >= slide_Width * 2 / 5){
goPrev();
}else if(deltaX <= -slide_Width * 2 / 5){
goNext();
}else{
reSet();
}
}
//手指点击到屏幕触发
slide.addEventListener('touchstart',function(e){
list.style.transition = 'none';
state.beginX = e.targetTouches[0].clientX;
})
//手指在屏幕上移动时触发 跟手事件
slide.addEventListener('touchmove',function(e){
var nowX = e.changedTouches[0].clientX;
state.nowX = nowX;
//跟手函数
slide_hand()
})
//手指抬起时判断轮播图复位还是去下一张
slide.addEventListener('touchend',function(e){
state.endX = e.changedTouches[0].clientX;
//判断函数
_judgeMove();
})
}
slide_img();
var container = document.getElementsByClassName('container')[0];
if(window.innerWidth > 800){
container.style.width = 800 + 'px';
}
if(window.innerWidth > 500){
for(var i = 0 ; i < imgs.length ; i++){
imgs[i].style.height = '250px'
}
}
if(window.innerWidth > 600){
for(var i = 0 ; i < imgs.length ; i++){
imgs[i].style.height = '300px'
}
}
//fetch 获取数据
var url = 'http://localhost:3000/walkBookstore';
function changeBanner(list){
list.forEach(element =>{
document.querySelectorAll('#list img')[element.id-1].src = element.url;
});
}
function insertGoods(list){
var s_books = '';
list.forEach(element =>{
s_books += `<li>
<img src = "${element.cover}">
<h4>${element.bookName}</h4>
<p>¥ <span>${element.price}</span></p>
<del>¥<span>${element.recentPrice}</span></del>
</li>`
})
document.querySelector('.content ul').innerHTML = s_books;
}
fetch(url,{
method:'GET',
// headers:Headers,
mode:'cors'
}).then(Response=> Response.json()).then(
data => {
console.log(data);
banner_list = data.data.banner;
a = data.book_list;
insertGoods(a);
changeBanner(banner_list);
}
);