当前位置:首页>滚动 > >正文

环球速讯:卡片放大播放效果实现总结,不同元素间的放大过渡效果如何实现?

  • 2023-01-11 02:41:44来源:程序员客栈

背景

最近一段时间做了几个需求,其中涉及的素材列表展示,需要实现类似下方图片中的动效,暂且称之为【卡片放大播放动效】,具体细节如下:

初始展示的是封面图片,鼠标经过时是视频放大的效果;下方文字内容区域,在放大前后展示的内容不同,而且两者的字体大小是一致的,不是简单的放大实现;四五个页面都需要实现相同列表效果,列表的行数和列数是不一致的;
image
遇到的四个问题

在整个实现过程中,遇到以下四个问题,后面的解析中会有对应解答。


【资料图】

不同元素间的放大过渡效果如何实现?抽离为通用性组件时,如何实现类vue中的具名插槽效果,来替换下方文字信息区域?不同页面中的列表区域宽度不同,有的页面列表还是弹性宽度,常用的flex布局无法满足要求,如何实现呢?边界卡片放大后,如何避免被父级列表容器overflow:hidden`隐藏掉?实现解析

这个动效,在爱奇艺官网也有类似效果,爱奇艺官网是通过生成初始状态卡片列表和鼠标放大卡片列表两套列表,然后通过动态计算放大卡片位置,相对于body进行绝对定位展示的。

本实现方案通过将卡片初始状态和放大状态,封装到一个组件中,通过两者间的相对关系,利用css自动完成对应关系,避免了大量的JS计算。

1. 放大效果实现

UI对该动效的要求实际就是鼠标视频放大播放,如果卡片初始状态也放置视频video,通过transition对同一元素进行scale放大也可以实现,但是这是一个列表,用户进入页面,就会同时加载多个视频,用户体验不是很好。

所以,实现方案就是卡片初始状态放置poster图片,鼠标经过时,在poster上方展示视频层(绝对定位),然后对视频执行animation动画来模拟放大效果。

卡片底部文字区域如何处理?

由于卡片初始状态下,底部文字区域在列表布局中是占位的,所以在卡片初始状态下,底部文字区域使用正常文档流。

卡片鼠标经过状态下,视频层的放大效果是以poster中心点为放大原点的,所以底部文字区域使用absolute定位,相对于player进行定位处理。

interfaceIItemData{src?:string;poster?:string;industry?:string;}interfaceIProps{posterClass:string;//poster区域宽高playerClass:string;//放大后视频宽高样式itemData:IItemData;children:{[key:string]:any};}lett:NodeJS.Timeout;constVideoItem:FC=({posterClass,playerClass,itemData,children,})=>{const[isHover,setIsHover]=useState(false);constonMouseEnter=()=>{t=setTimeout(()=>{//避免快速移动鼠标,造成视频无法隐藏问题setIsHover(true);},50);};constonMouseLeave=()=>{clearTimeout(t);setIsHover(false);};return(Top1
{isHover?({children?.playerBottom}
):null}{children?.posterBottom});};exportdefaultVideoItem;

.container{position:relative;.poster{position:relative;background-position:center;background-size:cover;background-repeat:no-repeat;.player{z-index:10;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0.929);animation:showPlayer0.2sease;animation-fill-mode:forwards;.playerBottom{width:100%;position:absolute;top:100%;left:0;box-shadow:0px6px16px-8pxrgba(0,0,0,0.08),0px12px48px16pxrgba(0,0,0,0.03);filter:drop-shadow(0px9px28pxrgba(0,0,0,0.05));}}}.posterBottom{width:100%;}}@keyframesshowPlayer{0%{transform:translate(-50%,-50%)scale(0.929);}100%{transform:translate(-50%,-50%)scale(1);}}

2. 抽离为通用组件时,卡片底部文字区域如何动态替换

整个卡片组件,底部的文字区域在不同的场景下可能是不同的,所以作为通用性组件,需要将这部分抽离,支持动态替换。

vue中最简单的方式,就是插槽,通过插槽从外部动态传入。但是react框架是不支持具名插槽的。所以,这个问题就转换成了,react如何实现具名插槽?

网上搜到了一种实现方式,通过传入一个object来实现,具体效果如下:

//cardList{{posterBottom:bottomInfo,playerBottom:bottomInfo,onClickPlayer:()=>{consturl=`${window.location.origin}/#/market/service/${item.itemId}`;window.open(url,"_blank");},}}//VideoItem{props.children?.playerBottom}{props.children?.posterBottom}

当然,具名插槽还有其它的实现方式,后面会专门写一篇文章总结学习下。

3. 列表容器如果是弹性布局时,每行的列数无法固定,flex布局无法满足

这个问题是一个通用性问题,在容器宽度不固定时,flex布局,每行最后一个元素无法选中设置样式,同时子元素个数不固定时,最后一行元素的间距会变大。

这种情况下,就需要grid布局大显身手了,以前很少用grid布局,这次也是学习到了,具体效果如下图:

在示例中,调整浏览器窗口大小,来实验弹性布局观看效果代码片段

image.png
4. 卡片放大后,可能会被容器设置的overflow:hidden给遮盖隐藏掉

目前放大效果的实现方式,放大的视频层是绝对定位的,参照物是每个卡片本身。所以在四周边界处的卡片,放大后,很容易被容器给遮盖。

处理方式也很简单,给容器多设置一些padding,让放大部分足够展示,然后用margin设置负值来调整布局

.container{margin-left:-20px;margin-right:-20px;padding-left:20px;padding-right:20px;}

总结

每个产品需求里,可能都会隐藏着自己的盲点,将效果做到极致,就能获得技术成长。在重复的需求里,多反思总结,寻找自己的提升点,这就是进步吧啊。

相关推荐

1.CSS 实现按钮点击动效的套路

2.年份数字拼图效果

3.跑马灯简单版

4.中心点靠近动画解析

标签: 初始状态 绝对定位 这个问题

延伸阅读

推荐阅读

环球速讯:卡片放大播放效果实现总结,不同元素间的放大过渡效果如何实现?

背景最近一段时间做了几个需求,其中涉及的素材列表展示,需要实现类似下方图片中的动效,暂且称之为【卡片放大播放动效】,具体细节如下:初

荣耀平板V8 Pro到手仅2499 环球新动态

荣耀平板V8Pro在元旦前夕发布,预售一段时间后日前开始了正式首销,现在这款旗舰平板首发优惠立减100元,到手价是2499元起,2499元就能入手全

南京GDP五年跨越五个千亿级台阶 挺进全国大中城市十强

(记者杨颜慈)1月10日上午,南京市第十七届人民代表大会第一次会议在南京人民大会堂开幕。南京承压前行、苦干实干,顶住了冲击、稳住了大局,全

新动态:三超新材(300554)1月9日主力资金净卖出750.44万元

截至2023年1月9日收盘,三超新材(300554)报收于27 35元,下跌2 63%,换手率6 49%,成交量4 97万手,成交额1 37亿元。

环球热头条丨软件付费已成为车企探寻收入增量新举措

[汽车之家行业]2012年,特斯拉ModelS在汽车行业首次运用OTA升级技术,开启了“软件定义汽车”的新篇章。经过近10年的发展,汽车市场已进入...

车e贷逾期4000还不起会影响征信吗

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天后上报给征信机构,因为有些借贷机构可

有钱花借款逾期八天还不起会上征信吗

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天后上报给征信机构,因为有些借贷机构可

巫溪县儿童抚养费多少

根据司法解释,夫妻双方协议离婚后,孩子的抚养费可按以下标准支付:1、有固定收入的,抚育费一般可按其月总收入的百分之二十至三十的比例给付

2022年 丹寨万达小镇接待游客683万人次

(本网记者彭典)1月6日,记者获悉,2022年度,丹寨万达小镇接待游客683万人次,比2021年上升0 1%,成为20

焦点关注:成兰铁路成川段全线接触线开架 工程进入攻坚阶段

【成兰铁路成川段全线接触线开架工程进入攻坚阶段】四川成都至甘肃兰州铁路成都至川主寺(简称成兰铁路成川段)首条接触线架设1月8日完成,这

华锋股份(002806.SZ):持股5%以上股东林程拟减持不超1.43%股份

格隆汇1月6日丨华锋股份(002806)(002806 SZ)公布,公司持股5%以上的股东、董事林程计划自本公告披露之日起15个交易日后的六个月内以集中竞价交易

世界快资讯丨COSE蔻赛引领中国个性化服务 亮相2022中关村论坛——美丽经济与可持续发展国际论坛

12月29日,由中国保健协会、国家市场监督管理总局发展研究中心、国家药品监督管理局信息中心、北京市药品监督管理局、北京市

二码合一助力门店高效经营会员,番茄口袋老会员转化环比提升40%

为了帮助商家提高收银效率,提升会员到店消费的体验感,有赞新零售特别上线了收款码会员码二码合一的支付后识别会员功能。在此功

美国防部新动作:28.5亿美元军事支持!德国:向乌提供“黄鼠狼”“爱国者”!暗杀?炸桥?英情报机构曝光|聚看点

据央视新闻1月6日报道,自俄乌冲突爆发以来,美国及其北约盟国持续向乌克兰输送武器。当地时间1月5日,白宫方面称,美国与德国就向乌克兰提供

全球关注:1月6日固态电池板块涨幅达2%

1月6日11点29分,固态电池板块指数报1729 565点,涨幅达2%,成交163 03亿元,换手率1 09%。板块个股中,涨幅最大的前5个股为:珈伟新能报5 32

广东新能源汽车产量占全国近两成-天天微头条

截至去年11月,全省累计建成高速服务区充电桩约2280个,具备建设条件的高速公路服务区已实现充电设施全覆盖。截至目前,全省已累计建成公共充

头条:2023年重庆属于低风险还是中风险?

2023年重庆属于低风险还是中风险?答:重庆目前是常态化防控区。重庆核酸检测价格:单人单检降至不高于每人份16元;多人混检统一降至每人份不高

南钢股份董秘回复:公司将紧跟国家和行业的政策动态,持续探索采用人民币作为跨境结算渠道-世界热点评

南钢股份(600282)01月06日在投资者关系平台上答复了投资者关心的问题。

全球微速讯:*ST吉艾1月5日开盘跌幅达5%

以下是*ST吉艾在北京时间1月5日09:26分盘口异动快照:1月5日,*ST吉艾开盘跌幅达5%,截至9点26分,报0 96元,成交2672 66万元,换手率3 32%。

山东管局持续深化互联网基础资源管理工作

为进一步规范和促进山东省互联网行业健康发展,山东省通信管理局严抓互联网网站备案管理,健全完善互联网基础资源管理体系,扎实开展网络环境

争分夺秒 这些医护坚守生命“最后一道防线”

本文转自:生活报生活报讯(记者周琳)“我今天好点了,你休息一下。”“咳咳咳,我还行,挺得住!”这样的对话每天都在重症医学科重复着。...

肥东县包公镇家庭医生联系方式_全球快播

肥东县包公镇家庭医生联系方式温馨提示居民朋友们,当您出现发热、咳嗽等症状,居家治疗不见好转时,可首选居住地附近的社区卫生服务中心就诊

沪滇情深!跨越千里只为“送医传技” 新资讯

“谢谢上海的医生!我的慢性病好多了!”这是黄浦区香山中医院外科柴媛媛医生和康复科王春烨医生为云南省普洱市半坡乡百姓送医送药时,收获...

昆明市晋宁区第二人民医院恢复核酸检测公告(时间+地点)-天天简讯

昆明市晋宁区第二人民医院恢复核酸检测公告晋宁区第二人民医院恢复核酸检测公告广大市民朋友:为适应疫情防控新形势,根据疫情防控工作要求,

今日热门!上海莱士:1月3日获融资买入2.27亿元,占当日流入资金比例26.2%

同花顺数据中心显示,上海莱士1月3日获融资买入2 27亿元,占当日买入金额的26 2%,当前融资余额11 36亿元,占流通市值的3 37%,超过历史60%分

碳基材料板块1月3日涨2.18%,国恩股份领涨,主力资金净流入5372.86万元

1月3日碳基材料板块较上一交易日上涨2 18%,国恩股份领涨。当日上证指数报收于3116 51,上涨0 88%。深证成指报收于11117 13,上涨0 92%。碳基

威高股份(01066):威高骨科拟10.3亿元收购威高新生医疗全部股权以扩大其现有客户群的产品范围

智通财经APP讯,威高股份发布公告,于2023年1月3日,该公司的附属公司山东威高骨科材料股份有限公司(威高骨科)与威高生物科技、威高富森、威高

2023广州黄埔区美团消费券其他区可以用吗? 当前速讯

2023广州黄埔区美团消费券其他区可以用吗?可以。使用方式:已领取的消费券可在“美团App-我的-红包卡券”或“大众点评App-我的-卡券”内查...

英超前瞻:主场势如破竹 阿森纳迎战喜鹊志在必得?

北京时间1月4日凌晨3:45,英超第19轮阿森纳主场迎战纽卡斯尔联。

2023涿州限行限号最新通知(限行区域+尾号+时间) 环球速讯

2023年涿州市不限行!!!最新消息:自2022年12月23日(星期五)起,涿州市暂停机动车尾号限行措施,重新启动时间根据大气污染防治形势等实际情况提

猜您喜欢

Copyright ©  2015-2022 华中服装网版权所有  备案号:京ICP备12018864号-26   联系邮箱:2 913 236 @qq.com