亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Home Web Front-end CSS Tutorial How to Add a CSS Reveal Animation to Your Images

How to Add a CSS Reveal Animation to Your Images

Feb 09, 2025 am 08:31 AM

Cleverly use CSS to achieve image hovering and reveal animation effects without additional elements! This article will explore in-depth how to use only <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173906107393958.jpg" class="lazy" alt="How to Add a CSS Reveal Animation to Your Images "><code><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173906107393958.jpg" class="lazy" alt="How to Add a CSS Reveal Animation to Your Images ">

核心要點(diǎn):

  • 僅需<img alt="How to Add a CSS Reveal Animation to Your Images" >
  • Core points: object-fit: coverobject-position: right
  • Only
  • elements are needed to implement CSS reveal animations without any extra elements or pseudo-elements. object-fit: none
  • The key to animation is: add padding to the image, then gradually reduce it to zero when hovering, while using background colors to create the visual effect of the image being revealed. The
and

properties are used to maintain the aspect ratio of the picture and prevent the picture from moving during animation. <img alt="How to Add a CSS Reveal Animation to Your Images" > By adjusting the padding direction, you can expand the animation effect and create more changes. Properties can also create different effects in some configurations, but require the CSS width and height to match the inherent dimensions of the image.

This article will explore some CSS tips to help you create impressive picture hover animations. You might think, "It's simple! Just add an extra element above the picture to animation." That's true, but we won't use any extra elements or pseudo-elements, we can do it with just

elements! This may sound incredible because using only image elements, it seems that nothing can be added above it. Indeed, we don’t add anything above the picture, but we smartly simulate this effect! Here is a CodePen demo showing what we will explore together: CodePen demo link

Isn't it cool? Revealing animations can be achieved with just a few lines of code, no extra elements required. Let's dive into the mystery behind it.

img {
  --s: 200px; /* 圖片大小 */

  width: var(--s);
  height: var(--s);
  box-sizing: border-box;
}

Initial configuration: widthheight aspect-ratioFirst, define the image size: box-sizing: border-box

So far, the code is very simple. For simplicity, we use square images, but we can also use pictures of any size. It is very important to explicitly set and , do not use

or retain the default size of the image. This is a must for our animation and we will explain why later. It is also very important to pay attention to the use of

. It has no effect at the moment, but let's move on to the next step and see why it is needed. box-sizing: border-box Add padding:

What happens if we add some padding to an image that has a fixed size defined and uses ? Let's give it a try! CodePen demo link

As we saw in the demo above, the picture was squeezed. We added 100px padding to the left, which will leave only 100px space for the image (content area). This is the effect of box-sizing: border-box. As MDN explains: border-box tells the browser to consider any borders and padding in the values ??you specify for the width and height of the element. If you set the width of the element to 100 pixels, then that 100 pixels will contain any borders or fills you added and the content box will shrink to absorb the extra width.

Now, imagine a scene where padding equals width. Yes, the picture will disappear! In the demo below, hover over the image to view the results. CodePen demo link

In the above demonstration, there are two points to be paid attention to. The padding can be animated, which is cool, and we can also see the importance of the CSS variables used earlier when defining the image size. We used the same variable to define the padding, so we don't have to repeat the same value.

Add background color:

Let's take the previous example and add the background. CodePen demo link

We are starting to get closer to our goal. The background will logically cover the entire element. We can't see it below the picture (unless we use transparent pictures), but we can see it in the fill area. Our goal is to reveal the image, so let's start by adding the padding and then set it to 0 when hovering - the opposite of what we are currently doing. CodePen demo link

This is still not the effect we want, but we are getting closer and closer! We only need one ingredient to make our “fake” reveal animation perfect!

Add object-fit and object-position:

The missing part is to avoid the image being squeezed, and here is the final trick. We will use the object-fit and cover values. As MDN explains: Replace content resizes to maintain its aspect ratio while filling the entire content box of the element. If the aspect ratio of an object does not match the aspect ratio of its box, the object will be cropped to fit.

There are two important points here:

  • "Replace content resizes to maintain its aspect ratio". This means that the picture will not be squeezed, but will maintain its inherent proportions. We are using a square picture, so it will keep the square.
  • "Fill the entire content box of the element...will be cropped to fit". The image should fill all content areas (the area we reduce by adding some fill), but if it doesn't fit inside, we'll crop it.

Let's try it out in the demo below. CodePen demo link

Did you see it? The pictures are no longer squeezed! It maintains its proportions within the content area while we add/remove padding. OK, so we might think the effect is different from the initial presentation. The picture moves strangely. That's right. So now we turn to object-position. The default value is center, so the image will always be in the center of the content area and will be cropped to fit inside. That's why it moves with the animation. What we need to do next should be easy to predict. We will change the location to make sure the picture does not move. We will add padding from the left, so we should use object-position: right to pin the position of the image to the right. CodePen demo link

Our reveal animation is completed! We don't need any overlays or extra elements above the picture. By using simple background colors and some picture positioning tips, we achieved beautiful reveal animations with a small amount of simple code. We can easily update the direction by adjusting the fill direction and object-position. Here is the first demonstration from the previous one, which contains four directions. CodePen demo link

The following is the CSS we use:

img {
  --s: 200px; /* 圖片大小 */

  width: var(--s);
  height: var(--s);
  box-sizing: border-box;
}

More animations revealed:

We can use the same idea to extend the trick to create more changes. Instead of adding/removing padding from one side, we can add/removing padding to both sides or even all sides. CodePen demo link

If we check the code demonstrated above, we will not find that there is a big difference from the previous one. All we did was set up different fill configurations to create more variations of the same effect. In the first and last examples, we use object-fit: none instead of object-fit: cover to have a trick. In these cases, the fill reduces the width and height of the content area to 0, while in all other cases we only reduce the height or width. In this configuration, cover does not work, but none can do the job. MDN notes: Replacement content will not resize.

Why don't we always use none? We can use it, and it works, but it has a small drawback. The inherent dimensions of the picture will be taken into account, so we have to make the CSS width and height equal to the inherent dimensions for the technique to take effect. On the other hand, only keeps the scale of the picture and will resize the picture to fit the box size, so we can safely define any CSS size for the picture. This is a comparison so that we can see the difference. noneCodePen demo link cover

In both cases we both reveal animations, but when using object-fit: none, the image does not resize and keeps its default size (500x500), which is not good. object-fit: cover Only maintain the proportion and the image will be resized to fit the box size.

Conclusion:

I hope you enjoyed this little CSS experiment. Using simple tricks and a few lines of code, we implemented a cool reveal animation with just the <img alt="How to Add a CSS Reveal Animation to Your Images" > element. We also made many changes using the same code structure. We can do more with this technique. I'll leave you with a last example where I convert a black and white image to a color image while hovering. CodePen demo link

I will let you continue to explore and try to find more beautiful animations!

The above is the detailed content of How to Add a CSS Reveal Animation to Your Images. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
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

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What is Autoprefixer and how does it work? What is Autoprefixer and how does it work? Jul 02, 2025 am 01:15 AM

Autoprefixer is a tool that automatically adds vendor prefixes to CSS attributes based on the target browser scope. 1. It solves the problem of manually maintaining prefixes with errors; 2. Work through the PostCSS plug-in form, parse CSS, analyze attributes that need to be prefixed, and generate code according to configuration; 3. The usage steps include installing plug-ins, setting browserslist, and enabling them in the build process; 4. Notes include not manually adding prefixes, keeping configuration updates, prefixes not all attributes, and it is recommended to use them with the preprocessor.

CSS tutorial for creating a sticky header or footer CSS tutorial for creating a sticky header or footer Jul 02, 2025 am 01:04 AM

TocreatestickyheadersandfooterswithCSS,useposition:stickyforheaderswithtopvalueandz-index,ensuringparentcontainersdon’trestrictit.1.Forstickyheaders:setposition:sticky,top:0,z-index,andbackgroundcolor.2.Forstickyfooters,betteruseposition:fixedwithbot

How to create an intrinsically responsive grid layout? How to create an intrinsically responsive grid layout? Jul 02, 2025 am 01:19 AM

To create an intrinsic responsive grid layout, the core method is to use CSSGrid's repeat(auto-fit,minmax()) mode; 1. Set grid-template-columns:repeat(auto-fit,minmax(200px,1fr)) to let the browser automatically adjust the number of columns and limit the minimum and maximum widths of each column; 2. Use gap to control grid spacing; 3. The container should be set to relative units such as width:100%, and use box-sizing:border-box to avoid width calculation errors and center them with margin:auto; 4. Optionally set the row height and content alignment to improve visual consistency, such as row

CSS tutorial for creating loading spinners and animations CSS tutorial for creating loading spinners and animations Jul 07, 2025 am 12:07 AM

There are three ways to create a CSS loading rotator: 1. Use the basic rotator of borders to achieve simple animation through HTML and CSS; 2. Use a custom rotator of multiple points to achieve the jump effect through different delay times; 3. Add a rotator in the button and switch classes through JavaScript to display the loading status. Each approach emphasizes the importance of design details such as color, size, accessibility and performance optimization to enhance the user experience.

CSS tutorial focusing on mobile-first design CSS tutorial focusing on mobile-first design Jul 02, 2025 am 12:52 AM

Mobile-firstCSSdesignrequiressettingtheviewportmetatag,usingrelativeunits,stylingfromsmallscreensup,optimizingtypographyandtouchtargets.First,addtocontrolscaling.Second,use%,em,orreminsteadofpixelsforflexiblelayouts.Third,writebasestylesformobile,the

How to center an entire grid within the viewport? How to center an entire grid within the viewport? Jul 02, 2025 am 12:53 AM

To make the entire grid layout centered in the viewport, it can be achieved by the following methods: 1. Use margin:0auto to achieve horizontal centering, and the container needs to be set to set the fixed width, which is suitable for fixed layout; 2. Use Flexbox to set the justify-content and align-items properties in the outer container, and combine min-height:100vh to achieve vertical and horizontal centering, which is suitable for full-screen display scenarios; 3. Use CSSGrid's place-items property to quickly center on the parent container, which is simple and has good support from modern browsers, and at the same time, it is necessary to ensure that the parent container has sufficient height. Each method has applicable scenarios and restrictions, just choose the appropriate solution according to actual needs.

What is feature detection in CSS using @supports? What is feature detection in CSS using @supports? Jul 02, 2025 am 01:14 AM

FeaturedetectioninCSSusing@supportschecksifabrowsersupportsaspecificfeaturebeforeapplyingrelatedstyles.1.ItusesconditionalCSSblocksbasedonproperty-valuepairs,suchas@supports(display:grid).2.Thismethodensuresfuturecompatibilityandavoidsrelianceonunrel

Addressing CSS Browser Compatibility issues and prefixes Addressing CSS Browser Compatibility issues and prefixes Jul 07, 2025 am 01:44 AM

To deal with CSS browser compatibility and prefix issues, you need to understand the differences in browser support and use vendor prefixes reasonably. 1. Understand common problems such as Flexbox and Grid support, position:sticky invalid, and animation performance is different; 2. Check CanIuse confirmation feature support status; 3. Correctly use -webkit-, -moz-, -ms-, -o- and other manufacturer prefixes; 4. It is recommended to use Autoprefixer to automatically add prefixes; 5. Install PostCSS and configure browserslist to specify the target browser; 6. Automatically handle compatibility during construction; 7. Modernizr detection features can be used for old projects; 8. No need to pursue consistency of all browsers,

See all articles