查看原文
其他

【每日一练】32—一款实用动画效果的实现

杨小爱 web前端开发 2022-12-03


写在前面

在前面我们也练习过很多鼠标悬停的动画效果,今天我们继续练习,这个效果非常实用,也是我们在很多网站上经常看到的效果,如果你也想知道怎么实现的话,那今天的练习项目,你一定不要错过了。

以下是今天小练习的最终效果:

当然,这个效果的实现方式也有很多,我们今天分享的只是其中的一种而已,也是相对比较简便的一种方式,希望你能够学会它,下面就是这个效果的具体实现代码。
HTML代码:
<!doctype html><html><head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>【每日一练】32—一款实用动画效果的实现</title> <link rel="stylesheet" href="style.css"></head><body> <div class="container"> <div class="card"> <span></span> <div class="imgBx"><img src="img1.jpg"></div> <div class="content"> <div> <h2>生如夏花</h2> <p>我听见回声,来自山谷和心间;以寂寞的镰刀收割空旷的灵魂;不断地重复决绝,又重复幸福; 终有绿洲摇曳在沙漠;我相信自己,生来如同璀璨的夏日之花,不凋不败,妖冶如火,承受心跳的负荷和呼吸的累赘,乐此不疲! 我听见音乐,来自月光和胴体;辅极端的诱饵捕获飘渺的唯美;一生充盈着激烈,又充盈着纯然;总有回忆贯穿于世间; 我相信自己,死时如同静美的秋日落叶,不盛不乱,姿态如烟,即便枯萎也保留丰肌清骨的傲然,玄之又玄! </p> </div> </div> </div> <div class="card"> <span></span> <div class="imgBx"><img src="img2.jpg"></div> <div class="content"> <div> <h2>飞鸟集</h2> <p>你微微地笑着,不同我说什么话。而我觉得,为了这个,我已等待得很久了。 人是一个初生的孩子,他的力量,就是生长的力量。 只有经历过地狱般的磨砺,才能练就创造天堂的力量;只有流过血的手指,才能弹出世间的绝响。 纵然伤心,也不要愁眉不展,因为你不知是谁会爱上你的笑容。 寂静在喧嚣里低头不语,沉默在黑夜里与目光结交,于是,我们看错了世界,却说世界欺骗了我们。 世界以痛吻我,要我回报以歌。 </p> </div> </div> </div> <div class="card"> <span></span> <div class="imgBx"><img src="img3.jpg"></div> <div class="content"> <div> <h2>流萤集</h2> <p>让我的爱,像阳光一样,包围着你,而又给你光辉灿烂的自由。 他们自己把墨水泼翻了,为了百般辩护,竟把白天说成黑夜。 我最后的敬礼,献给那些知道我不完美却依然爱我的人。 人生的意义不在于留下什么,只要你经历过,就是最大的美好,这不是无能,而是一种超然。 眼睛为她下着雨,心却为她打着伞,这就是爱情。 </p> </div> </div> </div> </div>
<script src="https://code.jquery.com/jquery-3.5.1.js"></script> <script> $(document).ready(function() { $('.card').on('mouseenter', function(e) { x = e.pageX - $(this).offset().left, y = e.pageY - $(this).offset().top; $(this).find('span').css({top:y, left:x}) }) $('.card').on('mouseout', function(e) { x = e.pageX - $(this).offset().left, y = e.pageY - $(this).offset().top; $(this).find('span').css({top:y, left:x}) }); });</script></body></html>
CSS代码:
*{ margin: 0; padding: 0; box-sizing: border-box; font-family: 'Poppins', sans-serif;}body{ display: flex; justify-content: center; align-items: center; min-height: 100vh; background: #28102d;}.container{ width: 1050px; display: flex; justify-content: center; align-items: center; flex-wrap: wrap;}.card{ position: relative; display: inline-block; width: 320px; height: 420px; margin: 15px; overflow: hidden;}.card span{ position: absolute; display: block; width: 0; height: 0; border-radius: 50%; background: #9C27B0; opacity: 0.95; transition: width 0.5s, height 0.5s; transform: translate(-50%, -50%); pointer-events: none; z-index: 10;}.card:hover span{ width: 1000px; height: 1000px;}.card .imgBx{ position: absolute; top: 0; left: 0; width: 100%; height: 100%;}.card .imgBx img{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover;}.card .content{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 11; display: flex; justify-content: center; align-items: center;}.card .content div{ padding: 40px; opacity: 0; visibility: hidden; transition: 0.2s; color: #fff; transform: translateY(50px);}.card:hover .content div{ opacity: 1; visibility: visible; transition-delay: 0.5s; transform: translateY(0px);}

写在最后

以上就是每日一练的全部内容,希望今天的小练习对你有用,如果你觉得有帮助的话,请点赞我,关注我,并将它分享给你身边做开发的朋友,也许能够帮助到他。

我是杨小爱,我们明天见。

学习更多技能

请点击下方公众号

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存