有的时候经常会遇到移动端吸顶效果,开始我也只是上网查了一下,分别有iOS和android两种样式,如下:
/*!*Android*!*/
.head {
position: fixed;
top: 0;
left: 0;
z-index: 5;
}
/*!*iOS*!*/
.head{
position: -webkit-sticky;
position: sticky;
top: 0;
left: 0;
z-index: 5;
}
设置之后你会发现只有ios手机的吸顶效果OK了,android手机完全不好使,这是因为样式覆盖了,ios的样式在下边,权重相同,自然把android的样式覆盖了。那么如何解决呢?
我是先获取手机的系统类型,再根据不同类型来添加不同类名,达到效果一致的目的!具体代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
<title>Title</title>
<style>
.head{
width:7.5rem;
height:1rem;
line-height: 1rem;
text-align: center;
/*position: fixed;*/
background: #fff;
z-index: 1001;
}
/*!*Android*!*/
.headAndr {
position: fixed;
top: 0;
left: 0;
z-index: 5;
}
/*!*iOS*!*/
.headIos{
position: -webkit-sticky;
position: sticky;
top: 0;
left: 0;
z-index: 5;
}
.headhead{
width:7.5rem;
height:1rem;
position: relative;
}
</style>
</head>
<body>
<div class="head"> //这是头部
<i class="coordinate"></i>
<span>北京</span>
<i class="logo"></i>
<i class="_user"></i>
<em class="wode"></em>
</div>
<div class="headhead"></div> //安卓机吸顶是需要有一部分内容填充到原来位置来实现的(headhead是与head一致大小的一个元素)
<div class="con">中间内容区</div>
//js部分!!!!!!!!!!1
<script src="js/Zepto.min.js"></script> //要引入移动端的类库
<script>
document.querySelector("html").style.fontSize = document.documentElement.clientWidth/375*50+"px"; //自己设定的移动端的1rem = 50px;
var u = navigator.userAgent; //获取显示器的信息
var isAndroid = u.indexOf(‘Android‘) > -1 || u.indexOf(‘Adr‘) > -1; //android终端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if(isiOS == true){ //苹果机,headhead隐藏,加类名headiOS
console.log(1);
$(".headhead").hide();
$(".head").addClass("headIos");
}else{ //安卓机,加类名headAndr
console.log(0);
$(".head").addClass("headAndr");
}
</body>
</html>
这样就解决啦,切记此代码复制粘贴的时候注释要用正确的格式、