多行填充文本,在CSS中带有外圆角和内圆角

问题描述 投票:0回答:1

我想在CSS中创建带有外圆角和内圆角的多行填充文本,如下图所示。对于外角有很多解决方案,但是内角(在图中用红色箭头标记)似乎要复杂得多。也许需要一些JavaScript?

enter image description here

javascript html css
1个回答
1
投票

对我来说,这是一个非常好的答案。https://stackoverflow.com/users/6400719/ines-montani的代码

HTML:

<div class="edit">Edit text below</div>

<h1>
    <div class="goo" contenteditable="true">This is an example of a simple headline or text with rounded corners using<br>a gooey SVG filter.</div>
</h1>

<!-- Filter: https://css-tricks.com/gooey-effect/ -->
<svg style="visibility: hidden; position: absolute;" width="0" height="0" xmlns="http://www.w3.org/2000/svg" version="1.1">
    <defs>
        <filter id="goo"><feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur" />    
            <feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 19 -9" result="goo" />
            <feComposite in="SourceGraphic" in2="goo" operator="atop"/>
        </filter>
    </defs>
</svg>

CSS:

:root {
    --color-bg: #34304c;
    --color-bg2: #534d7a;
    --color-highlight: #fff;
    --font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}

.goo {
    font-size: 3rem;
    line-height: 1.35;
    display: inline;
    box-decoration-break: clone;
    background: var(--color-highlight);
    padding: 0.5rem 1rem;
    filter: url('#goo');
}

.goo:focus {
    outline: 0;
}

.edit {
    display: inline-block;
    padding: 0.5rem 1rem;
    background: var(--color-bg2);
    text-transform: uppercase;
    font-size: 0.7rem;
    color: var(--color-highlight);
    border-radius: 1em;
}

body {
    padding: 7.5vh 100px 0 100px;
    font-family: var(--font);
    background: var(--color-bg);
}

enter image description here

链接到Codepen:https://codepen.io/ines/pen/NXbmRO

© www.soinside.com 2019 - 2024. All rights reserved.