一:移动端的viewport
手机拥有了浏览器的初期,人们并没有专门为移动设备设计页面,造成的直接结果就是,访问的页面是直接将电脑页面进行缩放,操作起来有诸多不便,viewport就是用来解决这个问题的
1.viewport的概念:移动设备上,用来显示网页的区域.
a)如果把移动设备的浏览器(也有可能是app中的webview) ,当做相框的话
b)viewport就相当于相框中的画,可能会比相框小,可能会比相框大,如果刚好一样大,那就皆大欢喜.
2.修改viewport:我们可以通过meta标签去修改viewport的值 ,防止滚动条出现,提升用户体验
a)移动web常见设置
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
b)该属性最早是苹果公司在Safari中推出用来解决移动设备的viewport问题的.后来被各大安卓以及浏览器厂商效仿,所以说这个属性真的是非常有用的
3.可选值
a)width:
设置layout viewport 的宽度,为一个正整数,或字符串" device- width"
b)initial-scale:
设置页面的初始缩放值,为一个数字,可以带小数
c)minimum-scale:
允许用户的最小缩放值,为一个数字,可以带小数
d)maximum-scale:
允许用户的最大缩放值,为一个数字,可以带小数
e)height:
设置layout viewport 的高度,这个属性对我们并不重要,很少使用
f)user-scalable:
是否允许用户进行缩放,值为"no"或"yes", no 代表不允许,yes代表允许
二:京东移动端首页制作:
1.将案例分为四个结构块
a)头部固定块
b)图片轮播块
c)商品分类块
d)商品信息块
2.Div结构:
3.头部固定块结构
a)效果:
b)Logo
c)表单元素-搜索栏
d)登录按钮
e)结构:
f)样式:
/*头部样式*/
.jd_header{
width: 100%;
height: 50px;
position: fixed;
z-index: 999;
max-width: 640px; /*最大宽度*/
min-width: 320px; /*最小宽度*/
margin: 0px auto;
}
.jd_header > .jd_logo{
width:60px;
height:36px;
position: absolute;
background: url("../images/sprites.png") no-repeat;
background-size: 200px 200px; /*比例缩放*/
background-position: 0px -103px;
}
.jd_header > .login{
width: 50px;
height: 36px;
line-height:36px;
text-align: center;
color: white;
position: absolute;
right: 0;
top:0;
}
.jd_header > form{
width: 100%;
padding-left:75px;
padding-right:50px;
height:36px;
}
.jd_header > form >input {
width: 100%;
height:30px;
border-radius: 15px;
margin-top:3px;
padding-left:25px;
}
.jd_header > form > .icon_search{
background: url("../images/sprites.png") no-repeat;
background-size: 200px 200px; /*比例缩放*/
position: absolute;
width:20px;
height:20px;
top:8px;
left: 80px;
background-position: -60px -109px;
}
4.图片轮播块结构
a)效果:
b)图片
c)页码标记
d)Div结构
e)样式
/*
轮播图样式*/
.jd_banner{
width:100%;
position: relative;
overflow: hidden;
}
.jd_banner > ul:first-child{
width:1000%; /*10张图片*/
/* 默认偏移*/
transform: translateX(-10%);
/*尽可能做webkit内核的兼容*/
-webkit-transform:translateX(-10%);
}
.jd_banner > ul:first-child >li{
width:10%;
float: left;
}
.jd_banner > ul:first-child >li >a{
width:100%;
/*font-size: 0px;*/
}
.jd_banner > ul:first-child >li >a >img{
width:100%;
display: block;
/*vertical-align: middle;*/
}
/*pageControl的样式*/
.jd_banner > ul:last-child{
width: 118px;
position: absolute;
bottom: 5px;
left:50%;
margin-left: -59px;
}
.jd_banner > ul:last-child >li {
width: 6px;
height: 6px;
float: left;
border-radius: 3px;
border: 1px solid white;
margin-left: 10px;
}
.jd_banner > ul:last-child >li:nth-child(1) {
margin-left: 0px;
}
/*当前被选择的样式*/
.jd_banner > ul:last-child >li.now{
background-color: #fff;
}
5.商品分类块结构
a)效果:
b)分析:8个li,里面包含图片 的文本
c)结构
d)样式
/*
导航栏样式*/
.jd_nav{
width:100%;
background-color: #fff;
}
.jd_nav >ul{
width:100%;
padding:10px 0px;
}
.jd_nav >ul > li{
width:25%;
float: left;
}
.jd_nav >ul > li >a{
display: block;
}
/*图片大小固定*/
.jd_nav >ul > li >a >img{
width: 40px;
height:40px;
display: block;
margin:0 auto;
}
.jd_nav >ul > li >a > p{
text-align: center;
color: #666;
font-size: 12px;
padding:6px;
}
6.商品信息块结构:第一个子结构块“掌上秒杀”有一些特殊,对其进行单独处理
a)效果:
b)结构
i. 顶部标题栏
- 时钟图标
- 文本
- 倒计时
- 更多
ii.详细内容
c) Div代码
i.整体结构:
ii.顶部标题栏
1.掌上秒杀
2.京东超市
iii.内容
d)样式
/*商品主盒子*/
.jd_product{
padding:0 5px;
}
.jd_product > .jd_product_box{
width:100%;
margin-top:10px;
background-color: #fff;
box-shadow: 0 0 1px #ededed;
}
.jd_product > .jd_product_box > .jd_product_box_tip{
height:32px;
min-width: 320px;
line-height:32px;
border-bottom: 1px solid #e0e0e0;
}
/*第一个商品信息块没有底部边框*/
.jd_product > .jd_product_box > .jd_product_box_tip.no-border{
border-bottom: none;
}
.jd_product > .jd_product_box > .jd_product_box_tip >h3{
font-weight: normal; /*去除加粗效果*/
font-size: 15px;
padding-left: 20px;
position: relative;
color: #666;
}
.jd_product > .jd_product_box > .jd_product_box_tip >h3::before{
/*转换块的方式:display:block position:abslute float:left*/
content: "";
position: absolute;
width: 3px;
height: 12px;
left: 10px;
top:10px;
background-color: #d8505c;
}
/*掌上秒杀*/
.jd_sk{
}
.jd_sk .sk_icon{
background: url("../images/seckill-icon.png") no-repeat;
background-size: 16px 20px;
width: 16px;
height: 20px;
float: left;
margin-top:6px;
}
.jd_sk .sk_name{
color: #d8505c;
font-size: 15px;
float: left;
}
.jd_sk .sk_time{
float: left;
margin-top:10px;
}
.jd_sk .sk_time > span{
width: 15px;
height: 15px;
line-height:15px;
background-color: #222;
text-align: center;
color: white;
float: left;
margin-left:3px;
}
.jd_sk .sk_time > span:nth-child(3n){
background: white;
color: #333;
width: 5px;
}
.jd_sk .jd_product_box-content > ul{
width: 100%;
padding:10px 0;
}
.jd_sk .jd_product_box-content > ul > li{
width:33.333%;
float: left;
font-size: 12px;
}
.jd_sk .jd_product_box-content > ul > li > a{
width:100%;
display: block;
border-right: 1px solid #e0e0e0;
}
.jd_sk .jd_product_box-content > ul > li:last-child > a{
border-right: none;
}
.jd_sk .jd_product_box-content > ul > li > a >img{
width:60%;
margin: 0 auto;
display: block;
}
/*E:first-of-type:选择E同类型的同级的选择器的第一个元素
E:last-of-type:选择E同类型的同级的选择器的最后一个元素
E:nth-of-type(n):选择E同类型的同级的选择器的第n个元素*/
.jd_sk .jd_product_box-content > ul > li >p:first-of-type{
text-align: center;
color: #d8505c;
padding-top:5px;
}
.jd_sk .jd_product_box-content > ul > li >p:last-of-type{
text-align: center;
text-decoration: line-through;
}
/*组合样式*/
.w_50{
width:50%;
display: block;
}
.w_50 > img{
width:100%;
display: block;
}
.b_left{
border-left:1px solid #e0e0e0;
}
.b_right{
border-right:1px solid #e0e0e0;
}
.b_bottom{
border-bottom:1px solid #e0e0e0;
}
7.Js效果:头部透明,当滚动的时候,慢慢将透明度修改为不透明,当滚动的高度超出轮播图的高度时,保持固定的颜色
window.onload=function(){
search();
}
function search(){
/*1.当滚动的时候,颜色加深
2.当超出轮播图的范围,颜色固定*/
/*获取搜索盒子*/
var searchBox=document.querySelector('.jd_header_box');
/*获取轮播盒子*/
var bannerBox=document.querySelector('.jd_banner');
//获取轮播图的高度
var height=bannerBox.offsetHeight;
//监听window的滚动事件
window.onscroll=function(){
//不断的获取离顶部的距离
var top=document.body.scrollTop;
//初始透明度
var opacity=0;
//判断当前滚动的距离是否大于轮播图的高度
if (top<height){
opacity=top/height;
}
else{
opacity=1;
}
searchBox.style.background="rgba(201,21,35,"+opacity+")";
}
}