What is the difference among col-lg-*
, col-md-*
and col-sm-*
in Twitter Bootstrap?
问题:
回答1:
Updated 2018...
The Bootstrap 3 grid comes in 4 tiers (or \"breakpoints\")...
- Extra small (for smartphones
.col-xs-*
) - Small (for tablets
.col-sm-*
) - Medium (for laptops
.col-md-*
) - Large (for laptops/desktops
.col-lg-*
).
These grid sizes enable you to control grid behavior on different widths. The different tiers are controlled by CSS media queries.
So in Bootstrap\'s 12-column grid...
col-sm-3
is 3 of 12 columns wide (25%) on a typical small device width (> 768 pixels)
col-md-3
is 3 of 12 columns wide (25%) on a typical medium device width (> 992 pixels)
The smaller tier (xs
, sm
or md
) also defines the size for larger screen widths. So, for the same size column on all tiers, just set the width for the smallest viewport...
<div class=\"col-lg-3 col-md-3 col-sm-3\">..</div>
is the same as,
<div class=\"col-sm-3\">..</div>
Larger tiers are implied. Because col-sm-3
means 3 units on sm-and-up
, unless specifically overridden by a larger tier that uses a different size.
xs
(default) > overridden by sm
> overridden by md
> overridden by lg
Combine the classes to use change column widths on different grid sizes. This creates a responsive layout.
<div class=\"col-md-3 col-sm-6\">..</div>
The sm
, md
and lg
grids will all \"stack\" vertically on screens/viewports less than 768 pixels. This is where the xs
grid fits in. Columns that use the col-xs-*
classes will not stack vertically, and continue to scale down on the smallest screens.
Resize your browser using this demo and you\'ll see the grid scaling effects.
In Bootstrap 4 there is a new -xl-
size, see this demo. Also the -xs-
infix has been removed, so smallest columns are simply col-1
, col-2
.. col-12
, etc..
col-*
- 0 (xs)
col-sm-*
- 576px
col-md-*
- 768px
col-lg-*
- 992px
col-xl-*
- 1200px
Bootstrap 4 Grid Demo
Also, this article explains more about the Bootstrap grid
回答2:
The bootstrap docs do explain it, but it still took me a while to get it. It makes more sense when I explain it to myself in one of two ways:
If you think of the columns starting out horizontally, then you can choose when you want them to stack.
For example, if you start with columns: A B C
You decide when should they stack to be like this:
A
B
C
If you choose col-lg, then the columns will stack when the width is < 1200px.
If you choose col-md, then the columns will stack when the width is < 992px.
If you choose col-sm, then the columns will stack when the width is < 768px.
If you choose col-xs, then the columns will never stack.
On the other hand, if you think of the columns starting out stacked, then you can choose at what point they become horizontal:
If you choose col-sm, then the columns will become horizontal when the width is >= 768px.
If you choose col-md, then the columns will become horizontal when the width is >= 992px.
If you choose col-lg, then the columns will become horizontal when the width is >= 1200px.
回答3:
From Twitter Bootstrap documentation:
- small grid (≥ 768px) =
.col-sm-*
, - medium grid (≥ 992px) =
.col-md-*
, - large grid (≥ 1200px) =
.col-lg-*
.
回答4:
I think the confusing aspect of this is the fact that BootStrap 3 is a mobile first responsive system and fails to explain how this affects the col-xx-n hierarchy in that part of the Bootstrap documentation. This makes you wonder what happens on smaller devices if you choose a value for larger devices and makes you wonder if there is a need to specify multiple values. (You don\'t)
I would attempt to clarify this by stating that... Lower grain types (xs, sm) attempt retain layout appearance on smaller screens and larger types (md,lg) will display correctly only on larger screens but will wrap columns on smaller devices. The values quoted in previous examples refer to the threshold as which bootstrap degrades the appearance to fit the available screen estate.
What this means in practice is that if you make the columns col-xs-n then they will retain correct appearance even on very small screens, until the window drops to a size that is so restrictive that the page cannot be displayed correctly. This should mean that devices that have a width of 768px or less should show your table as you designed it rather than in degraded (single or wrapped column form). Obviously this still depends on the content of the columns and that\'s the whole point. If the page attempts to display multiple columns of large data, side by side on a small screen then the columns will naturally wrap in a horrible way if you did not account for it. Therefore, depending on the data within the columns you can decide the point at which the layout is sacificed to display the content adequately.
e.g. If your page contains three col-sm-n columns bootstrap would wrap the columns into rows when the page width drops below 992px. This means that the data is still visible but will require vertical scrolling to view it. If you do not want your layout to degrade, choose xs (as long as your data can be adequately displayed on a lower resolution device in three columns)
If the horizontal position of the data is important then you should try to choose lower granularity values to retain the visual nature. If the position is less important but the page must be visible on all devices then a higher value should be used.
If you choose col-lg-n then the columns will display correctly until the screen width drops below the xs threshold of 1200px.
回答5:
Device Sizes and class prefix:
- Extra small devices Phones (<768px) -
.col-xs-
- Small devices Tablets (≥768px) -
.col-sm-
- Medium devices Desktops (≥992px) -
.col-md-
- Large devices Desktops (≥1200px) -
.col-lg-
Grid options:
Reference: Grid System
回答6:
.col-xs-$ Extra Small Phones Less than 768px
.col-sm-$ Small Devices Tablets 768px and Up
.col-md-$ Medium Devices Desktops 992px and Up
.col-lg-$ Large Devices Large Desktops 1200px and Up
回答7:
TL;DR
.col-X-Y
means on screen size X and up, stretch this element to fill Y columns.
Bootstrap provides a grid of 12 columns per .row
, so Y=3 means width=25%.
xs, sm, md, lg
are the sizes for smartphone, tablet, laptop, desktop respectively.
The point of specifying different widths on different screen sizes is to let you make things larger on smaller screens.
Example
<div class=\"col-lg-6 col-xs-12\">
Meaning: 50% width on Desktops, 100% width on Mobile, Tablet, and Laptop.
回答8:
One particular case : Before learning bootstrap grid system, make sure browser zoom is set to 100% (a hundred percent). For example : If screen resolution is (1600px x 900px) and browser zoom is 175%, then \"bootstrap-ped\" elements will be stacked.
HTML
<div class=\"container-fluid\">
<div class=\"row\">
<div class=\"col-lg-4\">class=\"col-lg-4\"</div>
<div class=\"col-lg-4\">class=\"col-lg-4\"</div>
</div>
</div>
Chrome zoom 100%
Browser 100 percent - elements placed horizontally
Chrome zoom 175%
Browser 175 percent - stacked elements
回答9:
well it\'s used to tell bootstrap how many columns are to be placed in a row depending on the screen size-
col-xs-2
would show only 2 columns in a row in extra small(xs) screen, in the same way as sm defines a small screen, md(medium sized), lg(large sized), but according to bootstrap smaller first rule, if you mention
xs-col-2 md-col-4
then 2 columns would be shown in every row for screen sizes from xs upto sm(included) and changes when it gets next size i.e. for md up to lg(included) for a better understanding of screen sizes try running them in various screen modes in chrome\'s developer mode(ctr+shift+i) and try various pixels or devices