【问题标题】:How to make a horizontal scrolling carousel using flexbox?如何使用 flexbox 制作水平滚动轮播?
【发布时间】:2017-03-26 08:55:16
【问题描述】:

我的目标:

制作一个像谷歌一样的水平滚动轮播(见图)

搜索后,这些链接提供了一个良好的开端:

我以前从未使用过 flexbox。我的预感是我需要设置flex-direction:rowdisplay:inline-flex

关于我需要使用哪些其他 CSS 属性有什么想法吗?我真的很感激。

【问题讨论】:

    标签: css flexbox horizontal-scrolling


    【解决方案1】:

    Flexbox 水平轮播:

    弹性容器

    • 制作容器display: flex
    • 确保物品不包装:flex-wrap: nowrap;
    • 允许区域滚动:overflow: auto;
    • iOS 的动力和易用性:-webkit-overflow-scrolling property;
    • IE 10、11 和 Edge:-ms-overflow-style: -ms-autohiding-scrollbar;

      .container {
         display: flex;
         flex-wrap: nowrap;
         overflow-x: auto;
         -webkit-overflow-scrolling: touch;
         -ms-overflow-style: -ms-autohiding-scrollbar; 
       }
      

    弹性项目

    每个item需要一个flex-growth和一个flex-shrink的值为0,基于flex的属性可以设置为auto:

    .item {
      flex: 0 0 auto; 
    }
    

    我在这里发布了一个带有几个示例的 sn-p。希望对您有所帮助!

    .scroll {
      display: flex;
      flex-wrap: nowrap;
      overflow: auto;
      -webkit-overflow-scrolling: touch;
      -ms-overflow-style: -ms-autohiding-scrollbar;
    }
    
    .flex {
      display: flex;
      flex-wrap: nowrap;
    }
    
    .logo {
      flex: 0 0 120px;
    }
    
    .nav-item {
      flex: 0 0 auto;
    }
    
    .example-three .logo {
      display: block;
      border: none;
    }
    
    .example-three .nav-item {
      color: #fff;
    }
    
    header {
      background: #281a41;
    }
    
    .example-one-header, .example-two-header {
      border-radius: 3px;
    }
    
    .example-three-header {
      border-radius: 3px 3px 0 0;
    }
    
    .example-three nav {
      background: #727c87;
      border-radius: 0 0 3px 3px;
    }
    
    .logo {
      text-align: center;
      font-weight: 700;
      color: #727c87;
      border-right: 1px solid rgba(114, 124, 135, 0.4);
      padding: 13px 24px 12px;
    }
    
    .logo, .nav-item {
      padding: 13px 16px 12px;
    }
    .logo:not(:last-child), .nav-item:not(:last-child) {
      border-right: 1px solid rgba(114, 124, 135, 0.2);
    }
    
    * {
      box-sizing: border-box;
    }
    
    body {
      max-width: 360px;
      margin: 5% auto;
      color: #64cce3;
      line-height: 1.5;
    }
    
    .logo, .nav-item {
      font-size: 14px;
    }
    
    .title {
      margin: 24px 0 6px;
      font-size: 12px;
      text-transform: uppercase;
      letter-spacing: .2em;
      color: #999;
    }
    
    ::-webkit-scrollbar {
      width: 12px;
    }
    
    ::-webkit-scrollbar-track {
      -webkit-box-shadow: inset 0 0 6px #76daff;
      border-radius: 10px;
    }
    
    ::-webkit-scrollbar-thumb {
      border-radius: 10px;
      -webkit-box-shadow: inset 0 0 6px rgba(255, 255, 255, 0.5);
    }
    <div class="container example-one">
      <div class="title">Whole Section scroll</div>
      <header class="example-one-header scroll">
        <span class="logo">Company Logo</span>
        <nav class="flex">
          <span class="nav-item">Shop</span>
          <span class="nav-item">Portfolio</span>
          <span class="nav-item">Downloads</span>
          <span class="nav-item">About Us</span>
          <span class="nav-item">Contact Us</span>
        </nav>
      </header>
    </div>
    <div class="container example-two">
      <div class="title">Inside Nav only scrolling</div>
      <header class="example-two-header flex">
        <span class="logo">Company Logo</span>
        <nav class="scroll">
          <span class="nav-item">Shop</span>
          <span class="nav-item">Portfolio</span>
          <span class="nav-item">Downloads</span>
          <span class="nav-item">About Us</span>
          <span class="nav-item">Contact Us</span>
        </nav>
      </header>
    </div>
    <div class="container example-three">
      <div class="title">Separated navigation</div>
      <header class="example-three-header">
        <span class="logo">Company Logo</span>
      </header>
      <nav class="scroll">
        <span class="nav-item">Shop</span>
        <span class="nav-item">Portfolio</span>
        <span class="nav-item">Downloads</span>
        <span class="nav-item">About Us</span>
        <span class="nav-item">Contact Us</span>
      </nav>
    </div>

    你也可以看看 Andi Smith flexbox-carousel:

    http://www.andismith.com/flexbox-carousel/

    http://www.andismith.com/blog/2012/05/css3-flexbox-carousel/

    【讨论】:

    • 我对你的帖子投了赞成票,但你的答案并不正确,让我们去Google Image Search 并搜索Brown eyed girls 然后你会看到没有滚动条的水平轮播,可以通过鼠标指针触摸滑动。我的问题是这个问题,但我没有找到正确的答案。
    猜你喜欢
    • 2021-04-03
    • 2022-01-03
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2014-07-04
    相关资源
    最近更新 更多