粘滞导航栏工作在Firefox但不是Chrome
我一直在寻找这一整天的答案,我认为其他的风格有问题,但所有的代码,我在火狐浏览器中完美的工作,但在Chrome浏览器中一些奇怪的东西发生。粘滞导航栏工作在Firefox但不是Chrome
向下滚动页面时,在导航栏从标题下切换到固定在页面顶部的位置时,随着轮班发生,它几乎总是会抖动。有时甚至闪烁。我能够复制的一些东西是: 任何时候轮班发生时都会跳转或闪烁。 如果直接滚动到变化点,则会持续闪光灯闪光。 一个缓慢而不变的滚动将跳页约5%。
这是我的代码。
HTML
<!DOCTYPE html>
<html>
<head>
<meta content="en-us" http-equiv="Content-Language" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<meta name="viewport" content="width=device-width, user-scalable=no" />
<title>NMU - SCA</title>
<link rel="stylesheet" href="css/desktop.css">
<link rel="stylesheet" href="css/mobile.css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<div id="header">
<h1>Student Cybersecurity Association</h1>
<h2>of Northern Michigan University</h2>
</div>
<div class="navbar">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="index.html">Information</a></li>
<li><a href="index.html">Contact</a></li>
</ul>
</div>
<div>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
</div>
<script type="text/javascript" src="js/main.js"></script>
</body>
</html>
CSS
* {
margin: 0px;
padding: 0px;
}
html, body {
height:100%
}
#header {
padding: 20%;
background-color: black;
}
#header h1, #header h2 {
text-align: center;
color: white;
}
.navbar {
display: inline-block;
position: relative;
width: 100%;
padding: 0px;
margin: 0px;
background-color: red;
z-index: 100;
top: 0;
left: 0;
}
.navbar ul {
padding: 0px;
margin: 0px;
}
.navbar li {
display: inline-block;
float: left;
padding: 15px;
background-color: red;
}
.navbar a {
text-decoration: none;
color: white;
}
JQuery的
var main = function() {
$(window).scroll(function() {
var scrollVal = $(this).scrollTop();
if (scrollVal >= $('#header').outerHeight(true)) {
$('.navbar').css({'position':'fixed','top' :'0px'});
} else {
$('.navbar').css({'position':'static','top':'auto'});
}
});
}
$(document).ready(main);
我真的生病了这个问题,只是想铬的行为。
我有一个快看,这似乎是为我工作。我会粘贴下面的代码片段。我所做的唯一改变是静态到绝对的位置。
var main = function() {
$(window).scroll(function() {
var scrollVal = $(this).scrollTop();
if (scrollVal >= $('#header').outerHeight(true)) {
$('.navbar').css({'position':'fixed','top' :'0px'});
} else {
$('.navbar').css({'position':'absolute','top':'auto'});
}
});
}
你是炸弹。 – WolfNinja2
.navbar
应该是块,而不是inline-block
和li
的在.navbar
可以只是inline-block
,不需要float
。似乎工作,如果你照顾。
还改变了你的代码来切换一个类,而不是设置内联样式,但这并不是必要的,以使这项工作在铬。
$(window).scroll(function() {
var scrollVal = $(this).scrollTop(),
$header = $('#header'),
$navbar = $('.navbar');
if (scrollVal >= $header.outerHeight(true)) {
$navbar.addClass("fixed");
} else {
$navbar.removeClass("fixed");
}
});
* {
margin: 0px;
padding: 0px;
}
html,
body {
height: 100%
}
#header {
padding: 20%;
background-color: black;
}
#header h1,
#header h2 {
text-align: center;
color: white;
}
.navbar {
position: relative;
background-color: red;
z-index: 100;
top: 0;
left: 0;
right: 0;
}
.fixed {
position: fixed;
}
.navbar ul {
padding: 0px;
margin: 0px;
}
.navbar li {
display: inline-block;
padding: 15px;
background-color: red;
}
.navbar a {
text-decoration: none;
color: white;
}
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<div id="header">
<h1>Student Cybersecurity Association</h1>
<h2>of Northern Michigan University</h2>
</div>
<div class="navbar">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="index.html">Information</a></li>
<li><a href="index.html">Contact</a></li>
</ul>
</div>
<div>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
<p>a</p>
</div>
如果我可以选择两个答案,我会在这里,因为你与其他答案一致,实际上是什么使这一切都停止行事有趣。非常感谢答复! WolfNinja2
@ WolfNinja2 np :) –
我在Windows 10上使用的是Chrome版本56.0.2924.87(64位),但没有看到您提到的问题。也许这是你使用的浏览器?当页面滚动并离开导航时,我看到平滑过渡。 –
我回来了。在鼠标上使用滚轮时平滑过渡,但在浏览器上使用滚动条时没有平滑过渡。 –