设置边框半径时,CSS在元素内绘制边框

时间:2014-09-10 09:34:57

标签: html css css3 css-shapes

我觉得标题很难理解,所以我会解释 我试图实现这种效果(来自.png文件):

这是半个周期,里面有黑线

enter image description here

无论我怎么努力,我都无法创造这条内线。

这是我到目前为止所得到的:

HTML

<div id='halfCycle'>
    <div id='halfCycleInner'>
    </div>
</div>

CSS

#halfCycle
{
    width: 23px;
    height: 43px;
    background-color: #383838;
    border-top-right-radius: 50px;
    border-bottom-right-radius: 50px;
    box-shadow: 2px 0 2px 0px #222;
}

#halfCycleInner
{
    position: relative;
    top: 1px;
    right:0px;
    width: 22px;
    height: 41px;
    background-color: #383838;
    border-top-right-radius: 60px;
    border-bottom-right-radius: 60px;
    border-right-width: 1px;
    border-right-color: #212121;
    border-right-style: solid;
    box-sizing: border-box;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
}

这是DEMO

它非常接近,但不一样。 知道如何制作这条内线。

2 个答案:

答案 0 :(得分:2)

您可以使用伪元素并为其指定边框:

<强> DEMO

HTML:

<div id='halfCycle'></div>

CSS:

#halfCycle
{
    width: 23px;
    height: 43px;
    background-color: #383838;
    border-top-right-radius: 50px;
    border-bottom-right-radius: 50px;
    box-shadow: 2px 0 2px 0px #222;
    position:relative;
    overflow:hidden;
}
#halfCycle:after{
    content:'';
    position:absolute;
    top:1px; right:1px;
    width:42px;
    height:39px;
    border-radius:100%;
    border:1px solid #000;
}

答案 1 :(得分:1)

有一个解决方案,我希望它对你有用。

<强> DEMO

.halfCycle{
    background: #383838;
    height: 42px;
    width: 20px;
    border:1px solid #202020;
    border-radius: 0 60px 60px 0;
    border-left: none;
    position: relative; 
    box-shadow:5px 0px 5px 0px #222;
}   
.halfCycle:after{
    content: '';border:1px solid #383838;
    position: absolute;
    height: 44px;
    width: 21px;
    left:0;
    top:-2px;
    border-radius: 0 60px 60px 0;
    border-left:none;
}