使用Bootstrap响应式设计让两个HTML元素保持同一行

5

可能是简单的CSS问题,但我已经看了太久了。

我想让两个元素在同一行上:

  • 文本框
  • 搜索图标图片

搜索图标应该保持相同的大小,无论宽度如何,文本框应该对齐100%的空间(但仍要确保图标紧挨着它)。

我的问题可以在这张图片中看到(它们不会对齐,因为文本框的宽度是100%):

enter image description here

我的标记:

<div class="SearchBox">
                        <div class="searchDiv">
                            <div class="searchDivFullSpan">
                                <asp:TextBox runat="server" ID="SearchOnGoogleBox" Height="34px"></asp:TextBox>
                            </div>
                            <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Resources/Images/SearchIcon.png" OnClick="SearchBtn_Click" ToolTip="Søg efter et emne" Height="48px" OnClientClick="_gaq.push(['_trackEvent', 'Global_master', 'Search for content']);" />
                        </div>
                </div>

我的CSS:

.SearchInputBox {
    border: 1px solid #C6D1AD;
    font-size: 20pt;

    background-color: #FAFAFA;
}

.searchDiv {
    padding-top: 10px;
padding-left: 10px;
padding-right: 10px;
}

.searchDivFullSpan {
    display: inline;
}

.searchDivFullSpan input[type=text] {
    width: 100%;
}

.searchDiv input[type="text"] {
    background-color: #f3f3e9;
    -moz-border-radius: 5px;
    border-radius: 5px;
}

有什么提示吗?非常感激 :-)
5个回答

2

你应该尝试使用display:table-cell而不是inline。你需要另一个容器div。然后给searchDiv和searchDivFullSpan两个元素设置宽度为100%。searchDiv的两个子元素都需要设置为display:table-cell。

.SearchInputBox {
  border: 1px solid #C6D1AD;
  font-size: 20pt;
  background-color: #FAFAFA;
}

.searchDiv {
  padding-top: 10px;
  padding-left: 10px;
  padding-right: 10px;
}

.searchDiv div {
  display: table-cell;
}

.searchDivFullSpan {
  width: 100%;
}

.searchDivFullSpan input[type=text] {
  width: 100%;
}

.searchDiv input[type="text"] {
  background-color: #f3f3e9;
  -moz-border-radius: 5px;
  border-radius: 5px;
}
<div class="SearchBox">
  <div class="searchDiv">
    <div class="searchDivFullSpan">
      <asp:TextBox runat="server" ID="SearchOnGoogleBox" Height="34px"></asp:TextBox>
    </div>
    <div class="searchImageDiv">
      <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Resources/Images/SearchIcon.png" OnClick="SearchBtn_Click" ToolTip="Søg efter et emne" Height="48px" OnClientClick="_gaq.push(['_trackEvent', 'Global_master', 'Search for content']);" />
    </div>

  </div>

</div>

<div class="SearchBox">
     <div class="searchDiv">
        <div class="searchDivFullSpan">
             <asp:TextBox runat="server" ID="SearchOnGoogleBox" Height="34px"></asp:TextBox>
         </div>
         <div class="searchImageDiv">
             <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Resources/Images/SearchIcon.png" OnClick="SearchBtn_Click" ToolTip="Søg efter et emne" Height="48px" OnClientClick="_gaq.push(['_trackEvent', 'Global_master', 'Search for content']);" />
          </div>

      </div>

</div>



<style>

    .SearchInputBox {
    border: 1px solid #C6D1AD;
    font-size: 20pt;

    background-color: #FAFAFA;
}

.searchDiv {
    padding-top: 10px;
padding-left: 10px;
padding-right: 10px;
}

.searchDiv div {
  display:table-cell;
}

    .searchDivFullSpan {
    width:100%;
    }

.searchDivFullSpan input[type=text] {
    width: 100%;
}

.searchDiv input[type="text"] {
    background-color: #f3f3e9;
    -moz-border-radius: 5px;
    border-radius: 5px;
}
</style>

很多好的答案,但你的解决方案最有帮助。非常感谢! - Lars Holdgaard

1

我不知道这是否有帮助,但看看这个例子,我正在使用Bootstrap 3:

<div class="form-inline" style="display: block;">
  <input type="text" id="text-field-1" class="form-control" size="4" max="4" min="4">
  <input type="text" id="text-field-2" class="form-control" size="3" max="3">
  <button class="btn btn-info form-control" type="button" id="search">
      <i class="fa fa-search"></i>
  </button>
</div>

通过将 class="form-inline" 添加到容器 Div 中,您可以强制所有元素保持在同一行,但如果想要强制元素始终并排显示,无论显示分辨率有多小,必须添加 display:block。

我更喜欢这个答案,因为其他答案试图重新发明已经存在于Bootstrap中的东西。 - Mehdi

1

我目前无法测试,但是可以考虑类似以下的方法:

 .searchDiv{
       padding-left: 25px; //MAKE THIS THE WIDTH OF YOUR IMAGE PLUS A BIT EXTRA
       position:relative;
  }

  .searchDivFullSpan input[type=text] {
        width: 100%;
  }

  input[type="image"]{
      width: 20px; //ADJUST THIS, BUT ADJUST ABOVE IN TANDEM
      position:absolute; 
      top:10px;  //FIDDLE WITH THESE TWO PROPERTIES AS NEEDED
      left:5px;

  }

1
尝试这个:

CSS 代码:

.SearchBtn{
    display:inline-block;
    float:right;
    bottom:24px;
    position:relative;
}
.SearchInputBox {
    border: 1px solid #C6D1AD;
    font-size: 20pt;

    background-color: #FAFAFA;
}

.searchDiv {
    padding-top: 10px;
padding-left: 10px;
padding-right: 10px;
}

.searchDivFullSpan {
    display: inline;
}

.searchDivFullSpan input[type=text] {
    width: 100%;
}

.searchDiv input[type="text"] {
    background-color: #f3f3e9;
    -moz-border-radius: 5px;
    border-radius: 5px;
}

HTML 代码:

<div class="SearchBox">
   <div class="searchDiv">
      <div class="searchDivFullSpan">
         <input type="text" id="SearchOnGoogleBox"/>
      </div>
      <input type="button" value="Click" class="SearchBtn"/>
   </div>
</div>

jsfiddle

译文:

{{链接1:JSFiddle}}


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接