当前位置: 首页 > 科技观察

OpenHarmony——纯CSS实现的卡通狮子_0

时间:2023-03-12 01:49:43 科技观察

想了解更多开源请访问:开源基础软件社区https://ost.51cto.com前言我在工作在鸿蒙项目上的过程中,发现H5中使用的CSS样式的一些属性在鸿蒙上是不支持的,显示效果不一样,所以做了一个卡通狮子,帮助我更好的理解CSS在鸿蒙中的用法.效果展示实现步骤1.耳朵使用clip-path属性,即裁剪创建的元素的可显示区域。区域内的部分显示,区域外的部分隐藏。传入的两个值代表其裁剪的半径。at后面的两个值分别代表crop的x轴和y轴坐标。.ear{宽度:70px;高度:70px;边界半径:40px;位置:绝对;顶部:10px;z-指数:9;剪辑路径:椭圆(100%100%at-20%-10%);background-color:rgb(247,190,123);}同样,类似半圆的body也是通过clip-path:ellipse实现的。2.鼻子鼻子是由一个三角形组成的,也就是设置宽高为0,简单的使用border属性来完成,设置border-width来代替block的宽高,但是里面的block由四个小三角形组成,因为排列顺序是上、右、下、左,所以只需要给其中一个角指定颜色,就可以实现一个三角形。.nose{宽度:0;高度:0;位置:绝对;左:50%;顶部:50%;转换:翻译(-50%,-50%);边框宽度:20px30px;边框样式:实心;边距顶部:80px;z-指数:30;border-color:rgb(89,60,62)transparenttransparenttransparent;}3.尾巴主要是border实现的,画一个矩形div块,让它旋转一个角度,然后就画其中一个border,然后使用border-radius:108px103px,使其弯曲。尾巴摆动动画:尾巴的力量来自于尾巴的根部,所以要从根部做一个轻微摇摆的旋转动画。所以使用了transform-origin属性,它可以让你改变一个元素变形的原点,比如root如果你想发力,那么直接设置为transform-origin:50%100%也可以这样写作为变换原点:中心底部。.tail{宽度:300px;高度:300px;边框半径:108px130px;位置:绝对;左:-230px;顶部:-130px;边框宽度:30px;(248,210,163)透明透明;动画:1s摆动ease-in-out无限交替向前;transform-origin:50%100%;}@keyframeswagging{0%{transform:rotate(125deg)translateX(0)translateY(0px);}100%{变换:旋转(130度)translateX(15px)translateY(-15px);}}完整代码1,hml部分

</div>2、csspart.main{transform:scale(0.5);}/*头部样式*/.head{width:375px;高度:375px;z-index:99;}/*头部轮廓样式样*/.hair{width:360px;身高:360px;边界半径:180px;位置:绝对;左:50%;顶部:50%;转换:翻译(-50%,-50%);background-color:rgb(109,81,80);}/*面部样式*/.face{width:160px;高度:220px;边框半径:65px;位置:绝对;左:50%;顶部:50%;转换:翻译(-50%,-50%);background-color:rgb(247,190,123);}/*头发样式*/.face.hair{width:120px;高度:100px;边界半径:40px;位置:绝对;顶部:5px;左:20px;box-shadow:120px00#6D5150;}/*耳朵样式*/.ear{width:70px;高度:70px;边界半径:40px;位置:绝对;顶部:10px;z-指数:9;剪辑路径:椭圆(100%100%at-20%-10%);背景色:rgb(247,190,123);}.leftEar{左:-52px;}.rightEar{右:-52px;transform:rotate(90deg);}/*眼睛样式*/.eye{width:40px;高度:40px;边界半径:20px;位置:腹肌奥特;顶部:35%;背景色:白色;}.eyes{宽度:20px;高度:20px;边界半径:20px;位置:绝对;左:50%;顶部:50%;转换:翻译(-50%,-50%);background-color:rgb(89,60,62);}.leftEye{left:15px;}.rightEye{right:15px;}/*鼻子样式*/.nose{width:0;高度:0;位置:绝对;左:50%;顶部:50%;转换:翻译(-50%,-50%);边框宽度:20px30px;边框样式:实心;边距顶部:80px;z-指数:30;border-color:rgb(89,60,62)transparenttransparenttransparent;}/*嘴巴样式*/.mouth{width:50px;高度:50px;位置:绝对;左:50%;顶部:50%;转换:翻译(-50%,-50%);margin-top:65px;}.mouths{width:46px;高度:50px;边界半径:20px;边框宽度:3px;边框样式:实心;位置:绝对;上:8px;}.mouthLeft{左:-21px;边框颜色:透明rgb(89,60,62)rgb(89,60,62)透明;}.mouthRight{右:-21px;border-color:transparenttransparentrgb(89,60,62)rgb(89,60,62);}/*胡须样式*/.mouthdiv{width:36px;高度:3px;位置:绝对;背景色:rgb(89,60,62);}.mouthTopLeft{left:-35px;顶部:25px;变换:旋转(8度);}.mouthTopRight{右:-35px;顶部:25px;变换:旋转(-8deg);}.mouthBottomLeft{左:-35px;顶部:40px;transform:rotate(-2deg);}.mouthBottomRight{right:-35px;顶部:40px;transform:rotate(2deg);}/*身体样式*/.body{width:340px;高度:280px;位置:绝对;边界半径:160px;左:50%;顶部:340px;转换:translateX(-50%);剪辑路径:椭圆(200%60%在50%0%);背景色:rgb(189,146,93);}.bodyLine{width:90px;高度:200px;位置:绝对;顶部:-5px;左:50%;转换:translateX(-50%);背景颜色:rgb(219,169,108);}/*腿部和爪子样式*/.hand{width:55px;高度:280px;位置:绝对;背景色:rgb(248,210,163);}.handBefore{position:absolute;宽度:90px;高度:90px;背景色:rgb(247,190,123);顶部:110px;转换:translateX(-50%);border-radius:50px;}.handLeftBefore{left:100px;}.handRightBefore{right:11px;}.handLeftAfter{right:-85px;背景色:rgb(228,174,112);}.handRightAfter{left:5px;背景色:rgb(228,174,112);}.handLeft{left:75px;顶部:-50px;}.handLeft.handAfter{margin-left:-95px;}.handRight{right:75px;top:-50px;}.handRight.handAfter{margin-left:177px;}/*尾巴样式*/.tail{width:300px;高度:300px;边框半径:108px130px;位置:绝对;左:-230px;顶部:-130px;边框宽度:30px;边框样式:实心;边框颜色:透明rgb(248,210,163)transparen透明;动画:1s摆动ease-in-out无限交替向前;transform-origin:50%100%;}.tail-lil{宽度:60px;高度:55px;背景色:rgb(109,81,80);位置:绝对;左:205px;底部:0;border-radius:40px;}.tail-kil{width:0;高度:0;边框样式:实心;:透明rgb(109,81,80)透明透明;边界半径:14px;位置:绝对;底部:-42px;左:178px;变换:旋转(-62deg);}@keyframes摇摆{0%{变换:旋转(125deg)translateX(0)translateY(0px);}100%{变换:旋转(130度)translateX(15px)translateY(-15px);}}总结一下鸿蒙的css:1.不支持子元素选择器,不支持伪类选择器,不支持通配符选择器。2.border-radius单位只能用px,不能用%。3、min-height单位不能用vh,只能用px。4.background-image属性值必须使用none或url()。了解更多开源知识,请访问:开源基础软件社区https://ost.51cto.com。