有的時候經常會遇到移動端吸頂效果,開始我也只是上網查了一下,分別有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>
這樣就解決啦,切記此代碼復制粘貼的時候注釋要用正確的格式、