gpt4 book ai didi

css - 是否可以使用 SVG 矩形作为具有可变高度的 HTML 元素的边框

转载 作者:太空宇宙 更新时间:2023-11-04 03:10:28 24 4
gpt4 key购买 nike

我正在尝试使用 SVG 在宽度固定但高度灵活的 HTML block 周围创建虚线边框。我非常接近但无法显示底部。

这是一个fiddle ( fiddle 包含 SVG 图像,因此它可以内联 URL 编码元素,具体来说 #%23)

SVG 代码如下所示:

<svg width="300px" height="100%" xmlns="http://www.w3.org/2000/svg">
<rect x="5" y="5" width="290" height="100%"
style="fill: yellow; fill-opacity: 0.5; stroke: #009fe3; stroke-width: 3; stroke-linecap: round; stroke-dasharray: 1 7"/>
</svg>

像这样的 CSS:

div.block {
box-sizing: border-box;
padding: 10px;
width: 300px;
background-image: url("dotted-border.svg");
}

我想我想要的是从底部偏移矩形,但它需要是一个像素值(5px)。随着更广泛的 SVG 2 采用 ( http://www.w3.org/Graphics/SVG/WG/wiki/Proposals/Stroke_position ),我想要的看起来会变得微不足道,因为这样笔划就可以定位在形状内。

我知道我可以添加另一张图片并使用 CSS :after,但我很好奇!

最佳答案

为什么不使用简单的 CSS 边框呢?

div.block {
box-sizing: border-box;
padding: 10px;
width: 300px;
background-image: url("data:image/svg+xml;utf8,<svg width='300px' height='100%' xmlns='http://www.w3.org/2000/svg'><rect x='5' y='5' width='290' height='100%' style='fill: yellow; fill-opacity: 0.5; stroke: %23009fe3; stroke-width: 3; stroke-linecap: round; stroke-dasharray: 1 7'/></svg>");
}

div.block2 {
box-sizing: border-box;
padding: 4px;
margin:3px;
width: 294px;
background-color:rgba(255,255,0,0.5);
border:3px dotted #009fe3;
}

/* Alternative method using CSS3 border-image: */
div.block3 {
box-sizing: border-box;
padding: 4px;
margin:3px;
width: 294px;
background-color:rgba(255,255,0,0.5);
border:8px solid transparent;
-webkit-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAbklEQVR4nGL4W8zBMJAYmbMCiJ9C8Qosimkijyz5Hw2vQNNME3mYgqdYFDxFMoBm8oPGAQMeBQOeCAdFNhxwB4yWA6PlwGg5MODZcMAdMFoOjJYDo+XAgGfDAXfAaDkwWg6MlgMDggEAAAD//wMAIRKl6nQ6gLIAAAAASUVORK5CYII=) round;
-o-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAbklEQVR4nGL4W8zBMJAYmbMCiJ9C8Qosimkijyz5Hw2vQNNME3mYgqdYFDxFMoBm8oPGAQMeBQOeCAdFNhxwB4yWA6PlwGg5MODZcMAdMFoOjJYDo+XAgGfDAXfAaDkwWg6MlgMDggEAAAD//wMAIRKl6nQ6gLIAAAAASUVORK5CYII=) round;
border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAbklEQVR4nGL4W8zBMJAYmbMCiJ9C8Qosimkijyz5Hw2vQNNME3mYgqdYFDxFMoBm8oPGAQMeBQOeCAdFNhxwB4yWA6PlwGg5MODZcMAdMFoOjJYDo+XAgGfDAXfAaDkwWg6MlgMDggEAAAD//wMAIRKl6nQ6gLIAAAAASUVORK5CYII=) round;
border-image-slice: 25%;
}
<div class="block">
<article>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque quasi officia vero aut. Velit ratione sapiente fugiat rerum eos ipsa praesentium autem similique vitae reprehenderit et tempora optio eveniet facilis. (SVG)</article>
</div>
<p></p>
<div class="block2">
<article>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque quasi officia vero aut. Velit ratione sapiente fugiat rerum eos ipsa praesentium autem similique vitae reprehenderit et tempora optio eveniet facilis. (CSS)</article>
</div>
<p></p>
<div class="block3">
<article>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque quasi officia vero aut. Velit ratione sapiente fugiat rerum eos ipsa praesentium autem similique vitae reprehenderit et tempora optio eveniet facilis. (CSS3)</article>
</div>

关于css - 是否可以使用 SVG 矩形作为具有可变高度的 HTML 元素的边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29624087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com