温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用CSS实现常见的UI效果

发布时间:2021-08-07 21:47:35 阅读:137 作者:chen 栏目:web开发
前端开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要介绍“怎么用CSS实现常见的UI效果”,在日常操作中,相信很多人在怎么用CSS实现常见的UI效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用CSS实现常见的UI效果”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

覆盖 - cover

@mixin cover($top0, $left0, $width100%, $height100%) {    position: absolute;    top: $top;    left: $left;    width: $width;    height: $height;  }

当你想在原先元素的基础上再“复制”一个元素,并将其覆盖在它身上时,你将会用到它

怎么用CSS实现常见的UI效果

demo地址:https://codepen.io/alphardex/pen/GRjEoBZ

嵌入 - inset

@mixin inset($inset0) {    position: absolute;    top: $inset;    left: $inset;    right: $inset;    bottom: $inset;  }

同样地,这也是在原先元素基础上复制出一个元素,只不过这个元素位置和原先的元素相同,大小会基于原先的元素而增减。

举个例子,倘若你想创建多个半径不同的同心圆,这个Mixin将会很有帮助

aqua.css

aqua.css是笔者开源的一个优雅的、轻量级的CSS框架。里面有很多常用的组件以及常用的样式类,用它来写CSS体验将会非常爽

在codepen上,笔者准备了一个aqua.css模版,大家可以用它来进行CSS的创作

常见UI效果

条纹效果

怎么用CSS实现常见的UI效果

2

首先,我们要抓住“边框”这个词,如何创作出一个特殊的边框呢?如果一般的CSS属性实现不了的话,可以考虑用伪元素来实现,思路如下:在原先的元素下方创建一个有条纹背景的伪元素,并保证原先元素覆盖住它就行,这样就模拟了边框的效果。

那么如何创建条纹背景呢?这里我们将使用repeating-linear-gradient来实现它

<div class="card w-80">    <div class="border-stripe rounded-xl">      Lorem ipsum...    </div>  </div>
.border-stripe {    --stripe-width0.5rem;    --stripe-deg: -45deg;    --stripe-color-1var(--grey-color-1);    --stripe-offset-12px;    --stripe-color-2var(--skin-color-2);    --stripe-offset-21rem;    --stripe-radius15px;    --stripe-insetcalc(var(--stripe-width) * -1);    &::before {      @include inset(var(--stripe-inset));      content"";      z-index: -1;      backgroundrepeating-linear-gradient(        var(--stripe-deg),        var(--stripe-color-10 var(--stripe-offset-1),        var(--stripe-color-20 var(--stripe-offset-2)      );      border-radiusvar(--stripe-radius);    }  }

为了保证复用性,这里将其抽象成了border-stripe类,里面的值都可以通过CSS变量来动态调节

demo地址:https://codepen.io/alphardex/pen/VwKWvdG

光泽效果

怎么用CSS实现常见的UI效果

一看到光泽,相信你可能会想到一个关键角色&mdash;&mdash;径向渐变,通过它,我们可以创作出放射状的图案,而光泽也恰好是放射状的,再根据背景可以叠加的特性,光泽效果就能轻松实现了

<div class="flex flex-col space-y-4">    <span class="btn btn-primary btn-round inline-flex">      <span class="font-bold text-grad">Shine Button 1</span>    </span>    <span class="btn btn-info btn-round btn-depth inline-flex">      <span class="font-bold">Shine Button 2</span>    </span>  </div>
:root {    --blue-color-1#08123d;    --gold-color-1#dcb687;    --brown-color-1#50301f;    --brown-color-2#936237;    --gold-grad-1radial-gradient(        circle at 50% 5%,        #{transparentize(white, 0.5)},        #eba262      ),      #eba262;    --gold-grad-2linear-gradient(88deg#e7924e 0%#f8ffee 50%#e7924e 100%);    --blue-grad-1radial-gradient(        circle at 50% 5%,        #{transparentize(white, 0.8)},        #091344      ),      #091344;    --primary-colorvar(--blue-grad-1);    --info-colorvar(--gold-grad-1);  }  .btn {    &-primary {      border4px solid var(--gold-color-1);      span {        background-imagevar(--gold-grad-2);      }    }    &-info {      colorvar(--brown-color-1);      border: none;    }    &-depth {      box-shadow0 -5px 0 var(--brown-color-2);    }  }

demo地址:https://codepen.io/alphardex/details/vYXZNez

不规则形状

怎么用CSS实现常见的UI效果

首先,让我们先观察一下上图的缎带形状是由哪些基本形状组成的:中间是一个矩形,矩形下方有2个三角形,左右2侧各有一个被裁切过的矩形。一提裁切,就能想到clip-path这个属性,于是问题也就很好解决了

<div class="ribbon">    Pure CSS Ribbon    <div class="block"></div>    <div class="block"></div>    <div class="block"></div>    <div class="block"></div>  </div>
.ribbon {    --ribbon-color-1var(--yellow-color-1);    --ribbon-color-2var(--yellow-color-2);    --ribbon-color-3var(--yellow-color-3);    position: relative;    padding0.5rem 1rem;    color: white;    backgroundvar(--ribbon-color-1);    .block {      &:nth-child(1),      &:nth-child(2) {        position: absolute;        bottom: -20%;        width20%;        height20%;        backgroundvar(--ribbon-color-2);        clip-pathpolygon(0 0100% 100%100% 0);      }     &:nth-child(1) {        left0;      }      &:nth-child(2) {        right0;        transformscaleX(-1);     }      &:nth-child(3),      &:nth-child(4) {        position: absolute;        z-index: -1;        top20%;        width40%;        height100%;        backgroundvar(--ribbon-color-3);        clip-pathpolygon(0 025% 50%0 100%100% 100%100% 0);      }      &:nth-child(3) {        left: -20%;      }      &:nth-child(4) {        right: -20%;        transformscaleX(-1);      }    } }

注意到有一行代码transform: scaleX(-1);,这起到了水平翻转的作用,它可以防止再写一遍clip-path

demo地址:https://codepen.io/alphardex/pen/OJRvaaR

浮雕效果

怎么用CSS实现常见的UI效果

通过仔细观察,你会发现这是由2个同心的元素组成的,于是自然就想到了inset这个Mixin。

创建了2个同心元素后,就要想办法来创建它们的浮雕光泽了。这里的光泽可以用box-shadow来实现,通过叠加多重阴影,我们就能模拟出浮雕的效果了

<div class="px-6 py-2 text-xl embossed cursor-pointer" data-text="浮雕按钮" style="--emboss-radius: 1.5rem">    浮雕按钮  </div>
:root {    --red-color-1#af2222;    --red-color-2#c1423e;    --red-color-3#c62a2a;    --red-color-4#951110;    --green-color-1#486433;    --green-color-2#2b361a;    --red-grad-1linear-gradient(      to right,      var(--red-color-150%,      var(--red-color-20    );  }  .embossed {    --emboss-radius1rem;    --emboss-out6px;    --emboss-out-minuscalc(var(--emboss-out) * -1);    --emboss-inset2px;    --emboss-inset-minuscalc(var(--emboss-inset) * -1);    --emboss-blur1px;    --emboss-bg-1var(--red-color-3);    --emboss-bg-2var(--green-color-1);    --emboss-color-1: white;    --emboss-color-2var(--red-color-4);    --emboss-color-3var(--green-color-2);    position: relative;    box-sizing: border-box;    white-space: nowrap;     &::before {      @include inset(var(--emboss-out-minus));      content"";      backgroundvar(--emboss-bg-1);      box-shadow: inset var(--emboss-inset-minus) var(--emboss-inset-minus)          var(--emboss-blur) var(--emboss-color-1),        inset var(--emboss-inset) var(--emboss-inset) var(--emboss-blur)         var(--emboss-color-2);      border-radiuscalc(var(--emboss-radius) + var(--emboss-out));    }    &::after {      @include inset;      @include flex-center;      contentattr(data-text);      color: white;      font-weight: bold;      backgroundvar(--emboss-bg-2);      box-shadow: inset var(--emboss-inset) var(--emboss-inset) var(--emboss-blur)          var(--emboss-color-1),        inset var(--emboss-inset-minus) var(--emboss-inset-minus)          var(--emboss-blur) var(--emboss-color-3);     border-radiusvar(--emboss-radius);    }  }

demo地址:https://codepen.io/alphardex/pen/poEEERM?editors=0110

到此,关于“怎么用CSS实现常见的UI效果”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://mp.weixin.qq.com/s/iL26vbXR7fPBSprTfA-_1A

AI

开发者交流群×