【发布时间】:2017-08-23 19:33:12
【问题描述】:
Ruby 2.3.1
Rails 5.1.2
当我开始滚动时,我正在尝试将导航栏中的徽标图像更改为另一个,但到目前为止没有成功。在常规 HTML 中,通过这种方式可以正常工作:
<div class="logo">
<a class="logo-wrap" href="index.html">
<img class="logo-img logo-img-main" src="img/logo/ymk_logo_lw.png" alt="Ymk Logo">
<img class="logo-img logo-img-active" src="img/logo/ymk_logo.png" alt="Ymk Logo">
</a>
</div>
并具有以下 CSS 属性:
.header .logo-img-main {
display: inline-block;
transition-duration: 400ms;
transition-property: all;
transition-timing-function: cubic-bezier(0.7, 1, 0.7, 1);
}
.header .logo-img-active {
display: none;
transition-duration: 400ms;
transition-property: all;
transition-timing-function: cubic-bezier(0.7, 1, 0.7, 1);
}
.header .logo .logo-img-main {
display: none;
}
.header .logo .logo-img-active {
display: inline-block;
}
.page-on-scroll .header .logo-img-main {
display: none;
transition-duration: 400ms;
transition-property: all;
transition-timing-function: cubic-bezier(0.7, 1, 0.7, 1);
}
.page-on-scroll .header .logo-img-active {
display: inline-block;
transition-duration: 400ms;
transition-property: all;
transition-timing-function: cubic-bezier(0.7, 1, 0.7, 1);
}
还有 JS:
var Layout = function () {
'use strict';
// handle on page scroll
var handleHeaderOnScroll = function() {
if ($(window).scrollTop() > 60) {
// var colorLogoPath = "#{asset_path('logo/ymk_logo.png')}";
$('body').addClass('page-on-scroll');
// $('.logo-img .logo-img-active').attr('src', colorLogoPath);
} else {
// var whiteLogoPath = "#{asset_path('logo/ymk_logo_lw.png')}";
$('body').removeClass('page-on-scroll');
// $('.logo-img .logo-img-main').attr('src', whiteLogoPath);
}
}
return {
init: function () {
handleHeaderOnScroll(); // initial setup for fixed header
// handle minimized header on page scroll
$(window).scroll(function() {
handleHeaderOnScroll();
});
}
};
}();
$(document).ready(function() {
Layout.init();
});
在 JS 部分,我注释掉了一些部分,因为我试图实现此 SO question 中的一些代码,但由于它向我显示图像,所以只能到达某个点。
所以我回去决定在html中实现和if声明:
<div class="logo">
<a class="logo-wrap">
<% if image_tag("logo/ymk_logo_lw.png", :class => "logo-img logo-img-main", :alt => "Ymk Logo White") %>
<%= image_tag("logo/ymk_logo_lw.png", :class => "logo-img logo-img-main", :alt => "Ymk Logo White") %>
<% else %>
<%= image_tag("logo/ymk_logo.png", :class => "logo-img logo-img-active", :alt => "Ymk Logo OG") %>
<% end %>
</a>
</div>
现在,当我加载页面时,应该出现的第一个徽标 ymk_logo_lw.png 没有显示,但是当我开始滚动时,第二个徽标出现 ymk_logo.png。
如果有任何建议,我将不胜感激,我对 Ruby 还很陌生,而且我刚刚得到它。谢谢!
application.js 要求:
//= require jquery-3.2.1.min.js
//= require bootstrap-sprockets
//= require swiper/js/swiper.jquery.min.js
//= require components/swiper.min.js
//= require jquery.easing.js
//= require jquery.back-to-top.js
//= require jquery.smooth-scroll.js
//= require jquery.wow.min.js
//= require jquery.parallax.min.js
//= require masonry/jquery.masonry.pkgd.min.js
//= require masonry/imagesloaded.pkgd.min.js
//= require components/wow.min.js
//= require components/masonry.min.js
//= require components/gmap.min.js
//= require rails-ujs
//= require turbolinks
//= require_tree .
`_navbar.html.erb:
<header class="header navbar-fixed-top">
<!-- Navbar -->
<nav class="navbar" role="navigation">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="menu-container">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="toggle-icon"></span>
</button>
<!-- Logo -->
<div class="logo">
<a class="logo-wrap" href="/">
<%= image_tag("logo/ymk_logo_lw.png", :class => "logo-img logo-img-main", :alt => "Ymk Logo White") %>
<%= image_tag("logo/ymk_logo.png", :class => "logo-img logo-img-active", :alt => "Ymk Logo OG") %>
</a>
</div>
<!-- End Logo -->
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse nav-collapse">
<div class="menu-container">
<ul class="navbar-nav navbar-nav-right">
<li class="nav-item">
<%= link_to "Home", root_path, class: "nav-item-child nav-item-hover #{yield(:root_active)}", :"data-no-turbolink" => true, method: "get" %>
</li>
<li class="nav-item">
<%= link_to "About", about_path, class: "nav-item-child nav-item-hover #{yield(:about_active)}", :"data-no-turbolink" => true, method: "get" %>
</li>
<li class="nav-item">
<%= link_to "Contact", contact_path, class: "nav-item-child nav-item-hover #{yield(:contact_active)}", :"data-no-turbolink" => true, method: "get" %>
</li>
</ul>
</div>
</div>
<!-- End Navbar Collapse -->
</div>
</nav>
<!-- Navbar -->
</header>
【问题讨论】:
标签: javascript html css ruby-on-rails