Card Full Image

A card component with a full image background and overlay text content. Features customizable overlay colors and is designed for use within layout components. There's two components in this component's directory. The card-full-image component is meant for regular Drupal, while the card-full-image-canvas is meant for Drupal Canvas. The main difference is that the card-full-image-canvas has a $ref value that points to a Drupal Canvas schema definition. This component cannot be loaded if Canvas is not present (Drupal.org issue), as there will be a 500 error. The two components share the same Twig file and CSS file. The regular card-full-image component is excluded from appearing in page builder user interfaces with the noUi: false key value within the schema.

Usage

{{ include('dripyard_base:card-full-image', {
  image: {
    src: 'images/example.jpg',
    alt: 'Card background image',
    width: 800,
    height: 1200
  },
  title: 'Card Title',
  byline: 'Learn more',
  href: '/learn-more',
  overlay_color: 'dark',
  overlay: 'full',
  layout_vertical: 'bottom',
  title_align: 'start',
  byline_align: 'start'
}, with_context = false) }}

Props

Property Type Options Required Description
title string - Yes Card heading text
image object - Yes Background image object with src, alt, width, height
href string - Yes Link destination URL
overlay_color string light, dark Yes Overlay theme for text contrast (also controls text color)
byline string - No Subtitle text displayed below title
overlay string full, from bottom No Overlay coverage style (defaults to full)
layout_vertical string center, bottom No Vertical positioning of title within the card
title_align string start, center No Horizontal alignment of the title text
byline_align string start, end No Horizontal alignment of the byline text

CSS Custom Properties

  • --card-full-image-padding - Internal padding for card content
  • --card-full-image-gap - Gap between title and byline elements
  • --card-full-image-aspect-ratio - Aspect ratio of the card container
  • --card-full-image-border-radius - Border radius for card corners
  • --card-full-image-text-color - Text color for title and byline content
  • --card-full-image-title-font-size - Font size for the card title
  • --card-full-image-title-line-height - Line height for the card title
  • --card-full-image-title-letter-spacing - Letter spacing for the card title
  • --card-full-image-byline-font-size - Font size for the card byline
  • --card-full-image-byline-line-height - Line height for the card byline
  • --card-full-image-byline-letter-spacing - Letter spacing for the card byline
  • --card-full-image-overlay-color - Base color for overlay effects
  • --card-full-image-overlay-length - Coverage percentage for gradient overlay
  • --card-full-image-focus-ring-color - Focus indicator color for keyboard navigation

Media Queries

The component adapts its aspect ratio based on viewport height and component width:
/* Default aspect ratio */
aspect-ratio: 5 / 7;

/* Shorter viewports */
@media (height < 900px) {
  aspect-ratio: 4 / 3;
}

/* If component width is larger than 600px, component goes into landscape mode. */
@container (width > 600px) {
  aspect-ratio: 16 / 9;
}

Overlay Variants

Dark Overlay (Default)

  • Reduced image opacity: Image displays at 30% opacity (50% on hover)
  • High contrast text: White text over darkened background
  • Default behavior: No additional gradient overlay

Light Overlay

  • Full image opacity: Image displays at 100% opacity
  • Gradient overlay: Linear gradient from white to transparent
  • Dark text: Uses theme text colors for contrast

Accessibility Features

  • Semantic article: Uses <article> element for proper content structure
  • Full card links: Entire card area is clickable for easy interaction
  • Focus indicators: Clear focus outline with proper contrast
  • Alternative text: Requires alt text for background images
  • Text contrast: Important: Always verify text contrast when positioning text over images

Text Contrast Considerations

Critical: When using light overlay or custom images, always verify text contrast ratios meet accessibility requirements. The component provides overlay options but contrast depends on image content.