#javascript #jquery #css #navigation #sticky
Вопрос:
Я создал липкую навигационную панель, добавив динамический класс .sticky
в CSS, и применил его к a conditional
в jQuery.
Как только я начинаю прокручивать, выравнивание в навигационной панели меняется, и это также влияет на выравнивание только в пространстве героя.
Элементы списка на панели навигации смещаются вправо, и расстояние между ними увеличивается. Изображение пространства героя полностью смещается вправо, а текст слева также расширяется вправо. Поля слева остаются прежними.
Вот код ниже:
$(document).ready(function(){
console.log("Your index.js file is loaded correctly!");
function fade() {
$('.preloader').fadeOut("slow");
}
setTimeout(fade, 1000);
$(".viewProject").hover(function(){
$(this).animate({
width: "229px"
});
}, function(){
$(this).animate({
width: "152px"
});
});
//sticky nav here//
var stickyNav = $("header").offset().top;
var sticky = function(){
var scrollTop = $(window).scrollTop();
if(scrollTop>stickyNav){
$("header").addClass("sticky");
}else {
$("header").removeClass("sticky");
}
}
sticky();
$(window).scroll(function(){
sticky();
});
});
//this function works, but its alignment changes on scroll//
//hero image alignment also changes on scroll//
body {
margin: 0;
}
/* navigation styling*/
.logo {
height: 40px;
width: 40px;
padding-left: 124px;
}
a:visited {
color:#222222;
}
header {
background-color:rgba(255,255,255,.67);
padding: 15px;
}
header ul {
float: right;
color: #222222;
font-family: 'Raleway' sans-serif;
font-size: 19px;
padding-right: 124px;
}
header li {
display: inline-block;
padding: 0px 25px;
}
header p {
display: inline-block;
}
.sticky {
position: fixed;
top: 0;
width: 100vw;
overflow: none;
}
/*.sticky is a dynamic class I added and used it in the
js file in order to create a fixed nav menu*/
/*it works, but having some alignment issues with the
nav bar itself and hero image (see js notes)*/
/* hero styling*/
.heroImg {
margin-top: auto;
background-color: #e0ebff;
height: 633px;
width:100%;
}
.heroContent {
display: flex;
}
.heroContent h1 {
font-family: 'Playfair Display', serif;
font-size: 45px;
font-weight: bold;
margin-left: 139px;
width: 100%;
margin-top: 10vh;
}
#infoBlock {
margin-top: 5vh;
}
.heroContent p {
font-family: 'Raleway', sans-serif;
font-size: 16px;
margin-left: 139px;
line-height: 1.6;
}
.heroText {
width: 75%;
display: flex;
flex-direction: column;
overflow: hidden;
}
#heroPhoto{
width: 25%;
}
#seeWork {
margin-top: 15vh;
color:black;
font-family: 'Raleway', sans-serif;
font-size: 16px;
border: none;
font-weight: bold;
background-color: white;
padding: 15px;
width: 229px;
text-align: end;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!--Navigation-->
<header>
<img class=logo src="images/logo.svg">
<ul>
<a href="#myWork"><li id="work">Work</li></a>
<a href="aboutme.html" id="about"><li>About</li></a>
<a href="#myFooter"><li>Contact</li></a>
<li>Resume</li>
</ul>
</header>
<!--Hero Image-->
<section class="heroImg">
<div class="heroContent">
<div class="heroText">
<h1>Shalom, I'm Natalie!</h1>
<p>UX/ UI designer, passionate about finding creative solutions that improve digital experiences</p>
<p id="infoBlock">Currently based in Fort Collins, CO, I recently completed the University of Texas UX/ UI Bootcamp, where I applied user-centered design to real world situations. I enjoy every part of this iterative process, from user research to front-end-development.</p>
<button id="seeWork">See My Work</button>
</div>
<div id="heroPhoto"><img src="images/pop art image me@2x.png[image moves all the way to the right of hero container and text also expands its with to the right of the container ][1]"></div>
</div>
</section>
Комментарии:
1. @The_Death_Raw В моем реальном файле я уже связал библиотеку jquery.
<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
Я пошел дальше и добавил тот, который вы вставили вместо этого, но у меня все еще возникают проблемы с выравниванием.