1

ここで多くの質問と回答を検索して見つけましたが、これを機能させることができません。

ここで私の HTML と CSS を表示できます: http://jsfiddle.net/PqjqF/2/

HTML

<div id="SearchBox">
    <div id="SearchFieldContainer">
        <input class="SearchField" type="text" name="search" placeholder="Search..."/>
    </div>
    <div id="SearchButtonContainer">
        <a href="#" class="SearchButton">Search</a>
    </div>
</div>

CSS

#SearchBox {
    width: *;
    background-color: #fff;
    border-top: 1px solid #ffffff;
    border-bottom: 1px solid #d2d2d2;
    height: 40px;
    padding: 14px 8px 8px 8px;
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(92%,#f3f3f3));
    background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 92%); /* Chrome10+,Safari5.1+ */
    background: linear-gradient(to bottom, #ffffff 0%,#f3f3f3 92%); /* W3C */
}

#SearchFieldContainer {
    float: left;
    width: 100%;
}

#SearchButtonContainer{
   float:left;
}

.SearchField {
    border: 1px solid #bdbdbd;
    background: #f5f5f5;
    -webkit-border-radius: 60px;
    border-radius: 60px;
    color: #0a0705;
    -webkit-box-shadow: rgba(255,255,255,0.4) 0 1px 0, inset rgba(000,000,000,0.7) 0 1px 1px;
    box-shadow: rgba(255,255,255,0.4) 0 1px 0, inset rgba(000,000,000,0.7) 0 1px 1px;
    padding:8px;
    margin-bottom:20px;
    width:100%;
}

.SearchField:focus {
   background: #fff;
   color: #000000;
}

.SearchButton {
    -webkit-box-shadow: 0px 2px 2px 0px #8a8a8a;
    box-shadow: 0px 2px 2px 0px #8a8a8a;
    background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #2f3c47), color-stop(1, #0f1011) );
    background-color:#2f3c47;
    -webkit-border-radius:42px;
    border-radius:42px;
    border:1px solid #0d060d;
    display:inline-block;
    color:#ffffff;
    font-family:arial;
    font-size:18px;
    font-weight:bold;
    padding:5px 18px;
    text-decoration:none;
}

私がしたいのは、入力フィールドがすべてのスペースを取り、検索ボタンが同じ行にあることです。

隠しオーバーフローなど、多くのことを試しましたが、機能しません:-/

ここで何か助けはありますか?

ありがとう - シャイ

4

3 に答える 3

0

あなたの問題は、特定のものが 100% にならないということです。たとえば、テキスト フィールド自体は 100% の幅に設定されていますが、100% よりも大きくなるパディングがあります。テキストフィールドを境界線で囲むと、含まれている div を超えて拡張されていることがわかります。これを修正するにはいくつかの方法があります... パディングを削除するか、box-sizing: border-box;パディングを合計 100% 幅に計算するか、CSS を使用します。

同じことが両方のコンテナにも当てはまります。

box-sizing最初に上記の方法を使用します...

次のフィドルを参照してください: http://jsfiddle.net/PqjqF/4/

ここbox-sizing: border-box;で、テキスト フィールドとボタンの両方のコンテナに追加しました。コンテナの端が見えるように、境界線を残しました。(これは、レイアウトをデバッグしてボックスの場所を確認するための優れた手法です)

コンテナーの幅をそれぞれ 80% と 20% に変更し、テキスト フィールドの幅を 100% に設定しました。ボタンに 100% の幅を適用して、コンテナーを埋めることもできます。

使用できますか? を参照してください。ブラウザの互換性のためのボックスのサイズ設定。


今では解決策はありませbox-sizing: border-box;ん...

次のフィドルを参照してください: http://jsfiddle.net/PqjqF/5/

ここでは、パディングをパーセンテージとして計算しました。この場合、要素自体の幅の 1% です。したがって、左右のパディングに 1% (上下は関係ありません)、幅 98% = 100% です。

于 2013-03-27T19:35:07.590 に答える
0

うーん、試してみてください:

#SearchFieldContainer {
    float: left;
    width: 50%;
}

#SearchButtonContainer{
   float:left;
   width: 50%;
} 

したがって、両方の div はそれぞれ幅の 50% = 100% の幅を取ります。完璧にフィットさせるにはもう少し作業が必要ですが、基本的にはうまくいくはずです。「クリア」することを忘れないでください (わからない場合は、clear:both を探してください)。

于 2013-03-27T19:34:13.717 に答える
0
  1. HTML を少し変更して、 のdiv#SearchButtonContainer前に表示されるようにしdiv#SearchFieldContainerます。
  2. ボタンに十分なスペースを確保するために追加margin-rightします。div#SearchFieldContainerスタイルを削除するfloat: left;と、デフォルトで 100% の幅に広がります (右側に若干の余白があります)。
  3. に追加float: right;div#SearchButtonContainerます。

jsFiddleで変更された例を表示します。

于 2013-03-27T19:37:19.677 に答える