Categories
BootstrapVue

BootstrapVue — Layouts and Lists

Spread the love

To make good looking Vue apps, we need to style our components. To make our lives easier, we can use components with styles built-in. In this article, we’ll look at how to add layouts.

Offsetting Columns

We can add offsets to columns to spread them out.

For example, we can write:

<template>  
  <div id="app">  
    <b-container>  
      <b-row>  
        <b-col md="4">foo</b-col>  
        <b-col md="4" offset-md="4">bar</b-col>  
      </b-row>  
    </b-container>  
  </div>  
</template>  
<script>  
export default {  
  name: "App"  
};  
</script>

We have offset-md='4' to space them out at the md breakpoint by 4 columns.

We can change the offsets at different breakpoints.

For instance, we can write:

<template>  
  <div id="app">  
    <b-container>  
      <b-row>  
        <b-col md="4">foo</b-col>  
        <b-col md="4" offset-md="4" col-lg="6" offset-lg="0">bar</b-col>  
      </b-row>  
    </b-container>  
  </div>  
</template>  
<script>  
export default {  
  name: "App"  
};  
</script>

We set the column to 6 for the lg breakpoint to set the column width to 6 for wide screens.

offset-lg is 0 to remove column spaces for wide screens.

Margins

We can add classes like mr-auto or ml-auto to add margins to our columns.

For example, we can write:

<template>  
  <div id="app">  
    <b-container>  
      <b-row>  
        <b-col md="4">foo</b-col>  
        <b-col md="4" class="ml-md-auto">bar</b-col>  
      </b-row>  
    </b-container>  
  </div>  
</template>  
<script>  
export default {  
  name: "App"  
};  
</script>

Then we add some margins to our right column.

Nesting Grids

We can nest grids.

For instance, we can write:

<template>  
  <div id="app">  
    <b-container>  
      <b-row>  
        <b-col md="4">  
          <b-row>  
            <b-col cols="8" sm="6">foo</b-col>  
            <b-col cols="4" sm="6">bar</b-col>  
          </b-row>  
        </b-col>  
      </b-row>  
    </b-container>  
  </div>  
</template>  
<script>  
export default {  
  name: "App"  
};  
</script>

We just put a b-row inside a b-col to nest it.

Row Columns

We can set the cols prop on b-row to specify the number of columns that can be in a row.

For instance, we can write:

<template>  
  <div id="app">  
    <b-container>  
      <b-row cols="2">  
        <b-col>foo</b-col>  
        <b-col>bar</b-col>  
        <b-col>baz</b-col>  
      </b-row>  
    </b-container>  
  </div>  
</template>  
<script>  
export default {  
  name: "App"  
};  
</script>

We have 3 columns but col is set to 2.

So the last b-col is below the rest.

We can also have a different number of columns at different breakpoints.

For instance, we can write:

<template>  
  <div id="app">  
    <b-container>  
      <b-row cols="1" cols-sm="2" cols-md="4" cols-lg="6">  
        <b-col>foo</b-col>  
        <b-col>bar</b-col>  
        <b-col>baz</b-col>  
        <b-col>a</b-col>  
        <b-col>b</b-col>  
      </b-row>  
    </b-container>  
  </div>  
</template>  
<script>  
export default {  
  name: "App"  
};  
</script>

We display 1, 2, 4, or 6 columns depending on the breakpoint.

Links

BootstrapVue has the b-link component to let us add links.

For example, we can write:

<template>  
  <div id="app">  
    <b-link href="http://example.com">example</b-link>  
  </div>  
</template>  
<script>  
export default {  
  name: "App"  
};  
</script>

We have the b-link component and the href prop to set the link URL.

The content is displayed in between the tags.

Disabled Link

The disabled prop disables the link.

For example, we can write:

<template>  
  <div id="app">  
    <b-link href="http://example.com" disabled>example</b-link>  
  </div>  
</template>  
<script>  
export default {  
  name: "App"  
};  
</script>

Now we have a link that does nothing when we click it.

List Group

The b-list-group component lets us create a list.

For example, we can write:

<template>  
  <div id="app">  
    <b-list-group>  
      <b-list-group-item>foo</b-list-group-item>  
      <b-list-group-item>bar</b-list-group-item>  
    </b-list-group>  
  </div>  
</template>  
<script>  
export default {  
  name: "App"  
};  
</script>

Then we display a box with a list that has the texts.

Photo by Keyur Nandaniya on Unsplash

Active List Group Items

We can add the active prop to set an item as the active item.

We can write:

<template>  
  <div id="app">  
    <b-list-group>  
      <b-list-group-item active>foo</b-list-group-item>  
      <b-list-group-item>bar</b-list-group-item>  
    </b-list-group>  
  </div>  
</template>  
<script>  
export default {  
  name: "App"  
};  
</script>

to make the first item active.

Conclusion

We can add a list group. Columns can be spaced out or we can specify the number of columns in a row.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *