【问题标题】:Keeping a fixed positioned div within the viewport - content scrollable?在视口内保持固定定位的 div - 内容可滚动?
【发布时间】:2018-03-01 22:38:34
【问题描述】:

我有一个 div,它会在将产品添加到购物篮后显示内容。基本上,一旦有人向购物车添加东西,屏幕右上角就会出现一个弹出窗口,指向购物篮图标。这行得通,但我担心如果客户将大量产品添加到购物篮中会发生什么 - 显然它会从页面底部跑出,这意味着一些内容 + 结帐按钮将会消失观点。

这是我的工作示例:https://codepen.io/moy/pen/eVXBvP

我很高兴有任何解决方案。我认为如果带有价格 + 按钮的页脚始终保持在视图中,这样只有产品区域是可滚动的,但也许这是不可能的?

我猜这个问题之一是top 值,这意味着很难(不可能?)在.mini-cart 容器上使用max-height: 100%

此外,当水平缩放浏览器时,框的左边缘变得非常窄时会超出屏幕 - 我该如何避免这种情况?我之前通过使用解决了类似的问题:

position: fixed;
top: 100px;
right: 30px;
left: 30px;
width: auto;
max-width: 500px;

但问题是 div 默认对齐到页面的左侧,我需要左对齐。这可能吗?

我已经尝试了 vh 值,但我再次认为 top: 100px 值会导致问题。

【问题讨论】:

  • 下次请直接在 Stackoverflow 中提供代码,因为您的 Codepen 可能会更改,并且此线程的未来访问者将看不到原始问题。
  • 我的 CodePen 的代码如果我 fork 它不应该改变 - 不是吗?对不起,如果我错了。我只是在想它包含一个绝对的 CSS 墙,并且发布可能会适得其反,但如果需要的话,我会在未来发布所有内容! :)
  • 没关系!不是每个人都会分叉,所以永远不能太确定。您的代码具有 Stackoverflow sn-ps 不支持的 SCSS(还没有?),因此您可以在某些情况下同时发布两者。
  • 是的,我想意外地保存/覆盖 CodePen 很容易!有道理,如果我使用 SCSS 在此处发布编译后的 CSS,我会确保这样做。

标签: jquery html css css-position viewport-units


【解决方案1】:

为防止购物车在调整大小时离开屏幕左侧,请考虑将width 更改为500pxmax-width 不超过100%,我建议max-width: calc(100% - 40px); 因为你有购物车right 为 30 像素;

.mini-cart {
    background: white;
    border-top: 4px solid red;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
    box-sizing: border-box;
    padding: 15px;
    position: fixed;
    top: 60px;
    right: 30px;
    transition: all .20s;
    z-index: 1000;
    width: 500px;
    max-width: calc(100% - 40px);
}

帮助滚动查看更多项目。您可以让整个购物车滚动到位,或者只是让项目mini-cart__body 滚动并设置一个固定的max-height 并将overflow 设置为自动。注意:我将max-height 设置为30vh(屏幕垂直高度);进行演示。 80vh 之类的内容对实时站点更有意义。

.mini-cart__body {
    overflow-y: auto;
    padding-right: 30px;
    margin-right: -30px;
    max-height: 30vh;
    overflow: auto;
    box-sizing: border-box;
    width: 100%;
}

** 更新:根据作者的 cmets,处理高度较小的屏幕是个好主意。

为此,这里只是一个想法,因为有很多选择...将购物车的 positionfixed 更改为 absolute

喜欢:

@media screen and (max-height: 500px) {
  .mini-cart {
    position:absolute;
  }
  .mini-cart__body {
    max-height: inherit;
  }
}

** 这是整个 sn-p(将 SCSS 编译为 CSS 以在此处工作)

注意:某些样式可能在 css 转换中发生了变化。因此,只需使用以下示例。

document.addEventListener('DOMContentLoaded', function() {

  var mn = $('.page-head'),
  core = $('.band'),
  mns = 'page-head-scrolled',
  bit, hdr;

  $(window).resize(function() {

    bit = mn.outerHeight();
    hdr = $('.info-bar').outerHeight();
  })
  .resize().scroll(function() {

    if ($(this).scrollTop() > hdr) {
      mn.addClass(mns);
      core.css('margin-top', bit);
    } else {
      mn.removeClass(mns);
      core.attr('style', '');
    }
  })
  .on('load', function() {

    $(this).scroll();
  });
});
/* =================
   #MIXINS
   ================= */
/**
 * Clearfix
 */
/**
 * Typography
 */
/**
 * Media Queries.
 * 
 * 1. $bp2  =  480px 	(30rem)
 * 2. $bp3  =  600px 	(37.5rem)
 * 3. $bp4  =  768px 	(48rem)
 * 4. $bp5  =  1024px 	(64rem)
 * 5. $bp6  =  1220px 	(76.250rem)
 * 6. $bp7  =  1400px 	(87.5rem)
 */
/* =================
   #BASE
   ================= */
/* Site */
html,
body {
  margin: 0;
  padding: 0;
}

h1,
h2,
h3,
h4,
p {
  margin: 0;
  padding: 0;
}

/* Page */
.page {
  margin: 0;
  padding: 0;
  position: relative;
}

/* Content area */
.band {
  padding: 60px 0 30px;
}

.wrap {
  margin: 0 auto;
  max-width: 1000px;
}

/* =================
   #HEADER
   ================= */
/* Info bar */
.info-bar {
  background: black;
  color: white;
  padding: 2px 0;
  text-align: center;
  width: 100%;
}

/* Header */
.page-head {
  background: #eee;
  color: #000;
  padding: 10px 0;
  text-align: center;
  width: 100%;
}
.page-head.page-head-scrolled {
  position: fixed;
  top: 0;
}

/* =================
   #MINI CART
   ================= */
.mini-cart {
  background: white;
  border-top: 4px solid red;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
  box-sizing: border-box;
  padding: 15px;
  position: fixed;
  top: 60px;
  right: 30px;
  transition: all .20s;
  z-index: 1000;
  width: 100%;
  max-width: 500px;
  /* [1] */
  /* [2] */
  /* [3] */
  /* [4] */
  /* [5] */
  /* [6] */
}
.mini-cart:before, .mini-cart:after {
  content: "";
  display: table;
}
.mini-cart:after {
  clear: both;
}
.mini-cart:before {
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 8px solid red;
  content: "";
  display: block;
  height: 0;
  position: absolute;
  top: -12px;
  right: 30px;
  width: 0;
}
@media (min-width: 64em) {
  .mini-cart {
    padding: 30px;
  }
}

/**
 * `mini-cart` header (title + close).
 */
.mini-cart__head {
  border-bottom: 2px solid #eee;
  padding-bottom: 30px;
}
.mini-cart__head:before, .mini-cart__head:after {
  content: "";
  display: table;
}
.mini-cart__head:after {
  clear: both;
}

.mini-cart__title {
  font-size: 18px;
  font-size: 1.8rem;
  margin-bottom: 0;
}

.mini-cart__close {
  background: none;
  fill: #ccc;
  float: right;
  height: 20px;
  margin-left: 15px;
  padding: 0;
  text-shadow: none;
  width: 20px;
}
.mini-cart__close:hover {
  fill: #333;
}

/**
 * `mini-cart` body (products).
 */
.mini-cart__body {
    overflow-y: auto;
    padding-right: 30px;
    margin-right: -30px;
    max-height: 30vh;
    overflow: auto;
    box-sizing: border-box;
    width: 100%;
}

.mini-cart__item {
  border-bottom: 2px solid #eee;
  clear: both;
  padding: 30px 120px 30px 115px;
  position: relative;
}
.mini-cart__item:before, .mini-cart__item:after {
  content: "";
  display: table;
}
.mini-cart__item:after {
  clear: both;
}
.mini-cart__item .u-photo {
  display: block;
  float: left;
  margin-left: -115px;
  width: 100px;
}
.mini-cart__item .p-name {
  font-size: 14px;
  font-size: 1.4rem;
  margin-bottom: 5px;
}
.mini-cart__item .e-description {
  font-size: 12px;
  font-size: 1.2rem;
  margin-bottom: 5px;
}
.mini-cart__item .p-price {
  margin-bottom: 0;
}
.mini-cart__item .qty {
  position: absolute;
  top: 30px;
  right: 0;
  text-align: right;
}

/**
 * `mini-cart` foot (price + button).
 */
/* =================
   #MIXINS
   ================= */
/**
 * Clearfix
 */
/**
 * Typography
 */
/**
 * Media Queries.
 * 
 * 1. $bp2  =  480px 	(30rem)
 * 2. $bp3  =  600px 	(37.5rem)
 * 3. $bp4  =  768px 	(48rem)
 * 4. $bp5  =  1024px 	(64rem)
 * 5. $bp6  =  1220px 	(76.250rem)
 * 6. $bp7  =  1400px 	(87.5rem)
 */
/* =================
   #BASE
   ================= */
/* Site */
html,
body {
  margin: 0;
  padding: 0;
}

h1,
h2,
h3,
h4,
p {
  margin: 0;
  padding: 0;
}

/* Page */
.page {
  margin: 0;
  padding: 0;
  position: relative;
}

/* Content area */
.band {
  padding: 60px 0 30px;
}

.wrap {
  margin: 0 auto;
  max-width: 1000px;
}

/* =================
   #HEADER
   ================= */
/* Info bar */
.info-bar {
  background: black;
  color: white;
  padding: 2px 0;
  text-align: center;
  width: 100%;
}

/* Header */
.page-head {
  background: #eee;
  color: #000;
  padding: 10px 0;
  text-align: center;
  width: 100%;
}
.page-head.page-head-scrolled {
  position: fixed;
  top: 0;
}

/* =================
   #MINI CART
   ================= */
.mini-cart {
  background: white;
  border-top: 4px solid red;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
  box-sizing: border-box;
  padding: 15px;
  position: fixed;
  top: 60px;
  right: 30px;
  transition: all .20s;
  z-index: 1000;
  width: 100%;
  max-width: 500px;
  /* [1] */
  /* [2] */
  /* [3] */
  /* [4] */
  /* [5] */
  /* [6] */
}
.mini-cart:before, .mini-cart:after {
  content: "";
  display: table;
}
.mini-cart:after {
  clear: both;
}
.mini-cart:before {
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 8px solid red;
  content: "";
  display: block;
  height: 0;
  position: absolute;
  top: -12px;
  right: 30px;
  width: 0;
}
@media (min-width: 64em) {
  .mini-cart {
    padding: 30px;
  }
}

/**
 * `mini-cart` header (title + close).
 */
.mini-cart__head {
  border-bottom: 2px solid #eee;
  padding-bottom: 30px;
}
.mini-cart__head:before, .mini-cart__head:after {
  content: "";
  display: table;
}
.mini-cart__head:after {
  clear: both;
}

.mini-cart__title {
  font-size: 18px;
  font-size: 1.8rem;
  margin-bottom: 0;
}

.mini-cart__close {
  background: none;
  fill: #ccc;
  float: right;
  height: 20px;
  margin-left: 15px;
  padding: 0;
  text-shadow: none;
  width: 20px;
}
.mini-cart__close:hover {
  fill: #333;
}

/**
 * `mini-cart` body (products).
 */
.mini-cart__body {
  overflow-y: auto;
  padding-right: 30px;
  margin-right: -30px;
}

.mini-cart__item {
  border-bottom: 2px solid #eee;
  clear: both;
  padding: 30px 120px 30px 115px;
  position: relative;
}
.mini-cart__item:before, .mini-cart__item:after {
  content: "";
  display: table;
}
.mini-cart__item:after {
  clear: both;
}
.mini-cart__item .u-photo {
  display: block;
  float: left;
  margin-left: -115px;
  width: 100px;
}
.mini-cart__item .p-name {
  font-size: 14px;
  font-size: 1.4rem;
  margin-bottom: 5px;
}
.mini-cart__item .e-description {
  font-size: 12px;
  font-size: 1.2rem;
  margin-bottom: 5px;
}
.mini-cart__item .p-price {
  margin-bottom: 0;
}
.mini-cart__item .qty {
  position: absolute;
  top: 30px;
  right: 0;
  text-align: right;
}

/**
 * `mini-cart` foot (price + button).
 */
.mini-cart {
    background: white;
    border-top: 4px solid red;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
    box-sizing: border-box;
    padding: 15px;
    position: fixed;
    top: 60px;
    right: 30px;
    transition: all .20s;
    z-index: 1000;
    width: 500px;
    max-width: calc(100% - 40px);
}
.mini-cart__total:before, .mini-cart__total:after {
  content: "";
  display: table;
}
.mini-cart__total:after {
  clear: both;
}
.mini-cart__total span {
  float: right;
}

.mini-cart__btn {
  margin-bottom: 0;
}

.mini-cart__total:before, .mini-cart__total:after {
  content: "";
  display: table;
}
.mini-cart__total:after {
  clear: both;
}
.mini-cart__total span {
  float: right;
}

.mini-cart__btn {
  margin-bottom: 0;
}

@media screen and (max-height: 350px) {

  .mini-cart {
    position:absolute;
  }
  .mini-cart__body {
    max-height: inherit;
  }
  
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="page">

  <div class="info-bar">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
  </div>

  <header class="page-head">
    <h3>Main Nav would go in here</h3>
  </header>

  <div class="band">
    <div class="wrap">

      <h4>All Page content follows</h4>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <br />
        <br />
        <br />
        <br />
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <br />
        <br />
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

        <br />
        <br />
        <br />
        <br />

      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <br />
        <br />
        <br />
        <br />
        
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <br />
        <br />
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <br />
        <br />
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <br />
        <br />
        <br />
        <br />
        
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <br />
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        
        <br />
        <br />
        <br />
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
    </div>
  </div>

</div>

<!-- Start #mini-cart -->
<div class="mini-cart">

  <div class="mini-cart__head">
    <a href="#" class="mini-cart__close">Close</a>
    <h4 class="mini-cart__title">Your Basket</h4>
  </div>

  <div class="mini-cart__body">

    <div class="mini-cart__item h-product">
      <img src="http://via.placeholder.com/350x150" class="u-photo" alt="ALT TEXT" />
      <h2 class="p-name">Product title</h2>
      <p class="e-description">Short product description</p>
      <p class="p-price">£99.99</p>
      <div class="qty qty--small">QTY</div>
    </div>

    <div class="mini-cart__item h-product">
      <img src="http://via.placeholder.com/350x150" class="u-photo" alt="ALT TEXT" />
      <h2 class="p-name">Product title</h2>
      <p class="e-description">Short product description</p>
      <p class="p-price">£99.99</p>
      <div class="qty qty--small">QTY</div>
    </div>

  </div>

  <div class="mini-cart__foot">
    <p class="mini-cart__total">Total <span>£11.00</span></p>
    <a href="#" class="mini-cart__btn btn btn--wide">Checkout</a>
  </div>

</div>
<!-- End #mini-cart -->

【讨论】:

  • 谢谢你,在位置感上工作了。在可滚动的内容上,将结帐按钮保持在视图中是有意义的,因此可滚动的body 区域将是最好的。但是,我注意到在较短的浏览器窗口上,这意味着该按钮可以开箱即用。你明白吗?也许是因为我在迷你购物车容器上也设置了max-height: calc(100vh - 115px);
  • 嘿,这是一个好点,检查较短的屏幕/浏览器窗口上的显示。我正在考虑这样的情况,为max-height 添加一个媒体屏幕捕捉,并将位置从固定更改为absolute,因为这可能有助于更自然的滚动。我更新了我的代码示例以反映这一点。您可以选择很多选项。如果你想尝试不同的东西,请告诉我。 (注意:我更改了页面高度以使此示例更适应此处的预览窗口。)
  • 这是一个很好的解决方案!虽然固定位置导航看起来有点奇怪 - 我也可以将其更改为绝对/相对。我的一部分想知道这在移动设备上有多有用,以及是否值得将它隐藏起来。或者,我可以在页眉/页脚上设置高度,以便正文和使用 calc ...有点乱但可以工作!
  • 好吧,祝你好运。这是一个不错的推车设计。我不确定您是否会考虑我上次更新的答案是否可以标记为正确。让我知道我是否可以尝试进一步修改它。
  • 非常感谢 - 我看到的网站中的很多被盗(重构;))示例合二为一。当它是单一产品时可能是最好的。我想在一个有人会添加很多很多项目的网站上,这将是一场噩梦!再次感谢您的所有时间和帮助:)
【解决方案2】:

在您的.mini-cart 上使用display: flex;flex-direction: column;max-height: calc(100vh - 100px);,您可以获得您想要的结果:See this JSFiddle for SCSS code in action

flex 确保元素适合容器。为了更加安全,您可以将flex 规则添加到直系后代。我只是提供一个通用的解决方案,您可以在此基础上满足您的确切需求。

我不得不稍微编辑您的.mini-cart__body,添加带有预定义断点的@media 规则,这样滚动条就不会超出容器。

document.addEventListener('DOMContentLoaded', function() {

  var mn = $('.page-head'),
  core = $('.band'),
  mns = 'page-head-scrolled',
  bit, hdr;

  $(window).resize(function() {

    bit = mn.outerHeight();
    hdr = $('.info-bar').outerHeight();
  })
  .resize().scroll(function() {

    if ($(this).scrollTop() > hdr) {
      mn.addClass(mns);
      core.css('margin-top', bit);
    } else {
      mn.removeClass(mns);
      core.attr('style', '');
    }
  })
  .on('load', function() {

    $(this).scroll();
  });
});
* { box-sizing: border-box; }

/* =================
   #MIXINS
   ================= */

/**
 * Clearfix
 */

@mixin clearfix() {
	
	&:before,
	&:after {
		content: "";
		display: table;
	}
	
	&:after {
		clear: both;
	}
}


/**
 * Typography
 */

@mixin font-size($font-size: 16){
font-size : #{$font-size}px;
font-size : #{$font-size / 10}rem; }


/**
 * Media Queries.
 * 
 * 1. $bp2  =  480px 	(30rem)
 * 2. $bp3  =  600px 	(37.5rem)
 * 3. $bp4  =  768px 	(48rem)
 * 4. $bp5  =  1024px 	(64rem)
 * 5. $bp6  =  1220px 	(76.250rem)
 * 6. $bp7  =  1400px 	(87.5rem)
 */

@mixin bp($point) {
  
  $bp2 : "(min-width : 30em)"; 		/* [1] */
  $bp3 : "(min-width : 37.5em)"; 		/* [2] */
  $bp4 : "(min-width : 48em)"; 		/* [3] */
  $bp5 : "(min-width : 64em)"; 		/* [4] */
  $bp6 : "(min-width : 76.250em)"; 	/* [5] */
  $bp7 : "(min-width : 87.5em)"; 		/* [6] */

  @if $point == bp2 {
    @media #{$bp2} { @content; }
  }

  @else if $point == bp3 {
    @media #{$bp3} { @content; }
  }

  @else if $point == bp3 {
    @media #{$bp3} { @content; }
  }

  @else if $point == bp4 {
    @media #{$bp4} { @content; }
  }

  @else if $point == bp5 {
    @media #{$bp5} { @content; }
  }

  @else if $point == bp6 {
    @media #{$bp6} { @content; }
  }

  @else if $point == bp7 {
    @media #{$bp7} { @content; }
  }
}


/* =================
   #BASE
   ================= */

/* Site */

html,
body {
  margin: 0;
  padding: 0;
}

h1,
h2,
h3,
h4,
p {
  margin: 0;
  padding: 0;
}

/* Page */

.page {
  height: 2000px;
  margin: 0;
  padding: 0;
  position: relative;
}

/* Content area */

.band {
  padding: 60px 0 30px;
}

.wrap {
  margin: 0 auto;
  max-width: 1000px;
}


/* =================
   #HEADER
   ================= */

/* Info bar */

.info-bar {
  background: black;
  color: white;
  padding: 2px 0;
  text-align: center;
  width: 100%;
}

/* Header */

.page-head {
  background: #eee;
  color: #000;
  padding: 10px 0;
  text-align: center;
  width: 100%;
  
  &.page-head-scrolled {
    position: fixed;
    top: 0;
  }
}


/* =================
   #MINI CART
   ================= */

.mini-cart {
	background: white;
	border-top: 4px solid red;
	box-shadow: 0 0 10px rgba(0,0,0,.25);
	box-sizing: border-box;
	@include clearfix;
	padding: 15px;
	position: fixed;
	top: 60px;
	right: 30px;
	transition: all .20s;
	z-index: 1000;
	max-width: 500px;
  max-height: calc(100vh - 100px);
  display: flex;
  flex-direction: column;

    &:before {
        border-left: 10px solid transparent;
        border-right: 10px solid transparent;
        border-bottom: 8px solid red;
        content: "";
        display: block;
        height: 0; 
        position: absolute;
        top: -12px;
        right: 30px;
        width: 0; 
    }
    
    @include bp(bp5) {
	    padding: 30px;
    }
}


/**
 * `mini-cart` header (title + close).
 */
 
.mini-cart__head {
	border-bottom: 2px solid #eee;
	@include clearfix;
	padding-bottom: 30px;
}

.mini-cart__title {
	@include font-size(18);
	margin-bottom: 0;
}

.mini-cart__close {
	  background: none;
	  fill: #ccc;
    float: right;
    height: 20px;
    margin-left: 15px;
    padding: 0;
    text-shadow: none;
    width: 20px;
    
    &:hover {
        fill: #333;
    }
}


/**
 * `mini-cart` body (products).
 */

.mini-cart__body {
	overflow-y: auto;
  padding-right: 0;
  margin-right:  0;
  
  @include bp(bp5) {
	  padding-right: 30px;
	  margin-right: -30px;
  }
}

.mini-cart__item {
	border-bottom: 2px solid #eee;
    clear: both;
    @include clearfix;
    padding: 30px 120px 30px 115px;
    position: relative;
    
    .u-photo {
	    display: block;
	    float: left;
	    margin-left: -115px;
	    width: 100px;
    }
    
    .p-name {
	    @include font-size(14);
		  margin-bottom: 5px;
    }
    
    .e-description {
	    @include font-size(12);
	    margin-bottom: 5px;
    }
    
    .p-price {
	    margin-bottom: 0;
    }
    
    .qty {
	    position: absolute;
	    top: 30px;
	    right: 0;
	    text-align: right;
    }
}

/**
 * `mini-cart` foot (price + button).
 */

.mini-cart__total {
    @include clearfix;
    color: #333;
    @include font-size(18);
    font-weight: 700;
    margin-bottom: 0;
    padding: 15px 0;
    text-transform: uppercase;
    width: 100%;
    
    span {
	    float: right;
    }
}

.mini-cart__btn {
	margin-bottom: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="page">

  <div class="info-bar">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
  </div>

  <header class="page-head">
    <h3>Main Nav would go in here</h3>
  </header>

  <div class="band">
    <div class="wrap">

      <h4>All Page content follows</h4>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

    </div>
  </div>

</div>

<!-- Start #mini-cart -->
<div class="mini-cart">

  <div class="mini-cart__head">
    <a href="#" class="mini-cart__close">Close</a>
    <h4 class="mini-cart__title">Your Basket</h4>
  </div>

  <div class="mini-cart__body">

    <div class="mini-cart__item h-product">
      <img src="http://via.placeholder.com/350x150" class="u-photo" alt="ALT TEXT" />
      <h2 class="p-name">Product title</h2>
      <p class="e-description">Short product description</p>
      <p class="p-price">£99.99</p>
      <div class="qty qty--small">QTY</div>
    </div>

    <div class="mini-cart__item h-product">
      <img src="http://via.placeholder.com/350x150" class="u-photo" alt="ALT TEXT" />
      <h2 class="p-name">Product title</h2>
      <p class="e-description">Short product description</p>
      <p class="p-price">£99.99</p>
      <div class="qty qty--small">QTY</div>
    </div>

    <div class="mini-cart__item h-product">
      <img src="http://via.placeholder.com/350x150" class="u-photo" alt="ALT TEXT" />
      <h2 class="p-name">Product title</h2>
      <p class="e-description">Short product description</p>
      <p class="p-price">£99.99</p>
      <div class="qty qty--small">QTY</div>
    </div>

    <div class="mini-cart__item h-product">
      <img src="http://via.placeholder.com/350x150" class="u-photo" alt="ALT TEXT" />
      <h2 class="p-name">Product title</h2>
      <p class="e-description">Short product description</p>
      <p class="p-price">£99.99</p>
      <div class="qty qty--small">QTY</div>
    </div>

  </div>

  <div class="mini-cart__foot">
    <p class="mini-cart__total">Total <span>£11.00</span></p>
    <a href="#" class="mini-cart__btn btn btn--wide">Checkout</a>
  </div>

</div>
<!-- End #mini-cart -->

(注意:这是基于 OP 提供的 SCSS,因此 sn-p 将无法正确呈现,请参阅我的答案开头的 JSFiddle)

【讨论】:

  • 这看起来不错!早上我会在我的构建上测试它,谢谢。 IE10 的浏览器支持如何?没关系。我可以在 IE9 上隐藏 mini-cart(如果我需要支持的话)!
  • IE10 对这些属性的支持很好(可能需要-ms- 前缀和旧规范名称)。
  • 我认为如果浏览器不支持这些属性,隐藏购物车会很好,但听起来这不是问题。提供链接,然后单击时转到购物篮/结帐。当您说 “为了更加安全,您可以将 flex 规则添加到直接后代。” 是不是这样子元素不会使用 flex 影响/调整大小?
  • @user1406440 您可以在列表中添加flex: 1 0 auto,在顶部和底部元素中添加flex: 0 0 none,以确保它们在列表较小时不会占用更多空间。标准化跨浏览器行为也很有用。就是这样,但在全球范围内它应该可以正常工作。
  • 酷,我没有看到这实际上导致了问题。它似乎工作正常。我唯一注意到的是,当我将浏览器窗口的大小减小到移动大小时,图像的大小缩小了,但它的固定宽度为 100 像素。有没有办法阻止它?
【解决方案3】:

您只需在.mini-cart 上设置max-height: 100%overflow: scroll

这可以在here 看到,也可以在下面看到:

document.addEventListener('DOMContentLoaded', function() {

  var mn = $('.page-head'),
    core = $('.band'),
    mns = 'page-head-scrolled',
    bit, hdr;

  $(window).resize(function() {

      bit = mn.outerHeight();
      hdr = $('.info-bar').outerHeight();
    })
    .resize().scroll(function() {

      if ($(this).scrollTop() > hdr) {
        mn.addClass(mns);
        core.css('margin-top', bit);
      } else {
        mn.removeClass(mns);
        core.attr('style', '');
      }
    })
    .on('load', function() {

      $(this).scroll();
    });
});
/* =================
   #MIXINS
   ================= */


/**
 * Clearfix
 */


/**
 * Typography
 */


/**
 * Media Queries.
 * 
 * 1. $bp2  =  480px 	(30rem)
 * 2. $bp3  =  600px 	(37.5rem)
 * 3. $bp4  =  768px 	(48rem)
 * 4. $bp5  =  1024px 	(64rem)
 * 5. $bp6  =  1220px 	(76.250rem)
 * 6. $bp7  =  1400px 	(87.5rem)
 */


/* =================
   #BASE
   ================= */


/* Site */

html,
body {
  margin: 0;
  padding: 0;
}

h1,
h2,
h3,
h4,
p {
  margin: 0;
  padding: 0;
}


/* Page */

.page {
  height: 2000px;
  margin: 0;
  padding: 0;
  position: relative;
}


/* Content area */

.band {
  padding: 60px 0 30px;
}

.wrap {
  margin: 0 auto;
  max-width: 1000px;
}


/* =================
   #HEADER
   ================= */


/* Info bar */

.info-bar {
  background: black;
  color: white;
  padding: 2px 0;
  text-align: center;
  width: 100%;
}


/* Header */

.page-head {
  background: #eee;
  color: #000;
  padding: 10px 0;
  text-align: center;
  width: 100%;
}

.page-head.page-head-scrolled {
  position: fixed;
  top: 0;
}


/* =================
   #MINI CART
   ================= */

.mini-cart {
  background: white;
  border-top: 4px solid red;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
  box-sizing: border-box;
  padding: 15px;
  position: fixed;
  top: 60px;
  right: 30px;
  transition: all .20s;
  z-index: 1000;
  width: 100%;
  max-width: 500px;
  max-height: 100%;
  overflow: scroll;
  /* [1] */
  /* [2] */
  /* [3] */
  /* [4] */
  /* [5] */
  /* [6] */
}

.mini-cart:before,
.mini-cart:after {
  content: "";
  display: table;
}

.mini-cart:after {
  clear: both;
}

.mini-cart:before {
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 8px solid red;
  content: "";
  display: block;
  height: 0;
  position: absolute;
  top: -12px;
  right: 30px;
  width: 0;
}

@media (min-width: 64em) {
  .mini-cart {
    padding: 30px;
  }
}


/**
 * `mini-cart` header (title + close).
 */

.mini-cart__head {
  border-bottom: 2px solid #eee;
  padding-bottom: 30px;
}

.mini-cart__head:before,
.mini-cart__head:after {
  content: "";
  display: table;
}

.mini-cart__head:after {
  clear: both;
}

.mini-cart__title {
  font-size: 18px;
  font-size: 1.8rem;
  margin-bottom: 0;
}

.mini-cart__close {
  background: none;
  fill: #ccc;
  float: right;
  height: 20px;
  margin-left: 15px;
  padding: 0;
  text-shadow: none;
  width: 20px;
}

.mini-cart__close:hover {
  fill: #333;
}


/**
 * `mini-cart` body (products).
 */

.mini-cart__body {
  overflow-y: auto;
  padding-right: 30px;
  margin-right: -30px;
}

.mini-cart__item {
  border-bottom: 2px solid #eee;
  clear: both;
  padding: 30px 120px 30px 115px;
  position: relative;
}

.mini-cart__item:before,
.mini-cart__item:after {
  content: "";
  display: table;
}

.mini-cart__item:after {
  clear: both;
}

.mini-cart__item .u-photo {
  display: block;
  float: left;
  margin-left: -115px;
  width: 100px;
}

.mini-cart__item .p-name {
  font-size: 14px;
  font-size: 1.4rem;
  margin-bottom: 5px;
}

.mini-cart__item .e-description {
  font-size: 12px;
  font-size: 1.2rem;
  margin-bottom: 5px;
}

.mini-cart__item .p-price {
  margin-bottom: 0;
}

.mini-cart__item .qty {
  position: absolute;
  top: 30px;
  right: 0;
  text-align: right;
}


/**
 * `mini-cart` foot (price + button).
 */

.mini-cart__total {
  color: #333;
  font-size: 18px;
  font-size: 1.8rem;
  font-weight: 700;
  margin-bottom: 0;
  padding: 15px 0;
  text-transform: uppercase;
  width: 100%;
}

.mini-cart__total:before,
.mini-cart__total:after {
  content: "";
  display: table;
}

.mini-cart__total:after {
  clear: both;
}

.mini-cart__total span {
  float: right;
}

.mini-cart__btn {
  margin-bottom: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="page">

  <div class="info-bar">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
  </div>

  <header class="page-head">
    <h3>Main Nav would go in here</h3>
  </header>

  <div class="band">
    <div class="wrap">

      <h4>All Page content follows</h4>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

    </div>
  </div>

</div>

<!-- Start #mini-cart -->
<div class="mini-cart">

  <div class="mini-cart__head">
    <a href="#" class="mini-cart__close">Close</a>
    <h4 class="mini-cart__title">Your Basket</h4>
  </div>

  <div class="mini-cart__body">

    <div class="mini-cart__item h-product">
      <img src="http://via.placeholder.com/350x150" class="u-photo" alt="ALT TEXT" />
      <h2 class="p-name">Product title</h2>
      <p class="e-description">Short product description</p>
      <p class="p-price">£99.99</p>
      <div class="qty qty--small">QTY</div>
    </div>

    <div class="mini-cart__item h-product">
      <img src="http://via.placeholder.com/350x150" class="u-photo" alt="ALT TEXT" />
      <h2 class="p-name">Product title</h2>
      <p class="e-description">Short product description</p>
      <p class="p-price">£99.99</p>
      <div class="qty qty--small">QTY</div>
    </div>

    <div class="mini-cart__item h-product">
      <img src="http://via.placeholder.com/350x150" class="u-photo" alt="ALT TEXT" />
      <h2 class="p-name">Product title</h2>
      <p class="e-description">Short product description</p>
      <p class="p-price">£99.99</p>
      <div class="qty qty--small">QTY</div>
    </div>

    <div class="mini-cart__item h-product">
      <img src="http://via.placeholder.com/350x150" class="u-photo" alt="ALT TEXT" />
      <h2 class="p-name">Product title</h2>
      <p class="e-description">Short product description</p>
      <p class="p-price">£99.99</p>
      <div class="qty qty--small">QTY</div>
    </div>

    <div class="mini-cart__item h-product">
      <img src="http://via.placeholder.com/350x150" class="u-photo" alt="ALT TEXT" />
      <h2 class="p-name">Product title</h2>
      <p class="e-description">Short product description</p>
      <p class="p-price">£99.99</p>
      <div class="qty qty--small">QTY</div>
    </div>

  </div>

  <div class="mini-cart__foot">
    <p class="mini-cart__total">Total <span>£11.00</span></p>
    <a href="#" class="mini-cart__btn btn btn--wide">Checkout</a>
  </div>

</div>
<!-- End #mini-cart -->

【讨论】:

  • 不幸的是,由于position: fixed 元素上设置的最高值,我认为这不会起作用。所以它会以 100% 的高度离开页面底部。
猜你喜欢
  • 2012-01-16
  • 1970-01-01
  • 2015-12-30
  • 2014-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多