How to accomplish what bootstrap grid system does with it's “.col-xs-” or “smallgrid” with foundation4?

陌路散爱 提交于 2019-12-22 08:27:32

问题


I am looking to build a website in custom CSS and without frameworks just to increase my command over CSS. I want my entire site to retain its layout and look no matter what the device. Foundation does it with it's "smallgrid" and bootstrap with ".col-xs-". How do I do that without a framework?


回答1:


Foundation and Bootstrap both use the same way to provide you flexible grids : they fix every possible column width in percents, and use media queries to switch between mobile/tablet/desktop grids (small, medium and large for Foundation, xs, sm, md and lg for Bootstrap).

Have a look on those links to learn more about this :

  • MDN - Media queries
  • CSS Wizardry Grid
  • Profound Grid
  • Bootstrap 3 Grid System
  • Foundation 5 Grid
  • ...

Bootstrap 3 :

// Mobile first : Bootstrap display the content with -xs columns
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6,
.col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11 {
    float: left;
}
.col-xs-12 { width: 100%; }
.col-xs-11 { width: 91.66666666666666%; }
.col-xs-10 { width: 83.33333333333334%; }
.col-xs-9  { width: 75%; }
.col-xs-8  { width: 66.66666666666666%; }
.col-xs-7  { width: 58.333333333333336%; }
.col-xs-6  { width: 50%; }
.col-xs-5  { width: 41.66666666666667%; }
.col-xs-4  { width: 33.33333333333333%; }
.col-xs-3  { width: 25%; }
.col-xs-2  { width: 16.666666666666664%; }
.col-xs-1  { width: 8.333333333333332%; }

// if we reach 768px, let's use -sm columns
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6,
  .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11 {
      float: left;
  }
  .col-sm-12 { width: 100%; }
  .col-sm-11 { width: 91.66666666666666%; }
  ...
}
// ... etc with -md and -lg columns

Foundation 5 :

// Mobile first : Foundation display the content with -small columns
@media only screen {
    .column,
    .columns {
      position: relative;
      padding-left: 0.9375rem;
      padding-right: 0.9375rem;
      float: left; }
    .small-1 { width: 8.33333%; }
    .small-2 {width: 16.66667%; }
    .small-3 { width: 25%; }
    .small-4 { width: 33.33333%; }
    .small-5 { width: 41.66667%; }
    .small-6 { width: 50%; }
    .small-7 { width: 58.33333%; }
    .small-8 { width: 66.66667%; }
    .small-9 { width: 75%; }
    .small-10 { width: 83.33333%; }
    .small-11 { width: 91.66667%; }
    .small-12 { width: 100%; }
}

// If we reach 40.063em, let's use -medium columns
@media only screen and (min-width: 40.063em) {
    .column,
    .columns {
      position: relative;
      padding-left: 0.9375rem;
      padding-right: 0.9375rem;
      float: left; }
    .medium-1 { width: 8.33333%; }
    .medium-2 {width: 16.66667%; }
    ...
}

// ...etc with -large columns



回答2:


You can write your own grid in just a few lines. First decide how many columns you like and that create something like below which is a 4 column grid:

.col-1, .col-2, col-3, .col-4 {
    float: left;
    /* So that empty columns don't collapse */
    min-height: 1px;
    padding: 0 16px;
    /* Change tje box-model to set columns size in pixels */
    webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}

.col-1 { width: 25%; }
.col-2 { width: 50%; }
.col-3 { width: 75%; }
.col-4 { width: 100%; }

This is mostly what you need. I might want to wrap your columns and to clear the floats using the clearfix trick. If you like, I have a standalone grid system called Fluidable that just just this and a bit more.



来源:https://stackoverflow.com/questions/20333666/how-to-accomplish-what-bootstrap-grid-system-does-with-its-col-xs-or-small

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!