index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=0">
<title>京东移动站-首页</title>
<link rel="stylesheet" href="css/base.css">
<link rel="stylesheet" href="css/index.css">
</head>
<body>
<!--版心-->
<!--
1.最大宽度设置成了640px
2.设计稿psd的尺寸就是640px
3.目的:当设备的尺寸比设计稿不至于失真
4.640px的尺寸设计稿的原因:根据当前主要流行的设备尺寸有关系iphone4,4s 尺寸320px
5.750px的设计稿:参考原型iphone6 尺寸375px
6.最小宽度320px 保证最小的宽度320px不让页面错乱
-->
<!--指定了最大和最小宽度-->
<div class="jd_container">
<!--顶部搜索-->
<!--没指定最大和最小宽度-->
<header class="jd_search">
<!--指定了最大和最小宽度-->
<div class="jd_search_box">
<a href="#" class="icon_logo"></a>
<form action="#">
<span class="icon_search"></span>
<input type="search" placeholder="占位符">
</form>
<a href="#" class="login">登录</a>
</div>
</header>
<!--轮播图-->
<div class="jd_banner">
<ul class="clearFix">
<li><a href=""><img src="images/l8.jpg" alt=""></a></li>
<li><a href=""><img src="images/l1.jpg" alt=""></a></li>
<li><a href=""><img src="images/l2.jpg" alt=""></a></li>
<li><a href=""><img src="images/l3.jpg" alt=""></a></li>
<li><a href=""><img src="images/l4.jpg" alt=""></a></li>
<li><a href=""><img src="images/l5.jpg" alt=""></a></li>
<li><a href=""><img src="images/l6.jpg" alt=""></a></li>
<li><a href=""><img src="images/l7.jpg" alt=""></a></li>
<li><a href=""><img src="images/l8.jpg" alt=""></a></li>
<li><a href=""><img src="images/l1.jpg" alt=""></a></li>
</ul>
<ul>
<li class="now"></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<!--导航栏-->
<nav class="jd_nav">
<!--不清浮动不占位,背景色设置不上去-->
<ul class="clearFix">
<li><a href=""><img src="images/nav0.png" alt=""><p>分类</p></a></li>
<li><a href=""><img src="images/nav1.png" alt=""><p>分类</p></a></li>
<li><a href=""><img src="images/nav2.png" alt=""><p>分类</p></a></li>
<li><a href=""><img src="images/nav3.png" alt=""><p>分类</p></a></li>
<li><a href=""><img src="images/nav4.png" alt=""><p>分类</p></a></li>
<li><a href=""><img src="images/nav5.png" alt=""><p>分类</p></a></li>
<li><a href=""><img src="images/nav6.png" alt=""><p>分类</p></a></li>
<li><a href=""><img src="images/nav7.png" alt=""><p>分类</p></a></li>
</ul>
</nav>
<!--产品区块-->
<div class="jd_product">
<section class="jd_product_box sk">
<div class="tit nb">
<div class="f_left">
<span class="icon"></span>
<span class="name">掌上秒杀</span>
<div class="time">
<span>0</span>
<span>0</span>
<span>:</span>
<span>0</span>
<span>0</span>
<span>:</span>
<span>0</span>
<span>0</span>
</div>
</div>
<div class="f_right"><a class="mr10" href="#">更多></a></div>
</div>
<div class="con">
<ul class="pro clearFix">
<li>
<a href="#"><img src="images/detail01.jpg"></a>
<p class="nowPrice">¥10:00</p>
<p class="oldPrice">¥100:00</p>
</li>
<li>
<a href="#"><img src="images/detail02.jpg"></a>
<p class="nowPrice">¥10:00</p>
<p class="oldPrice">¥100:00</p>
</li>
<li>
<a href="#" class="nb"><img src="images/detail01.jpg"></a>
<p class="nowPrice">¥10:00</p>
<p class="oldPrice">¥100:00</p>
</li>
</ul>
</div>
</section>
<section class="jd_product_box">
<div class="tit"><h3>京东超市</h3></div>
<div class="con clearFix">
<a class="w_50p f_left br" href="#"><img src="images/cp1.jpg" alt=""></a>
<a class="w_50p f_right bb" href="#"><img src="images/cp2.jpg" alt=""></a>
<a class="w_50p f_right" href="#"><img src="images/cp3.jpg" alt=""></a>
</div>
</section>
<section class="jd_product_box">
<div class="tit"><h3>京东超市</h3></div>
<div class="con clearFix">
<a class="w_50p f_right bl" href="#"><img src="images/cp4.jpg" alt=""></a>
<a class="w_50p f_left bb" href="#"><img src="images/cp5.jpg" alt=""></a>
<a class="w_50p f_left" href="#"><img src="images/cp6.jpg" alt=""></a>
</div>
</section>
<section class="jd_product_box">
<div class="tit "><h3>京东超市</h3></div>
<div class="con clearFix">
<a class="w_50p f_right bl" href="#"><img src="images/cp1.jpg" alt=""></a>
<a class="w_50p f_left bb" href="#"><img src="images/cp2.jpg" alt=""></a>
<a class="w_50p f_left" href="#"><img src="images/cp3.jpg" alt=""></a>
</div>
</section>
</div>
</div>
<script src="js/base.js"></script>
<script src="js/index.js"></script>
</body>
</html>
index.css
body {
background-color: #f5f5f5;
}
/*版心*/
.jd_container {
min-width: 320px;
max-width: 640px;
width: 100%;
margin: 0 auto;
}
/*顶部搜索*/
.jd_search {
width: 100%;
height: 40px;
position: fixed;
left: 0;
top: 0;
/*background-color: purple;*/
z-index: 1000;
}
.jd_search .jd_search_box {
min-width: 320px;
max-width: 640px;
width: 100%;
margin: 0 auto;
height: 40px;
background: rgba(201,21,35,0);
position: relative;
}
.jd_search .jd_search_box .icon_logo {
position: absolute;
left: 10px;
top: 4px;
width: 70px;
height: 36px;
background-position: 0 -103px ;
}
.jd_search .jd_search_box .login {
position: absolute;
right: 0;
top: 0;
width: 50px;
height: 40px;
line-height: 40px;
text-align: center;
color: #ccc;
}
/*百分比的宽度是基于父容器内容的宽度*/
.jd_search .jd_search_box form {
width: 100%;
padding-left: 70px;
padding-right: 50px;
position: relative;
}
.jd_search .jd_search_box form .icon_search{
position: absolute;
width: 20px;
height: 20px;
left: 80px;
top: 10px;
/*后面指定精灵图的长和宽,压缩之后的长宽,前面是压缩之后图片左上角的位置*/
background-position:-60px -109px ;
}
.jd_search .jd_search_box form input{
width: 100%;
height: 30px;
margin-top: 5px;
color: #ccc;
border-radius: 15px;
padding-left: 30px;
}
/*轮播图*/
.jd_banner {
width: 100%;
overflow: hidden;
position: relative;
}
.jd_banner ul:first-child {
/*这个ul里要放十张图片*/
width: 1000%;
transform: translateX(-10%);
-webkit-transform: translateX(-10%);
}
.jd_banner ul:first-child li{
/*每张图片的宽的是它的父亲的10%*/
width: 10%;
float: left;
}
.jd_banner ul:first-child li a{
/*每个a占满li*/
width: 100%;
display: block;
}
.jd_banner ul:first-child li a img{
width: 100%;
display: block;
}
.jd_banner ul:last-child {
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 6px;
width: 118px;
height: 6px;
}
.jd_banner ul:last-child li{
width: 6px;
height: 6px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border: 1px solid #fff;
border-radius: 3px;
margin-left: 10px;
float: left;
}
.jd_banner ul:last-child li:first-child {
margin-left:0;
}
.jd_banner ul:last-child li.now{
background: #fff;
}
.jd_nav {
width: 100%;
background-color: #fff;
border-bottom: 1px solid #ccc;
}
.jd_nav ul{
width: 100%;
padding-top: 10px;
padding-bottom: 10px;
}
.jd_nav ul li{
width: 25%;
float: left;
}
.jd_nav ul li a{
display: block;
width: 100%;
}
.jd_nav ul li a img{
width: 40px;
height: 40px;
margin: 0 auto;
/*用margin的必须是块元素*/
display: block;
}
.jd_nav ul li a p{
text-align: center;
color: #666;
font-size: 12px;
padding: 5px;
}
/*产品区块*/
.jd_product {
padding: 0 5px;
}
.jd_product_box {
margin-top: 10px;
box-shadow: 0 0 2px #ccc;
/*min-height: 200px;*/
background-color: #fff;
}
.jd_product_box .tit {
height: 34px;
line-height: 34px;
border-bottom: 1px solid #ddd;
}
.jd_product_box .tit.nb {
border-bottom: none;
}
.jd_product_box .tit h3 {
font-weight: normal;
position: relative;
padding-left: 23px;
}
.jd_product_box .tit h3::before {
content:"";
height: 12px;
width: 3px;
background-color: #d8505c;
/*伪元素是行内元素,不能指定长宽*/
position: absolute;
left: 10px;
top: 11px;
}
/*秒杀*/
.sk .icon {
width: 16px;
height: 20px;
float: left;
margin-left:10px;
margin-top: 7px;
background: url("../images/seckill-icon.png") no-repeat center/16px 20px;
}
.sk .name {
float: left;
margin-left:10px;
font-size: 16px;
color: #d8505c;
}
.sk .time {
float: left;
margin-left:10px;
}
.sk .time span {
float: left;
width: 16px;
height: 16px;
line-height:16px;
text-align: center;
color: #fff;
background-color: #333;
margin-left: 3px;
margin-top: 9px;
}
.sk .time span:nth-child(3),
.sk .time span:nth-child(6) {
background-color: #fff;
color: #333;
width: 3px;
}
.sk .pro {
width: 100%;
padding: 10px 0;
}
.sk .pro li{
width: 33.33%;
float: left;
}
.sk .pro li a{
display: block;
border-right: 1px solid #ddd;
}
.sk .pro li a.nb {
border-right: none;
}
.sk .pro li a img{
display: block;
margin: 0 auto;
/*图片的长度会根据宽度自动缩放*/
width: 64%;
}
.sk .pro li p{
text-align: center;
font-size: 12px;
padding: 5px 0;
}
.sk .pro li .nowPrice{
color: #d8505c;
}
.sk .pro li .oldPrice{
color: #666;
/*中间加条线*/
text-decoration: line-through;
}
/*组合样式的使用*/
.w_50p {
width: 50%;
/*display: block;*/
}
.w_50p img {
display: block;
width: 100%;
}
.bl {
border-left: 1px solid #ddd;
}
.br {
border-right: 1px solid #ddd;
}
.bb {
border-bottom: 1px solid #ddd;
}
base.css
/*reset css*/
*,
*::after,
*::before {
margin: 0;
padding: 0;
/*移动端宽度不固定,盒子的总宽度要包括边框*/
box-sizing: border-box;
-webkit-border-sizing: border-box;
/*去掉点击时高亮效果*/
tap-highlight-color: transparent;
-webkit-tap-highlight-color: transparent;
}
body {
font-family: "Microsoft YaHei",sans-serif;
font-size: 14px;
color: #333;
}
ul,ol {
list-style: none;
}
a {
text-decoration: none;
color: #333;
}
input,textarea {
/*点击时去掉边框显蓝色*/
outline: none;
/*去掉边框,自己定义边框*/
border: none;
/*防止拉大*/
resize: none;
/*元素的外观,none没有任何样式*/
-webkit-appearance: none;
}
/*common css*/
.f_left {
float: left;
}
.f_right {
float: right;
}
/*清除浮动*/
.clearFix::after,
.clearFix::before {
content: "";
display: block;
visibility: hidden;
line-height: 0;
height: 0;
clear: both;
}
.ml10 {
margin-left: 10px;
}
.mr10 {
margin-right: 10px;
}
.mt10 {
margin-top: 10px;
}
.mc10 {
margin-bottom: 10px;
}
/*使用精灵图的公用样式*/
[class^="icon_"],[class*="icon_"] {
background-repeat: no-repeat;
background-image: url("../images/sprites.png");
-webkit-background-size: 200px 200px;
background-size: 200px 200px;
}
index.js
window.onload = function () {
search();
banner();
drawTime();
};
var search = function () {
// 默认顶部透明背景
// 当卷到一定程度透明度不再变
var searchBox = document.querySelector(".jd_search_box");
var banner = document.querySelector(".jd_banner");
var height = banner.offsetHeight;
//监听页面滚动事件
window.onscroll = function () {
//获取向上卷曲的距离
//var scrollTop=document.documentElement.scrollTop;
//var scrollTop=document.body.scrollTop;
var scrollTop = window.pageYOffset;
// console.log(scrollTop);
//随着向上卷曲顶部透明度在变
var opacity = 0;
if (scrollTop < height) {
opacity = scrollTop / height * 0.85;
} else {
opacity = 0.85;
}
searchBox.style.background = "rgba(201,21,35," + opacity + ")";
};
};
var banner = function () {
var banner = document.querySelector(".jd_banner");
var width = banner.offsetWidth;
var imageBox = banner.querySelector("ul:first-child");
var pointBox = banner.querySelector("ul:last-child");
var point = pointBox.querySelectorAll("li");
var addTransition = function () {
imageBox.style.transition = "all,0.5s";
//兼容性要调
imageBox.style.webkitTransition = "all,0.5s";
};
var setTransform = function (distance) {
imageBox.style.transform = "translateX(" + distance + "px)";
imageBox.style.webkitTransform = "translateX(" + distance + "px)";
};
var removeTransition = function () {
imageBox.style.transition = "none";
imageBox.style.webkitTransition = "none";
};
// 图片是从第一张开始滚动的,第零张是第八张
var index = 1;
var timer = setInterval(function () {
index++;
//做过渡
addTransition();
//做位移
setTransform(-index * width);
}, 2000);
//监听每执行一次动画后index的值
document.addEventListener("transitionend", function () {
//当最后一张播完后
if (index >= 9) {
//移到第一张播
index = 1;
//去掉过渡,这样图片会瞬间移到指定位置
removeTransition();
//做位移
setTransform(-index * width);
}
//当用户自己滑动,最左面那个划过之后
if (index <= 0) {
index = 8;
//去掉过渡
removeTransition();
//做位移
//做位移,去掉过渡后会瞬间移动到这个位置
setTransform(-index * width);
}
//此时index的范围是1-8
//根据索引设置点
//点的索引是index-1
setPoint();
});
var setPoint = function () {
for (var i = 0; i < point.length; i++) {
var obj = point[i];
obj.classList.remove("now");
}
point[index - 1].classList.add("now");
};
var startX=0;
var distance=0;
var isMove=false;
//触摸事件:
imageBox.addEventListener("touchstart",function(e){
startX=e.touches[0].clientX;
clearInterval(timer);
});
imageBox.addEventListener("touchmove",function(e){
//判断一下手放上去到底移动没
isMove=true;
var moveX=e.touches[0].clientX;
distance=moveX-startX;
var translateX=distance-index*width;
//当手指放上去之后要把原来的过渡去掉,不认会延迟0.2秒
removeTransition();
setTransform(translateX);
});
imageBox.addEventListener("touchend",function(e){
if(isMove){
if(Math.abs(distance)<width/3){
//移动的太少返回刚才的位置
//返回时要过渡返回
addTransition();
setTransform(-index*width);
}else{
//判断该往左移还是往右移
if(distance>0){
//右移
index--;
addTransition();
setTransform(-index*width);
}else{
// 左移
index++;
addTransition();
setTransform(-index*width);
}
}
}
//重置一下参数
startX=0;
distance=0;
clearInterval(timer);
timer=setInterval(function () {
index++;
//做过渡
addTransition();
//做位移
setTransform(-index * width);
}, 2000);
});
};
var drawTime = function () {
var time=2*60*60;
var spans=document.querySelector(".time").querySelectorAll("span");
var timer=setInterval(function(){
time--;
var h=Math.floor(time/3600);
var min=Math.floor(time%3600/60);
var s=time%60;
spans[0].innerHTML=Math.floor(h/10);
spans[1].innerHTML=h%10;
spans[3].innerHTML=Math.floor(min/10);
spans[4].innerHTML=min%10;
spans[6].innerHTML=Math.floor(s/10);
spans[7].innerHTML=s%10;
if(time<=0){
clearInterval(timer);
}
},1000);
};