CSS

CSS Overview Selectors Declarations Rule Sets Comments Reset/Normalize Origin Importance Order Specificity Inheritance Cascade Layers Inline Styles Internal Styles External Styles @import Absolute Units Relative Units Dynamic Viewport Angle Units Time Units Frequency Units: Resolution Units Keywords Color Formats Color Functions & Spaces Background Color Background Image Background Repeat Background Position Background Size Background Attachment Background Shorthand Multiple Backgrounds Linear Gradients Radial Gradients Conic Gradients Font Family Font Size Font Weight Font Style Line Height Text Align Text Decoration Text Transform Letter Spacing Word Spacing Text Shadow Text Wrap Variable Fonts Content Box Padding Box Border Box Margin Box Box Sizing Property Margin Padding Border Outline Box Shadow Block Display Inline Display Inline Block Display Static Position Relative Position Absolute Position Fixed Position Sticky Position Top Element Position Right Element Position Bottom Element Position Left Element Position Z Index Flexbox Box Layout Display Flex Flex Direction Flex Wrap Justify Content Align Items Align Content Gap, Row Gap & Column Gap Flex Grow Flex Shrink Flex Basis Flex Shorthand Order Property Align Self Practical Applications CSS Grid Layout Grid Display Grid Template Columns Grid Template Rows Grid Template Areas Justify Items Grid Auto Columns Justify Self Nested Grids Responsive Web Design Min Width Max Width Orientation Logical Operators Pointer Hover Prefers Color Scheme Fluid Images Flexible Typography Viewport Width Advanced CSS Features Defining variables Using variables Scope & Inheritance of CSS Variables Property Value Fallback Practical Applications :Hover :Active :Focus :Focus Visible :Visited :Link :First Child :Last Child :Nth Child :Nth of Type :Empty :Checked :Disabled :Enabled :Valid :Invalid :Required :Has :Not :Is :Where ::Before Pseudo Element ::After Pseudo Element ::First Letter ::First Line ::Selection ::Marker CSS 2D Transformations CSS 3D Transformations Transform Origin Transform Style Backface Visibility Transition Property Transition Duration Transition Timing Function Transition Delay Transition Shorthand Ease Timing Function Linear Timing Function Ease In Timing Function Ease Out Timing Function Ease In Out Timing Function Cubic Bezier Function Animations (@keyframes) Defining @keyframes Animation Name CSS Animation Duration Animation Timing Function CSS Animation Delay CSS Animation Iteration Count Animations Direction CSS Animation Fill Mode CSS Animation Play State CSS Filter Blur CSS Filter Brightness CSS Filter Contrast() CSS Drop Shadow CSS Grayscale CSS Hue Rotate CSS Invert CSS Opacity CSS Saturate CSS Sepia Mix Blend Mode Background Blend Mode Object Fit & Object Position Scroll Snap Type Scroll Snap Align Scroll Padding Scroll Margin Scroll Triggered Animations JS Variables

Fluid Images


Fluid Images (max-width: 100%)

The core principle of creating fluid images in responsive web design is the use of the max-width: 100% CSS property. This declaration allows an image to scale down proportionally to fit within its parent container if the container becomes narrower than the image's intrinsic width. Simultaneously, height: auto; is used to maintain the image's aspect ratio, preventing distortion as it resizes.


Example 1: Basic Fluid Image

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Basic Fluid Image</title>
<style>
  /* Target the image to make it responsive */
  .responsive-image {
    max-width: 100%; /* Ensures the image does not exceed its container's width */
    height: auto;    /* Maintains the aspect ratio of the image */
  }
</style>
</head>
<body>

<div class="image-container">
  <img src="your-image.jpg" alt="A basic fluid image" class="responsive-image">
</div>

</body>
</html>

Explanation This code applies the max-width: 100% and height: auto properties to the .responsive-image class. This ensures that the image will never be wider than its parent container, scaling down fluidly while preserving its original proportions.


Example 2: Fluid Image in a Two-Column Layout

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fluid Image in Columns</title>
<style>
  .column-container {
    display: flex; /* Using Flexbox for the column layout */
    gap: 20px;     /* Adds space between the columns */
  }
  .column {
    flex: 1;       /* Each column will take up equal space */
  }
  .column img {
    max-width: 100%; /* Makes the image within the column fluid */
    height: auto;
    display: block; /* Removes any default bottom spacing on the image */
  }
</style>
</head>
<body>

<div class="column-container">
  <div class="column">
    <img src="image1.jpg" alt="Image in the first column">
  </div>
  <div class="column">
    <img src="image2.jpg" alt="Image in the second column">
  </div>
</div>

</body>
</html>

Explanation In this example, two columns are created using Flexbox. The images within each .column have max-width: 100%, which makes them scale to fit the width of their respective columns as the browser window is resized.


Example 3: Fluid Image with a Capped Maximum Size

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Capped Fluid Image</title>
<style>
  .capped-image {
    max-width: 100%;    /* Ensures fluidity on smaller screens */
    width: 800px;       /* Sets a maximum width for the image on larger screens */
    height: auto;
    display: block;     /* Allows margin auto to center the image */
    margin: 0 auto;     /* Centers the image when it's not at its max-width */
  }
</style>
</head>
<body>

<img src="large-image.jpg" alt="A fluid image with a max width" class="capped-image">

</body>
</html>

Explanation This technique makes an image fluid but prevents it from becoming larger than a specific size (800px in this case). The image will scale down on viewports narrower than 800px but will not exceed this width on larger screens.


Example 4: Fluid Images in a Photo Gallery Grid

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fluid Image Gallery</title>
<style>
  .gallery-grid {
    display: grid;
    /* Creates a responsive grid that adds more columns as space allows */
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 15px;
  }
  .gallery-grid img {
    width: 100%;     /* Ensures the image fills the grid cell */
    max-width: 100%; /* The image remains fluid */
    height: auto;
    display: block;
  }
</style>
</head>
<body>

<div class="gallery-grid">
  <img src="gallery1.jpg" alt="Gallery image 1">
  <img src="gallery2.jpg" alt="Gallery image 2">
  <img src="gallery3.jpg" alt="Gallery image 3">
  <img src="gallery4.jpg" alt="Gallery image 4">
</div>

</body>
</html>

Explanation This code uses CSS Grid to create a responsive photo gallery. The max-width: 100% combined with width: 100% on the images ensures they perfectly fill their grid cells and resize fluidly as the grid adapts to different screen sizes.


Example 5: Fluid Image inside a Card Component

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fluid Image in a Card</title>
<style>
  .card {
    width: 300px;
    border: 1px solid #ccc;
    border-radius: 8px;
    overflow: hidden; /* Hides parts of the image that might overflow the rounded corners */
    box-shadow: 0 4px 8px rgba(0,0,0,0.1);
  }
  .card-image {
    max-width: 100%;
    height: auto;
    display: block;
  }
</style>
</head>
<body>

<div class="card">
  <img src="card-photo.jpg" alt="A product or profile" class="card-image">
  <div class="card-content">
    <h3>Card Title</h3>
    <p>Some descriptive text about the card's content.</p>
  </div>
</div>

</body>
</html>

Explanation Here, a fluid image is used as the header for a card component. By setting max-width: 100%, the image scales perfectly to the fixed width of the card, making it a reusable and predictable UI element.


Example 6: Using the <picture> Element for Art Direction

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Art Directed Fluid Images</title>
<style>
  /* This style applies to the final image chosen by the picture element */
  .art-directed-image {
    max-width: 100%;
    height: auto;
  }
</style>
</head>
<body>

<picture>
  <source srcset="landscape-image.jpg" media="(min-width: 1200px)">
  <source srcset="square-image.jpg" media="(min-width: 600px)">
  <img src="portrait-image.jpg" alt="An image that changes based on screen size" class="art-directed-image">
</picture>

</body>
</html>

Explanation The <picture> element allows you to provide different image sources for different viewport sizes. The max-width: 100% property is applied to the fallback <img> element to ensure that whichever image is displayed remains fluid within the layout.


Example 7: Fluid Image with a Figure and Figcaption

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fluid Image with Caption</title>
<style>
  .captioned-figure {
    margin: 0; /* Removes default margin on the figure element */
    max-width: 500px; /* An optional max-width for the entire figure */
  }
  .captioned-figure img {
    max-width: 100%;
    height: auto;
    display: block;
  }
  .captioned-figure figcaption {
    padding: 10px;
    background-color: #f0f0f0;
    text-align: center;
    font-style: italic;
  }
</style>
</head>
<body>

<figure class="captioned-figure">
  <img src="article-image.jpg" alt="An image with a descriptive caption">
  <figcaption>This is a caption for the fluid image above.</figcaption>
</figure>

</body>
</html>

Explanation This example demonstrates a semantically correct way to present an image with a caption using <figure> and <figcaption>. The max-width: 100% on the <img> ensures it scales within the bounds of the <figure> element, creating a responsive image-caption block.