且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

需要设计8行两行

更新时间:2023-12-04 12:48:52

I know the question was about Bootstrap, but I thought it would be helpful for people to see it done with just html and css. I hate seeing people work real hard to make ugly solutions with Bootstrap, when this so basic if you didn't use Bootstrap.

CODEPEN

HTML:
just a list of business cards

<ul>
    <li>
      <img src="http://lorempixel.com/50/50/sports/" alt="John Doe"/>
      <span class="content">
        <strong>Johnny Realestate</strong>
        <a href="mailto:johnny@realestate.io" title="Email Johnny">johnny@realestate.io</a> 
        <a href="tel:2223334444" title="Call Johnny">222.333.4444</a> 
        <address>
          1 Real Estate Court<br>
          suite 101<br>
          Real, AZ 10101
        </address>
      </span>
    </li>
    ... REPEAT
  </ul>

CSS:

  • mobile first
  • display:flex;
  • 0 to 599px => mobile layout |=| 1 item across
  • 599px to 1024px => tablet layout |=|=| 2 items across
  • 1024px and greater => desktop layout |=|=|=|=| 4 items across

    ul {
      list-style:none;
      display:flex;
      -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
      flex-wrap: wrap;
      max-width:1024px; // should match the page width, this value is also reflected in the media queries
      width:100%;
      margin: 0 auto; // auto can be replaced with any value
      padding: 1em 0;
      background: orange;
    }
    ul li {
      width: 100%;
      margin: 0 0 1em 0;
      box-shadow:0px 0px 1px 1px black;
      background: white;
      display: -webkit-flex;
      display: -ms-flexbox;
      display: flex;
    }
    ul li img {
      height:50px;
      width: 50px;
      margin: 0 5px 0 0;
    }
    ul li span {
      width: calc(100% - 55px);
    }
    @media (min-width:599px){
      ul li {
        width: 49%;
        margin: 0 2% 1em 0;
      }
    }
    @media (min-width:599px) and (max-width:1024px){
      ul li:nth-child(2n + 2){
        margin: 0 0 1em 0;
      }
    }
    @media (min-width:1024px){
      ul li {
        width: 24%;
        margin: 0 1.3333333333% 1em 0;
      }
      ul li:nth-child(4n + 4){
        margin: 0 0 1em 0;
      }
    }
    

There are lots of ways to optimize this example or tweak it to reach your goals. I hope this helps.

[UPDATE] I added the prefixes for display:flex; and flex-wrap: wrap;, but if you can, you should add AutoPrefixer to your workflow!