首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >胶囊形状使用边界半径没有固定的宽度或高度?

胶囊形状使用边界半径没有固定的宽度或高度?
EN

Stack Overflow用户
提问于 2013-09-13 20:45:18
回答 5查看 63K关注 0票数 90

是否有可能在没有固定宽度或高度的情况下,用边界半径制作胶囊形状?

我希望左边和右边是完全圆形的,而胶囊将保持直线沿着它的水平长度。将半径设置为50%似乎没有达到预期的效果。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-09-13 21:00:21

在许多浏览器(IE9+、FF、Chrome)上使用非常大的边框半径似乎是可行的,比如大卫的小提琴http://jsfiddle.net/cthQW/1/模式

代码语言:javascript
运行
复制
border-radius: 500px;
票数 142
EN

Stack Overflow用户

发布于 2013-09-13 20:49:15

是的,这是可能的(尽管我只在Chromium28/Ubuntu12.10中测试过):

代码语言:javascript
运行
复制
div {
    /* this is the only relevant part: */
    border-radius: 20%/50%;

    /* this is irrelevant, and just so the element can be visualised/displayed: */
    width: 50%;
    height: 5em;
    margin: 2em auto;
    background-color: #000;
}

JS Fiddle演示

很明显,重要的信息是20%/50%属性值;20%是半径的“水平长度”,而50%是“垂直长度”;使用两种不同的测量方法给出了一条向边界的椭圆曲线,而不是一次测量,从而产生了更圆的半径。显然,这需要对您自己的需求进行一定程度的调整。

参考文献:

票数 22
EN

Stack Overflow用户

发布于 2015-09-04 14:32:30

如果使用百分比,则使用元素宽度来计算半径。要获得胶囊状元素,您需要传递给border-radius属性单元,如rempx (我不知道原因,但它有效)。这就是它在传递500 is 时工作的原因。如果需要,可以对line-heightborder-radius属性使用相同的值。

代码语言:javascript
运行
复制
.capsule {
    line-height: 48px;
    border-radius: 48px;
}

这里有一个CodePen的例子。尝试更改变量$label-height,以查看按钮高度变化时形状是如何保持的。

在本例中,不需要设置元素的宽度或高度。您只需调整内容的heightpadding即可。

填充属性对于设置内容和组件边框之间的分隔非常有用。如果我只设置左边的垫子,看它是什么样子。

如果设置容器的line-height属性,则将自动设置容器高度,并同时将内容集中在容器内。

如果要将组件的宽度设置为组件的内容宽度,可以将组件的显示属性设置为inline-block,并使用FlexBox将其安排在列中。然后,将左右边距设置为auto,以避免元素增长到其父宽度。

如果要在组件之间留出空间,则可以在连续组件之间设置margin-top属性。

代码语言:javascript
运行
复制
.capsule + .capsule {
    margin-top: 15px;
}

希望它有帮助:)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18794947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档