Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >TryShape 背后的故事,CSS 剪辑路径属性的展示

TryShape 背后的故事,CSS 剪辑路径属性的展示

作者头像
玖柒的小窝
修改于 2021-09-10 09:32:43
修改于 2021-09-10 09:32:43
2.1K00
代码可运行
举报
文章被收录于专栏:各类技术文章~各类技术文章~
运行总次数:0
代码可运行

我喜欢形状,尤其是彩色的!网站上的形状与背景颜色、图像、横幅、部分分隔符、艺术品等属于同一类别:它们可以帮助我们理解上下文并通过可供性告知我们的行动。

几个月前,我开发了一个应用程序,让我 7 岁的女儿学习数学。除了基本的加法和减法之外,我的目标是用形状来提出问题。那时我熟悉了 CSSclip-path属性,这是一种在网络上制作形状的可靠方法。然后,我最终使用clip-path.

我将带您了解TryShape背后的故事,以及它如何帮助创建、管理、共享和导出形状。在此过程中,我们将介绍很多关于 CSSclip-path的内容,以及它如何帮助我快速构建应用程序。

这里有几个重要的链接:

一、CSSclip-path属性和形状

想象一下,你有一张普通的纸和一支铅笔,可以在上面画一个形状(比如一个正方形)。你将如何进行?最有可能的是,您将从一个点t开始,然后画一条线到达另一个点,然后再重复三次以回到初始点。你还必须确保你有相反的线条parallelsame长度。

因此,形状的基本要素是点、线、方向、曲线、角度和长度等。CSSclip-path帮助指定许多这些属性来剪辑 HTML 元素的区域以显示特定区域。显示剪切区域内的部分,隐藏其余部分。它为开发人员提供了大量使用剪辑路径属性创建各种形状的机会。

了解有关剪裁及其与蒙版的不同之处的更多信息

形状创建的剪辑路径值

clip-path属性接受以下用于创建形状的值:

  • circle()
  • ellipse()
  • inset()
  • polygon()
  • 一个剪辑源使用url()函数
  • path()

我们需要稍微了解一下基本坐标系才能使用这些值。在clip-path元素上应用该属性来创建形状时,我们必须考虑 x 轴、y 轴和(0,0)元素左上角的初始坐标。

这是一个div带有 x 轴、y 轴和初始坐标的元素(0,0)

初始坐标(0,0)与 x 轴和 y 轴

现在让我们使用该circle()值来创建一个圆形。我们可以使用此值指定圆的位置和半径。例如,要在坐标位置(70, 70)裁剪一个半径为 70px 的圆形,我们可以将clip-path属性值指定为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
clip-path: circle(70px at 70px 70px)

因此,圆心位于(70, 70)半径为 70px的坐标处。现在,只有这个圆形区域被裁剪并显示在元素上。元素的其余部分被隐藏以创建圆形的印象。

圆的中心位于 (70, 70) 坐标处,并裁剪了 70px x 70px 的区域。因此显示了完整的圆圈。

接下来,如果我们想指定在 的位置(0,0)怎么办?在这种情况下,圆的中心(0,0)位于半径为 70px的位置。这使得元素内仅可见圆的一部分。

圆的中心位于 (0, 0) 坐标处,70px x 70px 区域剪裁了圆的左下角区域。

让我们继续使用其他两个基本值,inset()polygon()。我们使用插图来定义矩形。我们可以指定四个边中的每一个可能必须从元素中剪切一个区域的间隙。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
clip-path: inset(30px)

上面的clip-path值通过从元素的边缘去掉 30px 值来裁剪一个区域。我们可以在下图中看到。我们还可以为每条边指定不同的插入值。

inset()功能允许我们从形状的外边缘进行裁剪和区域。

接下来是polygon()价值。我们可以使用一组顶点创建一个多边形。拿这个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
clip-path: polygon(10% 10%, 90% 10%, 90% 90%, 10% 80%)

在这里,我们指定一组顶点来创建用于裁剪的区域。下图显示了创建多边形的每个顶点的位置。我们可以指定任意数量的顶点。

polygon() 函数允许我们使用传递给它的一组顶点来创建多边形形状。

接下来,让我们看看ellipse()url()值。该ellipse()值通过指定两个半径值和一个位置来帮助创建形状。在下图中,我们在半径所在的位置看到一个椭圆,(50%,50%)形状为 70 像素宽和 100 像素高。

我们需要指定两个半径值和一个位置来创建椭圆。

url()是一个 CSS 函数,用于指定clip-path元素的 ID 值以呈现 SVG 形状。请看下面的图片。我们已经使用clipPathpath元素定义了一个 SVG 形状。您可以使用clipPath元素的 ID 值作为url()函数的参数来呈现此形状。

在这里,我们使用url()函数创建一个心形

此外,我们可以直接在path()函数中使用路径值来绘制形状。

这里我们使用 path() 函数创建一个曲线形状。

好吧。我希望您已经了解不同的clip-path财产价值。有了这样的理解,让我们来看看一些实现并尝试使用它们。这是给你的钢笔。请使用它来尝试添加、修改值以创建新形状。

让我们谈谈 TryShape

是时候谈谈 TryShape 及其背景故事了。TryShape 是一款开源应用程序,可帮助创建、导出、共享和使用您选择的任何形状。您可以创建横幅、圆形、艺术作品、多边形并将它们导出为 SVG、PNG 和 JPEG 文件。您还可以创建一个 CSS 代码片段以在您的应用程序中复制和使用。

TryShape 是使用以下框架和库(clip-path当然还有 )构建的:

  • CSSclip-path:我们已经讨论过这个很棒的 CSS 属性的力量。
  • Next.js:最酷的基于 React 的框架。它帮助我创建页面、组件、交互和 API 以连接到后端数据库
  • HarperDB:一个灵活的数据库,用于存储数据并使用 SQL 和 No-SQL 交互查询它们。TryShape 在 HarperDB 云中创建了其架构和表。Next.js API 与架构和表交互,以从用户界面执行所需的 CRUD 操作。
  • Firebase:来自 Google 的身份验证服务。TryShape 使用它来使用 Google、GitHub、Twitter 和其他帐户进行社交登录。
  • react-icons:基于 React 的应用程序的所有图标的一个商店
  • date-fns:用于日期格式化的现代轻量级库
  • axios:从 React 组件轻松调用 API
  • styled-components:一种从 React 组件创建 CSS 规则的结构化方式
  • react-clip-pathclip-path在 React 应用程序中处理属性的自产模块
  • react-draggable:使 HTML 元素在 React 应用程序中可拖动。TryShape 使用它来调整形状顶点的位置。
  • downloadjs : 从 JavaScript 触发下载
  • html-to-image:将 HTML 元素转换为图像(包括 SVG、JPEG 和 PNG)
  • Vercel:最适合托管 Next.js 应用程序
使用 CSS 在 TryShape 中创建形状 clip-path

让我重点介绍有助于使用 CSSclip-path属性创建形状的源代码。下面的代码片段定义了Box300像素正方形的容器元素 ( )的用户界面结构。该Box元素有两个子元素,ShadowComponent

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Box 
  height="300px" 
  width="300px" 
  onClick={(e) => props.handleChange(e)}>
  { 
    props.shapeInformation.showShadow && 
    <Shadow 
      backgroundColor={props.shapeInformation.backgroundColor} 
      id="shapeShadow" /> 
  }
  <Component 
    formula={props.shapeInformation.formula} 
    backgroundColor={props.shapeInformation.backgroundColor} 
    id="clippedShape" />
</Box>

Shadow组件定义了被clip-path剪裁隐藏的区域。我们创建它以显示浅色背景,以使最终用户可以部分看到该区域。该Component是到指定clip-path的值,显示剪切区域。

见的风格,组件定义BoxShadow以及Component下面:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// The styled-components code to create the UI components using CSS properties

// The container div
const Box = styled.div`
  width: ${props => props.width || '100px'};
  height: ${props => props.height || '100px'};
  margin: 0 auto;
  position: relative;
`;

// Shadow defines the area that is hidden by the `clip-path` clipping
// We show a light color background to make this area partially visible.
const Shadow = styled.div`
  background-color: ${props => props.backgroundColor || '#00c4ff'};
  opacity: 0.25;
  position: absolute;
  top: 10px;
  left: 10px;
  right: 10px;
  bottom: 10px;
`;

// The actual component that takes the `clip-path` value (formula) and set
// to the `clip-path` property.
const Component = styled.div`
  clip-path: ${props => props.formula}; // the formula is the clip-path value
  background-color: ${props => props.backgroundColor || '#00c4ff'};
  position: absolute;
  top: 10px;
  left: 10px;
  right: 10px;
  bottom: 10px;
`;

裁剪后显示形状(可见区域和隐藏区域)的组件。

请随时查看GitHub 存储中的整个代码库

TryShape 的未来范围

TryShapeclip-path在后台使用 CSS 创建和管理基本形状时效果很好。导出形状和 CSS 代码片段以在您的 Web 应用程序中使用会很有帮助。它具有增长的潜力,具有更多有价值的功能。首要的是能够创建具有弯曲边缘的形状。

为了支持曲线形状,我们需要在 TryShape 中支持以下值:

  • 使用url()和的剪辑源
  • path().

借助这些值,我们可以使用 SVG 创建形状,然后使用上述值之一。这是url()使用 SVG 支持创建形状的CSS 函数示例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="heart">Heart</div>
<svg>
  <clipPath id="heart-path" clipPathUnits="objectBoundingBox">
    <path d="M0.5,1
      C 0.5,1,0,0.7,0,0.3
      A 0.25,0.25,1,1,1,0.5,0.3
      A 0.25,0.25,1,1,1,1,0.3
      C 1,0.7,0.5,1,0.5,1 Z" />
  </clipPath>
</svg>

然后,CSS::

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.heart {
  clip-path: url(#heart-path);
}

现在,让我们使用该path()值创建一个形状。HTML 应该有一个类似 div 的元素:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="curve">Curve</div>

在 CSS 中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.curve {
  clip-path: path("M 10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80");
}

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CSS clip-path 属性
clip-path 是CSS中的一个神奇属性,它能够让你像魔术师一样,对网页元素施展“裁剪魔法”——只展示元素的一部分,隐藏其余部分。想象一下,不用依赖图片编辑软件,直接在浏览器中就能实现元素的各种不规则形状裁剪。✨
空白诗
2024/06/14
2670
CSS clip-path 属性
仅用 CSS 实现赛博朋克 2077 风格视觉效果
《赛博朋克2077》 是一款动作角色类游戏,于 2020年12月10日 登陆各大游戏平台。故事发生在夜之城,权力更迭和身体改造是这里不变的主题。玩家将扮演一名野心勃勃的雇佣兵:V,追寻一种独一无二的植入体——获得永生的关键。它以自由的探索性,较高的操控度以及惊艳的视觉特效收获了一大批玩家。我非常喜欢 2077 官网的设计风格,因此本篇文章主要以 2077 官网为例,通过几个例子,依次实现赛博朋克风格元素效果。
zz_jesse
2021/07/30
5910
2 分钟搞定 3 个现代 CSS 特性
Clip Paths 能把元素元素“裁剪”成特定形状,使用 CSS 提供的 polygon、circle、ellipse 等这些函数实现。举个例子:
Javanx
2020/02/14
5450
每天一个小技巧:CSS clip-path 的妙用 Clip Path分类Clippy
CSS 的 clip-path 属性是 clip 属性的升级版,它们的作用都是对元素进行 “剪裁”,不同的是 clip 只能作用于 position 为 absolute 和 fixed 的元素且剪裁区域只能是正方形,而 clip-path 更加强大,可以以任意形状去裁剪元素,且对元素的定位方式没有要求。基于这样的特性,clip-path 常用于实现一些炫酷的动画效果。
MudOnTire
2020/07/22
4.2K0
每天一个小技巧:CSS clip-path 的妙用
                            Clip Path分类Clippy
CSS 的快乐:画一个可爱的三只小鸟 Button
今天我们就一起来画下这个可爱的 Button 吧!纯 CSS,没用到图片和 JS 呦~
神说要有光zxg
2023/02/01
5670
学习css的clip-path属性
clip-path 是 CSS 的一个属性,它允许你定义一个剪裁区域,用于裁剪元素的显示区域。这个剪裁区域可以是基本形状、SVG 路径、或是外部图像等。被裁剪的元素只会显示在定义的剪裁区域内,超出部分会被隐藏。
心安事随
2024/07/29
1810
学习css的clip-path属性
七夕,当然少不了纯CSS的点缀啦
单身的程序猿或准备脱单的程序猿怎么办,常规操作是const girl = new Object(),没对象就自己创建一个对象过节呗。可是笔者今天想用纯CSS为单调的七夕做一些点缀呢。
JowayYoung
2020/08/26
4070
七夕,当然少不了纯CSS的点缀啦
分享14 个非常实用的CSS技巧
英文 | https://ishratumar.medium.com/14-awesome-css-properties-you-need-to-know-9cee5b364990
前端达人
2022/11/25
1.1K0
分享14 个非常实用的CSS技巧
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
在群里会有同学问相关的问题,怎么样使用 CSS 实现一个内切角按钮呢、怎么样实现一个带箭头的按钮呢?
玖柒的小窝
2021/12/03
1.4K0
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
CSS奇思妙想之-利用CSS裁剪(clip-path)完成各种图形
在日常开发当中,如果想要开发多边形,一般都需要多个盒子或者伪元素的帮助,有没有一直办法能只使用一个盒子实现呢?
肥晨
2023/04/23
1.8K0
CSS 实现“故障”特效
这些效果要是综合运用到业务中应该很吸引眼球。今日早读文章由腾讯@chokcoco投稿分享。
Nealyang
2020/02/19
2.3K0
CSS 实现“故障”特效
30个CSS碎片——这不仅仅是皮囊!
今天小师妹将给大家分享一部由CSS技术实现的作品。它将再一次证明CSS的强大力量。
程序员老鱼
2022/12/02
5900
奇妙的 CSS shapes(CSS图形)
CSS 发展到今天已经越来越强大了。其语法的日新月异,让很多以前完成不了的事情,现在可以非常轻松的做到。今天就向大家介绍几个比较新的强大的 CSS 功能: clip-path shape-outside shape 的意思是图形,CSS shapes 也就是 CSS 图形的意思,也就是使用 CSS 生成各种图形(圆形、矩形、椭圆、多边形等几何图形)。 CSS3之前,我们能做的只有矩形,四四方方,条条框框。 CSS3 CSS3出来后,我们有了更广阔的施展空间,通过 border-radius border
Sb_Coco
2018/05/28
1.5K0
CSS Painting API
本文是 CSS Houdini 之 CSS Painting API 系列第四篇。
Sb_Coco
2022/12/19
1.1K0
CSS Painting API
CSS样式clip-path绘制图形裁剪图片
发现clip-path绘制图形的网站 http://bennettfeely.com/clippy/ 专门介绍clip-path的使用,几乎任何形状都可以做出来,下面使用clip-path制作正三边形至正八边形以及其它图形的方法,并且有些正多边形需要通过一定的计算,顺便放了计算公式。通过应用这些正多边形和其它的形状的实现方法来学习clip-path这个样式。
小弟调调
2018/10/18
1.8K0
CSS样式clip-path绘制图形裁剪图片
纯CSS实现的文字效果竟然可以这么酷炫!
CSS是一门很特殊的语言,你认为CSS只能用来控制网页的结构与样式,但只要你有丰富的想象力,就能创造无限可能。
程序员老鱼
2022/12/02
2.1K0
每个前端开发需要了解的15个强大的CSS属性
这篇文章介绍了15个重要的CSS属性,旨在提高读者的CSS知识和技能。文章以清晰的方式解释了每个属性的作用和用法,并提供了相应的示例代码。通过这篇文章,读者可以了解到一些有趣且实用的CSS属性。
前端小智@大迁世界
2023/07/22
2940
每个前端开发需要了解的15个强大的CSS属性
CSS 奇思妙想边框动画
今天逛博客网站 -- shoptalkshow[1],看到这样一个界面,非常有意思:
微芒不朽
2022/09/13
9260
那些不常见,但却非常实用的css属性(整理不易)
可以把 块容器 中的内容限制为指定的行数。并且在超过行数后,在最后一行显示"..."
winty
2020/06/16
2.4K0
那些不常见,但却非常实用的css属性(整理不易)
【前端艺术】纯CSS3鼠标hover图片条纹遮罩层动画效果源码
这是一款纯CSS3鼠标hover图片条纹遮罩层动画特效。该特效在鼠标悬停图片上面时,背景遮罩层变形为棱形,中间显示图片,旁边是紫色条纹。同时展示图片的描述文字和链接图标等。
用户5997198
2019/08/09
1.3K0
【前端艺术】纯CSS3鼠标hover图片条纹遮罩层动画效果源码
相关推荐
CSS clip-path 属性
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验