hidden as true (hidden: true) inside the container_section__header section in card container config.yml setting. This value (true) applies the class vf-u-sr-only (for screen reader only) to the section header and hides it. See the example with the hidden header below.vf-u-background-color-ui--grey--light (which is called 'Gray lightest' in the equivalent WP block) may be used as an alternative background of bordered (white) cards, especially when the section header is hidden and there is no text between the section header and the cards.The containier defaults to three columns (the recommended number of image-based cards per row). However if text-only cards are being used, a 4-column variant is supported cards_per_row: 4 which appends CSS class vf-card-container__col-4.
The vf-card component allows for a CSS custom property to be set to define the aspect-ratio of the card image. This can be set per card, but with the vf-card-container you should aim for consistency across the vf-cards it is displaying. Therefore we can pass the aspect-ratio value from this component and it will cascade through the CSS onto the cards. This is encapsulated to this container, which allows you to set different aspect-ratio values for different containers as needed.
To set the aspect-ratio you will need to set the card_custom_aspect_ratio key/value pair in the .yml or the {#{% render %}#} api of the vf-card-container as needed.
This component targets WCAG 2.1 AA accessibility.
The Meet our people page at the EMBL-EBI site includes examples of the card container that pass the basic contrast tests for accessibility.
To promote molecular biology across Europe
To create a centre of excellence for Europe's leading young molecular biologists
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sapiente harum, omnis provident saepe aut eius aliquam sequi fugit incidunt reiciendis, mollitia quos? Sapiente harum, omnis provident saepe aut eius aliquam sequi fugit incidunt reiciendis, mollitia quos?
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sapiente harum, omnis provident saepe aut eius aliquam sequi fugit incidunt reiciendis, mollitia quos?
Depending on your environment you'll want to use render or include. As a rule of thumb: server-side use include, precompiled browser use render. If you're using vf-eleventy you should use include.
includeYou'll need to pass a context object from your code or Yaml file (example), as well as the path to the Nunjucks template. Nunjucks' include is an abstraction of render and provides some additional portability.
{% set context fromYourYamlFile %}
- or -
{% set context = {
"component-type" : "container",
"modifier" : "vf-u-background-color-ui--white vf-u-fullbleed",
"cards_aspect_ratio" : "16 / 9",
"cards_per_row" : 3,
"container_section__header" : [object Object],
"vf_cards" : [object Object],[object Object],[object Object],
}
%}
{% include "../path_to/vf-card-container/vf-card-container.njk" %}
renderThis approach is best for bare-bones Nunjucks environments, such as precompiled templates with the Nunjucks slim runtime where include is not be available.
{% render '@vf-card-container', {
"component-type" : "container",
"modifier" : "vf-u-background-color-ui--white vf-u-fullbleed",
"cards_aspect_ratio" : "16 / 9",
"cards_per_row" : 3,
"container_section__header" : [object Object],
"vf_cards" : [object Object],[object Object],[object Object],}
%}
<section class="vf-card-container vf-card-container__col-3 | vf-u-background-color-ui--white vf-u-fullbleed" style="--vf-card__image--aspect-ratio: 16 / 9;">
<div class="vf-card-container__inner">
<div class="vf-section-header">
<h2 class="vf-section-header__heading vf-section-header__heading--is-link"><a href="JavaScript:Void(0);">Missions</a><svg aria-hidden="true" class="vf-section-header__icon | vf-icon vf-icon-arrow--inline-end" width="1em" height="1em" xmlns="http://www.w3.org/2000/svg">
<path d="M0 12c0 6.627 5.373 12 12 12s12-5.373 12-12S18.627 0 12 0C5.376.008.008 5.376 0 12zm13.707-5.209l4.5 4.5a1 1 0 010 1.414l-4.5 4.5a1 1 0 01-1.414-1.414l2.366-2.367a.25.25 0 00-.177-.424H6a1 1 0 010-2h8.482a.25.25 0 00.177-.427l-2.366-2.368a1 1 0 011.414-1.414z" fill="" fill-rule="nonzero"></path>
</svg></h2>
<p class="vf-section-header__text">To promote molecular biology across Europe</p>
<p class="vf-section-header__text">To create a centre of excellence for Europe's leading young molecular biologists</p>
</div>
<article class="vf-card vf-card--brand vf-card--bordered">
<img src="../../assets/vf-card/assets/vf-card-example.png" alt="" class="vf-card__image" loading="lazy">
<div class="vf-card__content | vf-stack vf-stack--400">
<h3 class="vf-card__heading"><a class="vf-card__link" href="JavaScript:Void(0);">One card <svg aria-hidden="true" class="vf-card__heading__icon | vf-icon vf-icon-arrow--inline-end" width="1em" height="1em" xmlns="http://www.w3.org/2000/svg">
<path d="M0 12c0 6.627 5.373 12 12 12s12-5.373 12-12S18.627 0 12 0C5.376.008.008 5.376 0 12zm13.707-5.209l4.5 4.5a1 1 0 010 1.414l-4.5 4.5a1 1 0 01-1.414-1.414l2.366-2.367a.25.25 0 00-.177-.424H6a1 1 0 010-2h8.482a.25.25 0 00.177-.427l-2.366-2.368a1 1 0 011.414-1.414z" fill="currentColor" fill-rule="nonzero"></path>
</svg>
</a></h3>
<p class="vf-card__text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sapiente harum, omnis provident saepe aut eius aliquam sequi fugit incidunt reiciendis, mollitia quos? Sapiente harum, omnis provident saepe aut eius aliquam sequi fugit incidunt reiciendis, mollitia quos?</p>
</div>
</article>
<article class="vf-card vf-card--brand vf-card--bordered">
<img src="../../assets/vf-card/assets/vf-card-example.png" alt="" class="vf-card__image" loading="lazy">
<div class="vf-card__content | vf-stack vf-stack--400">
<h3 class="vf-card__heading"><a class="vf-card__link" href="JavaScript:Void(0);">A card here <svg aria-hidden="true" class="vf-card__heading__icon | vf-icon vf-icon-arrow--inline-end" width="1em" height="1em" xmlns="http://www.w3.org/2000/svg">
<path d="M0 12c0 6.627 5.373 12 12 12s12-5.373 12-12S18.627 0 12 0C5.376.008.008 5.376 0 12zm13.707-5.209l4.5 4.5a1 1 0 010 1.414l-4.5 4.5a1 1 0 01-1.414-1.414l2.366-2.367a.25.25 0 00-.177-.424H6a1 1 0 010-2h8.482a.25.25 0 00.177-.427l-2.366-2.368a1 1 0 011.414-1.414z" fill="currentColor" fill-rule="nonzero"></path>
</svg>
</a></h3>
<p class="vf-card__text">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
</div>
</article>
<article class="vf-card vf-card--brand vf-card--bordered">
<img src="../../assets/vf-card/assets/vf-card-example.png" alt="" class="vf-card__image" loading="lazy">
<div class="vf-card__content | vf-stack vf-stack--400">
<h3 class="vf-card__heading"><a class="vf-card__link" href="JavaScript:Void(0);">Another card <svg aria-hidden="true" class="vf-card__heading__icon | vf-icon vf-icon-arrow--inline-end" width="1em" height="1em" xmlns="http://www.w3.org/2000/svg">
<path d="M0 12c0 6.627 5.373 12 12 12s12-5.373 12-12S18.627 0 12 0C5.376.008.008 5.376 0 12zm13.707-5.209l4.5 4.5a1 1 0 010 1.414l-4.5 4.5a1 1 0 01-1.414-1.414l2.366-2.367a.25.25 0 00-.177-.424H6a1 1 0 010-2h8.482a.25.25 0 00.177-.427l-2.366-2.368a1 1 0 011.414-1.414z" fill="currentColor" fill-rule="nonzero"></path>
</svg>
</a></h3>
<p class="vf-card__text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sapiente harum, omnis provident saepe aut eius aliquam sequi fugit incidunt reiciendis, mollitia quos?</p>
</div>
</article>
</div>
</section>
To promote molecular biology across Europe
To create a centre of excellence for Europe's leading young molecular biologists
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sapiente harum, omnis provident saepe aut eius aliquam sequi fugit incidunt reiciendis, mollitia quos? Sapiente harum, omnis provident saepe aut eius aliquam sequi fugit incidunt reiciendis, mollitia quos?
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sapiente harum, omnis provident saepe aut eius aliquam sequi fugit incidunt reiciendis, mollitia quos?
This repository is distributed with npm. After installing npm, you can install vf-card-container with this command.
$ yarn add --dev @visual-framework/vf-card-container
The style files included are written in Sass. If you're using a VF-core project, you can import it like this:
@import "@visual-framework/vf-card-container/index.scss";
Make sure you import Sass requirements along with the modules. You can use a project boilerplate or the vf-sass-starter
docs: Updated documentation for hidden flag usage and fixed 3.1.0 changelog text which was causing compile error
vf-section-header and vf-cards.--page-grid-gap).aspect-ratio of the vf-card child componentsdefault context data in the .yml file to a variant to allow easier use of ``.--vf-card-container__grid--size--overide CSS custom property in CSS--vf-card-container__grid--size--overide as .yml optionvf-section-header work as a subcomponentvf-card
File system location: components/vf-card-container
Find an issue on this page? Propose a change or discuss it.