创建圆角很容易,但当涉及到对边缘应用不同的曲线和对拐角应用不同的曲线时,border-radius
的灵活性有些有限。我有一个形状(不确定它的名字...),我想创建,理想情况下,只使用CSS。
考虑以下形状:
我已经在border-radius
中尝试过各种值,但我相当有信心它需要的不仅仅是border-radius
。我也考虑过应用某些transform
的,但没有一个可用的转换似乎是合适的。
有谁能建议一个CSS技巧,将允许一个创建这种形状?或者,或者,我如何在HTML5画布中创建这个形状?
我所尝试的
- 我已经尝试过
border-radius
的组合值,例如20% / 30%
,但没有能够得到所需的形状 - 我还尝试了各种
transform
值,但没有一个可用的转换似乎是合适的
***注意1:***伪元素可能在这里不起作用,因为a)最终形状将用作图像的遮罩,b)我需要对形状应用渐变(作为边界)
***注2:****为了说明的目的,我已经添加了一个梯度到图像,因为我需要应用一个边界到这个形状。然而,实际的渐变类型和颜色将与所示的不同。只要我可以添加渐变,我就可以应用必要的样式来确保渐变正确 *
2条答案
按热度按时间b5buobof1#
我相信你正在使用的形状可能被称为“squircle”。无论如何,如果你可以创建它作为一个矢量,那么你可以创建一个使用SVG的头像面具。
例如,您可以在矢量编辑程序中创建一个方形形状,并将其用作剪辑路径。
HTML/SVG
CSS
这里是as a codepen
编辑
要添加渐变边框,可以在squircle中使用第二个路径。图像上的简单边框不起作用,因为它围绕矩形图像的边缘并被切断。这是一个带有渐变边框的背景方块,里面有一个蒙版图像。
HTML/SVG
brccelvz2#
SVG渐变笔划
SVG支持笔划/边框填充渐变。
因此,您可以只裁剪
<image>
元素,并将渐变笔划直接应用于蠕动形状,而不是使用两个裁剪元素:SVG:用图片填充方形
您也可以使用图像
<pattern>
来填充您的squercle形状,而不是裁剪。参见"Fill SVG path element with a background-image"
CSS:剪辑 Package 元素和图片
我们需要将裁剪过的图像 Package 在一个元素中,该元素也用相同的squercle裁剪过。
笔划宽度由填充值设置。
渐变填充由父对象的背景颜色定义。
另请参阅“如何创建带边框的Squircle?“