纯CSS实现常见UI效果《详细介绍》
时间:2023-03-31 11:18:48
CSS
切图,是大多数前端使用的自嘲标题。相信很多人在平时写页面的时候,大部分时间都花在了剪图、排图等等。这里不是否定切图本身,而是质疑:一直切图对自己功力的增长有什么好处?想想UI丢给你一个好看的界面,但是你只需要一个img标签,或者一个background-image属性就搞定了,但是以后某处需要调整一些外观(颜色,文字等),你不是要让UI修改之前的材质,然后替换吗?这样就完全受制于UI,不能发挥自己的主动性。那么,如何打破这个僵局呢?很简单,如果你擅长CSS,你就不需要做裁图这种枯燥的工作了。那些界面和元素是你自己亲手创造的。虽然创造它们可能需要付出一些努力,但带来的回报也是巨大的。您不仅可以自由控制您创建的元素,还可以大大提高您的CSS技能。在用纯CSS实现这些效果之前,笔者先介绍几个常用的SCSSMixins和一个强大的武器,用它们来制作会事半功倍——cover@mixincover($top:0,$left:0,$宽度:100%,$高度:100%){位置:绝对;顶部:$顶部;左:$左;宽度:$宽度;height:$height;}当你想基于原始元素时复制代码你将在“复制”一个元素并将其覆盖在它上面时使用它-inset@mixininset($inset:0){position:absolute;顶部:$插图;左:$插图;右:$插图;bottom:$inset;}复制代码同理,这是在原元素的基础上复制一个元素,但是这个元素的位置与原元素相同,大小会在原元素的基础上增减。例如,如果你想创建多个不同半径的同心圆,这个Mixin会很有帮助。aqua.cssaqua.css是作者开源的一个优雅、轻量级的CSS框架。里面有很多常用的组件和常用的样式类。用它来写CSS体验会很爽。在codepen上,作者准备了一个aqua.css模板,你可以用它来制作CSS。常见的UI效果Stripeeffect首先,我们要把握“frame”这个词,如何制作特殊的frame?如果通用的CSS属性无法实现,可以考虑使用伪元素来实现。思路是这样的:在原元素下创建一个背景为条纹的伪元素,并保证原元素将其覆盖,从而模拟边框的效果。那么如何创建条纹背景呢?这里我们将使用repeating-linear-gradient来实现Loremipsum...
复制code.border-stripe{--stripe-width:0.5rem;--条纹度:-45度;--stripe-color-1:var(--grey-color-1);--stripe-offset-1:2px;--stripe-color-2:var(--skin-color-2);--stripe-offset-2:1rem;--条纹半径:15px;--stripe-in??set:calc(var(--stripe-width)*-1);&::before{@includeinset(var(--stripe-in??set));内容:””;z-指数:-1;背景:重复线性渐变(var(--stripe-deg),var(--stripe-color-1)0var(--stripe-offset-1),var(--stripe-color-2)0var(--stripe-offset-2));边界半径:var(--条纹半径);}}复制代码为了保证复用性,抽象成border-stripe类,里面的值可以通过css变量动态调整gloss一看到gloss的效果,相信你可能会想到一个关键作用——径向渐变,通过它我们可以创建放射状的图案,而光泽只是放射状的,根据可以叠加的背景的特性,可以轻松实现光泽效果
ShineButton1ShineButton2 复制代码:root{--blue-color-1:#08123d;--gold-color-1:#dcb687;--brown-color-1:#50301f;--brown-color-2:#936237;--gold-grad-1:radial-gradient(50%5%的圆,#{transparentize(白色,0.5)},#eba262),#eba262;--gold-grad-2:linear-gradient(88deg,#e7924e0%,#f8ffee50%,#e7924e100%);--blue-grad-1:radial-gradient(圆在50%5%,#{transparentize(white,0.8)},#091344),#091344;--primary-color:var(--blue-grad-1);--info-颜色:var(--gold-grad-1);}.btn{&-primary{border:4pxsolidvar(--gold-color-1);span{background-image:var(--gold-grad-2);}}&-info{颜色:var(--brown-color-1);边框:无;}&-depth{box-shadow:0-5px0var(--brown-color-2);CopyCodeIrregularShape首先我们观察一下上图中的丝带形状是由哪些基本形状组成的:中间一个长方形,长方形下面2个三角形,左右两边各切一个长方形提到裁剪,就可以想到属性clip-path,这样问题就迎刃而解了
PureCSSRibbon