<footer id="example-footer--dark" class="cwf-footer cwf-footer--dark">
<div class="cwf-footer__container">
<div class="cwf-footer__controller">
<div class="cwf-footer__column cwf-footer__column--left">
<div class="cwf-footer__item">
<a class="cwf-footer__link cwf-footer__link--seal" href="https://www.vcu.edu" title="Virginia Commonwealth University seal" aria-label="Visit vcu.edu through the University seal">
<span class="cwf-footer__seal"></span>
</a>
</div>
<div class="cwf-footer__item">
<a class="cwf-footer__link cwf-footer__link--university" href="https://www.vcu.edu" title="Virginia Commonwealth University" aria-label="Virginia Commonwealth University main website">
Virginia Commonwealth University
</a>
</div>
<div class="cwf-footer__item">
<a class="cwf-footer__link cwf-footer__link--division" href="https://compass.vcu.edu" title="Compass Web Framework">
Compass Web Framework
</a>
</div>
<div class="cwf-footer__item">
<a class="cwf-footer__link cwf-footer__link--department" href="/" title="Example Site">
Example Site
</a>
</div>
<div class="cwf-footer__item cwf-footer__item--address">
<address class="cwf-footer__address">
123 Main Street<br />
Box 842041<br />
Richmond,
Virginia
23284-2041 </address>
</div>
<div class="cwf-footer__item">
<i class="fas fa-phone" aria-hidden="true"></i>
<a class="cwf-footer__link cwf-footer__link--telephone" href="tel:8048281463" title="Contact us by telephone">
(804) 828-1463
</a>
</div>
<div class="cwf-footer__item">
<i class="fas fa-envelope" aria-hidden="true"></i>
<a class="cwf-footer__link" href="mailto:email@vcu.edu" title="Contact us by email">
email@vcu.edu
</a>
</div>
</div>
<div class="cwf-footer__column cwf-footer__column--middle">
<div class="cwf-footer__item cwf-footer__item--wysiwyg">
<div class="cwf-footer__item cwf-footer__item--wysiwyg">
<h2>
Helpful links
</h2>
<ul>
<li>
<a href="https://remington.net" target="_blank">
ut minima culpa veniam
</a>
</li>
<li>
<a href="http://ansley.info" target="_blank">
sequi aspernatur fugit laudantium
</a>
</li>
<li>
<a href="https://keven.org" target="_blank">
culpa quas rerum quidem
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="cwf-footer__column cwf-footer__column--right">
<div class="cwf-footer__item cwf-footer__item--social-list">
<div class="cwf-footer__social-item">
<a class="cwf-footer__link cwf-footer__link--social" href="https://facebook.com/virginiacommonwealthuniversity" title="VCU Facebook">
<i class="fab fa-facebook-f">
<span class="sr-only">
VCU Facebook
</span>
</i>
</a>
</div>
<div class="cwf-footer__social-item">
<a class="cwf-footer__link cwf-footer__link--social" href="https://instagram.com/vcu" title="VCU Instagram">
<i class="fab fa-instagram">
<span class="sr-only">
VCU Instagram
</span>
</i>
</a>
</div>
<div class="cwf-footer__social-item">
<a class="cwf-footer__link cwf-footer__link--social" href="https://snapchat.com/add/vcu" title="VCU Snapchat">
<i class="fab fa-snapchat-ghost">
<span class="sr-only">
VCU Snapchat
</span>
</i>
</a>
</div>
<div class="cwf-footer__social-item">
<a class="cwf-footer__link cwf-footer__link--social" href="https://twitter.com/VCU" title="VCU Twitter">
<i class="fab fa-twitter">
<span class="sr-only">
VCU Twitter
</span>
</i>
</a>
</div>
</div>
</div>
<div class="cwf-footer__standards">
<div class="cwf-footer__item cwf-footer__item--standards">
<a class="cwf-footer__link cwf-footer__link--standards" title="VCU privacy statement" href="https://www.vcu.edu/privacy-statement" target="_blank" rel="noreferrer">
Privacy
</a>
</div>
<div class="cwf-footer__item cwf-footer__item--standards">
<a class="cwf-footer__link cwf-footer__link--standards" title="Accessibility at VCU" href="https://accessibility.vcu.edu/" target="_blank" rel="noreferrer">
Accessibility
</a>
</div>
<div class="cwf-footer__item cwf-footer__item--standards">
<a class="cwf-footer__link cwf-footer__link--standards" title="Contact the VCU webmaster" href="mailto:webmaster@vcu.edu" target="_blank" rel="noreferrer">
Webmaster
</a>
</div>
<div class="cwf-footer__item cwf-footer__item--standards">
<a class="cwf-footer__link cwf-footer__link--standards" title="Vaccinate Virginia" href="https://vaccinate.virginia.gov/" target="_blank" rel="noreferrer">
Vaccinate Virginia
</a>
</div>
<div class="cwf-footer__item cwf-footer__item--standards">
<a class="cwf-footer__link cwf-footer__link--standards" href="" title="Compass: The University Web Framework">
Compass: The University Web Framework
</a>
</div>
<div class="cwf-footer__item cwf-footer__item--standards">Updated: 2/20/2020</div>
</div>
</div>
</div>
</footer>
<footer id="{{ id ?? 'cwf-footer' }}"
class="cwf-footer cwf-footer--{{ theme }}">
<div class="cwf-footer__container">
<div class="cwf-footer__controller">
<div class="cwf-footer__column cwf-footer__column--left">
<div class="cwf-footer__item">
<a class="cwf-footer__link cwf-footer__link--seal"
href="https://www.vcu.edu"
title="Virginia Commonwealth University seal"
aria-label="Visit vcu.edu through the University seal">
<span class="cwf-footer__seal"></span>
</a>
</div>
<div class="cwf-footer__item">
<a class="cwf-footer__link cwf-footer__link--university"
href="https://www.vcu.edu"
title="Virginia Commonwealth University"
aria-label="Virginia Commonwealth University main website">
Virginia Commonwealth University
</a>
</div>
<div class="cwf-footer__item">
<a class="cwf-footer__link cwf-footer__link--division"
href="{{ parent.url }}"
title="{{ parent.name }}">
{{ parent.name }}
</a>
</div>
<div class="cwf-footer__item">
<a class="cwf-footer__link cwf-footer__link--department"
href="{{ unit.url }}"
title="{{ unit.name }}">
{{ unit.name }}
</a>
</div>
<div class="cwf-footer__item cwf-footer__item--address">
<address class="cwf-footer__address">
{% if contact.address.street %}
{{ contact.address.street }}<br />
{% endif -%} {%- if contact.address.box %}
{{ contact.address.box }}<br />
{% endif %} {% if contact.address.city %}
{{ contact.address.city }},
{% endif -%} {%- if contact.address.state %}
{{ contact.address.state }}
{% endif -%} {%- if contact.address.zip %}
{{ contact.address.zip }}
{%- endif %}
</address>
</div>
{%- if contact.phone %}
<div class="cwf-footer__item">
<i class="fas fa-phone" aria-hidden="true"></i>
<a class="cwf-footer__link cwf-footer__link--telephone"
href="tel:{{ contact.phone|phone }}"
title="Contact us by telephone">
{{ contact.phone }}
</a>
</div>
{%- endif %}
{%- if contact.fax -%}
<div class="cwf-footer__item">
<i class="fas fa-fax" aria-hidden="true"></i>
<a class="cwf-footer__link cwf-footer__link--fax"
href="tel:{{ contact.fax|phone }}"
title="Contact us by fax">
{{ contact.fax }}
</a>
</div>
{%- endif -%}
{%- if contact.email %}
<div class="cwf-footer__item">
<i class="fas fa-envelope" aria-hidden="true"></i>
<a class="cwf-footer__link"
href="mailto:{{ contact.email }}"
title="Contact us by email">
{{ contact.email }}
</a>
</div>
{%- endif %}
</div>
{%- if middle_content -%}
<div class="cwf-footer__column cwf-footer__column--middle">
<div class="cwf-footer__item cwf-footer__item--wysiwyg">
{{ middle_content }}
</div>
</div>
{%- endif -%}
<div class="cwf-footer__column cwf-footer__column--right">
<div class="cwf-footer__item cwf-footer__item--social-list">
{% for social in socials %}
<div class="cwf-footer__social-item">
<a class="cwf-footer__link cwf-footer__link--social"
href="{{ social.url }}"
title="{{ social.title }}">
<i class="{{
social.icon
?? (social.url|icon)
}}">
<span class="sr-only">
{{ social.title }}
</span>
</i>
</a>
</div>
{% endfor %}
</div>
</div>
<div class="cwf-footer__standards">
<div class="cwf-footer__item cwf-footer__item--standards">
<a class="cwf-footer__link cwf-footer__link--standards"
title="VCU privacy statement"
href="https://www.vcu.edu/privacy-statement"
target="_blank"
rel="noreferrer">
Privacy
</a>
</div>
<div class="cwf-footer__item cwf-footer__item--standards">
<a class="cwf-footer__link cwf-footer__link--standards"
title="Accessibility at VCU"
href="https://accessibility.vcu.edu/"
target="_blank"
rel="noreferrer">
Accessibility
</a>
</div>
<div class="cwf-footer__item cwf-footer__item--standards">
<a class="cwf-footer__link cwf-footer__link--standards"
title="Contact the VCU webmaster"
href="mailto:webmaster@vcu.edu"
target="_blank"
rel="noreferrer">
Webmaster
</a>
</div>
<div class="cwf-footer__item cwf-footer__item--standards">
<a class="cwf-footer__link cwf-footer__link--standards"
title="Vaccinate Virginia"
href="https://vaccinate.virginia.gov/"
target="_blank"
rel="noreferrer">
Vaccinate Virginia
</a>
</div>
<div class="cwf-footer__item cwf-footer__item--standards">
<a class="cwf-footer__link cwf-footer__link--standards"
href=""
title="Compass: The University Web Framework">
Compass: The University Web Framework
</a>
</div>
<div class="cwf-footer__item cwf-footer__item--standards">
{%- if edit_url -%}
<a class="cwf-footer__link cwf-footer__link--standards"
href="{{ edit_url }}">
Updated
</a>: {{ last_updated }}
{%- else -%}
Updated: {{ last_updated }}
{%- endif -%}
</div>
</div>
</div>
</div>
</footer>
{
"parent": {
"name": "Compass Web Framework",
"url": "https://compass.vcu.edu"
},
"unit": {
"name": "Example Site",
"url": "/"
},
"contact": {
"address": {
"box": "Box 842041",
"city": "Richmond",
"state": "Virginia",
"street": "123 Main Street",
"zip": "23284-2041"
},
"email": "email@vcu.edu",
"phone": "(804) 828-1463"
},
"last_updated": "2/20/2020",
"socials": [
{
"url": "https://facebook.com/virginiacommonwealthuniversity",
"title": "VCU Facebook"
},
{
"url": "https://instagram.com/vcu",
"title": "VCU Instagram"
},
{
"url": "https://snapchat.com/add/vcu",
"title": "VCU Snapchat"
},
{
"url": "https://twitter.com/VCU",
"title": "VCU Twitter"
}
],
"theme": "dark",
"id": "example-footer--dark",
"middle_content": "<div class=\"cwf-footer__item cwf-footer__item--wysiwyg\">\n <h2>\n Helpful links\n </h2>\n <ul>\n <li>\n <a href=\"https://remington.net\" target=\"_blank\">\n ut minima culpa veniam\n </a>\n </li>\n <li>\n <a href=\"http://ansley.info\" target=\"_blank\">\n sequi aspernatur fugit laudantium\n </a>\n </li>\n <li>\n <a href=\"https://keven.org\" target=\"_blank\">\n culpa quas rerum quidem\n </a>\n </li>\n </ul>\n</div>"
}
// Footer component styles
@use "../../shared/animation";
@use "../../shared/media";
@use "../../shared/style";
@use "../../shared/theme";
@use "sass:map";
@use "../../resets/heading/shared" as heading;
@use "../../utilities/marker/shared" as marker;
// Selector prefix
$prefix: "cwf" !default;
.#{$prefix}-footer {
background-color: var(--cwf-footer--background-color);
font-family: theme.font--sans-serif();
color: var(--cwf-footer--color);
}
// Footer dark colors
$background-color--dark: style.color("black") !default;
$color--dark: style.color("white") !default;
$column--middle__border-color--dark: style.lighten(
"black",
6.5%
) !default; // #111111
$link__color--dark: style.color("gold") !default;
$link--standards__color--dark: style.darken(
"white-darkest",
16.5%
) !default; // #aaaaaa
$address__color--dark: style.darken("white-darkest", 16.5%) !default; // #aaaaaa
// Footer light colors
$background-color--light: style.lighten(
"white-darkest",
49%
) !default; // #e5e5e5
$color--light: style.color("gray-darkest") !default;
$column--middle__border-color--light: style.darken(
"white-darkest",
3.5%
) !default; // #c5c5c5
$link__color--light: style.color("blue", "accent") !default;
$link--standards__color--light: style.color("blue", "accent") !default;
$address__color--light: style.color("gray-darkest") !default;
// Footer themes
$themes: (
"dark": (
"background-color": $background-color--dark,
"color": $color--dark,
"column-middle-border-color": $column--middle__border-color--dark,
"a-color": $link__color--dark,
"a-standards-color": $link--standards__color--dark,
"address-color": $address__color--dark
),
"light": (
"background-color": $background-color--light,
"color": $color--light,
"column-middle-border-color": $column--middle__border-color--light,
"a-color": $link__color--light,
"a-standards-color": $link--standards__color--light,
"address-color": $address__color--light
)
);
$theme--keys: "background-color", "color", "column-middle-border-color",
"a-color", "a-standards-color", "address-color", "theme";
@function theme--validate($instructions) {
@return map.keys($instructions) == $theme--keys;
}
@mixin theme($instructions) {
@if theme--validate($instructions) {
$theme: map.get($instructions, "theme");
$background-color: map.get($instructions, "background-color");
$color: map.get($instructions, "color");
$column-middle-border-color: map.get(
$instructions,
"column-middle-border-color"
);
$a-color: map.get($instructions, "a-color");
$a-standards-color: map.get($instructions, "a-standards-color");
$address-color: map.get($instructions, "address-color");
.#{$prefix}-footer--#{$theme} {
--cwf-footer--background-color: #{$background-color};
--cwf-footer--color: #{$color};
--cwf-footer__column--middle--border-color: #{$column-middle-border-color};
--cwf-footer__a--color: #{$a-color};
--cwf-footer__a--standards--color: #{$a-standards-color};
--cwf-footer__address--color: #{$address-color};
}
} @else {
@warn "Invalid footer theme instructions provided!";
}
}
@mixin theme--official($theme) {
$colors: map.get($themes, $theme);
$instructions: map.merge(
$colors,
(
"theme": $theme
)
);
@include theme($instructions);
}
@each $theme, $colors in $themes {
@include theme--official($theme);
}
.#{$prefix}-footer__container {
@include theme.contain;
}
.#{$prefix}-footer__controller {
@include media.breakpoint {
display: flex;
flex-wrap: wrap;
}
}
.#{$prefix}-footer__column {
flex: 1;
margin-bottom: 2rem;
padding-left: 2rem;
padding-right: 2rem;
@include media.breakpoint {
margin-top: 2rem;
margin-bottom: 1rem;
}
}
.#{$prefix}-footer__column--left {
margin-top: 2rem;
}
.#{$prefix}-footer__column--middle {
@include media.breakpoint {
margin-bottom: 2rem;
border-left: 1px solid var(--cwf-footer__column--middle--border-color);
border-right: 1px solid var(--cwf-footer__column--middle--border-color);
}
}
.#{$prefix}-footer__column--middle,
.#{$prefix}-footer__column--right {
@include media.breakpoint {
padding-top: 89px;
}
}
.#{$prefix}-footer__item {
line-height: 1.625rem;
}
.#{$prefix}-footer__item--address {
margin-bottom: 2rem;
}
.#{$prefix}-footer__address {
font-style: normal;
color: var(--cwf-footer__address--color);
}
.#{$prefix}-footer__item--social-list {
@include media.breakpoint {
text-align: right;
}
}
.#{$prefix}-footer__item--wysiwyg {
@include style.children;
@include heading.clamp("h4");
a {
color: var(--cwf-footer__a--color);
font-weight: 700;
&:active,
&:focus,
&:hover {
text-decoration: none;
}
}
}
.#{$prefix}-footer__link {
font-weight: 700;
color: var(--cwf-footer__a--color);
@include animation.transition(color);
&:active,
&:hover,
&:focus {
text-decoration: none;
}
}
.#{$prefix}-footer__link--department,
.#{$prefix}-footer__link--division,
.#{$prefix}-footer__link--university {
&:active,
&:hover,
&:focus {
text-decoration: underline;
}
}
.#{$prefix}-footer--dark .#{$prefix}-footer__link {
color: var(--cwf-footer--color);
&:active,
&:hover,
&:focus {
color: var(--cwf-footer__a--color);
}
}
.#{$prefix}-footer--dark .#{$prefix}-footer__link--department,
.#{$prefix}-footer--dark .#{$prefix}-footer__link--division,
.#{$prefix}-footer--dark .#{$prefix}-footer__link--university {
color: var(--cwf-footer__a--color);
}
// Footer link social colors
$link--social__border-color: style.color("gray-light") !default;
$link--social__background-color--active: style.color("gold") !default;
$link--social__color--active: style.color("black") !default;
.#{$prefix}-footer__link--social {
border: 2px solid var(--cwf-footer__link--social--border-color);
border-radius: 50%;
display: inline-flex;
justify-content: center;
align-items: center;
font-size: 1.5rem;
height: 2.75rem;
width: 2.75rem;
color: var(--cwf-footer--color);
text-decoration: none;
@include animation.transition(background-color, color);
--cwf-footer__link--social--border-color: #{$link--social__border-color};
--cwf-footer__link--social--active--background-color: #{$link--social__background-color--active};
--cwf-footer__link--social--active--color: #{$link--social__color--active};
&:active,
&:hover,
&:focus {
background-color: var(
--cwf-footer__link--social--active--background-color
);
color: var(--cwf-footer__link--social--active--color) !important;
}
}
.#{$prefix}-footer__link--social-2 {
font-size: 1.5rem;
}
.#{$prefix}-footer__link--social-2 .fa-stack {
border-radius: 50%;
}
.#{$prefix}-footer__link--department {
font-size: 1rem;
text-decoration: none;
}
.#{$prefix}-footer__link--division {
font-size: 1.125rem;
text-decoration: none;
}
.#{$prefix}-footer__link--seal {
display: block;
font-size: 1.222rem;
text-decoration: none;
}
.#{$prefix}-footer__link--university {
font-size: 1.222rem;
text-decoration: none;
}
.#{$prefix}-footer__link--standards {
color: var(--cwf-footer__a--standards--color) !important;
}
.#{$prefix}-footer__seal {
background-repeat: no-repeat;
background-size: contain;
display: inline-block;
height: 80px;
margin-bottom: 0.5rem;
margin-left: auto;
margin-right: auto;
margin-top: 0;
vertical-align: top;
width: 256px;
}
// Footer images
$seal__path: "/img/seal/" !default;
$seal__simple: "vcu-simple-seal.svg" !default;
$seal__regular: "vcu-seal.svg" !default;
$seal__simple--dark: "vcu-simple-seal--dark.svg" !default;
$seal__regular--dark: "vcu-seal--dark.svg" !default;
.#{$prefix}-footer--dark .#{$prefix}-footer__seal {
background-image: url($seal__path + $seal__simple);
@include media.breakpoint {
background-image: url($seal__path + $seal__regular);
}
}
.#{$prefix}-footer--light .#{$prefix}-footer__seal {
background-image: url($seal__path + $seal__simple--dark);
@include media.breakpoint {
background-image: url($seal__path + $seal__regular--dark);
}
}
.#{$prefix}-footer__social-item {
display: inline-block;
font-size: 0;
padding-bottom: 0.5rem;
padding-left: 0.5rem;
}
.#{$prefix}-footer__social-item:first-child {
padding-left: 0;
}
.#{$prefix}-footer__standards {
display: flex;
flex-direction: column;
grid-column: span 3;
justify-content: center;
flex-basis: 100%;
width: 100%;
padding-bottom: 2rem;
padding-left: 2rem;
padding-right: 2rem;
@include media.breakpoint {
flex-direction: row;
padding-bottom: 1rem;
font-size: 0.75rem;
}
}
// Footer item standards colors
$item--standards--separator__color: style.darken(
"white-darkest",
13.5%
) !default; // #aaaaaa
.#{$prefix}-footer__item--standards {
color: var(--cwf-footer__a--standards--color);
--cwf-footer__item--standards--separator-color: #{$item--standards--separator__color};
&:after {
@include media.breakpoint {
content: "";
display: inline-block;
height: 1em;
margin-left: 0.5rem;
margin-right: 0.5rem;
border-right: 0.1em solid
var(--cwf-footer__item--standards--separator-color);
transform: rotate(20deg);
position: relative;
top: 0.15em;
}
}
}
.#{$prefix}-footer__item--standards:last-child:after {
border-right: none;
margin-left: 0;
margin-right: 0;
}
.#{$prefix}-footer--dark .#{$prefix}-footer__column--left .fas {
color: var(--cwf-footer__a--color);
}
The footer component, located at the bottom of each page, provides contact information and resource links for your visitors. The footer fulfills most of the content requirements in the VCU Web Standards and Guidelines.
The footer has three distinct columns:
On smaller devices, these columns will stack vertically in this order.
The left and right columns of the footer may not be used for purposes other than displaying contact information and social media links. Site authors have the ability use the middle column as they see fit or they can leave it blank. We suggest using to link to related VCU resources under a “Helpful resources” heading.
When implementing this component, please use the corresponding Font Awesome social media icon for the platforms below:
fab fa-facebook-f
fab fa-instagram
fab fa-linkedin-in
fab fa-pinterest-p
fab fa-snapchat-ghost
fab fa-tumblr
fab fa-twitter
fab fa-vimeo-v
fab fa-wordpress-simple
fab fa-youtube
fab fa-tiktok
Please use the fas fa-link
icon when linking to a platform not listed above.
Underneath the footer columns is a row of links to:
On smaller devices, these links will stack vertically in this order.
There is no footer specific javascript included.
The footer is implemented in T4 as the “Footer” Compass content type, meaning its classes retain the .cwf-
prefix.
Social icons are automatically inferred by the URL of the social links used in the content type. If an icon cannot be matched to the URL, a generic link icon is used instead.
This content type should only be used within the global “Site-Footer” section to have it displayed globally within the footer area.
In the “Injectors” field of the footer content type, the following injectors can be used:
id:{custom_id}
- Overrides the default, T4 ID of the footer with a custom ID.class:{custom_classes}
- Adds custom classes to the footer.style:{custom_styles}
- Adds custom styles to a style
attribute of the footer.before:{custom_html}
- Adds custom HTML before the footer.after:{custom_html}
- Adds custom HTML after the footer.