Skip to main content

Iframes

This extension provides an interface to include iframes with relative ease, but does try to provide manners to interact with the various options. This rests purely by setting default CSS values, that the user can overwrite if preferred for individual iframes, but also globally. In general, each iframe is embedded within a div element, which eases sizing.

What does it do?

This extension provides several Sphinx directives:

  • iframe
  • h5p
  • video
  • iframe-figure
  • video-figure
  • h5p-figure

that can be used to quickly insert an iframe with standard sizing and styling.

Installation

To use this extension, follow these steps:

Step 1: Install the Package

Install the module sphinx-iframes package using pip:

pip install sphinx-iframes

Step 2: Add to requirements.txt

Make sure that the package is included in your project's requirements.txt to track the dependency:

sphinx-iframes

Step 3: Enable in _config.yml

In your _config.yml file, add the extension to the list of Sphinx extra extensions (important: underscore, not dash this time):

sphinx: 
    extra_extensions:
        .
        .
        .
        - sphinx_iframes
        .
        .
        .

Configuration

The extension provides several configuration values, which can be added to _config.yml:

sphinx: 
    config:
        -
        -
        -
        iframe_blend:          true # default value
        iframe_saturation:     1.5 # default value
        iframe_h5p_autoresize: true # default value
        iframe_background:     "#ffffff" # default value
        iframe_width:          calc(100% - 2.8rem) # default value
        iframe_aspectratio:    auto 2 / 1 # default value
        iframe_loading:        lazy # default value
        -
        -
        -
  • iframe_blend: true (default) or false:
    • if true all iframes are standard blended with the background and in dark-mode also inverted.
    • if false all non-blended iframes will have background a colored background and no inversion for dark-mode is applied.
    • there's no need to set the blend or no-blend for individual iframes if it's set in the _config.yml, unless you want to deviate from the setting set there.
  • iframe_saturation: 1.5 (default) or float:
    • Blended iframes are inverted in dark mode using the CSS filter invert(1) hue-rotate(180deg) saturation(iframe_saturation).
  • iframe_h5p_autoresize: true (default) or false:
    • if true all h5p iframes are automagically resized to fit the element in which the iframe is loaded.
    • if false no h5p iframes are automagically resized to fit the element in which the iframe is loaded.
  • iframe_background: "#ffffff" (default) or CSS string:
    • sets the standard background color of non-blended iframes.
    • Any CSS string defining colors can be used, see CSS data type.
    • Surround with " " for hex strings.
    • Only visible if the content of the iframes has a transparent background.
  • iframe_width: calc(100% - 2.8rem) (default) or CSS string:
    • sets the standard width of the iframe within the parent element;
    • Any CSS string defining a width can be used, see width CSS property.
  • iframe_aspectratio: auto 2 / 1 (default) or CSS string:
    • sets the standard aspect ration of the iframe within the parent element;
    • Any CSS string defining an aspect ratio can be used, see aspect-ratio CSS property.
  • iframe_loading: lazy (default) or eager:

Provided code

Directives

The following new directives are provided:

```{iframe} <link_to_webpage_to_embed>
```
```{h5p} <link_to_h5p_webpage_to_embed>
```
```{video} <link_to_video_to_embed>
```

In case of a YouTube-link, it is inverted to an embed link if the normal web URL is provided. H5p links are converted too if provided without /embed.

For the video directive, if a direct link to a video file is provided (e.g. ending on .mp4, .webm or .ogg), then the video directive from sphinxcontrib.video is used. If any other link is provided, then an iframe is generated.

```{iframe-figure} <link_to_webpage_to_embed>
:name: some:label

The caption for the iframe.
```
```{h5p-figure} <link_to_h5p_webpage_to_embed>
:name: some:label

The caption for the h5p webpage.
```
```{video-figure} <link_to_video_to_embed>
:name: some:label

The caption for the video.
```

Note that you don't need the full embed code of an iframe. Only the source url should be used.

All of these have the following options:

  • :class:
    • If further CSS styling is needed, then use this option to append a CSS class name to the rendered iframe.
    • We recommend to only use the classes blend and no-blend, see .
  • :divclass:
    • If further CSS styling is needed, then use this option to append a CSS class name to the div surrounding the iframe.
  • :width:
    • Sets the width of the iframe. Use CSS compatible strings.
  • :height:
    • Sets the width of the iframe. Use CSS compatible strings.
  • :aspectratio:
    • Sets the width of the iframe. Use CSS compatible strings.
  • :styleframe:
    • Sets the style of the iframe. Use CSS compatible strings. Surround with " ".
  • :stylediv:
    • Sets the style of the surrounding div. Use CSS compatible strings. Surround with " ".
  • :loading:
    • Sets the loading attribute of the iframe. Use either lazy or eager.
    • If unset, the global configuration value is used.

For the directive video, if a direct link to a video file is given, then only the options from the video directive from sphinxcontrib.video should be used. For any other link, the options above should be used.

The directives iframe-figure, video-figure and h5p-figure also inherit all options from the figure directive from the extension sphinx_metadata_figure.

Metadata

The iframe-figure, video-figure and h5p-figure directives use the figure directive from the sphinx_metadata_figure extension to add metadata to the figures they create. This metadata can include information such as author, license, copyright, and source. This information is useful for documentation and attribution purposes.

Examples and details

See Iframes - TeachBooks Manual.

Contribute

This tool's repository is stored on GitHub. If you'd like to contribute, you can create a fork and open a pull request on the GitHub repository. The README.md of the branch Manual is also part of the TeachBooks manual as a submodule.

Metadata

Release files for sphinx-iframes 1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sphinx-iframes 1.2.1
File Size Uploaded
sphinx_iframes-1.2.1.tar.gz 2.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for sphinx-iframes 1.2.1
File Interpreter ABI Platform
sphinx_iframes-1.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 2.9 MB

Release files / sphinx_iframes-1.2.1.tar.gz

Download URL sphinx_iframes-1.2.1.tar.gz
Size 2.8 MB
Tags Source
SHA-256 checksum
How to use checksums
547c240a127df54e88410d1d0a362e5a8897fd7b02f0c06cc6d2207d23bd208b
BLAKE2b-256 checksum
How to use checksums
99c37ac27ce193d268b1db300c4ecf6ae2274817456f8cf30ca1de2efb53ae4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / sphinx_iframes-1.2.1-py3-none-any.whl

Download URL sphinx_iframes-1.2.1-py3-none-any.whl
Size 10.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1bc63fc32fb71d1c896a3c7005cd6de91432258cf8ce16e51cbb588d56b2a5d6
BLAKE2b-256 checksum
How to use checksums
748447658f0be8023adb9c2cf798eb7da8654df8f35aba18057287f88e91781d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.1 This release

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page