html - 在 Swiper slider 中显示 "overflow: hidden"之外的元素

标签 html css

问题

我有一个滑动 slider :http://codepen.io/kerowan/pen/xqYrwJ (例如通过给 .product-info-wrapper 大约 100 像素的固定高度来重新创建问题)

在幻灯片中,有一个图像和一个信息框,最初看起来像这样:

enter image description here

当我单击“Kurzinfo”时,该框需要展开并最终看起来像这样(.swiper-container 在 NEW 徽章之后结束,因此它必须流过 swiper-container):

enter image description here

问题是,.swiper-container有一个 overflow: hidden;属性,隐藏继续到右侧的幻灯片。

我尝试了什么?

1) 我尝试过更改overflow: hidden;.swiper-containeroverflow-x: hidden;试图隐藏向右流动的幻灯片,但显示向下溢出的东西。这导致 .swiper-container只需添加一个滚动条,让您向下滚动以查看应该溢出的内容。

2) 我尝试过更改position: absolute;.product-info-wrapper (包装盒子和徽章)到position: fixed; ,因为我读到 position: fixed; 忽略了溢出属性.然而,这似乎并不能解决问题。

我还没有尝试过其他任何方法,只是因为我不知道任何其他解决方案。

片段

我在这里粘贴了这段代码,但它不起作用,因为我使用了 SCSS,不幸的是没有时间将它重写为纯 CSS。但是,如果上面的链接应该死,可以复制到 codepen。

$(document).ready(function() {
  var productsInFocus = new Swiper ('.products-in-focus', {
    nextButton: '.product-focus-next',
    prevButton: '.product-focus-prev',
    slidesPerView: 4,
    loop: false,
    spaceBetween: 20
  });
});
.content-wrapper {
  max-width: 1100px;
  margin: 0 auto;
}

.product-wrapper {
  position: relative;
  margin-bottom: 1rem * 5;
  margin-top: 1rem * 5;
  .swiper-slide {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    position: relative;
    min-height: 230px;
    .product-badge-wrapper {
      position: absolute;
      bottom: 0;
      right: 0;
      .product-badge {
        position: relative;
        width: 100px;
        overflow: hidden;
        &.red {
          &:before,
          &:after {
            border-color: #CF043C;
            background-color: transparent;
          }
          &:after {
            background-color: transparent;
            border-left-color: transparent;
          }
          .product-badge-content {
            &:before {
              border-color: darken(#CF043C, 10%);
              border-left-color: transparent;
              border-right-color: transparent;
            }
          }
        }
        &.dark-gray {
          &:before,
          &:after {
            border-color: lighten(#000, 37.4%);
            background-color: transparent;
          }
          &:after {
            background-color: transparent;
            border-left-color: transparent;
          }
          .product-badge-content {
            &:before {
              border-color: lighten(#000, 13.5%);
              border-left-color: transparent;
              border-right-color: transparent;
            }
          }
        }
        &:before,
        &:after {
          content: "";
          position: absolute;
          left: 0;
          background-color: transparent;
          border-color: lighten(#000, 73%);
        }
        &:before {
          top: 20px;
          right: 0;
          bottom: 0;
        }
        &:after {
          bottom: auto;
          left: -1px;
          top: -10px;
          border-style: solid;
          border-width: 0 0 75px 75px;
          background-color: transparent;
          border-left-color: transparent;
          width: 100px;
        }
        .product-badge-content {
          height: 43px;
          padding-right: 5px;
          padding-left: 22px;
          display: flex;
          justify-content: flex-end;
          align-items: center;
          text-align: right;
          text-transform: uppercase;
          font-weight: 700;
          position: relative;
          z-index: 10;
          color: #fff;
          &.text-small {
            font-size: .7rem;
            font-weight: 400 !important;
          }
          &:before {
            content: "";
            position: absolute;
            left: 11px;
            bottom: 0;
            display: block;
            border-style: solid;
            border-color: lighten(#000, 37.4%);
            border-left-color: transparent;
            border-right-color: transparent;
            border-width: 10px 10px 0 10px;
          }
        }
      }
    }
    .product-info-wrapper {
      position: absolute;
      bottom: 0;
      max-width: 100%;
      width: 100%;
      padding-bottom: 10px;
      .product-info {
        position: relative;
        padding: 1rem * .5;
        padding-right: 1rem * 2;
        overflow: hidden;
        &-link {
          display: block;
          a {
            color: lighten(#000, 37.4%);
            transition: color 400ms ease-in-out;
            &:hover {
              color: #CF043C;
              text-decoration: none;
            }
          }
        }
        &-price {
          color: #CF043C;
          &-del {
            color: lighten(#000, 37.4%);
            text-decoration: line-through;
            font-size: .9rem;
          }
        }
        &:before,
        &:after {
          position: absolute;
          content: "";
          left: 0;
          z-index: -1;
          background-color: lighten(#000, 93.5%);
          border-color: lighten(#000, 93.5%);
        }
        &:before {
          top: 0;
          right: 0;
          bottom: 35px;
        }
        &:after {
          top: auto;
          right: -5px;
          bottom: 0;
          border-style: solid;
          border-width: 35px 35px 0 0;
          background-color: transparent;
          border-right-color: transparent;
        }
      }
    }
  }
  .product-focus-prev,
  .product-focus-next {
    position: absolute;
    color: lighten(#000, 37.4%);
    background-image: none;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 2rem;
    top: 50%;
    transform: translateY(-50%);
    cursor: pointer;
  }
  .product-focus-prev {
    left: -1rem * 10;
  }
  .product-focus-next {
    right: -1rem * 10;
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://use.fontawesome.com/b13050afbe.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.4.1/js/swiper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.4.1/js/swiper.jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.4.1/css/swiper.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container-fluid">
  <div class="content-wrapper narrow products-in-focus">
    <div class="product-wrapper">
      <div class="swiper-container products-in-focus">
        <div class="swiper-wrapper">
          <div class="swiper-slide">
            <img src="http://www.placehold.it/80x130">
            <div class="product-info-wrapper">
              <div class="product-info">
                <div class="row no-gutters">
                  <div class="col-7">
                    <strong class="text-uppercase">Amino Force</strong>
                    <span class="product-info-link"><a href="#">Kurzinfo</a></span>
                  </div>
                  <div class="col-5 text-right">
                   
                    <div class="product-info-price">CHF 34.00</div>
                  </div>
                </div>
              </div>
              <div class="product-badge-wrapper">
                <div class="product-badge dark-gray">
                  <div class="product-badge-content text-center">
                    %&nbsp;&nbsp;
                  </div>
                </div>
              </div>
            </div>
          </div>
          <div class="swiper-slide">
            <img src="http://www.placehold.it/80x130">
            <div class="product-info-wrapper">
              <div class="product-info">
                <div class="row no-gutters">
                  <div class="col-8">
                    <strong class="text-uppercase">Basic Minerals</strong>
                    <span class="product-info-link"><a href="#">Kurzinfo</a></span>
                  </div>
                  <div class="col-4 text-right">
                    <span class="product-info-price">CHF 34.00</span>
                  </div>
                </div>
              </div>
              <div class="product-badge-wrapper">
                <div class="product-badge red">
                  <div class="product-badge-content">
                    new
                  </div>
                </div>
              </div>
            </div>
          </div>
          <div class="swiper-slide">
            <img src="http://www.placehold.it/80x130">
            <div class="product-info-wrapper">
              <div class="product-info">
                <div class="row no-gutters">
                  <div class="col-8">
                    <strong class="text-uppercase">Amino Force</strong>
                    <span class="product-info-link"><a href="#">Kurzinfo</a></span>
                  </div>
                  <div class="col-4 text-right">
                    <span class="product-info-price">CHF 34.00</span>
                  </div>
                </div>
              </div>
            </div>
          </div>
          <div class="swiper-slide">
            <img src="http://www.placehold.it/80x130">
            <div class="product-info-wrapper">
              <div class="product-info">
                <div class="row no-gutters">
                  <div class="col-8">
                    <strong class="text-uppercase">Whey Isolat CFM</strong>
                    <span class="product-info-link"><a href="#">Kurzinfo</a></span>
                  </div>
                  <div class="col-4 text-right">
                    <span class="product-info-price">CHF 34.00</span>
                  </div>
                </div>
              </div>
              <div class="product-badge-wrapper">
                <div class="product-badge">
                  <div class="product-badge-content text-small">
                    nicht<br>auf lager
                  </div>
                </div>
              </div>
            </div>
          </div>
          <div class="swiper-slide">
            <img src="http://www.placehold.it/80x130">
            <div class="product-info-wrapper">
              <div class="product-info">
                <div class="row no-gutters">
                  <div class="col-8">
                    <strong class="text-uppercase">Amino Force</strong>
                    <span class="product-info-link"><a href="#">Kurzinfo</a></span>
                  </div>
                  <div class="col-4 text-right">
                    <span class="product-info-price">CHF 34.00</span>
                  </div>
                </div>
              </div>
              <div class="product-badge-wrapper">
                <div class="product-badge red">
                  <div class="product-badge-content">
                    new
                  </div>
                </div>
              </div>
            </div>
          </div>
          <div class="swiper-slide">
            <img src="http://www.placehold.it/80x130">
            <div class="product-info-wrapper">
              <div class="product-info">
                <div class="row no-gutters">
                  <div class="col-8">
                    <strong class="text-uppercase">Basic Minerals</strong>
                    <span class="product-info-link"><a href="#">Kurzinfo</a></span>
                  </div>
                  <div class="col-4 text-right">
                    <span class="product-info-price">CHF 34.00</span>
                  </div>
                </div>
              </div>
            </div>
          </div>
          <div class="swiper-slide">
            <img src="http://www.placehold.it/80x130">
            <div class="product-info-wrapper">
              <div class="product-info">
                <div class="row no-gutters">
                  <div class="col-8">
                    <strong class="text-uppercase">Amino Force</strong>
                    <span class="product-info-link"><a href="#">Kurzinfo</a></span>
                  </div>
                  <div class="col-4 text-right">
                    <span class="product-info-price">CHF 34.00</span>
                  </div>
                </div>
              </div>
            </div>
          </div>
          <div class="swiper-slide">
            <img src="http://www.placehold.it/80x130">
            <div class="product-info-wrapper">
              <div class="product-info">
                <div class="row no-gutters">
                  <div class="col-8">
                    <strong class="text-uppercase">Whey Isolat CFM</strong>
                    <span class="product-info-link"><a href="#">Kurzinfo</a></span>
                  </div>
                  <div class="col-4 text-right">
                    <span class="product-info-price">CHF 34.00</span>
                  </div>
                </div>
              </div>
              <div class="product-badge-wrapper">
                <div class="product-badge">
                  <div class="product-badge-content text-small">
                    nicht<br>auf lager
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="product-focus-prev"><i class="fa fa-chevron-left"></i></div>
      <div class="product-focus-next"><i class="fa fa-chevron-right"></i></div>
    </div>
  </div>
</div>


我希望我的问题足够清楚。如果您需要更多详细信息,请告诉我!

最佳答案

你可以加:

.swiper-slide {
  padding-bottom: 30px;
}

其中 30px 是您的徽章应该超出边界的值。

http://codepen.io/Deka87/pen/xqYXOq

关于html - 在 Swiper slider 中显示 "overflow: hidden"之外的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42908632/

相关文章:

javascript - 图像移动不流畅,图像移动缓慢

php - 选择表中与相关表及其字段用户名和密码相匹配的行

IE7 中的 CSS padding-top 工作得有点太好了

html - 使用 CSS @font-face 时,浏览器以什么顺序使用不同的类型?

javascript - .addEventListener 不是 null 的属性

javascript - 固定定位的 Div 在另一个 Div 中

javascript - 将 div 定位到右侧,宽度未定义

javascript - 页面滚动,保持页面垂直,部分页面水平

html - 为什么我的图像下面有空间?

CSS:如何为粗体字体系列设置回退?