CSS高频出现的奇怪按钮样式总结

本篇文章基于一些高频出现在设计稿中的,使用 css 实现稍微有点难度和技巧性的按钮,讲解使用 css 如何尽可能的实现它们。希望对大家有帮助。

CSS高频出现的奇怪按钮样式总结

先让我们来看看这些经常会出现的按钮形状:

03.png

矩形与圆角按钮

立即学习“前端免费学习笔记(深入)”;

正常而言,我们遇到的按钮就这两种 — 矩形和圆角:

04.png

它们非常的简单,宽高和圆角和背景色。

    
rect
    
circle

登录后复制

.btn {    margin: 8px auto;    flex-shrink: 0;    width: 160px;    height: 64px;}.rect {    background: #f6ed8d;}.circle {    border-radius: 64px;    background: #7de3c8;}

登录后复制

梯形与平行四边形

接下来,基于矩形的变形,经常会出现梯形与平行四边形的按钮。

实现它们主要使用 transform 即可,但是要注意一点,使用了 transform 之后,标签内的文字也会同样的变形,所以,我们通常使用元素的伪元素去实现造型,这样可以做到不影响按钮内的文字。

平行四边形

使用 transform: skewX() 即可,注意上述说的,利用元素的伪元素实现平行四边形,做到不影响内部的文字。

Parallelogram

登录后复制

.parallelogram {    position: relative;    width: 160px;    height: 64px;    &::before {        content: "";        position: absolute;        top: 0;        left: 0;        bottom: 0;        right: 0;        background: #03f463;        transform: skewX(15deg);    }}

登录后复制

05.png

如果不想使用伪元素,除了 transform: skewX(),平行四边形使用渐变也是可以实现的。

大概就是这样:

{    background: linear-gradient(45deg, transparent 22%, #04e6fb 22%, #9006fb 78%, transparent 0);}

登录后复制

梯形

梯形比平行四边形稍微复杂一点,它多借助了 perspective,其实是利用了一定的 3D 变换。原理就是一个矩形,绕着 X 轴旋转,像是这样:

05.gif

使用  perspective 和 transform: rotateX() 即可,当然,它们可以合在一起写:

Trapezoid

登录后复制

.parallelogram {    position: relative;    width: 160px;    height: 64px;    &::after {          content:"";          position: absolute;          top: 0; right: 0; bottom: 0; left: 0;          transform: perspective(40px) rotateX(10deg);          transform-origin: bottom;          background: #ff9800;    }}

登录后复制

25.png

切角 — 纯色背景与渐变色背景

接下来是切角图形,最常见的方法主要是借助渐变 linear-gradient 实现,来看这样一个图形

登录后复制登录后复制

notching {    background: linear-gradient(135deg, transparent 10px, #ff1493 0);    background-repeat: no-repeat;}

登录后复制

结果如下,

24.png

基于此,我们只需要利用多重渐变,实现 4 个这样的图形即可,并且,利用 background-position 定位到四个角:

notching

登录后复制登录后复制

.notching {    background:         linear-gradient(135deg, transparent 10px, #ff1493 0) top left,        linear-gradient(-135deg, transparent 10px, #ff1493 0) top right,        linear-gradient(-45deg, transparent 10px, #ff1493 0) bottom right,        linear-gradient(45deg, transparent 10px, #ff1493 0) bottom left;    background-size: 50% 50%;    background-repeat: no-repeat;}

登录后复制

23.png

利用 clip-path 实现渐变背景的切角图形

当然,这个技巧有个问题,当要求底色是渐变色的时候,这个方法就比较笨拙了。

好在,我们还有另外一种方式,借助 clip-path 切出一个切角图形,这样,背景色可以是任意定制的颜色,无论是渐变还是纯色都不在话下:

notching

登录后复制登录后复制

.clip-notching {    background: linear-gradient(        45deg,        #f9d9e7,        #ff1493    );    clip-path: polygon(        15px 0,        calc(100% - 15px) 0,        100% 15px,        100% calc(100% - 15px),        calc(100% - 15px) 100%,        15px 100%,        0 calc(100% - 15px),        0 15px    );}

登录后复制

简单的实现一个渐变背景,接着核心就是,在渐变矩形图形的基础上,利用 clip-path: polygon() 切出我们想要的形状(一个 8 边形):

22.png

当然,上述代码非常容易联想到下述这种 6 边形,使用渐变和 clip-path 都可以轻松得到:

21.png

箭头按钮

接下来是箭头按钮,仔细观察上面的切角按钮,当两边的角被切掉的足够多的时候,就变成了一个箭头的形状。

我们可以利用两重渐变,实现一个单箭头按钮:

arrow

登录后复制

&.arrow {    background: linear-gradient(                -135deg,                transparent 22px,                #04e6fb 22px,                #65ff9a 100%            )            top right,        linear-gradient(                -45deg,                transparent 22px,                #04e6fb 22px,                #65ff9a 100%            )            bottom right;    background-size: 100% 50%;    background-repeat: no-repeat;}

登录后复制

一个箭头就出来了:

20.png

它是由上下两个渐变块组合得到的,换个颜色立马就能明白:

19.png

那如果是这样一个箭头造型呢?

18.png

一样的,它也是两个渐变的叠加,渐变的颜色是透明 –> 颜色A –> 颜色B –> 透明。当然,同样在这里也可以使用 clip-path:

这里给出 clip-path 的解法:

{    background: linear-gradient(45deg, #04e6fb, #65ff9a);    clip-path: polygon(        0 0,        30px 50%,        0 100%,        calc(100% - 30px) 100%,        100% 50%,        calc(100% - 30px) 0    );}

登录后复制

内切圆角

下面这个按钮形状,多出现于优惠券,最常见的解法,也是使用渐变,当然,与切角不同,这里使用的径向渐变。

首先,看这样一个简单的例子:

登录后复制登录后复制

div {    background-image: radial-gradient(circle at 100% 100%, transparent 0, transparent 12px, #2179f5 12px);}

登录后复制

可以得到这样一个图形:

17.png17.png

所以,只需控制下 background-size,在 4 个角实现 4 个这样的图形即可:

inset-circle

登录后复制登录后复制

&.inset-circle {    background-size: 70% 70%;    background-image: radial-gradient(            circle at 100% 100%,            transparent 0,            transparent 12px,            #2179f5 13px        ),        radial-gradient(            circle at 0 0,            transparent 0,            transparent 12px,            #2179f5 13px        ),        radial-gradient(            circle at 100% 0,            transparent 0,            transparent 12px,            #2179f5 13px        ),        radial-gradient(            circle at 0 100%,            transparent 0,            transparent 12px,            #2179f5 13px        );    background-repeat: no-repeat;    background-position: right bottom, left top, right top, left bottom;}

登录后复制

16.png

借助 mask 实现渐变的内切圆角按钮

如果背景色要求渐变怎么办呢?

假设我们有一张矩形背景图案,我们只需要使用 mask 实现一层遮罩,利用 mask 的特性,把 4 个角给遮住即可。

mask 的代码和上述的圆角切角代码非常类似,简单改造下即可得到渐变的内切圆角按钮:

inset-circle

登录后复制登录后复制

.mask-inset-circle {    background: linear-gradient(45deg, #2179f5, #e91e63);    mask: radial-gradient(            circle at 100% 100%,            transparent 0,            transparent 12px,            #2179f5 13px        ),        radial-gradient(            circle at 0 0,            transparent 0,            transparent 12px,            #2179f5 13px        ),        radial-gradient(            circle at 100% 0,            transparent 0,            transparent 12px,            #2179f5 13px        ),        radial-gradient(            circle at 0 100%,            transparent 0,            transparent 12px,            #2179f5 13px        );    mask-repeat: no-repeat;    mask-position: right bottom, left top, right top, left bottom;    mask-size: 70% 70%;}

登录后复制

这样,我们就得到了这样一个图形:

15.png

当然,读懂上述代码,你需要首先弄清楚 CSS mask 属性的原理。

圆角不规则矩形

下面这个按钮形状,也是最近被问到最多的,先来看看它的造型:

14.png

不太好给它起名,一侧是规则的带圆角直角,另外一侧则是带圆角的斜边。

其实,它就是由圆角矩形 + 圆角平行四边形组成:

13.png

所以,借助两个伪元素,可以轻松的实现它们:

Skew

登录后复制

.skew {    position: relative;    width: 120px;    &::after {        content: "";        position: absolute;        top: 0;        left: 0;        right: 0;        bottom: 0;        border-radius: 10px;        background: orange;        transform: skewX(15deg);    }    &::before {        content: "";        position: absolute;        top: 0;        right: -13px;        width: 100px;        height: 64px;        border-radius: 10px;        background: orange;    }}

登录后复制

12.png

由于一个伪元素叠加在另外一个之上,所以对其中一个使用渐变,一个则是纯色,其颜色是可以完美衔接在一起的,这样就实现了渐变色的该图形:

11.png

外圆角按钮

接下来这个按钮形状,常见于 Tab 页上,类似于 Chrome 的分页:

10.png

我们对这个按钮形状拆解一下,这里其实是 3 块的叠加:

09.png

只需要想清楚如何实现两侧的弧形三角即可。这里还是借助了渐变 — 径向渐变,其实他是这样,如下图所示,我们只需要把黑色部分替换为透明即可,使用两个伪元素即可:

08.png

代码如下:

outside-circle

登录后复制

.outside-circle {    position: relative;    background: #e91e63;    border-radius: 10px 10px 0 0;    &::before {        content: "";        position: absolute;        width: 20px;        height: 20px;        left: -20px;        bottom: 0;        background: #000;        background:radial-gradient(circle at 0 0, transparent 20px, #e91e63 21px);    }    &::after {        content: "";        position: absolute;        width: 20px;        height: 20px;        right: -20px;        bottom: 0;        background: #000;        background:radial-gradient(circle at 100% 0, transparent 20px, #e91e63 21px);    }}

登录后复制

即可得到:

07.png

上述的所有图形的完整代码,你可以在这里看到:CodePen Demo — CSS Various Button Shapes | CSS 各种造型按钮

总结一下

基于上述的实现,我们不难发现,一些稍微特殊的按钮,无非都通过拼接、障眼法、遮罩等方式实现。

而在其中:

渐变(线性渐变 linear-gradient、径向渐变 radial-gradient、多重渐变)

遮罩 mask

裁剪 clip-path

变形 transform

发挥了重要的作用,熟练使用它们,我们对于这些图形就可以信手拈来,基于它们的变形也能从容面对。

上述的图形,再配合 filter: drop-shadow(),基本都能实现不规则阴影。

再者,更为复杂的图形,如下所示:

06.png

还是切图吧,CSS 虽好,实际使用中也需要考虑投入产出比。

(学习视频分享:css视频教程)

以上就是CSS高频出现的奇怪按钮样式总结的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2940829.html

(0)
上一篇 2025年3月11日 21:48:05
下一篇 2025年3月11日 21:48:25

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 一篇文章读懂css单位就够了

    本篇文章给大家带来了关于css单位的相关知识,应该怎样去区分它们,在不同的情况下应该使用什么样的单位,希望对大家有帮助。 说起CSS单位,我们最熟悉的可能就是像素单位(px),它是一个绝对单位,也就是说一个10px的文字,放在哪里都是一样大…

    2025年3月11日 编程技术
    200
  • 仅仅使用HTML/CSS实现各类进度条的方式(整理分享)

    本篇文章给大家整理了仅仅使用html/css实现各类进度条的方式,希望对大家有帮助。 本文将介绍如何使用 HTML/CSS 创建各种基础进度条及花式进度条及其动画的方式,通过本文,你可能可以学会: 通过 HTML 标签 创建进度条 通过 H…

    2025年3月11日 编程技术
    200
  • 整理分享5种纯CSS实现炫酷的文字效果

    本篇文章给大家带来了5中非常炫酷的文字效果,这些效果全是利用css来实现的,希望对大家有帮助。 CSS是一门很特殊的语言,你认为CSS只能用来控制网页的结构与样式,但只要你有丰富的想象力,就能创造无限可能。 一.渐变文字效果 立即学习“前端…

    2025年3月11日 编程技术
    200
  • css和jquery有什么区别

    区别:1、css是一种用来表现HTML或XML等文件样式的计算机语言,而jquery是一套跨浏览器的JavaScript代码库;2、CSS选中元素后为该元素设置样式,jQuery选中元素后为该元素添加行为。 本教程操作环境:windows1…

    2025年3月11日
    200
  • 十分钟教你使用css实现烟雾效果

    本篇文章给大家分享怎样利用css实现烟雾的效果,希望对大家有帮助。 仔细观察烟雾效果,有两个比较重要的特点: 模糊效果 颗粒感 立即学习“前端免费学习笔记(深入)”; 首先看模糊效果,想到模糊,大部分同学首先都会想到使用 filter: b…

    2025年3月11日 编程技术
    200
  • 深入解析一下CSS架构之OOCSS

    本篇文章给大家带来了关于css架构oocss的相关知识,其中包括分离结构和皮肤、分离结构和内容等等总结,希望对大家有帮助。 面向对象编程 如果你有面向对象编程经验完全可以略过这一节。 在进入 OOCSS 的学习之前,我们要先了解下面向对象编…

    2025年3月11日
    200
  • 深入解析一下CSS架构之ACSS

    本篇文章给大家带来了关于css架构acss的相关知识,其中详细介绍了acss的概念、优势以及怎样选择acss库,希望对大家有帮助。 前言 我们知道现在前端开发模式,组件化是比较火的,那么 CSS 开发模式比较火的是什么呢,没错就是我们今天的…

    2025年3月11日 编程技术
    200
  • css上下文选择器的类型有什么

    css上下文选择器有四种类型:1、后代选择器,可选择当前元素的所有后代元素;2、父子选择器,可选择当前元素的所有子元素;3、同级相邻选择器,可选择拥有共同父级且相邻的元素;4、同级所有选择器,可选择拥有共同父级的后续所有元素。 本教程操作环…

    2025年3月11日
    200
  • css里定位是什么意思

    在css中,定位的意思是指定一个元素在网页上的位置,一般使用position属性来设置。css有5种定位方式:1、静态定位(static);2、绝对定位(absolute);3、相对定位(relative);4、固定定位;5、粘性定位。 本…

    2025年3月11日 编程技术
    200
  • css中后代选择器怎么用

    在css中,后代选择器用来选择特定元素或元素组的所有指定后代元素,需要将对父元素的选择放在前面,对子元素的选择放在后面,中间加一个空格分开,语法为“父元素 子元素{css样式}”。 本教程操作环境:windows7系统、CSS3&&…

    2025年3月11日 编程技术
    200

发表回复

登录后才能评论