如何隐藏轮播滑块上的溢出并设置循环

How to hide overflow on a carousel slider and set a loop

Here is the fiddle link

嗨! 我有一个旋转木马滑块,我想隐藏灰色框外的溢出(参见 fiddle),我希望第一个按钮(第一个 div 里面)在最后一个按钮出现时返回走了。

我真的很熟悉轮播,如果有人有关于该主题的基础课程,我将不胜感激。我对 css 很熟悉,但感觉轮播的工作方式不同。我希望这不会重复 我没有在堆栈上找到很多关于旋转木马的信息。

$(document).ready(function(){
$('.slider').slick({
  infinite: true,
  slidesToShow: 3,
  slidesToScroll: 1
});
});
#background_etape2  {
 background-color: #a6a6a6;
 width: 100%;
 height: 800px;

}

#sondage  {
 Float: left;
 left: 35px;
 font-size: 20px;
 font-weight: bold;
 white-space: nowrap;
 position: relative;
 top: 100px;
 color: black;
}

#liste_categorie_sondage  {
 margin-left: auto;
 margin-right: auto; 
 height: 200px;
    width: 600px;
 background-color: #555;
 border: 1px solid black; 
 position: relative;
 top: 390px;
}
/*
#nav_sondage {
    list-style-type: none;
    margin: auto;
    padding: 0;
 list-style-position:inside;
}
*/
#categorie_sondage {
    display: block;
 width: 600px;
    color:  #99b3ff;
    padding: 8px 16px;
    list-style-position:inside;
 display: table-cell;
 font-size: 20px;
 position: relative;
 top: -300px;
 left: 250px;
 
 
}

#menusondage  {
 text-decoration: none;
 color: black;
 width: 600px;
 background-color: #808080;
 text-align: right;
 padding: 8px;
 display:table-cell;
 border: 2px solid black;
}

#menusondage:hover {
    background-color: #555;
    color: white;
}
<div id="background_etape2" name="etape2">

 <div id="etape2"> 
   <div id="liste_categorie_sondage" class="slider">
 
   <div id="categorie_sondage"> Économie <a id="menusondage" href="economie.php">Listes des sondages</a></div>
   <div id="categorie_sondage"> Environnement <a id="menusondage" href="environnement.php">Listes des sondages</a></div>
   <div id="categorie_sondage"> Santé <a id="menusondage" href="sante.php">Listes des sondages</a></div>
   <div id="categorie_sondage"> Éducation <a id="menusondage" href="education.php">Listes des sondages</a></div>
   <div id="categorie_sondage"> Services Sociaux <a id="menusondage" href="sociaux.php">Listes des sondages</a></div>
      </div>
  </div>
</div>

编辑:我的基本问题是我的 link 在 css 插件中编码。 就像其中一位回答者告诉我的那样,我绝对需要 slick.css 文件才能使其正常工作,我可以添加也可以不添加 -theme 文件。那些 css sheet 隐藏溢出而不隐藏箭头。

在此处查看这些文件:

有第一个(slick.css)

/* Slider */
.slick-slider
{
    position: relative;

    display: block;
    box-sizing: border-box;

    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;

    -webkit-touch-callout: none;
    -khtml-user-select: none;
    -ms-touch-action: pan-y;
        touch-action: pan-y;
    -webkit-tap-highlight-color: transparent;
}

.slick-list
{
    position: relative;

    display: block;
    overflow: hidden;

    margin: 0;
    padding: 0;
}
.slick-list:focus
{
    outline: none;
}
.slick-list.dragging
{
    cursor: pointer;
    cursor: hand;
}

.slick-slider .slick-track,
.slick-slider .slick-list
{
    -webkit-transform: translate3d(0, 0, 0);
       -moz-transform: translate3d(0, 0, 0);
        -ms-transform: translate3d(0, 0, 0);
         -o-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
}

.slick-track
{
    position: relative;
    top: 0;
    left: 0;

    display: block;
}
.slick-track:before,
.slick-track:after
{
    display: table;

    content: '';
}
.slick-track:after
{
    clear: both;
}
.slick-loading .slick-track
{
    visibility: hidden;
}

.slick-slide
{
    display: none;
    float: left;

    height: 100%;
    min-height: 1px;
}
[dir='rtl'] .slick-slide
{
    float: right;
}
.slick-slide img
{
    display: block;
}
.slick-slide.slick-loading img
{
    display: none;
}
.slick-slide.dragging img
{
    pointer-events: none;
}
.slick-initialized .slick-slide
{
    display: block;
}
.slick-loading .slick-slide
{
    visibility: hidden;
}
.slick-vertical .slick-slide
{
    display: block;

    height: auto;

    border: 1px solid transparent;
}
.slick-arrow.slick-hidden {
    display: none;
}

这是最后一张-theme.css

@charset 'UTF-8';
/* Slider */
.slick-loading .slick-list
{
    background: #fff url('./ajax-loader.gif') center center no-repeat;
}

/* Icons */
@font-face
{
    font-family: 'slick';
    font-weight: normal;
    font-style: normal;

    src: url('./fonts/slick.eot');
    src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg');
}
/* Arrows */
.slick-prev,
.slick-next
{
    font-size: 0;
    line-height: 0;

    position: absolute;
    top: 50%;

    display: block;

    width: 20px;
    height: 20px;
    padding: 0;
    -webkit-transform: translate(0, -50%);
    -ms-transform: translate(0, -50%);
    transform: translate(0, -50%);

    cursor: pointer;

    color: transparent;
    border: none;
    outline: none;
    background: transparent;
}
.slick-prev:hover,
.slick-prev:focus,
.slick-next:hover,
.slick-next:focus
{
    color: transparent;
    outline: none;
    background: transparent;
}
.slick-prev:hover:before,
.slick-prev:focus:before,
.slick-next:hover:before,
.slick-next:focus:before
{
    opacity: 1;
}
.slick-prev.slick-disabled:before,
.slick-next.slick-disabled:before
{
    opacity: .25;
}

.slick-prev:before,
.slick-next:before
{
    font-family: 'slick';
    font-size: 20px;
    line-height: 1;

    opacity: .75;
    color: white;

    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.slick-prev
{
    left: -25px;
}
[dir='rtl'] .slick-prev
{
    right: -25px;
    left: auto;
}
.slick-prev:before
{
    content: '←';
}
[dir='rtl'] .slick-prev:before
{
    content: '→';
}

.slick-next
{
    right: -25px;
}
[dir='rtl'] .slick-next
{
    right: auto;
    left: -25px;
}
.slick-next:before
{
    content: '→';
}
[dir='rtl'] .slick-next:before
{
    content: '←';
}

/* Dots */
.slick-dotted.slick-slider
{
    margin-bottom: 30px;
}

.slick-dots
{
    position: absolute;
    bottom: -25px;

    display: block;

    width: 100%;
    padding: 0;
    margin: 0;

    list-style: none;

    text-align: center;
}
.slick-dots li
{
    position: relative;

    display: inline-block;

    width: 20px;
    height: 20px;
    margin: 0 5px;
    padding: 0;

    cursor: pointer;
}
.slick-dots li button
{
    font-size: 0;
    line-height: 0;

    display: block;

    width: 20px;
    height: 20px;
    padding: 5px;

    cursor: pointer;

    color: transparent;
    border: 0;
    outline: none;
    background: transparent;
}
.slick-dots li button:hover,
.slick-dots li button:focus
{
    outline: none;
}
.slick-dots li button:hover:before,
.slick-dots li button:focus:before
{
    opacity: 1;
}
.slick-dots li button:before
{
    font-family: 'slick';
    font-size: 6px;
    line-height: 20px;

    position: absolute;
    top: 0;
    left: 0;

    width: 20px;
    height: 20px;

    content: '•';
    text-align: center;

    opacity: .25;
    color: black;

    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
.slick-dots li.slick-active button:before
{
    opacity: .75;
    color: black;
}

在此之后,我仍然遇到一个问题:滑块按钮就是不显示。 我试图用 /* */ 隐藏我的 CSS 代码,是的,滑块按钮以一种奇怪的方式出现。 This is the picture of what happen

要隐藏溢出,请将 overflow: hidden; 添加到 CSS 中的 #background_etape2

关于你想要实现的循环排列,需要做更多的工作。我建议使用现有的 jQuery 插件,它们提供了很好的解决方案。只需 Google 'carousel javascript',您就会发现一些优秀且有据可查的示例可以免费下载和使用。

Gaby 的提议似乎就是答案。

你有几个问题

  1. 最重要的是 link 到华而不实的 CSS 文件是错误的。使用//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.css添加如果你想使用插件主题-theme文件
  2. 您在幻灯片和里面的 link 上使用了重复的 ID。 (在演示中我将它们更改为 类

查看更新后的演示

$('.slider').slick({
  infinite: true,
  slidesToShow: 3,
  slidesToScroll: 1
});
@import url('//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.css');
@import url('//cdn.jsdelivr.net/jquery.slick/1.6.0/slick-theme.css');
#background_etape2 {
  background-color: #a6a6a6;
  width: 100%;
  height: 500px;
}
#liste_categorie_sondage {
  margin-left: auto;
  margin-right: auto;
  height: 200px;
  width: 600px;
  background-color: #555;
  border: 1px solid black;
  position: relative;
  top: 150px;
}
.categorie_sondage {
  display: block;
  color: #99b3ff;
  padding: 8px 16px;
  list-style-position: inside;
  display: table-cell;
  font-size: 20px;
  position: relative;
}
.menusondage {
  text-decoration: none;
  color: black;
  background-color: #808080;
  text-align: right;
  padding: 8px;
  display: table-cell;
  border: 2px solid black;
}
.menusondage:hover {
  background-color: #555;
  color: white;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.rawgit.com/kenwheeler/slick/851da942/slick/slick.min.js"></script>
<div id="background_etape2" name="etape2">
  <div id="liste_categorie_sondage" class="slider">

    <div class="categorie_sondage">economie <a class="menusondage" href="economie.php">Listes des sondages</a>
    </div>
    <div class="categorie_sondage">environment <a class="menusondage" href="environnement.php">Listes des sondages</a>
    </div>
    <div class="categorie_sondage">health <a class="menusondage" href="sante.php">Listes des sondages</a>
    </div>
    <div class="categorie_sondage">education <a class="menusondage" href="education.php">Listes des sondages</a>
    </div>
    <div class="categorie_sondage">social<a class="menusondage" href="sociaux.php">Listes des sondages</a>
    </div>
  </div>
</div>

(和更新后的 fiddle: https://jsfiddle.net/gaby/eaotmar3/14/)

隐藏溢出

非常简单,只需将 overflow: hidden 添加到 灰色框 (#liste_categorie_sondage)

#liste_categorie_sondage {
    overflow: hidden;

    margin-left: auto;
    margin-right: auto;
    ...
}

但这不是问题,您实际上并没有实现插件提供的 CSS。更多内容在下方

滑块

你的 CSS 完全错误, 缺失 如果你已经在使用插件,你必须包含所有资产并休整文档。

这里是JSFiddle应该如何实施

其他错误

您正在使用 ID 来设计您的内容,这是一个 BIG 不,错误

ID 必须是唯一的 它是在 W3 Docs

中指定的

This attribute assigns a name to an element. This name must be unique in a document.

它们也会让你 CSS 头痛,因为它们是第二高的(紧随内联声明之后)

更多关于 CSS 特异性 here