Now that we have done with the header, footer, and basic things, we can look at the content part. All page content, including the footer, is placed inside the main tag.

Most pages start with the div wrapper placed right into the main tag. But in some cases, or if you need to put the full-width sections, you can append it right into the main tag before or after the div.

Inside the div, you can also place a full-width section with boxed or stretched layouts. To make a full-width section with a boxed layout (for instance, to add some background image to the full-width block but keep the content area the same size as other sections), you can add the is-fullwidth class to the section tag. And, to stretch the inner content to full width, you can add one more class called is-stretched.

Let's take a closer look at the code:

    ...
    Page Main
    main
        div
            Hero Section
            section
                div
                    ...
                /div
            /section

            Content Section 01
            section
                ...
            /section
            

            Fullwidth Section with Background and Boxed Content
            section
                ...
            /section

            Fullwidth Section with Stretched Content
            section
                ...
            /section

            Section without bottom spacing
            section
                ...
            /section
        /div

        Footer
        ...
    /main
    ...

All sections have a top and bottom spacing. If you need to remove any of that spacing, you can do that with the help of the data-padding attribute. It can hold the following values: top (to keep only the spacing above), bottom (to leave only the spacing below), and none (to disable all section spacings).

Also, you can adjust the bottom spacing with the additional classes. You can find more information about top and bottom spacings in the Grid System chapter.

Smooth Scrolling

You can activate a smooth scrolling option in the main.js file. At the beginning of that, there is an option called smoothScroll. It can be one of two values: true or false. To activate the smooth scroll, you should change its value to true.

    
    /**
    * Author: Shadow Themes
    * Author URL: http://shadow-themes.com
    */
    "use strict";

    // Core Options
    const bringer_config = {
        // Smooth Scroll
        smoothScroll: false,
        
        // Main Logo Size
        ...

Enabling this option may cause a poor experience for some users, especially when using some peripherals with smooth scrolling, such as touchpads. It may also disrupt accessibility features for users who rely on assistive technology to navigate the Internet.

Backlights and Dividers

Each section can also have a backlight effect or a content divider. You can add both to a single section, but in that case, these elements should be on opposite sides, so you cannot place the divider and the backlight effect at the top of the same section. You can use the following classes to achieve these effects:

Backlight
  • backlight-top - backlight effect at the section top.
  • backlight-bottom - backlight effect at the section bottom.
  • backlight-both - backlight effect at the section top and bottom.
Backlight Example
Example of the bottom Backlight effect.
Divider
  • divider-top - place a divider at the section top.
  • divider-bottom - place a divider at the section bottom.
  • divider-both - place a divider at the section top and bottom.
Divider Example
Example of the divider.

Sticky Elements

Sticky Elements may be really useful in the case of a two-column layout, where one part is a title with a short description, for example, and the second one is a long gallery.

To create this effect, you need to add the div wrapper inside the long container for the short content:

    ...
    div
        Column for the Short content
        div
            Sticky Wrapper
            div
                h2Block Title/h2
                pBlock Description/p
            /div
        /div
        Column for the Long content
        div
            Long content goes here
            ...
        /div
    /div
    ...

By default, the element will stick when it reaches the middle of the screen (item height is accounted for). But for your needs, you can change a sticking point to the top or bottom of the screen using the data-sticky-position attribute with the following values:

  • top - Sticks an item at the top of the screen.
  • header - Sticks an item right down below the header.
  • center - Sticks an item at the middle of the screen (Default Value).
  • bottom - Sticks an item at the bottom of the screen.

The Sticky Block may not be compatible with some blocks affected by transform or position CSS properties from other sources. It also applies to parent styles.

Parallax Effects

In our template, there are two types of parallax effect: the parallax for a scrolling element (it scrolls faster or slower than other content) and the parallax effect for images, when an image slowly scrolls inside the container which creates some depth effect, especially in combination with smooth scrolling.

You can change an element scroll speed to achieve the parallax effect with help of the data-speed attribute. The value of 1 will make it scroll at 100% speed, the same speed as the entire content. A lower value will make it scroll slower, and a higher value will scroll this block faster to create a parallax effect. Also, you can use the responsive values to make adjustment for different screen resolutions:

  • data-l-speed - for small screens, like laptops (screen size lower than 1366px).
  • data-t-speed - for tablets (screen size lower than 1200px).
  • data-tp-speed - for tablets in portrait layout (screen size lower than 960px).
  • data-m-speed - for mobile phones.

To add the parallax effect to images, you should wrap an image with the bringer-parallax-media class. Also, you can add this class for any parent container with elements and blocks that contain images.

Images Lazy Loading

Lazy image loading can help a website load faster because images will only load when they appear in the viewport.

To mark an image for lazy loading, you should add the bringer-lazy class to it, specify the image URL in the data-src attribute instead of the classic src, and the src attribute must be equal to img/null.png. Also, it is strongly recommended to specify the image's original size in width and height attributes:

    ...
    img
    ...

Expand on Scroll

One more additional thing in our template is the Expand on Scroll blocks. This effect may be valuable for large images or videos. Let's take a look at the code example for the image expanded on scroll:

    ...
    div
        img
    /div
    ...

As you can see from the example, all you need is to add a bringer-expand-on-scroll class for a parent div

The Expand on Scroll effect may not be compatible with blocks affected by transform properties from other sources. In such cases, you can try to wrap the block you need with another one or apply the class to another item.

12.a Basic Elements

In this section, we will look at the basic elements that are the basis for other content elements. These elements include Block Item, Grid, Bento Grid, Carousel, and Masked Block. Each of them will be used in the Content Elements section and can be mixed with each other.

Block Item

This is a basic element that is commonly used as a stand-alone content block or in the mix with other elements. This element includes the background color, rounded borders, and light effect (if the global backlight option is on). To add such a block, all you need is to use the bringer-block class on a div tag.

Also, in the template code, you can find some additional options used in combination with the bringer-block (but also can be used for other blocks):

  • stg-aspect-square - this class will make the block in 1/1 aspect ratio.
  • stg-vertical-space-between - this class will arrange inner content at the top and the bottom of the block (if there are two children tags inside).

    ...
    Simple Content Block
    div
        ...
    /div

    Square Content Block painted with the Accent color
    div
        ...
    /div

    Square Content Block with title at the top and description at the bottom
    div
        h4Block Title/h4
        pBlock Description/p
    /div
    ...

Grid

This element is used to create grid-based containers, for instance, to display portfolio works, testimonials, or any other card-based items in a strong grid layout. In our template, you can use up to 6 columns. Also, the same as the rows and columns, it supports prefixes for responsive adjustment. Here is the classes list that you can use for the container to make it the Grid container:

Default
  • bringer-grid-1col
  • bringer-grid-2cols
  • bringer-grid-3cols
  • bringer-grid-4cols
  • bringer-grid-5cols
  • bringer-grid-6cols
Tablet
  • bringer-t-grid-1col
  • bringer-t-grid-2cols
  • bringer-t-grid-3cols
  • bringer-t-grid-4cols
  • bringer-t-grid-5cols
  • bringer-t-grid-6cols
Tablet (Portrait layout)
  • bringer-tp-grid-1col
  • bringer-tp-grid-2cols
  • bringer-tp-grid-3cols
  • bringer-tp-grid-4cols
  • bringer-tp-grid-5cols
  • bringer-tp-grid-6cols
Mobile Phone
  • bringer-m-grid-1col
  • bringer-m-grid-2cols
  • bringer-m-grid-3cols
  • bringer-m-grid-4cols
  • bringer-m-grid-5cols
  • bringer-m-grid-6cols
...
Grid Example
div
    Block01
    div
        h4Block Title/h4
        pBlock Description/p
    /div
    Block02
    div
        h4Block Title/h4
        pBlock Description/p
    /div
    Block03
    div
        h4Block Title/h4
        pBlock Description/p
    /div
    ...
/div
3 Columns Grid Example
Three column grid example.
Sub-grid

The Subgrid can be useful when you need to make a relation between children inside a grid item. For instance, if you have a grid of items with the title and description, and you want the description to always start on the same line for all grid items, no matter how high the title of each element is. To implement that, you can add the bringer-subgrid-item class to the Grid container children items inside :

    ...
    Subgrid Example
    div
        Item 01
        div
            h4Normal Title/h4
            pBlock Description/p
        /div
        Block02
        div
            h4This title is much longerbrthan in other blocks./h4
            pBlock Description/p
        /div
        Block03
        div
            h4Normal Title/h4
            pBlock Description/p
        /div
        ...
    /div
    
Subgrid items example.
Subgrid items example.

Bento Grid

A Bento grid is a block in a grid layout that contains one large, one medium, and two small blocks. The order of the blocks may vary depending on the use case, but it is important to maintain the number of elements, classes, and structure. The parent container must have the bringer-bento-grid class, and children's blocks must be is-large (for a large block), is-medium (for a medium block), and is-small for small blocks:

    ...
    Bento Grid Example
    div
        Large Block
        div
            ...
        /div
        Small Block
        div
            ...
        /div
        Small Block
        div
            ...
        /div
        Medium Block
        div
            ...
        /div
    /div
    
Bento Grid example.
Bento Grid example.
Bento Grid example.
Bento Grid example.
    ...
    Bento Grid Example
    div
        Medium Block
        div
            ...
        /div
        Small Block
        div
            ...
        /div
        Small Block
        div
            ...
        /div
        Large Block
        div
            ...
        /div
    /div
    

Carousel

The Carousel is another multiusage element for different content elements, like portfolio works, team members, testimonials, price tables, etc. To add the carousel container to the page, you can use the following basic markup:

    ...
    Carousel
    div
        div
            Carousel Item 01
            div
                ...
            /div
            Carousel Item 02
            div
                ...
            /div
            ...
        /div
        Pagination
        div/div
    /div
    

The carousel item requires the swiper-slide class. Other classes are optional and may vary depending on the carousel element. For example, to create the Price Table carousel, you can use the Price Table Card element as a carousel item but add the swiper-slide class to its div container.

For the div tag, you can use the following optional attributes to tweak your carousel:

  • data-duration - defines an animation speed (in milliseconds).
  • data-count - visible items count. It may contain a float value, like 3.5. Also, you can use the data-t-count, data-tp-count, and data-m-count to adjust responsive values.
  • data-centered - with this option, you can set items centering. It may contain only values 0 (not centered) or 1 (is centered).

Masked Block

With this container element, you can cut a part of the container, like a block with background color, image, or video, and put some other content, like text, image, button, or any other content, inside. Let's take a look at the general markup and talk in more detail about the structure:

    ...
    Masked Block
    div
        The media block with a cut
        div
            video/video
        /div
        The content of the cutout
        div
            div
                Text block content goes here
            /div
        /div
    /div
Masked Block
Block with a cut top right corner example.

You can change the div position with the following classes:

  • at-top-left
  • at-middle-left
  • at-bottom-left
  • at-top-center
  • at-middle-center
  • at-bottom-center
  • at-top-right
  • at-middle-right
  • at-bottom-right

12.b Content Elements

In this section, we will tell you about the content page Elements which you can use in building pages. These elements can be used in any part of the content area. So, without a long foreword, let's get right into it.

Image Slider

Before we will dive into the code example, let's talk about the basics. Each slider starts with the div wrapper container, where you put the slider itself and navigation. There are two navigation types: placed on the left and right edges (with smooth cutting) or placed together at the corner. The code structure is the same for both cases, but some classes are different, so we will show you examples for both cases.

But before that, let's take a look at the attribute options that can be applied to the div slider container:

  • data-duration - defines the transition speed (in milliseconds). The default value is 500ms.
  • data-effect - defines the transition effect, which can be one of the three values: slide, fade, or coverflow.
  • data-autoplay - add this attribute to enable autoplay. Inside it, you should specify the transition delay (in milliseconds).

And now, let's take a look at the code structure for both slider variants:

    ...
    Slider Gallery
    div
        div
            Slider Item 01
            div
                img
            /div
            Slider Item 02
            div
                img
            /div
            ...
        /div
        Slider Navigation
        div
            a
                span/span
            /a
            a
                span/span
            /a
        /div
    /div
    
Slider 01
Slider with Navigation on Sides
Slider 01
Slider with Navigation in Corner
    ...
    Slider Gallery
    div
        div
            Slider Item 01
            div
                img
            /div
            Slider Item 02
            div
                img
            /div
            ...
        /div
        Slider Navigation
        div
            a
                span/span
            /a
            a
                span/span
            /a
        /div
    /div

As you can see, in the second case, we use the Masked Block container for the slider wrapper, where the navigation is placed as the cutout place content.

Counters

Counters
    Counter
    div
        div
            24
        /div
        div
            Counter Label
        /div
    /div

The Counter element can help when you want to animate digital value counting from zero to the specified value. As you can see in the code sample, there is the required attribute data-delay on the element wrapper. Here, you can adjust the animation speed.

Also, you can add some text or symbol before or after the counter number with the data-prefix and data-suffix attributes.

Price Card

Price Card
    Price Card
    div
        div
            h5Card Title/h5
            pCard Description Text/p
        /div
        div
            spanStarting from/span
            div$99.sup99/sup/div
            aDiscover Details/a
        /div
    /div

Price Table

Price Table
    Price Table Item
    div
        h6Card Title/h6
        pCard Description Text/p
        div
            divStarting at/div
            h2$999/h2
        /div
        divWhat is included/div
        ul
            liFeature List Item 01/li
            liFeature List Item 02/li
            liFeature List Item 03/li
            liFeature List Item 04/li
        /ul
        aOrder Now/a
    /div

Marquee

Marquee
    Marquee
    div
        div
            ul
                li
                    h2Item Title 01/h2
                /li
                li
                    h2Item Title 02/h2
                /li
                li
                    h2Item Title 03/h2
                /li
                li
                    h2Item Title 04/h2
                /li
            /ul
        /div
    /div

You can use the data-speed attribute to change the element scroll speed.

Testimonials Card

Tastimonials Card
    Testimonials Card Item
    div
        div
            Testimonials text content goes here
        /div
        div
            div
                h6Author Name/h6
                spanAuthor Meta/span
            /div
            div
                span/span
            /div
        /div
    /div

Carousel Card

Carousel Card
    Carousel Card Item
    div
        div
            img
        /div
        div
            div
                spanCard Meta/span
                h6Card Title/h6
            /div
            span/span
        /div
        a/a
    /div

You should remove the swiper-slide class from the div if you use this card outside the carousel (for instance, in the grid container, or any other use case).

Toggler (FAQ)

Toggler
    Toggler Item
    div
        div
            spanCategory Name/span
            h4
                sup01./sup
                Toggler Title
            /h4
        /div
        div
            Item togglable content goes here.
        /div
    /div

List with Preview

List with Preview
    List with Preview
    div
        div
            List Item 01
            div
                img
                div
                    h5Item Title/h5
                    pItem description goes here/p
                /div
            /div

            List Item 02
            div
                img
                div
                    h5Item Title/h5
                    pItem description goes here/p
                /div
            /div

            List Item 03
            ...
        /div
    /div

List with Details

Detailed List
    Detailed List
    div
        ul
            List Item 01
            li
                div
                    h4Item Title/h4
                /div
                div
                    pItem description goes here./p
                /div
                div
                    span/span
                /div
                a/a
            /li

            List Item 02
            li
                div
                    h4Item Title/h4
                /div
                div
                    pItem description goes here./p
                /div
                div
                    span/span
                /div
                a/a
            /li

            List Item 03
            ...
        /ul
    /div

Link with Arrow

Link with Arrow
    Link with Arrow
    a
        div
            h6
                YourbrTitle
            /h6
            spanSubtitle/span
        /div
        div
            i/i
        /div
    /a

Depending on your needs, you can place the div block after the div block (like in the example) or before it.

Tags List

    Tags List
    ul
        List Item 01
        li
            aTag Item 01/a
        /li

        List Item 02
        li
            aTag Item 02/a
        /li

        List Item 03
        ...
    /ul