Introduction
Thank you very much for purchasing our latest HTML template. This documentation will give you an overview of the features and possibilities that come with it and how to customize them to suit your requirements. Please note that a basic understanding of both HTML and CSS are required in order to utilize this template. Don't hesitate to contact us via the template support form or our email address support@serifly.com if you are in need of assistance. Please make sure to include your purchase code when contacting us directly. We recommend to add our email address to your contacts to avoid our replies from being marked as spam.
Changelog
The changelog describes the updates that have been released for this template so far. Please exercise caution when updating to a newer version of this template should you've already modified a file listed below. Feel free to contact us if you require more information about an update and its changes.
Version 1.14
-
Changes
- Updated WHMCS integration to version 7.8.3
-
Files
- whmcs/cloudhub-7.8.3.zip
Version 1.13
-
Changes
- Updated jQuery to version 3.4.1
- Updated WHMCS integration to version 7.8.1
- Added include option to product configurator
-
Files
- template/js/main.js
- template/js/main.min.js
- template/js/jquery.min.js
- whmcs/cloudhub-7.8.1.zip
Version 1.12
-
Changes
- Updated WHMCS integration to version 7.7.0
-
Files
- whmcs/cloudhub-7.7.0.zip
Version 1.11
-
Changes
- Updated WHMCS integration to version 7.6.1
-
Files
- whmcs/cloudhub-7.6.1.zip
Version 1.10
Please note that this version comes with significant changes to all template files and many of its assets, both in the core template as well as the WHMCS integration. Use caution when updating your current setup in order to avoid styling issues and layout errors.
-
Changes
- Added basic preloader implementation
- Updated Font Awesome to version 5.2.0
- Updated WHMCS integration to version 7.6.0
-
Files
- template
- template/js
- template/css
- template/webfonts
- whmcs/cloudhub-7.6.0.zip
Version 1.9
-
Changes
- Updated WHMCS integration to version 7.5.1
-
Files
- whmcs/cloudhub-7.5.1.zip
- whmcs/cloudhub/scripts.js
- whmcs/cloudhub/scripts.min.js
Version 1.8
-
Changes
- Updated WHMCS integration to version 7.5.0
-
Files
- whmcs/cloudhub-7.5.0.zip
Version 1.7
-
Changes
- Added modal overlay boxes
- Added custom link iframe overlay
- Added product configurator slider step option
- Improved product configurator slider performance
-
Files
- template/js/main.js
- template/js/main.min.js
- template/css/main.css
- template/css/main.min.css
- template/about.html
- template/elements-other.html
- template/elements-pricing.html
- template/products-custom-cloud.html
Version 1.6
-
Changes
- Added Font Awesome 5.0 compatibility
- Fixed minor styling issues in WHMCS integration
-
Files
- template/js/main.js
- template/js/main.min.js
- template/css/main.css
- template/css/main.min.css
- whmcs/cloudhub-7.4.2.zip
Version 1.5
-
Changes
- Added product comparison table
- Updated cloud hosting product page
- Updated custom color style sheet template
-
Files
- template/css/main.css
- template/css/main.min.css
- template/css/custom.css
- template/elements-pricing.html
- template/products-cloud-hosting.html
Version 1.4
-
Changes
- Added additional button sizes
- Added product configurator slider
- Added custom cloud product page
- Added developer cloud product page
- Updated custom color style sheet templates
- Fixed drop down menu visibility in WHMCS integration
-
Files
- template/js/main.js
- template/js/main.min.js
- template/css/main.css
- template/css/main.min.css
- template/css/custom.css
- template/elements-pricing.html
- template/products-developer-cloud.html
- template/products-custom-cloud.html
- whmcs/cloudhub-7.4.2.zip
Version 1.3
-
Changes
- Added domain names product page
- Added SSL certificates product page
- Added PHP contact form with ReCaptcha support
- Added various main and custom style declarations
- Added custom term selector script for product boxes
- Fixed module styling issues in WHMCS integration
-
Files
- template/php
- template/js/main.js
- template/js/main.min.js
- template/css/main.css
- template/css/main.min.css
- template/contact.php
- template/products-domain-names.html
- template/products-ssl-certificates.html
- whmcs/cloudhub-7.4.1.zip
Version 1.2
-
Changes
- Fixed styling error with custom search input fields
-
Files
- template/js/main.js
- template/js/main.min.js
Version 1.1
-
Changes
- Improved gesture detection on touch inputs
- Added custom WHMCS integration based on version 7.4.1
-
Files
- template/js/main.js
- template/js/main.min.js
- whmcs/cloudhub-7.4.1.zip
WHMCS
This template provides a custom WHMCS integration which implements the header and footer elements with the version 7.8.3 default template. Other content elements are only usable with the original static template and are not available in the WHMCS version. It is recommended to deploy your site using separate environments and integrate style changes with your WHMCS installation.
Installation
Unpack the archive cloudhub-7.8.3.zip locally or directly on your server and move its content to the templates directory of your WHMCS installation. Make sure to set the correct permissions required for your web server and navigate to Setup → General Settings to activate the template.
Customization
The header and footer elements can be easily customized using the template files found in cloudhub/template/includes as well as the footer color class in the body template file. The color scheme can be changed using the custom template and its style sheets.
Products
Products should generally be presented using the default standard cart template to ensure a consistent and functional layout. Basic markup as shown in the code example can further enhance the presentation.
More detailed pricing options should be implemented using the main template and not the WHMCS integration.
<strong>8 GB</strong> ECC Memory <strong>6 Core</strong> Intel Processor <strong>80 GB</strong> RAID 10 SSD Storage <strong>4 TB</strong> Premium Bandwidth <strong>1 Gbit</strong> Network Uplink<br> <small>Dedicated IPv4 Address</small> <small>Powered by OpenStack</small> <small>99.99% Uptime SLA</small> <small>Load Balancing</small>
Header
The page header element is required to display important information like the logo and navigation items giving the user an immediate guidance about the content available on your site. Its behavior and appearance can be customized using the custom.css file and a variety of different classes listed below.
<header id="header"> <div class="container"> <a class="logo" href="index.html"> <img src="img/logos/header-light.png"> </a> <nav> <ul class="nav-primary"> <li> <a href="features.html">Features</a> </li> </ul> <ul class="nav-secondary"> <li> <a href="contact.html">Contact</a> </li> </ul> </nav> </div> </header>
Behavior
The header is displayed as a fixed element by default, always moving with the content independent of the scroll position. Alternative behaviors are static, always shown above the content, and dynamic, which hides the header automatically whenever the page is scrolled downwards.
- header-static
- header-dynamic
Styles
The default background of the header is the primary color and can be changed using the custom.css file or one of the following classes. Additionally, a fixed or scroll based shadow can be displayed.
- header-light
- header-gray
- header-dark
- header-shadow
- header-shadow-scroll
Logo
Using an image is the recommended way to display the site logo. However, text logos are supported as well which can be customized using a variety of icons and text color classes. Apply the class logo-text-baseline to align the logo with the primary navigation menu instead of vertically centering it.
<a class="logo" href="index.html"> <div class="logo-text logo-text-baseline"> Cloudhub </div> </a>
Navigation
The site navigation is divided into primary and secondary lists to differentiate their importance and visibility. The primary navigation supports drop down menus and should be used as the main navigation point. You can force the mobile navigation by adding header-nav-overlay to the header class.
<header id="header" class="header-nav-overlay"> <div class="container"> <nav></nav> </div> </header>
Content
The content section is the most important part of this template providing the widest range of functionality in regards to customization and content management. Each page requires at least one content-row element followed by a container in which any content should be placed.
<section class="content-row"> <div class="container"> </div> </section>
Styles
The overall appearance of every content row can be easily customized with one or more of the following styling classes. Each assigned class affects the color and appearance of other additional classes being used.
- content-row-gray
- content-row-dark
- content-row-color
- content-row-clouds
- content-row-border-top
- content-row-border-bottom
Height
Each content row only uses the space required by its content. On larger devices the row height can be stretched in order to give the content more importance. Following classes are available to customize the height.
- content-row-half-height
- content-row-full-height
Content Headers
The content header gives the user an indication about the information available on a page or within a content row. Title and description should be brief but informative without distracting from the actual content. Style and alignment can be customized using the classes listed below.
<header class="content-header"> <h2> </h2> <p> </p> </header>
Styles
The content header is sized to be displayed within content rows by default but can be modified in various ways by the following classes.
- content-header-small
- content-header-large
- content-header-uppercase
Alignment
The following classes can be used to change the overall alignment of the header and its content. The content header is centered by default.
- content-header-align-left
- content-header-align-right
Content Backgrounds
Content rows and sliders can be extended using image, video or icon backgrounds to provide additional visual information to the user. Examples of different implementations can be found throughout the template. Details regarding the styling and scaling of backgrounds are listed below.
<section class="content-row"> <div class="container"> </div> <div class="content-background"> <img src="uploads/gallery-1.jpg"> </div> </section>
Styles
Scale and visibility of backgrounds as well as a simple parallax scrolling effect can be easily configured using one of the following classes.
- content-background-blur
- content-background-light
- content-background-scale
- content-background-scroll
Elements
Backgrounds are restricted to certain elements listed below. Each element may come with additional limitations depending on its type or size.
- i
- img
- video
- iframe
Content Preloader
This template includes a basic content preloader that displays an overlay in the primary color combined with a loading indicator. Its visibility is controlled using the window load event and slightly delayed to avoid sudden changes. Simply add following class to the body tag to enable the preloader.
<body class="preload"> </body>
Notifications
Notifications allow you to prompt the user with an important piece of information ideally located in the upper part of the page and outside of the content container. The appearance of the notification bar can be customized with either the custom.css file or one of the contextual variation classes listed below.
<section id="notification" data-dismissible="true"> <div class="container"> <p> </p> </div> </section>
Appearance
The notification bar can be displayed with different background colors providing a visual indication of its current context.
- notification-error
- notification-warning
- notification-success
Options
data-dismissible - Creates a dismiss icon to enable the user to hide the notification bar after it has been displayed.
data-title - Name of the cookie used when creating a persistent dismissible notification. Requires the following data option to be defined.
data-expires - Expiration value given in days or as date object of how long to hide the current notification from the user if previously dismissed.
Columns
This template uses the powerful and fully responsive CSS flexbox layout to align content in multiple columns. Examples for the use of columns can be found throughout the template, while specific examples are available in the template file elements-columns.html
<div class="column-row"> <div class="column-25"> </div> <div class="column-25"> </div> <div class="column-50"> </div> </div>
Widths
Column classes are defined by their width relative to the parent container. Each column row should add up to exactly 100 percent unless the flexible column class is being used within a column row.
- column-20
- column-25
- column-30
- column-33
- column-40
- column-50
- column-60
- column-66
- column-70
- column-75
- column-80
- column-flex
Alignment
The columns in each row can be aligned horizontally and vertically using one of the following classes within the column-row class attribute.
- align-left-top
- align-left-center
- align-left-bottom
- align-right-top
- align-right-center
- align-right-bottom
- align-center
- align-center-top
- align-center-bottom
- content-sidebar-left
- content-sidebar-right
Flex
The class column-row-flex-width can be added to exclusively use flexible column widths with automated spacing. The specific example can be found in the template file knowledge-base.html starting at line 305.
<div class="column-row column-row-flex-width"> <div class="column-flex"> </div> <div class="column-flex"> </div> </div>
Sidebars
Column rows can be utilized to display content sidebars with an alignment independent to their position in the DOM. For an example on how to use sidebars please take a look at the template file blog-sidebar.html
<div class="column-row"> <div class="column-66"> </div> <div class="column-33 content-sidebar-left"> </div> </div>
Sliders
Content sliders are ideal to display a large amount of information in an attractive and compact format while offering a variety of different customization options. For detailed examples on how to implement and customize sliders please have a look at the template file elements-sliders.html
<section class="content-row"> <div class="content-slider"> <a class="slide" href=""> <div class="container"> </div> <div class="content-background"> <img src="uploads/gallery-1.jpg"> </div> </a> <a class="slide" href=""> <div class="container"> </div> <div class="content-background"> <img src="uploads/gallery-2.jpg"> </div> </a> </div> </section>
Animations
Slide transitions can be customized for both content and background using one of the following options in the content-slider class attribute.
- animate-container-fade
- animate-container-slide
- animate-container-scale
- animate-background-fade
- animate-background-slide
- animate-background-scale
<div class="content-slider animate-container-fade"> <div class="slide"> </div> <div class="slide"> </div> </div>
Options
data-nav - Navigation displayed below the slides. Circular links will be shown should no labels be defined for each of the slides.
data-nav-directional - Directional navigation displayed as arrows left and right of the slides. Omitted for devices with smaller screen widths.
data-rotation - Automatic rotation of slides given in seconds. The rotation is terminated as soon as the user interacts with the navigation.
data-title - Label used for the standard slider navigation. Needs to be defined for each slide individually.
Masonry
Masonry is a layout technique that dynamically arranges child elements in a brickwork like grid using the optimal positions based on the vertical space available. This template uses a modified version of Bricks to achieve the grid layout. More examples can be found in the template file elements-masonry.html
<div class="grid"> <div class="grid-item"> <img src="uploads/gallery-1-small.jpg"> </div> <div class="grid-item"> <img src="uploads/gallery-2-small.jpg"> </div> <div class="grid-item"> <img src="uploads/gallery-3-small.jpg"> </div> <div class="grid-item"> <img src="uploads/gallery-4-small.jpg"> </div> </div>
Options
data-grid-columns - Number of columns the grid layout should be displayed in. Dynamically adapts to changes in screen width.
data-grid-gap - Horizontal and vertical spacing set in pixels between columns and elements within the grid layout.
Pricing
Product pricing can be presented using either product boxes, sliders or classic tables. Each style brings its own advantages depending on what type of product is being offered. Examples for all available layouts and customizations can be found in the template file elements-pricing.html
Product Box
<div class="product-box"> <div class="product-header"> <h4> </h4> <p> </p> </div> <div class="product-price"> <span class="term"> </span> </div> <div class="product-features"> <ul> <li> </li> </ul> <ul> <li> </li> </ul> </div> <div class="product-order"> <a class="button" href=""> </a> </div> </div>
The product box is the most common type of layout and can be used for almost every product. The different sections within the product box can be reorganized or removed without affecting the general layout. Groups of product boxes should be displayed using a column-row using a center bottom alignment in case their content varies in height.
Appearance
You can add the class product-box-popular to a product box including an additional element as shown below to give a specific plan or product more importance in an overview.
<div class="product-box product-box-popular"> <div class="product-popular"> </div> </div>
Product Slider
<div class="product-slider"> <ul> <li> <span class="value"></span> <span class="label"></span> </li> <li> <div class="price"> <span class="value"></span> <span class="label"></span> </div> <a class="button" href=""> </a> </li> </ul> <ul> <li> <span class="value"></span> <span class="label"></span> </li> <li> <div class="price"> <span class="value"></span> <span class="label"></span> </div> <a class="button" href=""> </a> </li> </ul> </div>
The product slider is ideal to display a large number of similar packages with few changing features in a compact way. Very useful for products that are paid for in chunks like bandwidth or storage.
Styles
Product sliders resize dynamically based on the device screen width. You can also force smaller layouts, for example when displaying within columns, by using one of the following classes.
- product-slider-small
- product-slider-medium
- hide-segments
Options
data-sync - Identifier to synchronize two or more sliders with an identical number of packages. Useful for tabs showing different billing periods.
Product Configurator
<div class="product-configurator" data-currency="" data-sync=""> <form method="get" action=""> <div class="configurator-row"> <input type="hidden" name="" value="" data-min="" data-max="" data-step="" data-price="" data-title="" data-description=""> </div> <div class="configurator-row"> <input type="hidden" name="" value="" data-min="" data-max="" data-step="" data-price="" data-title="" data-description=""> </div> <div class="configurator-order"> <div class="configurator-total"> <span class="value"></span> <span class="label"></span> </div> <button></button> </div> </form> </div>
Behavior
The product configurator offers a similar user experience to the product slider while handling the setup and link modification differently. It requires a parent form element to submit the different options to a request location, for example a custom script that validates the POST or GET variables. The options are defined using hidden input elements with custom data attributes to specify the possible range of values.
Dividing the maximum value by the given step value of an option must equal a whole number for the configuration slider to work. The price needs to be defined per step option value for the total calculation to work. Please have a look at the files elements-pricing.html and products-custom-cloud.html for detailed examples on how to set up the configurator.
Please note that the price can only be fixed and can't be discounted based on the number of resources selected. The product slider in combination with predefined packages would be more suitable for this use case.
Styles
Following classes are available to hide the slider option segments and display a smaller version of the product configurator.
- product-configurator-small
- hide-segments
Options
data-currency - Define the currency symbol to display for your total price. Use the percentage sign to mark the position of the price output.
data-sync - Identifier to synchronize two or more sliders with an identical number of options. Useful for tabs showing different billing periods.
data-min - Minimum value that can be selected using the configurator. Additionally defines the increment if step value is undefined.
data-max - Maximum value that can be selected using the configurator. Dividing it by the step option value must equal an integer.
data-step - The increment value of each slider option segment. Uses the minimum value if undefined for backwards compatibility.
data-price - Price given for each option segment. Will be multiplied by the current number of step value options to determine the total.
data-title - Title or label displayed above the configuration slider. Printed in an inline element, don't use block elements with HTML markup.
data-title-plural - Same functionality as the regular title but only used when the currently selected option value does not equal one.
data-description - Brief description or additional information regarding the configuration option, displayed right of or below the title.
Product Table
<table> <caption> </caption> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td></td> <td class="highlight"></td> <td><a class="button" href=""></a></td> </tr> </tbody> </table>
Classic pricing tables are perfect to present a larger number of available plans with just a few key features. Adding the thead element to the top enables the responsive table mode improving the user experience.
Layout
The default table layout resizes its column based on their content. Adding the following class enables the fixed table layout.
- table-layout-fixed
Galleries
The gallery displays images in either a column or slider layout and enables common file types to be viewed in full screen when used in combination with links. Examples for all available gallery layouts are located in the template file elements-galleries.html
<div class="gallery"> <ul> <li> <a href="uploads/gallery-1.jpg"><img src="uploads/gallery-1-small.jpg"></a> </li> <li> <a href="uploads/gallery-2.jpg"><img src="uploads/gallery-2-small.jpg"></a> </li> <li> <a href="uploads/gallery-3.jpg"><img src="uploads/gallery-3-small.jpg"></a> </li> <li> <a href="uploads/gallery-4.jpg"><img src="uploads/gallery-4-small.jpg"></a> </li> </ul> </div>
Layouts
Following layout classes are supported by the gallery container. Please note that the compact gallery layout should have an even number of pictures in relation to the column count in order to be displayed correctly.
- gallery-slider
- gallery-compact
- gallery-3-columns
- gallery-4-columns
Titles
You are able to display a short image title or description in the full screen view by adding the title attribute to the img element.
<div class="gallery"> <ul> <li> <a href=""><img src="" title=""></a> </li> </ul> </div>
Overlays
Overlays are a useful way to display external content in an iframe element when requested by the user. This template supports automatic overlays for video content and custom sources. Please make sure the site you're trying to display in an iframe allows external embedding.
Videos
<a class="video-overlay" href=""> Video Link </a>
The video overlay automatically supports YouTube and Vimeo links, as well as links to locally or remotely hosted HTML5 compatible videos.
Options
data-width - Define the maximum width for the video overlay. Required to calculate the correct aspect ratio. Defaults to 1280 pixels.
data-height - Define the maximum height for the video overlay. Only required if a custom width is set. Defaults to 720 pixels.
Custom
<a class="iframe-overlay" data-src=""> Custom Source </a>
Any custom content from a site or page can be embedded using the iframe overlay unless prohibited by the host of the content.
Options
data-src - The required target link of the content to be embedded in the overlay iframe. Source must support external embedding.
data-width - Define an optional maximum width for the iframe overlay. Content is displayed full screen by default if not defined.
data-height - Define an optional maximum height for the iframe overlay. Required if a custom width has been set to calculate the aspect ratio.
Modals
Using modals enables you to display confirmation dialogs, dynamic forms and any other custom content in an overlay box outside of the regular page structure. Please have a look at the template file elements-other.html for detailed examples on how to use the different types of modals.
<button data-modal-target=""> Launch Modal </button> <div class="modal" data-modal="" data-modal-dismissible="" data-modal-show=""> <div class="modal-header"> <h3> </h3> </div> <div class="modal-content"> <p> </p> </div> </div>
Options
data-modal - Defines the required modal title to be used with target links. Must be unique on a page in order to function correctly.
data-modal-show - Automatically display the modal when the page has been loaded. Use booleans or a number to define a delay in seconds.
data-modal-dismissible - Set this option to true if you want to allow users to dismiss the modal overlay by default.
Link Options
data-modal-target - Define the title of the modal you want to display using the element this option is attached to, for example a button.
data-modal-dismiss - Set the title of the modal you want to dismiss. Functions disregarding if the dismissible attribute is defined on the modal.
Styles
Modals are displayed in a medium size or adjusted to the screen width by default but can be customized using one of the following classes.
- modal-small
- modal-large
<div class="modal modal-small" data-modal=""> <div class="modal-header"> </div> <div class="modal-content"> </div> </div>
Forms
This template integrates with all common form elements including custom styling and alignment options for the best cross-browser user experience. Please have a look at the template file elements-forms.html for detailed examples of all available form elements.
<form class="form-full-width" method="post" action=""> <div class="form-row"> <label for="form-user">User</label> <input id="form-user" type="text" name="user"> </div> <div class="form-row"> <label for="form-password">Password</label> <input id="form-password" type="password" name="password"> </div> <div class="form-row"> <button>Submit</button> </div> </form>
Notifications
Following notifications can be used to inform the user about important changes or results after the form as been sent to the server.
- form-error
- form-success
<form method="post" action=""> <div class="form-row form-error"> <ul> <li> </li> </ul> </div> </form>
Tabs
Tabs allow you to display pieces of related information in discrete portions while giving an overview and letting the user decide what is relevant to them. You have the choice between the classic, switch or collapse style to display your content. Examples can be found in the template file elements-tabs.html
<div class="tab-group"> <div class="tab-item" data-title="Tab 1"> </div> <div class="tab-item" data-title="Tab 2"> </div> <div class="tab-item" data-title="Tab 3"> </div> </div>
Navigation
You can link to your tabs from other pages by defining a unique id for each tab item within a tab group and pointing to it using the hash symbol. Adding the class active to an item will display it first on page load.
Options
data-title - Label used for the tab item in the group navigation.
Styles
- tab-group-switch-style
- tab-group-collapse-style
Icons
This template implements the great icon collections Font Awesome and Material Icons to improve contextual interactions and provide additional means of decoration and styling. Icons use the i element and require and identifier as class attribute or content depending on which set is currently in use.
The following classes can be used to modify the size and margin of icons, while color and alignment should be adjusted using text classes.
- icon-feature
- icon-feature-large
- icon-feature-inline
- icon-left
- icon-right
<a href="client-login.html"> <i class="fas fa-lock"></i> Client Login </a>
<a href="client-login.html"> <i class="material-icons">lock</i> Client Login </a>
Credits
Many thanks to the creators of the following third party resources which were essential in creating this template.
- jQuery - https://github.com/jquery/jquery
- Bricks - https://github.com/callmecavs/bricks.js
- JS Cookie - https://github.com/js-cookie/js-cookie
- Headroom - https://github.com/WickyNilliams/headroom.js
- ImagesLoaded - https://github.com/desandro/imagesloaded
- Material Icons - https://material.io/icons
- Font Awesome - https://fontawesome.com
- Public Domain Stock Photos - https://www.pexels.com
- Montserrat - https://fonts.google.com/specimen/Montserrat
- Open Sans - https://fonts.google.com/specimen/Open+Sans