Force Bootstrap 4 breakpoint (for preview) by class - css

Bootstrap 4 CSS uses media queries to get current screen size and display elements in the style of according device (screen width).
But what if I want to show preview of mobile markup on wide screen?
I want something like adding some class "preview-sm":
<div class="preview-sm">
<div class="container">
<div class="row">
...
</div>
</div>
</div>
so all Bootstrap 4 media queries will be overrided by breakpoint I specify in this class.
Is this possible?
Or maybe there is another way to show preview in Bootstrap?

You can break styles by class like that:
.preview-sm .container {
width: 1000px !important;
}
But #media always based on screen size.

Related

In bootstrap justify-content-sm-center not working as expected

In bootstrap 5 justify-content-sm-center is not working as expected. I want to centerlize a particular div in smaller screens (say below 578px) and I applied this to that particular division. But its not working. When I exapnd the screen size to more than 576px, it starts working. In the bootstrap css the media query is like this
#media (min-width: 576px)
.justify-content-sm-center {
justify-content: center !important;
}
So it will work over 576px only. Whats the resolution ?
In bootstrap 5 justify-content-sm-center is not working as expected.ie not working in smaller sceen sizes
Bootstrap is thought mobile-first so if we refer to the available breakpoints, if you need your elements to be centered under 576px you need to use .justify-content-center. And after 576px, so with a sm class you can specify another behavior.
In other words, you could do the following to have your content centered when <=576px and then left aligned (in LTR) when >576px.
<div class="w-100 d-flex justify-content-center justify-content-sm-start">
Flex item
</div>

How can I display a different layout with bootstrap 3?

I am trying to display a different layout for my mobile views. In the desktop view using the grid system I have 4 columns each with 2 columns an image and a label+value. In mobile I want to skip the image column and for the label and value I want them next to eachother so something like:
This is a label : this is a span.
1 column in the desktop version looks something like this:
<div class="col-md-3">
<div class="col-md-2">
<p>col-md-4</p>
</div>
<div class="col-md-10">
<div>This is a label</div>
<span>This is a span</span>
</div>
</div>
I tried to use col-sm-3 but it still displays in the desktop? How can I get the mobile view with the label and value next to eachother?
See also:codepen
you can use bootstrap css class :
<h2>Example</h2>
<p>Resize this page to see how the text below changes:</p>
<h1 class="visible-xs">This text is shown only on an EXTRA SMALL screen.</h1>
<h1 class="visible-sm">This text is shown only on a SMALL screen.</h1>
<h1 class="visible-md">This text is shown only on a MEDIUM screen.</h1>
<h1 class="visible-lg">This text is shown only on a LARGE screen.</h1>
Using a media queries you can change the attributes of elements/classes/IDs based on screen size. You may be particularly interested in using display: none; as follows:
CSS
/*For smartphone and small devices*/
#media only screen and (min-width: 480px) {
.hide-me {
display: none;
}
}
/*For tablet sized devices and larger*/
#media only screen and (min-width: 748px) {
.hide-me {
display: block;
}
}
Of course you can double up the functionality of col-xs-3 (or any of your choosing) but using that as your class selector in the media query.
#media only screen and (min-width: 748px) {
.col-xs-3 {
display: block;
}
}
Check out some standard documentation responsive design - especially those provided by Twitter! Mobile first is common, where you start with the smaller media queries then get bigger.
http://getbootstrap.com/css/

How Does Twitter Bootstrap Achieve Automatic Column Stacking As Width Decreases?

In Bootstrap 3, you can use the following code to build a row with 3 columns that collapse onto one another as the screen width decreases:
<div class = 'row'>
<div class = 'col-md-4'>
Some text
</div>
<div class = 'col-md-4'>
Some text
</div>
<div class = 'col-md-4'>
Some text
</div>
</div>
I am working on a project right now where I would like to achieve the same effect, but without having to load Bootstrap.
How does Bootstrap achieve the 'stacking' effect that you would get from the above?
The basic idea is that the width of the columns work on percentages. So in your example the width of each column might be 33.333% and then you use a media query to say at a certain resolution the width of items change and they stop floating or whatever else you want to make them do on a smaller resolution.
Here's an example of a media query where any device with a resolution with a maximum width of 767px will be affected.
#media (max-width: 767px) {
.col-md-4 {
width: 100%;
float: none;
}
}
Here's a great article by Ethan Marcotte who is pretty much credited with creating what we now know as responsive web design:
http://alistapart.com/article/responsive-web-design/

Changing class style on smaller screen in boostrap 3?

I am trying sothing with class called .text-center in \boostrap 3?
But i want only on smaller screen to add that to container element.
Tried something like this
col-sm-text-center col-xs-text-center
But does not work ok, is it possible to make it so simple?
Here is the code that is not working
<div class="col-md-6 col-sm-text-center col-xs-text-center">
<h2 class="color-brand">Lorem Ipsum</h2>
<p class="color-grey">Lorem ispums dolor sit</p>
</div>
It doesn't work this way. Css prefixes (.col-xs-, .col-sm- etc ) in bootstrap 3 are only for defining what column size will be for different screen sizes while alignment classes are what it is - classes for aligning text within a block.
You could probably use just css3 media queries for that like:
/* Small devices (tablets, 768px and up) */
#media (min-width: #screen-sm-min) {
.my-fancy-block {
text-align:center;
}
}

Twitter's Bootstrap 3 grid, changing breakpoint and removing padding

I m trying to move to the new boostrap 3 grid and I m facing some difficulties.
How to have the grid to stack below 480px but not between 480px and 768px?
above 768px the padding left of the first and the padding right of the last are outside the container, but below 768px the padding is inside the container so the look is different because the content is no more aligned with a container that could be above.
when the grid stack the padding remain but to me it should be at 0.
Any help would be welcome I m using the code below with bootstrap 3 RC1
<div class="container" style="background-color: purple;">
container
</div>
<div class="container">
<div class="row">
<div style="background-color: red" class="col-4 col-sm-4 col-lg-4"><img data-src="holder.js/100%x200"></div>
<div style="background-color: blue" class="col-4 col-sm-4 col-lg-4"><img data-src="holder.js/100%x200"></div>
<div style="background-color: green" class="col-4 col-sm-4 col-lg-4"><img data-src="holder.js/100%x200"></div>
</div>
</div>
update jan 2014
See also: https://github.com/twbs/bootstrap/issues/10203
update 21 aug 2013
Since Twitter Bootstrap 3 RC2 the col-* mentioned below has been renamed to xs-col-*
There are four grid classes now: xs-col-* (mobile, never stacks), col-sm-* (tablet, stacks below 768px), col-md-* (laptops,stacks below 992 px) and col-lg-* (desktop, stacks below 1200px).
update
In my previous answer i use this table from the recent docs:
[old image removed]
When i test this values if found something different:
"col-xs-*" will be applied always (never stacks)
"col-sm-*" will be applied between 768 and higher (992px) (stacks at 767)
"col-lg-*" will be applied between 992 and higher (stacks at 991)
In variables.less you will find:
// Media queries breakpoints
// --------------------------------------------------
// Tiny screen / phone
#screen-tiny: 480px;
#screen-phone: #screen-tiny;
// Small screen / tablet
#screen-small: 768px;
#screen-tablet: #screen-small;
// Medium screen / desktop
#screen-medium: 992px;
#screen-desktop: #screen-medium;
But there doesn't seem to be a breakpoint at 480px (or as #fred_ says the grid is missing the col-ts-* (tiny to small) set of classes). See also: https://github.com/twbs/bootstrap/issues/9746
To set the stacking point at 480px you will have to recompile yours css. Set #screen-small to 480px; and define your cols with:
<div style="background-color: red" class="col-sm-4"> after that.
Note this will change #grid-float-breakpoint also cause it is defined as #grid-float-breakpoint: #screen-tablet;.
When adding a row to the container i don't find problems with padding.
Or try: http://www.bootply.com/70212 it will stack below 480px by adding a media query (the javascript is used for illustration only)
previous answer
From now Twitter’s Bootstrap defines three grids: Tiny grid for Phones (<480px), Small grid for Tablets (<768px) and the Medium-large grid for Destkops (>768px). The row class prefixes for these grid are “.col-”, “.col-sm-” and “.col-lg-”. The Medium-large grid will stack below 768 pixels screen width. So does the Small grid below 480 pixels and the tiny grid never stacks.
With your "col-4" prefix the grid will never stack. So remove "col-4" to let your grid stack below the 480px. This also will remove padding cause is stacks now.
See also: http://bassjobsen.weblogs.fm/migrate-your-templates-from-twitter-bootstrap-2-x-to-twitter-bootstrap-3/ and Writing Twitter's Bootstrap with upgrading to v3 in mind
Use class .col-ts-12 for all 100% divs under 480px and put this code at the end of bootstrap.css:
#media (max-width: 480px) {
.col-ts-12 { float: none; }
}
To implement any changes for tiny to small devices you will need to include your own media queries to add your own additional breakpoints.
For example:
#media (max-width: 480px) {
.no-float {
display:block;
float:none;
padding:0;
}
}
I am not quite sure what you are trying to achieve with this but this is how you would apply styles where the screen width is below 480px.

Resources