将字段集图例与 Bootstrap 一起使用

yuvru6vn  于 2022-12-07  发布在  Bootstrap
关注(0)|答案(8)|浏览(155)

我正在为我的JSP页面使用Bootstrap。
我想在窗体中使用 <fieldset><legend>。这是我的代码。

<fieldset class="scheduler-border">
    <legend class="scheduler-border">Start Time</legend>
    <div class="control-group">
        <label class="control-label input-label" for="startTime">Start :</label>
        <div class="controls bootstrap-timepicker">
            <input type="text" class="datetime" id="startTime" name="startTime" placeholder="Start Time" />
            <i class="icon-time"></i>
        </div>
    </div>
</fieldset>

CSS是

fieldset.scheduler-border {
    border: 1px groove #ddd !important;
    padding: 0 1.4em 1.4em 1.4em !important;
    margin: 0 0 1.5em 0 !important;
    -webkit-box-shadow:  0px 0px 0px 0px #000;
            box-shadow:  0px 0px 0px 0px #000;
}

legend.scheduler-border {
    font-size: 1.2em !important;
    font-weight: bold !important;
    text-align: left !important;
}

我得到的输出类似于

我希望以以下方式输出

我试着加上

border:none;
width:100px;

到CSS中的legend.scheduler-border。我得到了预期的输出。但问题是我想为另一个字段添加另一个 <fieldset>。这一次图例中的文本宽度是一个问题,因为它比100px长。
那么,我应该做些什么来获得我所提到的输出呢?(不删除图例文本)

wnrlj8wa

wnrlj8wa1#

这是因为Bootstrap默认将legend元素的宽度设置为100%。您可以通过将legend.scheduler-border更改为也使用以下内容来解决此问题:

legend.scheduler-border {
    width:inherit; /* Or auto */
    padding:0 10px; /* To give a bit of padding on the left and right */
    border-bottom:none;
}

JSFiddle example
您还需要确保您的自定义样式表是在Bootstrap * 之后 * 添加的,以防止Bootstrap覆盖您的样式--尽管此处您的样式应该具有更高的特异性。
您可能还希望将margin-bottom:0;添加到其中,以减小图例和分隔线之间差距。

7ivaypg9

7ivaypg92#

在bootstrap 4中,在fieldset上设置一个与图例混合的边框要容易得多。你不需要自定义css来实现它,可以这样做:

<fieldset class="border p-2">
   <legend  class="w-auto">Your Legend</legend>
</fieldset>

如下所示:

rqenqsqc

rqenqsqc3#

在Bootstrap 5中,对应用于图例的默认样式的修改会导致与使用Bootstrap 4获得的渲染不同的渲染,然后必须添加float-none作为<legend>标记的类:

<fieldset class="border p-2">
   <legend  class="float-none w-auto">Your Legend</legend>
</fieldset>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"/>
<form>
<fieldset class="border p-2">
   <legend  class="float-none w-auto p-2">Your Legend</legend>
   <input type="text">
</fieldset>
</form>

第一个

cwdobuhd

cwdobuhd4#

我遇到了这个问题,我用这种方法解决了这个问题:

fieldset.scheduler-border {
    border: solid 1px #DDD !important;
    padding: 0 10px 10px 10px;
    border-bottom: none;
}

legend.scheduler-border {
    width: auto !important;
    border: none;
    font-size: 14px;
}
mzmfm0qo

mzmfm0qo5#

我有一个不同的方法,使用bootstrap面板来显示它更丰富一点。只是为了帮助别人和改进答案。
第一个
这将给予下面的外观。

注意:我们需要更改样式以使用不同的页眉大小。

hujrc8aj

hujrc8aj6#

我只是想简单总结一下上面所有的正确答案,因为我花了很多时间来找出哪个答案能解决问题,以及幕后发生了什么。
fieldset与bootstrap似乎存在两个问题:

  1. bootstraplegend的宽度设置为100%。这就是为什么它覆盖fieldset的上边框。
  2. legend有一个bottom border
    因此,我们需要解决的是将图例宽度设置为自动,如下所示:
legend.scheduler-border {
   width: auto; // fixes the problem 1
   border-bottom: none; // fixes the problem 2
}
1rhkuytd

1rhkuytd7#

第一个
如果您找不到任何在bootstrap 5中使用图例标记的适当解决方案
你可以在legend标签中使用CSS属性作为替代方案。

style="margin-top:-15px; background-color: white; color: black;"

另外,在margin-top的fieldset标记中添加以下行

style="margin-top: 30px !important;"

我希望这是一个非常简单的解决方案,以获得图例风格与bootstrap 5

c3frrgcw

c3frrgcw8#

<fieldset  class="border p-2 form-group">
   <legend class="control-label customer-legend pl-1">Your Legend</legend>
</fieldset>

使用css:

.customer-legend:before {
    left: 100px;
}

相关问题