- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在使用 CSS 在我的网站上玩弄形状,这一切都很好,但有时在操作它们时有点烦人,因为例如三 Angular 形,它实际上是一个带边框的矩形。
有关在 CSS 中创建形状的指南,我使用的是 CSS-tricks article关于它。
我想使用 CSS,因为它的加载速度比我使用图像要快。
几天过去了,我偶然发现了 SVG,我一直在网上看到它们,但从未深入研究过它们。所以,我想知道,使用 SVG 而不是这些 CSS“hacks”来实现我的形状会不会更简单。无法找到有关此特定主题的任何详细信息,因此非常感谢有关 SVG 的任何信息。(这些形状将超过 1000 像素宽,因此我不想使用图像...)
TL;DR:什么更好 - 跨浏览器/加载时间明智 - 当想要在网页上有形状时。我只是研究了 SVG,想知道它是否是一个可行的选择。
抱歉,下面是我目前正在使用的实现效果的代码,以及我希望实现的图像(不幸的是,设计图像的人没有提供设计代码,仅图片)。
来源图片
我的代码 (如果您不喜欢 sass,抱歉)
<div class="arrow-wrap">
<div class="arrow">
<div class="arrow-text">
<h1>Services</h1>
<p>Learn more about our services by selecting one below</p>
</div>
</div>
</div>
.arrow-wrap
overflow: hidden;
display: flex
justify-content: center
position: relative
z-index: 10
.arrow
width: 0
height: 0
border-style: solid
border-width: 150px 100vw 0 100vw
border-color: $dark transparent transparent transparent
position: relative
z-index: 1
display: flex
justify-content: center
.arrow-text
text-align: center
margin-top: -130px
white-space: nowrap
position: relative
z-index: 5
h1
font-size: 50px
margin: 0
p
margin: 0
color: rgba($white, 0.8)
因此,由于我不得不四处乱逛以使文本正常工作(在缩放方面仍然不完美),我想知道是否采用 SVG 的方式,也就是说,如果 SVG 是更高效地完成工作/加载时间。
还只是想 - 在顶部增加更多空间 - 添加实心框阴影以营造一种不规则五边形的错觉 ( Found on YouTube here )
最佳答案
同时使用。
将 CSS 用于基本形状。基本动画。 就像您提到的,当您使用 CSS 生成自定义形状时,您所做的只是添加框阴影的边框,以创建您想要的形状幻觉。有些人可能会说这不是 future 的证据,可能会在任何更新时中断。
将 SVG 用于更复杂的形状和动画。根据您实现 SVG 的方式,您可以做某些事情。您可以直接或通过 HTML img 标签嵌入它们,您甚至可以使用 javascript 库将它们注入(inject)到您的应用程序中。
SVG 可以通过操纵 svg 本身的样式来制作动画,但是这(取决于您的目标)可能会变成一个非常深的兔子洞。我对 SVG 动画的建议是使用 javascript 库。
我的建议是同时使用两者。首先感受一下 CSS。对我来说,如果你想要快速的东西,这条路似乎更容易学习。也可以尝试 SVG 我过去使用 SVG 库创建了一些很棒的效果,这些效果单独使用 CSS 是不可能的,它们甚至可以在 IE9 中工作(不再支持它)。
TLDR;
将 CSS 用于基本形状和动画。
将 SVG 用于高级形状和动画。
关于html - 我应该使用 CSS 还是 SVG 来显示形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37557757/
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
有两个 SVG 元素( SVG1 和 SVG2 ),其中 SVG1 是一个包含各种元素的大区域,会不时添加、删除和重新定位。另一方面,SVG2 需要用作 图标化表示(小) SVG1 的版本,非常小,但
我知道我们可以使用 document.createElementNS("http://www.w3.org/2000/svg","line"); 创建一个嵌入到html页面。 但是,这种方法似乎不适用
我正在尝试使用 Flutter SVG 依赖项,我将 svg 放入 Assets 中,在 pubspec.yaml 中设置,并在我的小部件中设置,但是,使用黑色容器加载 svg 我已经尝试过更改 sv
为什么这样的演示:http://jsbin.com/ejorus/2/edit,将元素嵌套在另一个元素内? JS
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在尝试在 SVG 中做一些非常简单的事情: 将整个视口(viewport)分成两个矩形 每个矩形的宽度应为视口(viewport)宽度的 50% 每个矩形的高度应为视口(viewport)高度的
我试图将 play svg 居中放置在 SVG 圆圈的中间,但似乎不知道该怎么做。 垂直和水平。 https://jsfiddle.net/c0qshm0t/17/ 最
是否可以使用一个 SVG 形状作为另一个形状的填充? 最佳答案 您想使用 SVG Pattern .见 this example : 注意
我在 SVG 中有一个非常简单的路径。 (预览:https://i.imgur.com/nVnxcRg.png) 我想要
我可以通过以下方式创建多边形: #!/usr/bin/env python from shapely.geometry import Polygon area = Polygon(((52, 13),
我使用 require 的 SVG 没有显示。 在我的终端中,svg Assets 被发出并且路径在我的 html 中正确设置。 但是,SVG 不会显示,而其他格式(如 jpg 或 png)可以显示
我在 SVG 混合模式中遇到了问题。我在 SVG 中有四个路径,我想用公式组合它们:(1*2) + (3*4),即路径 1 和路径 2 应该使用乘法模式混合,类似地路径 3 和路径 4 应该使用混合相
我无法超过 2 个级别。 (在 Iceweasel 和 Chromium 上尝试过。) 作为测试,我尝试了 this earlier reply 中提供的代码的变体。 .这个由 3 个单独的文件组成,
请引用以下组中的clip-path 组 ID -> “container_svg_symbolGroup1_0(即圆圈符号)在我删除图表中可见的剪辑路径时不可见。 问题是什么?为什么
使用联合 js 在 svg 中创建了一个文本区域。但是,我无法在文本区域中输入任何文本。如何使文本区域可编辑? 代码: var graph = new joint.dia.Graph;
您可以不受限制地停止和重复动画,但如果您重新启动一个不确定的动画,它将失去其累积值并从初始值开始。 也许我应该用一个例子来澄清;拿这个动画: 如果我停止此动画,并开始影响同一对象旋转的不同动画(
如果我在浏览器中显示常规 SVG(作为独立文件或嵌入在 HTML 中),在拥有大量单独的路径元素和一个巨大的路径元素之间在效率上是否有任何理论上的差异? 我正在考虑将某种动画从一张图片变成一张完全不同
logo的turtlegraphics的svg路径中是否有等价物? 而不是硬编码的 x 和 y 坐标,这也迫使我在移动更相对的“增量”方法时调整控制点。 我的解决方案应该适用于 FOCS(Firefo
目前正在使用 SVG 元素与一堆 元素将使它具有一种逐渐变细的边缘。我尝试了很多不同的 CSS 样式来解决这个问题,但没有任何效果。这是一个带有针迹的圆圈的代码:
我是一名优秀的程序员,十分优秀!