搜尋

首頁  >  問答  >  主體

重寫後的標題為:CSS 3形狀:「反向圓形」或「剪切圓形」

<p>我想創造一個形狀,我將其描述為「反圓」:</p> <p>該圖像在某種程度上不準確,因為黑線應該沿著 div 元素的外部邊框繼續。 </p> <p>這是我目前擁有的示範:http://jsfiddle.net/n9fTF/</p> <p>使用沒有映像的 <code>CSS</code> 是否有可能? </p>
P粉979586159P粉979586159459 天前429

全部回覆(2)我來回復

  • P粉680087550

    P粉6800875502023-08-25 13:34:04

    我無法從你的繪圖中真正看出你想要的點有多圓,但有一種可能性: http://jsfiddle.net/n9fTF/6/

    #

    如果點需要更圓,您需要在末端放置一些圓圈,以便它們與大湯匙融合。

    回覆
    0
  • P粉391677921

    P粉3916779212023-08-25 12:22:15

    更新:CSS3 徑向背景漸層選項

    (對於那些支援它的瀏覽器 - 在 FF 和 Chrome 中測試 - IE10,Safari 也應該可以工作)。

    我最初的答案中的一個「問題」是那些沒有紮實背景的情況。此更新創建了相同的效果,允許圓圈與其反向切口之間存在透明的「間隙」。

    查看範例小提琴

    CSS

    #
    .inversePair {
        border: 1px solid black;
        display: inline-block;    
        position: relative;    
        height: 100px;
        text-align: center;
        line-height: 100px;
        vertical-align: middle;
    }
    
    #a {
        width: 100px;
        border-radius: 50px;
        background: grey;
        z-index: 1;
    }
    
    #b {
        width: 200px;
        /* need to play with margin/padding adjustment
           based on your desired "gap" */
        padding-left: 30px;
        margin-left: -30px;
        /* real borders */
        border-left: none;
        -webkit-border-top-right-radius: 20px;
        -webkit-border-bottom-right-radius: 20px;
        -moz-border-radius-topright: 20px;
        -moz-border-radius-bottomright: 20px;
        border-top-right-radius: 20px;
        border-bottom-right-radius: 20px;
        /* the inverse circle "cut" */
        background-image: -moz-radial-gradient(
            -23px 50%, /* the -23px left position varies by your "gap" */
            circle closest-corner, /* keep radius to half height */
            transparent 0, /* transparent at center */
            transparent 55px, /*transparent at edge of gap */
            black 56px, /* start circle "border" */
            grey 57px /* end circle border and begin color of rest of background */
        );
        background-image: -webkit-radial-gradient(-23px 50%, circle closest-corner, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 55px, black 56px, grey 57px);
        background-image: -ms-radial-gradient(-23px 50%, circle closest-corner, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 55px, black 56px, grey 57px);
        background-image: -o-radial-gradient(-23px 50%, circle closest-corner, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 55px, black 56px, grey 57px);
        background-image: radial-gradient(-23px 50%, circle closest-corner, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 55px, black 56px, grey 57px);
    }
    

    原始答案

    花了比我預期更多的努力來使z 索引正常工作(這似乎忽略了負z-索引),但是,這提供了一個漂亮乾淨的外觀 (在IE9、FF、Chrome 中測試):

    HTML

    <div id="a" class="inversePair">A</div>
    <div id="b" class="inversePair">B</div>

    CSS

    #
    .inversePair {
        border: 1px solid black;
        background: grey;
        display: inline-block;    
        position: relative;    
        height: 100px;
        text-align: center;
        line-height: 100px;
        vertical-align: middle;
    }
    
    #a {
        width: 100px;
        border-radius: 50px;
    }
    
    #a:before {
        content:' ';
        left: -6px;
        top: -6px;
        position: absolute;
        z-index: -1;
        width: 112px; /* 5px gap */
        height: 112px;
        border-radius: 56px;
        background-color: white;
    } 
    
    #b {
        width: 200px;
        z-index: -2;
        padding-left: 50px;
        margin-left: -55px;
        overflow: hidden;
        -webkit-border-top-right-radius: 20px;
        -webkit-border-bottom-right-radius: 20px;
        -moz-border-radius-topright: 20px;
        -moz-border-radius-bottomright: 20px;
        border-top-right-radius: 20px;
        border-bottom-right-radius: 20px;
    }
    
    #b:before {
        content:' ';
        left: -58px;
        top: -7px;
        position: absolute;
        width: 114px; /* 5px gap, 1px border */
        height: 114px;
        border-radius: 57px;
        background-color: black;
    } 
    

    回覆
    0
  • 取消回覆