【发布时间】:2022-01-01 03:06:50
【问题描述】:
我在 SVG 中有一个徽标(最小示例):
<svg class="hide-text" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 695 189.08">
<path d="1....">
<path d="2....">
<path d="3....">
</svg>
当.hide-text 类存在时,我想从 svg 元素中删除文本(标识)。
目前,我正在这样做:
.hide-text {
path {
&:nth-child(n+3):nth-child(-n+10), &:last-child { /* paths for text part */
display: none;
/* visibility: hidden; */
/* opacity: 0; */
/* d: path('0') !important; */
}
}
}
问题在于它们都只是“隐藏”了路径,而父 SVG 元素仍在占用空间!
(d 只能在 Chrome 中运行,这不好)
如何使用 CSS 删除一些路径?
更新
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 610.85 206.39">
<defs>
<style>.a{fill:#1d1d1b;}</style>
</defs>
<title>logotest</title>
<path class="a" d="M367.19,678.65H327.13v-89H300.82V557.23h94.7v32.38H367.19Z" transform="translate(-82.13 -472.67)"/>
<path class="a" d="M404.22,557.23h76.9v30.36H444.29v15.17h32.17V631.9H444.29v16.39h36.83v30.36h-76.9Z" transform="translate(-82.13 -472.67)"/>
<path class="a" d="M541.21,644h-1.82l-12.34,34.61H486.17l23.68-62.13-21-59.29h43.7L541.82,592h1.42l10.32-34.81h38.85l-19.22,59.5,22.46,61.92h-42.9Z" transform="translate(-82.13 -472.67)"/>
<path class="a" d="M664.65,678.65H624.58v-89h-26.3V557.23H693v32.38H664.65Z" transform="translate(-82.13 -472.67)"/>
<path class="a" d="M208.52,472.67,106.81,502.89,82.13,606.09l77,73,101.71-30.22,24.69-103.2Zm19.36,144.92-58.15,17.28-44-41.73,14.12-59L198,516.86l44,41.73Z" transform="translate(-82.13 -472.67)"/>
</svg>
【问题讨论】:
-
不太清楚您想要实现什么。您想隐藏
.hide-text父 AND 和其中的文本吗?请解释一下。 -
@azu 当父 SVG 元素具有
.hide-text类时,我想隐藏塑造文本的路径(路径 3~10 加上最后一个)。 -
实现这一点的理想方法是修改
viewBox,但不幸的是,viewBox 不是可样式化的属性。可以通过调整width、height和preserveAspectRatio来实现。但这取决于您的徽标设计和页面布局。如果没有看到其中任何一个,我们就无能为力了。考虑使用minimal reproducible example 更新您的问题。 -
@PaulLeBeau 我添加了一个示例图像。