Javascript Sticky header仅适用于桌面,而不适用于移动设备
我想给一个网站,我建立了一个粘性头在桌面和移动,我似乎只能让它在桌面上工作。我在Wordpress上构建了它(我构建了自己的主题),这就是为什么我有Javascript Sticky header仅适用于桌面,而不适用于移动设备,javascript,jquery,html,css,wordpress,Javascript,Jquery,Html,Css,Wordpress,我想给一个网站,我建立了一个粘性头在桌面和移动,我似乎只能让它在桌面上工作。我在Wordpress上构建了它(我构建了自己的主题),这就是为什么我有jQuery(document.ready)(函数($){添加到代码中(否则Wordpress的jQuery与其他JQ冲突),所以忽略这一部分 这是我正在使用的代码: <script type="text/javascript"> jQuery(document).ready(function( $ ) { $(window).scr
jQuery(document.ready)(函数($){
添加到代码中(否则Wordpress的jQuery与其他JQ冲突),所以忽略这一部分
这是我正在使用的代码:
<script type="text/javascript">
jQuery(document).ready(function( $ ) {
$(window).scroll(function() {
if ($('body').scrollTop() > 1){
$('#header').addClass("sticky");
$('#toprightlogo').css("padding-top", "10px");
$('#toprightlogo').css("padding-bottom", "10px");
$('#topnav a').css("padding-top", "18px");
$('#topnav a').css("padding-bottom", "13px");
$('.callicon').css("top", "14px");
$('button#responsive-menu-button').css("position", "fixed");
$('button#responsive-menu-button').css("top", "0");
}
else{
$('#header').removeClass("sticky");
$('#toprightlogo').css("padding-top", "");
$('#toprightlogo').css("padding-bottom", "");
$('#topnav a').css("padding-top", "");
$('#topnav a').css("padding-bottom", "");
$('.callicon').css("top", "");
$('button#responsive-menu-button').css("position", "");
$('button#responsive-menu-button').css("top", "");
}
});
});
</script>
有人能理解为什么这在移动设备上不起作用吗?也许你对jQuery有问题,我刚刚用香草Javascript为粘性导航创建了这个代码段。它应该在移动设备上起作用,根据你自己的需要进行调整
//获取包含我们要为其创建粘性效果的导航的元素
const nav=document.querySelector(“#main”);
//创建一个变量,用于存储导航的父节点顶部(在本例中为主体元素)与导航顶部之间的空间高度
设topOfNav=nav.offsetTop;
//创建应该在用户每次滚动时运行的函数
函数fixNav(){
//如果用户向下滚动超过我们变量的高度,则添加类fixed nav并添加填充
如果(window.scrollY>=topOfNav){
//添加填充是因为元素由于位置:固定而从文档流中删除
document.body.style.paddingTop=nav.offsetHeight+'px';
//位置:添加css类固定导航
document.body.classList.add('fixed-nav');
}否则{
//当用户再次在导航上方滚动时,删除类和填充
document.body.style.paddingTop=0;
document.body.classList.remove('fixed-nav');
}
}
window.addEventListener('scroll',fixNav);
*{
保证金:0;
填充:0;
}
身体{
高度:800px;
背景:灰色;
}
.上层空间{
显示:块;
背景:红色;
高度:200px
}
导航{
显示:块;
宽度:100%;
排名:0;
颜色:白色;
背景:#333;
高度:100px;
}
导航{
列表样式类型:无;
}
李先生{
浮动:左;
宽度:100px;
}
.固定导航主{
位置:固定;
}
- 菜单项1
- 菜单项2
- 菜单项3
支持、自由、人与人之间的关系是合理的,因为他们的劳动能力是有限的,他们的劳动能力是有限的,他们的劳动能力是有限的,他们的劳动能力是有限的,他们的劳动能力是有限的,他们的劳动能力是有限的,他们的劳动能力是有限的这是一个很好的解释。
我们的工作就是要让我们的生活充满活力!我们的生活充满活力!我们的生活充满活力!我们的生活充满活力!我们的生活充满活力!我们的生活充满活力,我们的生活充满自由,我们的生活充满活力,我们的生活充满活力天哪,猫咪,马蒂斯,尼西,再见。
你为什么不按照WordPress中的方式将你的脚本编入队列?你也应该只添加一个粘性类,而不是使用jQuery切换css。这样你可以说,如果用户立即滚动,就可以将.sticky
放入css目标,然后使用该类的任何内容。你能提供你的工作url吗?@dingo\d我没有编入队列因为我想内联JS,出于页面速度的原因。关于添加一个类而不是切换CSS-我正在为不同的类添加一堆不同的属性,为每个类创建不同的类,并切换它们似乎同样单调乏味,如果不是更单调的话。@user7357089当然-但请注意,该网站是用希伯来语写的…不是这样在代码方面应该很重要。网站URL是
<nav id="topnav">
<?php wp_nav_menu( array( 'menu' => 'topmenu', 'container_class' => 'top-menu', 'theme_location' => 'header-menu' ) ); ?>
</nav>
#topnav ul {
-webkit-padding-start: 0 !important;
margin: 0;
}
#topnav {
direction: rtl;
float: left;
alignment-adjust:central;
margin: 0 auto;
font-weight: 400;
width: auto;
text-align: center;
behavior: url(../js/pie/PIE.htc);
}
#topnav > ul {
position: relative;
list-style: none;
display: block;
position: relative;
-webkit-padding-start: 0 !important;
behavior: url(../js/pie/PIE.htc);
margin: 0;
}
#topnav li,
#topnav span,
#topnav a {
border: 0;
margin: 0 auto;
padding: 0;
position: relative;
text-align: center;
display: block;
behavior: url(../js/pie/PIE.htc);
}
#topnav .menu-item-440 {
margin-left: 20px !important;
}
#topnav > ul {
position: relative;
list-style: none;
display: block;
position: relative;
-webkit-padding-start: 0 !important;
behavior: url(../js/pie/PIE.htc);
margin: 0;
}
#topnav li,
#topnav span,
#topnav a {
border: 0;
margin: 0 auto;
padding: 0;
position: relative;
text-align: center;
display: block;
behavior: url(../js/pie/PIE.htc);
}
#topnav .menu-item-440 {
margin-left: 20px !important;
}
#topnav:after,
#topnav ul:after {
content: '';
display: block;
clear: both;
margin: 0 auto;
text-align: center;
behavior: url(../js/pie/PIE.htc);
}
#topnav a {
color: #0099cc;
font-size: 16px;
font-family: 'Open Sans Hebrew', Arial, Verdana, sans-serif;
text-decoration: none;
padding-top: 24px;
padding-bottom: 19px;
padding-left: 10px;
padding-right: 10px;
overflow: hidden;
transition: 0.2s;
}
.enru a {
min-width: 40px !important;
padding-left: 0px !important;
padding-right: 0px !important;
}
#topnav > ul > li {
float: right;
}
#topnav > ul > li.active a,
#topnav > ul > li:hover > a {
color: #FFFFFF;
background: #00ace6;
}
#topnav .has-sub {
z-index: 1;
}
#topnav .has-sub:hover > ul {
display: block;
background: #ffffff;
}
#topnav .has-sub:hover > ul > li {
display: block;
background: #ffffff;
}
#topnav .has-sub ul {
display: none;
position: absolute;
width: 280px;
top: 100%;
right: 0;
behavior: url(../js/pie/PIE.htc);
}
#topnav .has-sub ul li {
float: none;
position: relative;
}
#topnav .has-sub ul li a {
text-align: right;
background: #ffffff;
border-bottom: 1px solid #eeeeee;
color: #00394d;
display: block;
line-height: 160%;
padding: 15px 20px;
font-size: 14px;
margin: 0 !important;
width: 240px;
}
#topnav .has-sub ul li:hover a {
background: #FF9900;
color: #ffffff;
}
#topnav .has-sub .has-sub:hover > ul {
display: block;
}
#topnav .has-sub .has-sub ul {
display: none;
position: absolute;
right: 100%;
top: 0;
}
#topnav .has-sub .has-sub ul li a {
background: #0099CC;
}
#topnav .has-sub .has-sub ul li a:hover {
background: #4a5662;
}