使用 CSS 将按钮浮动到 select 框旁边的最佳方法是什么?
What is the best way to float a button next to a select box with CSS?
我有 button
浮动在 select
旁边,并且还添加了顶部 margin
但想看看是否有更好的方法来处理我的问题我正在努力实现。
Please reference the screen shot below.
这里是 html
我是如何做到的。有没有比使用 margin
top 更好的方法来实现这一点?有人进行了更改,它破坏了我的 32px
margin
。
我在这里浏览过类似的帖子,但似乎无法让这个按钮与之前帖子中给出的解决方案正确对齐。
谢谢。
<div class="input-group">
<s:select list="dnldrepoEmpGroupList" listKey="dnldrepoEmpGroupNo" listValue="folderName" name="entity.dnldrepoEmpGroup.dnldrepoEmpGroupNo" requiredLabel="true" label="Grouping" headerValue="--Select One--" headerKey="" />
<span class="input-group-btn">
<button name="addGroupingName" type="button" class="btn btn-primary" style="margin-top:32px;">Add</button>
</span>
</div>
这是所有html
<div id="ajaxResult">
<div id="downloadResult">
<div id="actionMessage">
<s:actionmessage cssClass="actionMessage" />
<s:actionerror cssClass="actionMessage ui-state-error" />
</div>
<div class="col-xs-12 col-sm-12 col-md-4" id="downloadTableResult">
<s:hidden name="entity.dnldrepoNo" />
<s:hidden name="entity.dwnldrepoType" />
<s:hidden name="entity.uploadUser.userNo" />
<s:hidden name="entity.dwnldrepoUploaddt" />
<s:set var="downloadType"
value="#{'Employer Download':'Employer Download', 'Temp Download':'Temp Download'}" />
<s:textfield name="entity.dwnldrepoDisplayname"
label="Display Name"
requiredLabel="true"/>
<s:if test="%{entity.dwnldrepoType == 'Temp Download'}">
<s:textarea name="entity.dnldrepolookups"
label="Email"
requiredLabel="true"/>
</s:if>
<s:if test="%{entity.dwnldrepoType == 'Employer Download'}">
<s:textfield data-display="%{entity.dnldrepoEmpGroup.employer.employerName}" name="entity.dnldrepoEmpGroup.employer.employerNo" id="clientKeyAutoComplete" label="Employer" />
<div class="input-group">
<s:select list="dnldrepoEmpGroupList" listKey="dnldrepoEmpGroupNo" listValue="folderName" name="entity.dnldrepoEmpGroup.dnldrepoEmpGroupNo" requiredLabel="true" label="Grouping" headerValue="--Select One--" headerKey="" />
<div class="input-group-append">
<button name="addGroupingName" type="button" class="btn btn-outline-secondary">Add</button>
</div>
</div>
</s:if>
</div>
<div class="col-xs-12 col-sm-12 col-md-4 rowData">
<div class="text-danger">
<s:property value="%{entity.dwnldrepoPointer}" />
</div>
<s:hidden name="entity.dwnldrepoPointer" />
<s:file name="entity.planFile" label="File Upload" />
<s:textfield name="entity.dwnldrepoRetain"
label="Retain Hours"
requiredLabel="true"
helpText="Enter 0 hours to retain forever"/>
</div>
</div>
这是我使用 Flexbox 解决方案以及 Bootstrap 4 文档中的解决方案时发生的情况。
此外,请注意,我们在此项目中使用 Struts,这些 Struts 输入产生以下内容,我怀疑这可能是我无法将解决方案发布到的原因工作。这是呈现文档时 Struts 生成的内容的片段。
<div class="form-group ">
<label class=" control-label" for="entity_dnldrepoEmpGroup_dnldrepoEmpGroupNo">Grouping
<i class="fa fa-asterisk required" aria-hidden="true"></i>
</label>
<div class=" controls">
<select name="entity.dnldrepoEmpGroup.dnldrepoEmpGroupNo" id="entity_dnldrepoEmpGroup_dnldrepoEmpGroupNo" class="form-control">
<option value="">--Select One--</option>
</select>
</div>
</div>
这是我刚刚截取的屏幕截图,显示添加按钮似乎与标签的顶部对齐。这就是为什么我最初用 margin-top 将它向下推,但想知道是否有更好的解决方案来解决这种疯狂的问题,以对齐到输入字段的顶部。
Best way is use input-group
like mention here in Bootstrap DOC
<div class="input-group">
<select class="custom-select" id="inputGroupSelect04">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button">Button</button>
</div>
</div>
使用弹性框:
.input-group{
display: flex;
max-width: 60%;
margin: 2em;
}
.input-group input{
flex: 1 1 auto;
}
.input-group button{
border-radius: 0;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<div class="input-group">
<input type="text" />
<span class="input-group-btn">
<button name="addGroupingName" type="button" class="btn btn-primary">Add</button>
</span>
</div>
"There could be many ways to do a thing:"
此解决方案来自Bootstrap:
Click to see Example
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="Recipient's username" aria-label="Recipient's username" aria-describedby="basic-addon2">
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button">Button</button>
</div>
</div>
问题最终出在 Struts 2 Bootstrap 插件正在渲染的标签上,它将按钮与标签顶部而不是输入字段对齐。如果有人遇到这个插件,这是我想出的解决方案。这种事情让我原来的问题有点复杂,因为我当时并没有真正意识到这一点。
标签需要从 Struts select 或输入字段中省略,并移至输入组之外的顶部才能正常工作。我还附上了此实现的另一个屏幕截图。
Struts 2 Twitter Bootstrap 插件 - http://struts.jgeppert.com/struts2-bootstrap-showcase/advanced.action
我想补充一点,如果不是针对这种特殊情况,此线程中提供的答案应该是正确的。谢谢大家对我的问题的贡献。
<label>Grouping</label>
<div class="input-group">
<s:select list="dnldrepoEmpGroupList" listKey="dnldrepoEmpGroupNo" listValue="folderName" name="entity.dnldrepoEmpGroup.dnldrepoEmpGroupNo" requiredLabel="true" headerValue="--Select One--" headerKey="" />
<span class="input-group-btn">
<button name="addGroupingName" type="button" class="btn btn-primary">Add</button>
</span>
</div>
我有 button
浮动在 select
旁边,并且还添加了顶部 margin
但想看看是否有更好的方法来处理我的问题我正在努力实现。
Please reference the screen shot below.
这里是 html
我是如何做到的。有没有比使用 margin
top 更好的方法来实现这一点?有人进行了更改,它破坏了我的 32px
margin
。
我在这里浏览过类似的帖子,但似乎无法让这个按钮与之前帖子中给出的解决方案正确对齐。
谢谢。
<div class="input-group">
<s:select list="dnldrepoEmpGroupList" listKey="dnldrepoEmpGroupNo" listValue="folderName" name="entity.dnldrepoEmpGroup.dnldrepoEmpGroupNo" requiredLabel="true" label="Grouping" headerValue="--Select One--" headerKey="" />
<span class="input-group-btn">
<button name="addGroupingName" type="button" class="btn btn-primary" style="margin-top:32px;">Add</button>
</span>
</div>
这是所有html
<div id="ajaxResult">
<div id="downloadResult">
<div id="actionMessage">
<s:actionmessage cssClass="actionMessage" />
<s:actionerror cssClass="actionMessage ui-state-error" />
</div>
<div class="col-xs-12 col-sm-12 col-md-4" id="downloadTableResult">
<s:hidden name="entity.dnldrepoNo" />
<s:hidden name="entity.dwnldrepoType" />
<s:hidden name="entity.uploadUser.userNo" />
<s:hidden name="entity.dwnldrepoUploaddt" />
<s:set var="downloadType"
value="#{'Employer Download':'Employer Download', 'Temp Download':'Temp Download'}" />
<s:textfield name="entity.dwnldrepoDisplayname"
label="Display Name"
requiredLabel="true"/>
<s:if test="%{entity.dwnldrepoType == 'Temp Download'}">
<s:textarea name="entity.dnldrepolookups"
label="Email"
requiredLabel="true"/>
</s:if>
<s:if test="%{entity.dwnldrepoType == 'Employer Download'}">
<s:textfield data-display="%{entity.dnldrepoEmpGroup.employer.employerName}" name="entity.dnldrepoEmpGroup.employer.employerNo" id="clientKeyAutoComplete" label="Employer" />
<div class="input-group">
<s:select list="dnldrepoEmpGroupList" listKey="dnldrepoEmpGroupNo" listValue="folderName" name="entity.dnldrepoEmpGroup.dnldrepoEmpGroupNo" requiredLabel="true" label="Grouping" headerValue="--Select One--" headerKey="" />
<div class="input-group-append">
<button name="addGroupingName" type="button" class="btn btn-outline-secondary">Add</button>
</div>
</div>
</s:if>
</div>
<div class="col-xs-12 col-sm-12 col-md-4 rowData">
<div class="text-danger">
<s:property value="%{entity.dwnldrepoPointer}" />
</div>
<s:hidden name="entity.dwnldrepoPointer" />
<s:file name="entity.planFile" label="File Upload" />
<s:textfield name="entity.dwnldrepoRetain"
label="Retain Hours"
requiredLabel="true"
helpText="Enter 0 hours to retain forever"/>
</div>
</div>
这是我使用 Flexbox 解决方案以及 Bootstrap 4 文档中的解决方案时发生的情况。
此外,请注意,我们在此项目中使用 Struts,这些 Struts 输入产生以下内容,我怀疑这可能是我无法将解决方案发布到的原因工作。这是呈现文档时 Struts 生成的内容的片段。
<div class="form-group ">
<label class=" control-label" for="entity_dnldrepoEmpGroup_dnldrepoEmpGroupNo">Grouping
<i class="fa fa-asterisk required" aria-hidden="true"></i>
</label>
<div class=" controls">
<select name="entity.dnldrepoEmpGroup.dnldrepoEmpGroupNo" id="entity_dnldrepoEmpGroup_dnldrepoEmpGroupNo" class="form-control">
<option value="">--Select One--</option>
</select>
</div>
</div>
这是我刚刚截取的屏幕截图,显示添加按钮似乎与标签的顶部对齐。这就是为什么我最初用 margin-top 将它向下推,但想知道是否有更好的解决方案来解决这种疯狂的问题,以对齐到输入字段的顶部。
Best way is use
input-group
like mention here in Bootstrap DOC
<div class="input-group">
<select class="custom-select" id="inputGroupSelect04">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button">Button</button>
</div>
</div>
使用弹性框:
.input-group{
display: flex;
max-width: 60%;
margin: 2em;
}
.input-group input{
flex: 1 1 auto;
}
.input-group button{
border-radius: 0;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<div class="input-group">
<input type="text" />
<span class="input-group-btn">
<button name="addGroupingName" type="button" class="btn btn-primary">Add</button>
</span>
</div>
"There could be many ways to do a thing:"
此解决方案来自Bootstrap:
Click to see Example
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="Recipient's username" aria-label="Recipient's username" aria-describedby="basic-addon2">
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button">Button</button>
</div>
</div>
问题最终出在 Struts 2 Bootstrap 插件正在渲染的标签上,它将按钮与标签顶部而不是输入字段对齐。如果有人遇到这个插件,这是我想出的解决方案。这种事情让我原来的问题有点复杂,因为我当时并没有真正意识到这一点。
标签需要从 Struts select 或输入字段中省略,并移至输入组之外的顶部才能正常工作。我还附上了此实现的另一个屏幕截图。
Struts 2 Twitter Bootstrap 插件 - http://struts.jgeppert.com/struts2-bootstrap-showcase/advanced.action
我想补充一点,如果不是针对这种特殊情况,此线程中提供的答案应该是正确的。谢谢大家对我的问题的贡献。
<label>Grouping</label>
<div class="input-group">
<s:select list="dnldrepoEmpGroupList" listKey="dnldrepoEmpGroupNo" listValue="folderName" name="entity.dnldrepoEmpGroup.dnldrepoEmpGroupNo" requiredLabel="true" headerValue="--Select One--" headerKey="" />
<span class="input-group-btn">
<button name="addGroupingName" type="button" class="btn btn-primary">Add</button>
</span>
</div>