0
私はデスクトップとモバイルで固定ヘッダーを構築したサイトを提供したいのですが、デスクトップ上で動作するように見えるかもしれません。私はWordpress(私自身のテーマを作った)でそれを作った。だから私はjQuery(document).ready(function($) {
をコードに加えている(そうでなければ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>
を。これは、メニュー項目を呼び出すHTML/PHPです:
<nav id="topnav">
<?php wp_nav_menu(array('menu' => 'topmenu', 'container_class' => 'top-menu', 'theme_location' => 'header-menu')); ?>
</nav>
これは、CSSです:
#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;
}
誰でも知ることができますなぜこれはモバイルデバイスでは機能しませんか?
なぜあなたはあなたのスクリプト、それはワードプレスで行われるべき方法をエンキューしませんでしたか?また、スティッキークラスを追加するだけで、jQueryを使用してCSSを切り替えることはできません。あなたがすぐにスクロールするならば、このようにすれば、あなたは '.sticky'を入れてから、あなたのcssを使って、そのクラスで何かをターゲットにすることができます。 –
あなたは働くURLを提供できますか? – user7357089
@dingo_dページスピードの理由からJSをインライン化したいので、エンキューしませんでした。 CSSの代わりにクラスを追加することについて - 別のクラスに異なる属性を追加して、それぞれに異なるクラスを作成し、それらを切り替えることはそれほど面倒ではないように思えます。 – udidol