前端实现图片悬浮_css-transition和transform实现图片悬浮移动动画

今天在京东首页上看到一个效果,鼠标悬浮在图片上时,图片发生移动,鼠标移走时再移回,并且有一个过渡效果。

貌似很简单,自己做做试试吧

我首先使用的是jquery在鼠标悬浮到图片上给图片增加一个类,这个类的样式使用animation实现动画效果。表面上是实现了,然后实际情况是,滚动页面时有些卡,应该是滚动时鼠标经过N个图片,大量的DOM操作严重消耗性能,所以还是采用了伪类hover,给hover应用样式实现动画。而且简单的移动使用animation有些复杂,利用transform和transition完全就够了。

1、:hover样式,我这里把moveleft应用到了图片的上层li元素。效果是水平方向向左10px,0.4s完成。注意在transform里,坐标代表left和top。

.moveleft:hover img{-webkit-transition:transform 0.4s;-o-transition:transform 0.4s;transition:transform 0.4s;-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);-o-transform:translateX(-10px);transform:translateX(-10px);

}

2、移动完成后,发现鼠标移走后,图片立刻回了原地,这样不太好……所以直接把过渡样式加入到img声明中(:hover里的transition声明可以删除),这样图片就可以0.4s回到原地了~

.findbrandrank-list-brand-content-list li img{-webkit-transition:transform 0.4s;-o-transition:transform 0.4s;transition:transform 0.4s;-webkit-transform:translateX(0);-ms-transform:translateX(0);-o-transform:translateX(0);transform:translateX(0);

}

关键时刻还是得靠W3school http://www.w3school.com.cn/cssref/pr_transform.asp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是详细的HTML和CSS代码示例: HTML: ``` <div class="image-container"> <img src="https://via.placeholder.com/350x150" alt="example-image"> <div class="overlay"> <h3>这里是标题</h3> <p>这里是描述文本</p> </div> </div> ``` CSS: ``` .image-container { position: relative; display: inline-block; /* 可以根据实际需求设置为其他值 */ } .image-container::before { content: ""; position: absolute; bottom: 0; left: 0; z-index: 1; width: 100%; height: 50%; background-image: linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0,0,0,0)); } .overlay { position: absolute; bottom: 0; left: 0; z-index: 2; width: 100%; padding: 20px; box-sizing: border-box; color: #fff; } .overlay h3 { margin: 0; font-size: 24px; } .overlay p { margin: 0; font-size: 16px; } .image-container img:hover { transform: scale(1.1); } /* 可以根据实际需求设置图片的样式 */ .image-container img { display: block; width: 100%; height: auto; transition: all 0.3s ease-in-out; } ``` 解释一下上面的代码: 首先,我们将图片的父元素 `.image-container` 设置为相对定位,并将其 display 属性设置为 inline-block。这里同样可以根据实际需求来设置。 接着,我们通过伪元素 ::before 来为图片的父元素添加渐变背景。伪元素的 content 属性可以设置为空,然后我们将其 position 属性设置为 absolute,这样它就可以绝对定位在 .image-container 上了。然后,我们将其 z-index 属性设置为 1,这样它就可以位于图片和文本之间。最后,我们将其宽度和高度设置为 100%,并设置渐变背景。 然后,我们为图片的父元素添加一个文本覆盖层 `.overlay`。我们将其 position 属性设置为 absolute,并将其 bottom 和 left 属性设置为 0,这样它就可以位于图片的底部。然后,我们将其 z-index 属性设置为 2,这样它就可以覆盖在渐变背景上。我们还为 `.overlay` 设置了 padding 和 box-sizing 属性,以及字体颜色等样式。 最后,我们为图片添加:hover伪类,并将其 transform 属性设置为 scale(1.1),这样当鼠标悬浮图片上时,它就会放大一些。同时,我们也可以根据实际需求来设置图片的样式。 希望这个示例代码能够帮到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值