移动端吸顶(iOS与安卓)

时间:2021-07-04 10:58:29

有的时候经常会遇到移动端吸顶效果,开始我也只是上网查了一下,分别有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>

这样就解决啦,切记此代码复制粘贴的时候注释要用正确的格式、