Div 底部工具栏出现在 iPhone 但不出现在 Android
Div bottom toolbar appearing on iPhone but not on Android
我正在制作一个 adapted/responsive 移动网络应用程序。我有一个工具栏位于我的计算机浏览器屏幕的右侧,它应该固定在移动设备屏幕的底部。奇怪的是,当使用 iPhone 打开它时,工具栏正确地固定在底部,但是当我在 Android 设备(例如我的三星 Galaxy S5)上打开应用程序时,工具栏根本没有出现。做一些测试,当我将样式更改为相对样式而不是固定样式时,工具栏显示在 iPhone 和 Android 屏幕中间的相同位置。您认为可能是什么问题?
代码如下:
<div class="col-sm-2">
<div class="sidebar-nav-right">
<div class="navbar navbar-default navbar-style" role="navigation">
<div class="nav">';
<a class="brand font-26 block brand-color">Tools</a>
<ul class="nav navbar-nav center">
<li><a data-toggle="modal" data-target="#newgroup-modal" class = "font-16">Create Group</a></li>
<li><a href="javascript:;" class = "font-16">Item 2</a></li>
<li><a href="javascript:;" class = "font-16">Item 3</a></li>
</ul>
</div>
</div>
</div>
</div>
.sidebar-nav-right{
width: 100%;
position: fixed;
bottom: 0px;
border-top: 1px solid black;
}
此样式在针对较小屏幕尺寸的媒体查询中,并且如上所述,正在适应一个品牌的移动设备,因此我知道媒体查询没有问题。
这是旧版 Android 浏览器的常见问题。只需将 -webkit-backface-visibility: hidden;
添加到固定元素即可。
有两种方法可以解决这个问题。有关 Javascript 解决方案列表,请参阅 Brad Frost 的这篇文章:http://bradfrost.com/blog/mobile/fixed-position/
或者尝试上面提到的 Ben Frain 修复:https://benfrain.com/easy-css-fix-fixed-positioning-android-2-2-2-3/
另请参阅 Ben Frain 的 CodePen:http://codepen.io/benfrain/full/wckpb
如果加{left: 0}解决不了,估计是.sidebar-nav-right的父节点有transform;那么位置原点已经重置。
我觉得@GoreWang 的评论很到位。您应该尝试以下两件事:
(1) With fixed position, sometimes not having a left 属性 set causes the fixed element to not appear页面加载时。尝试添加以下内容:
.sidebar-nav-right {
left: 0;
}
(2) 将以下代码添加到您的固定元素中:
.sidebar-nav-right {
transform: translateZ(0);
-webkit-transform: translateZ(0);
}
这会强制 Chrome 使用硬件加速来连续绘制固定元素并避免这种奇怪的行为。(已知错误)
我正在制作一个 adapted/responsive 移动网络应用程序。我有一个工具栏位于我的计算机浏览器屏幕的右侧,它应该固定在移动设备屏幕的底部。奇怪的是,当使用 iPhone 打开它时,工具栏正确地固定在底部,但是当我在 Android 设备(例如我的三星 Galaxy S5)上打开应用程序时,工具栏根本没有出现。做一些测试,当我将样式更改为相对样式而不是固定样式时,工具栏显示在 iPhone 和 Android 屏幕中间的相同位置。您认为可能是什么问题?
代码如下:
<div class="col-sm-2">
<div class="sidebar-nav-right">
<div class="navbar navbar-default navbar-style" role="navigation">
<div class="nav">';
<a class="brand font-26 block brand-color">Tools</a>
<ul class="nav navbar-nav center">
<li><a data-toggle="modal" data-target="#newgroup-modal" class = "font-16">Create Group</a></li>
<li><a href="javascript:;" class = "font-16">Item 2</a></li>
<li><a href="javascript:;" class = "font-16">Item 3</a></li>
</ul>
</div>
</div>
</div>
</div>
.sidebar-nav-right{
width: 100%;
position: fixed;
bottom: 0px;
border-top: 1px solid black;
}
此样式在针对较小屏幕尺寸的媒体查询中,并且如上所述,正在适应一个品牌的移动设备,因此我知道媒体查询没有问题。
这是旧版 Android 浏览器的常见问题。只需将 -webkit-backface-visibility: hidden;
添加到固定元素即可。
有两种方法可以解决这个问题。有关 Javascript 解决方案列表,请参阅 Brad Frost 的这篇文章:http://bradfrost.com/blog/mobile/fixed-position/
或者尝试上面提到的 Ben Frain 修复:https://benfrain.com/easy-css-fix-fixed-positioning-android-2-2-2-3/
另请参阅 Ben Frain 的 CodePen:http://codepen.io/benfrain/full/wckpb
如果加{left: 0}解决不了,估计是.sidebar-nav-right的父节点有transform;那么位置原点已经重置。
我觉得@GoreWang 的评论很到位。您应该尝试以下两件事:
(1) With fixed position, sometimes not having a left 属性 set causes the fixed element to not appear页面加载时。尝试添加以下内容:
.sidebar-nav-right {
left: 0;
}
(2) 将以下代码添加到您的固定元素中:
.sidebar-nav-right {
transform: translateZ(0);
-webkit-transform: translateZ(0);
}
这会强制 Chrome 使用硬件加速来连续绘制固定元素并避免这种奇怪的行为。(已知错误)