What's New in the Bootstrap 4 Grid

Bootstrap 4 brings many changes and new features to the grid system we are all so familiar with from version 3. The new grid is now powered by flexbox, lots of utility classes have been renamed, and a new XL breakpoint has been added.

Bootstrap 4 brings many changes and new features to the grid system we are all so familiar with from version 3. The new grid is now powered by flexbox, lots of utility classes have been renamed, and a new XL breakpoint has been added.

When we first wrote this article, Bootstrap 4 was supposed to have two separate grids. Shortly after we published it, a new Alpha was released, making flexbox the only layout mode of the framework as well as introducing some new features. We have updated the article to reflect those changes.
1. Basic Grid

By now everyone knows how the Bootstrap grid works. We've got rows separated into 12 equal pieces, and columns that go inside the rows. Each column can take anywhere from 1 to 12 spaces:

<div class="row">
   <div class="col-xs-2">.col-xs-2</div>
   <div class="col-xs-4">.col-xs-4</div>
   <div class="col-xs-6">.col-xs-6</div>
</div>

Structurally nothing has changed, the grid still has rows and 12 columns. However, there are changes in the width of containers, as well as other small stuff like the lowest breakpoint tier being renamed from .col-xs- to simply .col-

<div class="row">
   <div class="col-2">.col-2</div>
   <div class="col-4">.col-4</div>
   <div class="col-6">.col-6</div>
</div>

To help you better visualize the changes, we've prepared side-by-side demos of both new flex and old non-flex grids. You can check them out below:

2. Automatic Layout

A cool new feature of the Bootstrap 4 grid is the auto-layout mode. It lets developers leave out the size of columns, making them automatically distribute the space in that row.

<div class="row">
    <div class="col">.col</div>
    <div class="col">.col</div>
    <div class="col">.col</div>
</div>

Sizeless columns share the available space equally, always filling up the entire row. If we want a column to be bigger or smaller, we can still do that with a .col-size class.

3. Column Wrapping

When the sum of all columns in a row is over 12, the first extra column will move to the next line. This is known as column wrapping and works the same way it did in non-flexbox bootstrap.

<div class="row">
   <div class="col-6">.col-6</div>
   <div class="col-6">.col-6</div>
   <div class="col-3">.col-3, This column will move to the next line.</div>
</div>

The only thing to note here is that when using the auto layout, a sizeless column that took up only a couple of spaces, can take up the entire row once it wraps.

4. Responsive Grid

As we mentioned in the intro, Bootstrap 4 has a new XL grid tier on top of the old ones. Now the grid media queries look like this:

  • Extra small (xs) - below 576px
  • Small (sm) - between 576px and 768px
  • Medium (md) - between 768px and 992px
  • Large (lg) - between 992px and 1200px
  • Extra Large (xl) - over 1200px

Other than that, there haven't been any changes to the way responsiveness works.

5. Column Height

The old grid system was built on floated elements and because of that every column has a different height, depending on the content it holds.

In flexbox layouts all cells in a row are aligned to be as tall as the column with most content.

6. Horizontal Alignment

In old Bootstrap, positioning columns horizontally is done via an offset system. Offsets work like empty columns and allow us to move elements to the right (e.g an .col-xs-offset-3 moves the column 3 spaces to the right). This can be a little annoying as we need to manually adjust the amount of spaces needed.

<div class="row">
    <div class="col-xs-6 col-xs-offset-3">This column is now centered.</div>
</div>

Thanks to the justify-content property, horizontal positioning in flex-strap is as easy as adding the correct class.

<div class="row justify-content-center">
    <div class="col-6">All columns in that row will be automatically centered.</div>
</div>

Also, if you want to use offsets, you can still do that as well! Just keep in mind that the classes are now shortened to .offset-xs-*.

7. Vertical Alignment

There are no options for vertical alignment in the Bootstrap 3 grid. The only way to do any sort of vertical positioning is using custom CSS and it is often messy.

Flexbox, on the other hand, is great at layout alignment and gives us not one, but two ways to vertically position columns:

Vertically align the whole row:

<div class="row align-items-center">
    <div class="col">Middle</div>
</div>  
<div class="row align-items-end">
    <div class="col">Bottom</div>
</div>
<div class="row align-items-start">
    <div class="col">Top</div>
</div>

Align individual columns within the row:

<div class="row">
    <div class="col align-self-start">Top</div>
    <div class="col align-self-center">Middle</div>
    <div class="col align-self-end">Bottom</div>
</div>

8. Reordering Columns

With the old grid system, if we wanted to swap around the order of columns we needed to use push and pullwhile manually adjusting the correct amount of places to move left and right.

<div class="row">
    <div class="col-xs-4 col-xs-push-8"> This column will move 8 spaces to the right. </div>
    <div class="col-xs-8 col-xs-pull-4"> This column will move 4 spaces to the left.</div>
</div>

Anyone who has used flexbox before knows that it has a built-in order property. The way Bootstrap devs have implemented it is via three ordering classes:

  • .flex-first - Displayed first.
  • .flex-last - Displayed last.
  • .flex-unordered - Displayed between first and last.

No manual calculations are required. If you need to order more than 3 columns (which rarely happens) you can use push&pull or the order property via CSS.

Conclusion

Looking back at the points covered in the article, its pretty clear that going full flexbox brings a lot of great features and makes the grid system much more advanced and versatile. The only real drawback is the lack of support for IE9 and older browsers (all modern clients have full flexbox compatibility), if you don't have to support those you're good to go.

This wraps up our introduction to the new Bootstrap 4 grid system. Feel free to bookmark the demo page for quick future reference. We hope we've been helpful! Happy coding :)


by :Danny Markov




Bootstrap Quickstart on RailsResources

Bootstrap Quickstart on RailsResources

If you are new to the whole front-end stack particularly having to do with css and html, try giving Bootstrap a try. This guide will introduce you to Bootstrap and, hopefully, by the end of this be able to style your very own app with minimal amount of time investment.

First, what is even Bootstrap? Bootstrap is an open-source front-end framework that has many pre-built html and css templates/classes. This framework was originally developed by Twitter as “Twitter Blueprint” and eventually released to the public as an open source project on August 19, 2011. Some benefits for using Bootstrap over regular css/html is that it is browser compatible, faster development, responsive layout, and a good fit for people with little front-end experience or design/UI sensibility.

Installation

To start using Bootstrap via a Rails app, first add Bootstrap to your Gemfile. I opted for a Sass variant so mine would look like the following:gem 'bootstrap-sass' . Thereafter, in your Rails generated assets directory and under its stylesheet folder, there should be an application.css file. Make sure to add the following line of code to this file:

@import “bootstrap”;

If you are following along with me and also decided to use the sass variant, make sure to rename this stylesheet and add the extension “.scss” so the file name would ultimately be application.css.scss. Voila, it’s as easy as that, you should now be setup to make all kinds of beautiful web pages. Another way to install Bootstrap that is not rails specific is to embed the Bootstrap CDN within the header of each html page (or the single layout page) like so:


    TomsRailsPractice
    
    

    
    
    
    
    
    

Let’s Cheat Kind-Of

Now that we have Bootstrap setup, we can jump right into making our webpages look beautiful. However, I’m not about to just head into how to make a pretty button, or how to properly align forms, or talk about any one of millions of Bootstrap customization tricks. I’m going to admit that I have no idea what I am doing and, with a project due in a week, going to let other people do the brunt of the work. How? Through Bootstrap templates.

There are many sites that offer free Bootstrap templates that can make your app go from an ugly, white, blue links, everything in the left, piece of crap to a decent looking web page (and some of them are actually really quite beautiful). I will list some of these sites in the resource section. Most of these templates will come with an option to download them onto your local machine and store the html with Bootstrap classes, custom css stylesheets, and images. However, there’s no need for I will tell you how to do this purely from online.

You can do this straight from the inspect or view source code page, where you can copy and paste over the desired elements of the page into your apps own view files. The Bootstrap html classes should do a lot of the legwork but to completely imitate the aesthetic, you will have to carry over the references to custom stylesheet and fonts within the . Here’s the tricky part: those paths should be relative only within the context of where that page is being run/displayed. Therefore, you will most likely have to prepend the url where you are displaying that page on in the browser. That’s that! You will now be able to display your app with whatever Bootstrap template. However, I recommend that you download the templates and have the stylesheets and other references locally, incase the site these are from goes offline for whatever reason. Plus, they’ll usually come with super helpful instructions and readme!

Now, this is probably the most important part of this blog. I believe you can do this with whatever page being displayed on the web (via view source and what not). However, I’m pretty sure this can be considered as plagiarizing and copywriting, so make sure to do this with permissible, approved, and template examples.

Conclusion

All in all, this was a guide to get you started on a Bootstrap project the quickest way possible. If you are like me, coming from a backend heavy track and need to create a web app using Rails, take advantage of Bootstrap and templates. However, I still would highly recommend spending time spinning up your own creative and beautiful designs. What’s the point of using someone else’s design and template, where’s the fun in that. I would even go as far as to suggest try spinning up designs with pure css (not the Pure framework), which let’s you really have that freedom and stretch your creative juice (don’t become a “Bootstrap Designer” jk). Definitely, do though, look at these templates for inspiration and ways to implement your very own idea.

Further reading:

Angular 8 Tutorial Facebook Login with Example
☞ https://morioh.com/p/a83878b5f50a

HTML 5 Tutorial: How to create a table using HTML tags and Stylesheet (CSS)
☞ https://morioh.com/p/5882025685ae

The Complete 2019 Web Development Bootcamp
☞ http://class.learnstartup.net/p/2AZb3GVTl

Basic to Semantic HTML: How to Structure Web Pages
☞ http://class.learnstartup.net/p/rkF4wUftW

Web Development for beginners: Build Website from Scratch
☞ http://class.learnstartup.net/p/Hke2UpV5W

Learn Bootstrap By Building Apps

Learn Bootstrap By Building Apps

Bootstrap 4 tutorial is the latest version of Bootstrap and makes is it easier to integrate the bootstrap framework your website with ease. Enjoy our Bootstrap 4 tutorial and 5 different build projects from scratch.

Bootstrap is a framework that works to provides a template or a layout that can be used as is or can be modified. It allows you to add items such as jumbotrons, lighboxes, sticky menus and so much more without have to write the tedious coding that’s behind it.

We have come a long way from the first websites that were dull and full of text. While those served their purpose back then, today websites need to be more dynamic and interactive. In addition to fulfilling their purpose, they must also look aesthetically appeasing.

Explore the latest version of #Bootstrap and make it easier to integrate the bootstrap framework in your website with ease on http://bit.ly/bootstraplandingpage

Bootstrap 4, the latest version, is a complete rewrite from the older versions. It offers more support and makes it easier to integrate the framework into your website design. It now comes with features such as switching from LESS to SASS, added support for Flexbox, dropped support for IE8, IE9 and iOS 6. It has also increased the global font size to 16px, switched from pixels to root ems and have even rewritten all the components and jQuery plugins.

You will learn more than 3 project with this -

  • Photosharing – A complete photosharing website that will include multiple pages and a different layout. As you move from one page to another, the layout will change.
  • Resume – A sophisticated resume website, where you will learn how to use the Bootstrap 4 grid and create the corresponding layouts with that.
  • Social Networking – A social networking website, where you will learn how to incorporate a number of different feature such as comments, adding photos, groups. You will also learn how to add a sidebar to the website.

Become fluent bootstrap developer with the course.

Bootstrap modal appearing under background

I have used the code for my modal straight from the Bootstrap example, and have included only the bootstrap.js (and not bootstrap-modal.js). However, my modal is appearing underneath the grey fade (backdrop) and is non editable.

I have used the code for my modal straight from the Bootstrap example, and have included only the bootstrap.js (and not bootstrap-modal.js). However, my modal is appearing underneath the grey fade (backdrop) and is non editable.

Here's what it looks like:


See this fiddle for one way to reproduce this problem. The basic structure of that code is like this:

<body>
    <p>Lorem ipsum dolor sit amet.</p>    
&lt;div class="my-module"&gt;
    This container contains the modal code.
    &lt;div class="modal fade"&gt;
        &lt;div class="modal-dialog"&gt;
            &lt;div class="modal-content"&gt;
                &lt;div class="modal-body"&gt;Modal&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

</body>
body {
padding-top: 50px;
}

.my-module {
position: fixed;
top: 0;
left: 0;
}

Any ideas why this is or what I can do to fix this?