Итак, я попытался настроить навигатор, который установлен прямо под рамкой вокруг страницы. Я сделал иллюстрацию, чтобы помочь объяснить: Sticky navbar имеет глючное поведение
На странице, у меня есть границы (синяя) вокруг всей страницы, то Navbar (красный), который прокручивается со страницей, пока он не достигнет верхней части navbar и палочки, пока пользователь не прокрутит резервные копии.
Моя проблема в том, что кажется, что что-то швыряет мой навигатор и его содержимое вправо, когда js пинает (когда пользователь прокручивает верхнюю границу), делая очевидное движение рывка.
Вот мой HTML:
<html>
<head>
<title>Title</title>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield :scss %>
<div class="container-main <%= layout %>">
<nav class="main-nav">
<a class="navbar-brand" href="#">
<i class="fa fa-bars menu-icon"></i>
</a>
</nav>
<div class="container">
<%= yield %>
</div>
</div>
<%= yield :js %>
</body>
</html>
ли кто-нибудь знает, как это исправить? Я не уверен, что его загрузочная вещь, которую нужно переопределить или что ... Я попытался установить марку navbar влево, чтобы приравнять движение, но в конечном итоге испортил начальные столбцы, которые я установил. любой совет оценили!
Вот мой CSS:
.main-nav {
text-align: center;
margin-top: 50px;
background: transparent;
height: 50px;
z-index: 150;
margin-bottom: -50px;
}
.main-nav-scrolled {
position: fixed;
width: 100%;
top: 0;
// margin-left: -35px; not working
}
.main-nav,
.container {
position: relative;
}
.container {
background: transparent;
padding: 100px
}
.layout-with-border {
background: #eaeae8; //fixed for all product pages
border: 35px solid #dad4c9; //theme color light
}
.layout-without-order {
}
Вот мой JS:
var mn = $(".main-nav");
mns = "main-nav-scrolled";
var BorderWidth = 35;
$(window).scroll(function() {
if($(this).scrollTop() > BorderWidth) {
mn.addClass(mns);
} else {
mn.removeClass(mns);
}
});
К сожалению, это немного сбивает с толку, как размещать так много деталей, так как я совсем недавно. Я создал помощник для расположения границы:
module ApplicationHelper
def layout
if params[:controller] == 'products' && params[:action] == 'show'
'layout-with-border'
elsif params[:controller] == 'volumes' && params[:action] == 'show'
'layout-with-border'
else
'layout-without-border'
end
end
end
Не могли бы вы сделать jsFiddle для этой проблемы? – IvanJ
Попытайтесь добавить позицию: относительно родителя навигатора (main-контейнер) –
Добавить слева: 0; на .main-nav-scrolled, я думаю, он должен решить вашу проблему. – LegendaryAks