,直接上案例,某高端设计师设计了一个一款让前端头疼的活动页面。如图:
波浪线不可以动为了让前端开发更清楚的理解。
素材拆分案例分析:
设计给的轮播图是矩形,波浪线是一个png,gif就是gif。
需求是,轮播图不可以出现在波浪线下方,gif不可以出现在波浪线上方。
前提条件是我们不可以做一个这样的gif,设计师是不会提供给我的。
不提供不规则边框透明背景的gif所以,我们的png波浪线,永远在轮播图和fig图之上。
如果轮播在gif图之上:
错误1:轮播过程,轮播图没有被遮住如果gif在轮播图之下:
错误2:fig若在轮播之上,移动的时候超过了波浪线解决方案:
从div的概念来考虑,我们的浪线.png只能跟一个元素在一起,就假设浪线.png和那个gif图在一起吧。他俩组成了一个不规则边框的div。
第一步:不规则裁剪div——-webkit-clip-path: polygon()属性。
我们知道,-webkit-clip-path可以用来裁剪div,使他成为一个不规则边框的不安分的div。
白色区域是被 -webkit-clip-path 裁剪的不规则边框的div原理分析:
裁剪出不规则div,用浪线png盖住就可以实现了具体实现:
DOM元素,注意看注释使出吃奶的力气计算出了-webkit-clip-path各点的坐标。
css代码部分结果+bug:
初步结果看似很完美,图片的轮播和gif跳动互不影响,实际上有一个致命的bug就是我的-webkit-clip-path里面单位是以px来设置的,如果窗口大小改变了,浪线图的宽高等比缩放了,但是切割的坐标点还是px~
视口改变,对应不上解决方法:
改为百分比布局,-webkit-clip-path切割里面的坐标都以%为单位。
前提条件是:如果窗口发生了变化,这个div的宽高比例永远是一致的。
要求div宽高比例一致css实现div宽高等比缩放:
使用padding-top或者padding-bottom来实现div随着窗口变化宽高等比缩放。
原理:把div高度设置为0,padding-top是相对于div高度,比如,div宽度是400px,那么他的padding-top就是200px;
所以,padding-top来撑开这个div
width: 100%;
height: 0px;
padding-top: 26%;
将div设为等比缩放,再把单位都改成百分比。按照一个尺寸来调试,昨晚之后,就可以兼容不同尺寸了,修改如下:
都设置为百分比效果对比:
1679px宽度屏幕显示 1151px 宽度屏幕显示完美解决了GIF动画和轮播图动画互不干扰。
如有更好方法请私信我,跪谢~
网友评论