2017-08-11 157 views
3

我想創建一個帶有大型產品圖像的Meteor js產品頁面,其中顯示的圖像會根據從5張幻燈片(或幻燈片)圖像中選擇的圖像進行更改。基本上類似於亞馬遜產品頁面。 我正在使用鐵路:路由器。 我用幻燈片創建了產品圖像頁面。唯一的問題是調整幻燈片放映圖像的大小,使它們縮小圖像並使圖像並排顯示,並且僅在產品圖像下顯示(而不是跨越整個頁面)。如何使用Meteor js中的幻燈片創建產品視圖

我有的幻燈片是基於滑塊同步例如從slick slideshow大氣js - https://atmospherejs.com/udondan/slick。 我的JS知識只有在這是根本原因的情況下才是基本的。

代碼如下。

的HTML代碼是

<head> 
    <title>slick-sideshow</title> 

    <link rel="stylesheet" type="text/css" href="slick/slick.css"/> 
<link rel="stylesheet" type="text/css" href="slick/slick-theme.css"/> 
</head> 

<body> 
    <h1>Welcome to slick slideshow!</h1> 
    <h2>Slider Syncing</h2> 
    <hr/> 
    {{> carousel}} 
</body> 

<template name="carousel"> 
    <div class="container js-container" > 
    <div class="row"> 
     <div class="slider slider-for" id="carousel"> 
      <div class="thumbnail-img"><img src="slick_test1.jpg" width="200px" /></div> 
      <div class="thumbnail-img"><img src="slick_test2.jpg" width="200px" /></div> 
      <div class="thumbnail-img"><img src="slick_test3.jpg" width="200px" /></div> 
      <div class="thumbnail-img"><img src="slick_test4.jpg" width="200px" /></div> 
      <div class="thumbnail-img"><img src="slick_test5.jpg" width="200px" /></div> 
     </div> <!--/slider-for --> 
    </div> <!-- row --> 
    </div> <!--/container --> 

    <div class="container js-container"> 
      <div class="slider slider-nav"> 
       <div class="col-xs-12 col-md-3"> 
         <img class="slider-img" src="slick_test1.jpg" /> 
      </div> 
      <div class="col-xs-12 col-md-3"> 
         <img class="slider-img" src="slick_test2.jpg" /> 
      </div> 
      <div class="col-xs-12 col-md-3"> 
        <img class="slider-img" src="slick_test3.jpg" /> 
      </div> 
      <div class="col-xs-12 col-md-3"> 
        <img class="slider-img" src="slick_test4.jpg" /> 
      </div> 
      <div class="col-xs-12 col-md-3"> 
        <img class="slider-img" src="slick_test5.jpg" /> 
      </div> 
      </div> <!--/slider-nav --> 
    </div> <!--/container --> 
</template> 

JS代碼是:

import { Template } from 'meteor/templating'; 
import { ReactiveVar } from 'meteor/reactive-var'; 

import './main.html'; 

Template.carousel.rendered = function() { 
    $('.slider-for').slick({ 
     infinite: false, 
     slidesToShow: 1, 
     slidesToScroll: 1, 
    asNavFor: '.slider-nav', 
     arrows: false, 
     fade: true 
    }); 
    $('.slider-nav').slick({ 
     slidesToShow: 3, 
     slidesToScroll: 1, 
    asNavFor: '.slider-for', 
     dots: true, 
     arrows: true, 
     centerMode: true, 
     focusOnSelect: true 
    }); 
} 

而CSS是在這裏:

#carousel { 
    border: 3px solid black; 
    width: 200px; 
    position: relative; 
    top:  100px; 
    left:  100px; 
} 

#carousel div { 
    width: 200px; 
    height: 300px; 
} 

.slick-prev:before, .slick-next:before { 
    color: orange; 
} 


/* dimensions of thumbnail grid */ 
.thumbnail { 
    width: 200px; 
    height: 200px; 
    padding: 1px; 
    border: 3px solid #021a40; 
    background-color: #f0f; 
} 

/* dimensions of image within thumbnail grid */ 
.thumbnail-img { 
    position: relative; 
    float: left; 
    width: 200px; 
    height: 200px; 
    background-position: 50% 50%; 
    background-repeat: no-repeat; 
    background-size: 0% 0%; 
} 

/* dimensions of image within film strip */ 
.slider-img { 
    max-width: 120px; 
    max-height: 120px; 
    position: relative; 
    float: left; 
    width: 120px; 
    height: 120px; 
    background-position: 50% 50%; 
    background-repeat: no-repeat; 
    background-size: 0% 0%; 
} 

我結束了這一點 - my slideshow attempt

但我試圖讓這樣的事情Amazon product image example

所以我們的目標是與縮略圖條帶的下方顯示(和跨越)替代產品享有產品形象 顯示大產品圖片 - AMZ顯示他們旁邊。縮略圖是可選的,導致所選視圖顯示爲主要產品圖像。他們應該可以通過點擊(理想)和/或點擊箭頭或圓點來選擇,如我的示例所示。

在我的例子中的主要問題是:

  • 產品圖片太小,而不是定位在邊境
  • 縮略圖圖像重疊的產品形象和他們之間的空間過大
  • 縮略圖圖像不可點擊
+1

這不完全清楚,什麼重的物品你想獲得嗎?你能澄清一下嗎? – Styx

+0

@Styx我在帖子末尾添加了更多細節。希望這是明確的感謝。 – striker77

回答

1

您可以實現像下面的例子...

產品圖片太小,而不是定位在邊境 要定位你可以增加您的集裝箱的尺寸圖像..

#carousel { 
    border: 3px solid black; 
    width: 400px; 
    height: 300px; 

縮略圖圖像重疊的產品圖像和它們之間的空間過大

其中重疊實際上因爲由庫創建的光滑軌道元件有一個更大的高度比其親縮略圖..所以通過設置自定義高度來防止這種情況。

.slider-for .slick-track{ 
    height:294px; 
    } 

縮略圖不能點擊

縮略圖,當您設置在兩個滑動並滑動導航容器不同的項目,解決它只是把同樣不能點擊兩個

$('.slider-for').slick({ 
 
     infinite: false, 
 
     slidesToShow: 1, 
 
     slidesToScroll: 1, 
 
    asNavFor: '.slider-nav', 
 
     arrows: false, 
 
     fade: true 
 
    }); 
 
    $('.slider-nav').slick({ 
 
     slidesToShow: 3, 
 
     slidesToScroll: 1, 
 
    asNavFor: '.slider-for', 
 
     dots: true, 
 
     arrows: true, 
 
     centerMode: true, 
 
     focusOnSelect: true 
 
    });
.container{ 
 
    
 
    
 
} 
 
#carousel { 
 
    border: 3px solid black; 
 
    width: 400px; 
 
    height: 300px; 
 
    position: relative; 
 
    /* top: 100px; */ 
 
    /* left: 100px; */ 
 
    margin: auto; 
 
    margin-bottom: 10px; 
 
} 
 

 

 

 
.slick-prev:before, .slick-next:before { 
 
    color: orange !important; 
 
} 
 

 

 
/* dimensions of thumbnail grid */ 
 
.thumbnail { 
 
    width: 200px; 
 
    height: 200px; 
 
    padding: 1px; 
 
    border: 3px solid #021a40; 
 
    background-color: #f0f; 
 
} 
 

 
/* dimensions of image within thumbnail grid */ 
 
.thumbnail-img { 
 
    position: relative; 
 
    float: left; 
 
    width: 200px; 
 
    height: 200px; 
 
    background-position: 50% 50%; 
 
    background-repeat: no-repeat; 
 
    background-size: 0% 0%; 
 
} 
 

 
/* dimensions of image within film strip */ 
 
.slider-img { 
 
    max-width: 120px; 
 
    max-height: 120px; 
 
    position: relative; 
 
    float: left; 
 
    width: 120px; 
 
    height: 120px; 
 
    background-position: 50% 50%; 
 
    background-repeat: no-repeat; 
 
    background-size: 0% 0%; 
 
} 
 
.slider-nav{ 
 
    width:350px; 
 
    margin:auto; 
 
} 
 
.slider-nav img { 
 
    max-width:100%; 
 
    max-height:70px; 
 
    margin:auto; 
 
} 
 
.slick-initialized .slick-slide { 
 
text-align:center; 
 
    
 
} 
 
.slick-slide img{ 
 
    display: block; 
 
    max-width: 100%; 
 
    max-height: 100%; 
 
    margin: auto; 
 
    } 
 
.slider-for .slick-track{ 
 
height:294px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.7.1/slick.min.css" /> 
 
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.7.1/slick-theme.css" /> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.7.1/slick.js"></script> 
 

 
    <div class="container js-container" > 
 
    <div class="row"> 
 
     <div class="slider slider-for" id="carousel"> 
 
      <div > 
 
         <img src="http://lorempixel.com/500/500" /> 
 
      </div> 
 
      <div > 
 
         <img src="http://lorempixel.com/output/fashion-q-c-500-500-10.jpg" /> 
 
      </div> 
 
      <div > 
 
        <img src="http://lorempixel.com/output/food-q-c-500-500-6.jpg" /> 
 
      </div> 
 
      <div > 
 
        <img src="http://lorempixel.com/output/sports-q-c-500-500-10.jpg" /> 
 
      </div> 
 
      <div > 
 
        <img src="http://lorempixel.com/output/animals-q-c-500-500-2.jpg" /> 
 
      </div> 
 
     </div> <!--/slider-for --> 
 
    </div> <!-- row --> 
 
    </div> <!--/container --> 
 

 
    <div class="container js-container"> 
 
     <div class="slider slider-nav"> 
 
      <div > 
 
         <img src="http://lorempixel.com/500/500" /> 
 
      </div> 
 
      <div > 
 
         <img src="http://lorempixel.com/output/fashion-q-c-500-500-10.jpg" /> 
 
      </div> 
 
      <div > 
 
        <img src="http://lorempixel.com/output/food-q-c-500-500-6.jpg" /> 
 
      </div> 
 
      <div > 
 
        <img src="http://lorempixel.com/output/sports-q-c-500-500-10.jpg" /> 
 
      </div> 
 
      <div > 
 
        <img src="http://lorempixel.com/output/animals-q-c-500-500-2.jpg" /> 
 
      </div> 
 
      </div> <!--/slider-nav --> 
 
    </div> <!--/container -->

+0

這看起來不錯。只是現在就看到它的道歉。我認爲你之前在賞金過期之前發佈了它,在這種情況下,我會看到所有關於申請賞金的方塊。一旦我玩弄CSS,但確實沒有像你的那樣「光滑」,我確實讓自己的版本處於更好的狀態(不再與例如重疊)。謝謝! – striker77

+0

我注意到的一件事(和我有同樣的問題)是,當你從最後一個圖像循環到第一個圖像時,第一個圖像不顯示。雖然當你從第二個回到第一個時,第一個圖像會顯示。任何想法如何解決這個問題? – striker77

0

我猜你的問題主要是關於CSS。 給圖像適當的寬度和高度可能會解決您的問題。

您可以使用Chrome的開發人員控制檯進行一些簡單的css更改,並且如果出現任何javascript錯誤,還應該檢查控制檯錯誤。

+0

認爲這是CSS相關。將看看調試佈局。謝謝。 – striker77