Home  >  Article  >  Web Front-end  >  How to Achieve \"background-size: cover\" Behavior on Video and Image Elements Using Only CSS?

How to Achieve \"background-size: cover\" Behavior on Video and Image Elements Using Only CSS?

DDD
DDDOriginal
2024-10-28 08:38:29162browse

How to Achieve

Achieving "background-size: cover" Behavior on Video and Image Elements

As you seek to simulate the functionality of "background-size: cover" on elements like

The Problem with Previous Solutions

Timothy's solution, while effective in some scenarios, fails to handle scaling correctly, resulting in unwanted zoom effects when the video's parent element is smaller than the video file.

The Improved Solution

If the video's aspect ratio is known, such as 16:9, this CSS code will achieve the desired effect:

<code class="css">.parent-element-to-video {
    overflow: hidden;
}

video {
    height: 100%;
    width: 177.77777778vh; /* 100 * 16 / 9 */
    min-width: 100%;
    min-height: 56.25vw; /* 100 * 9 / 16 */
}</code>

This code sets the height to 100% of the container and the width to a calculated value based on the aspect ratio. The minimum width and height ensure scaling down occurs if the container is smaller than the video file.

Centering the Video

For centering, employ the following CSS:

<code class="css">.parent-element-to-video {
    position: relative; /* or absolute or fixed */
}

video {
    position: absolute;
    left: 50%; /* % of surrounding element */
    top: 50%;
    transform: translate(-50%, -50%); /* % of current element */
}</code>

This positions the video absolutely and uses translate to center it within its parent element.

Compatibility Considerations

Note that VW, VH, and transform are CSS3 features. For compatibility with older browsers, you may need to resort to JavaScript.

The above is the detailed content of How to Achieve \"background-size: cover\" Behavior on Video and Image Elements Using Only CSS?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn