如何使 CSS 像 `<legend>` 和 `<fieldset>` 的水平角一样锐利的“V”?

Posted

技术标签:

【中文标题】如何使 CSS 像 `<legend>` 和 `<fieldset>` 的水平角一样锐利的“V”?【英文标题】:How do I make CSS sharp "V" like horizontal corners for `<legend>` and `<fieldset>`? 【发布时间】:2017-09-23 02:49:41 【问题描述】:

如何在 CSS 中制作像水平角一样的尖锐“V”? 看起来像这样的角 好像角在&lt;legend&gt;&lt;fieldset&gt; 中都出现在左右两侧。

#FieldsetSeekBox 
  padding: 8px 1px;
  border: 1px solid #a1a1a1;


#LegendStyle 
  border-style: none;
  background-color: #a1a1a1;
  font: bold 13px Tahoma, Arial, Helvetica;
  color: #000000;
  padding-left: 10px;
  position: relative;
  border-radius: 8px 8px 0px 0px;
<fieldset id="FieldsetSeekBox">
  <legend id="LegendStyle">&nbsp; Web Search &nbsp;</legend>
  <input type="text" name="u" size="70" value="" placeholder="Type your Search here and click Search..." id="SeekBox">
</fieldset>

【问题讨论】:

我不确定我明白你的意思,所以最好有一张照片 【参考方案1】:

一般情况下,你需要用css伪元素:before:after来设置一些内容。然后通过设置顶部/底部的边框宽度,您可以创建一个三角形。

参见css-triangle 演示,或以下示例。

#FieldsetSeekBox 
  padding: 8px 1px;
  border: 1px solid #a1a1a1;


#LegendStyle 
  border-style: none;
  background-color: #a1a1a1;
  font: bold 13px Tahoma, Arial, Helvetica;
  color: #000000;
  padding-left: 10px;
  position: relative;


#LegendStyle:after 
  content: " ";
  display: block;
  position: absolute;
  right: -10px;
  top: 0;
  border-top: 8px solid transparent;
  border-bottom: 8px solid transparent;
  border-left: 10px solid #a1a1a1;
<fieldset id="FieldsetSeekBox">
  <legend id="LegendStyle">&nbsp; Web Search &nbsp;</legend>
  <input type="text" name="u" size="70" value="" placeholder="Type your Search here and click Search..." id="SeekBox">
</fieldset>

【讨论】:

谢谢它是完美的。我还将这两个切换为:before 代码left: -10px; border-right: 10px solid #a1a1a1;。效果很好。

以上是关于如何使 CSS 像 `<legend>` 和 `<fieldset>` 的水平角一样锐利的“V”?的主要内容,如果未能解决你的问题,请参考以下文章

如何用CSS让文字显示在边框上

围绕图例的厚字段集圆角边框

如何使用 react-native 设计字段集图例

如何在 <table> 中添加 <legend>

CSS可变宽度元素填充空间

如何使像css这样的元素相对但有间距