2017-09-01 9 views
-1

私は現在、ボタンが1つのフォームを持っています。別のボタンを追加しようとすると、CSS全体が壊れてしまいます。フォームの2つのボタン

これは私がそれを見えるようにする方法である:http://prntscr.com/gfuvi8

しかし、送信ボタン<a href="?do=fetch" class="button"><i class="fa fa-refresh"></i> Fetch Exchange</a>

の下で、この行を追加する場合、これは私が得るものです:http://prntscr.com/gfuwka

.tablesection { 
 
    \t padding: 20px; 
 
    \t border-left: 1px solid #e4e4e4; 
 
    \t border-right: 1px solid #e4e4e4; 
 
    \t border-bottom: 1px solid #e4e4e4; 
 
    \t background: #ffffff; 
 
    } 
 
    
 
    .tablesection label { 
 
    \t width: calc(50% - 10px); 
 
    \t float: left; 
 
    \t margin: 0px 0px 10px 0px; 
 
    } 
 
    
 
    .tablesection label:nth-child(odd) { 
 
    \t margin: 0px 20px 10px 0px; 
 
    } 
 
    
 
    .tablesection input, .tablesection select, .tablesection textarea { 
 
    \t width: calc(50% - 10px); 
 
    \t margin: 0px 0px 20px 0px; 
 
    \t padding: 10px; 
 
    \t display: block; 
 
    \t float: left; 
 
    \t border: 1px solid #cecece; 
 
    \t -webkit-border-radius: 0; 
 
    \t border-radius: 0; 
 
    } 
 
    
 
    .tablesection textarea { 
 
    \t resize: vertical; 
 
    } 
 
    
 
    .tablesection input:nth-child(odd), .tablesection select:nth-child(odd) { 
 
    \t margin: 0px 20px 20px 0px; 
 
    } 
 
    
 
    .tablesection input { 
 
    \t padding: 11px 10px; 
 
    \t width: calc(50% - 10px); 
 
    } 
 
    
 
    .tablesection input.submit { 
 
    \t width: auto; 
 
    \t border: 0px; 
 
    \t margin: 0px 0px 0px 0px; 
 
    \t background: #54809b; 
 
    \t color: #ffffff; 
 
    \t text-decoration: none; 
 
    \t display: block; 
 
    \t float: none; 
 
    \t font-size: 11px; 
 
    \t padding: 12px 20px; 
 
    \t -webkit-transition: background 0.5s linear; 
 
    \t -moz-transition: background 0.5s linear; 
 
    \t -ms-transition: background 0.5s linear; 
 
    \t -o-transition: background 0.5s linear; 
 
    \t transition: background 0.5s linear; 
 
    \t clear: both; 
 
    } 
 
    
 
    .tablesection input.submit:hover { 
 
    \t background: #4d758d; 
 
    } 
 
    
 
    .tablesection input.submit::before { 
 
    \t display: block; 
 
    \t content: ' '; 
 
    \t clear: both; 
 
    }
<div class="tablesection"> 
 

 
\t <form action="" method="post"> 
 
\t 
 
\t \t <label for="usd">USD</label> 
 
\t \t <label for="cad">CAD</label> 
 

 
\t \t <input id="usd" type="text" name="usd" value="<?php echo $siteUsd; ?>" maxlength="10" required="required" /> 
 
\t \t <input id="cad" type="text" name="cad" value="<?php echo $siteCad; ?>" maxlength="10" required="required" /> 
 
\t 
 
\t \t <label for="gbp">GBP</label> 
 
\t \t <label for="eur">EUR</label> 
 

 
\t \t <input id="gbp" type="text" name="gbp" value="<?php echo $siteGbp; ?>" maxlength="10" required="required" /> 
 
\t \t <input id="eur" type="text" name="eur" value="<?php echo $siteEur; ?>" maxlength="10" required="required" /> 
 
\t \t 
 
\t \t <label for="aud">AUD</label> 
 
\t \t <label for=""></label> 
 

 
\t \t <input id="aud" type="text" name="aud" value="<?php echo $siteAud; ?>" maxlength="10" required="required" /> 
 

 
\t <div class="clear"> 
 
\t </div> 
 
\t <input type="submit" class="submit" value="Update Exchange Rates" /> 
 
\t <a href="?do=fetch" class="button"><i class="fa fa-refresh"></i> Fetch Exchange</a> 
 

 
\t </form> 
 
</div>

.content a.button:first-of-type { 
    margin: 20px 0px 0px 0px; 
} 

.content a.button { 
    background: #54809b; 
    color: #ffffff; 
    text-decoration: none; 
    display: block; 
    float: left; 
    margin: 20px 0px 0px 16px; 
    font-size: 11px; 
    padding: 12px 20px; 
    -webkit-transition: background 0.5s linear; 
    -moz-transition: background 0.5s linear; 
    -ms-transition: background 0.5s linear; 
    -o-transition: background 0.5s linear; 
    transition: background 0.5s linear; 
} 

.content a.button:hover { 
    background: #4d758d; 
} 

.content a.button i { 
    margin: 0px 4px 0px 0px; 
    font-size: 10px; 
} 
012そこにこのようなわずか2ボタンです

<a href="?do=search" class="button"><i class="fa fa-search"></i> Search Coupons</a> 
<a href="?do=add" class="button"><i class="fa fa-plus"></i> Add Coupon</a> 

は、その罰金、その後、彼らはお互いに近い問題だがあなたがrelative自分のポジションを作り、floatスタイルを追加することができ、フォーム

答えて

0

input.submit要素は浮動小数点数ではなく、a.button要素です。これにより、a.buttonがinput.submit以下になるようになり、余白には一貫性がないため、これが起こっていないと整列しません。私はそれを修正する2つの方法を提案します。一つは最小です(CSS属性は2つだけ変更されました)。もう一つは読みやすく、保守しやすいですが、あなたのCSSの構造をいくらか変更します。

どちらの方法でも、余白を変更することをおすすめします。右に16ピクセルの余白を置くと、別のルールで最初の要素からそれを削除する必要がなくなり、幅と高さを計算するときに含まれていないため、包含する要素をオーバーフローさせるマージンは問題になりません。

最小バージョン
ステップ1:.button
ステップ2のように、input.submitからfloat: leftを設定:.button、またはその逆に一致するようにinput.submitのマージンを変更する、
例えば、input.submit {margin:20px 16px 0px 0px; } `

.tablesection input.submit { 
     width: auto; 
     border: 0px; 
     margin: 20px 16px 0px 0px; /* copy the a.button margins */ 
     background: #54809b; 
     color: #ffffff; 
     text-decoration: none; 
     display: block; 
     float: left; /* left instead of none keeps subsequent floats on the same line */ 
     font-size: 11px; 
     padding: 12px 20px; 
     -webkit-transition: background 0.5s linear; 
     -moz-transition: background 0.5s linear; 
     -ms-transition: background 0.5s linear; 
     -o-transition: background 0.5s linear; 
     transition: background 0.5s linear; 
     clear: both; 
    } 

これはそれらをインラインで取得した後、おそらく両方を一定の高さに設定したいと思うでしょう。

良い(私の意見では)バージョン あなたはinput.submita.button間の共有スタイルをたくさん持っている - あなたは、共通の.buttonクラスにこれらを組み合わせて検討することができる(これは意味し、このセレクタでタグがないことを注意してくださいルールはそのクラスを持つものに適用されます)。
ここで私はfloat: left;一貫性と一貫性のマージン(例えば20px 16px 0px 0px
あなたはまだinput.submitのための特定のスタイルを行う必要がある場合に設定します、あなたは要素に両方のクラスを与えることができ、それらは別々に適用されます。

.content .button { 
 
    background: #54809b; 
 
    color: #ffffff; 
 
    text-decoration: none; 
 
    display: block; 
 
    float: left; 
 
    margin: 20px 16px 0px 0px; 
 
    font-size: 11px; 
 
    padding: 12px 20px; 
 
    -webkit-transition: background 0.5s linear; 
 
    -moz-transition: background 0.5s linear; 
 
    -ms-transition: background 0.5s linear; 
 
    -o-transition: background 0.5s linear; 
 
    transition: background 0.5s linear; 
 
} 
 

 
.content .button:hover { 
 
    background: #4d758d; 
 
} 
 

 
.content .button i { 
 
    margin: 0px 4px 0px 0px; 
 
    font-size: 10px; 
 
} 
 
.tablesection input.submit { 
 
    /* Styles that are unique to input.submit */ 
 
}
<div class ="content"> 
 

 
    <div class="tablesection"> 
 

 
     <input type="submit" class="button submit" value="Update Exchange Rates"> 
 
     <a href="?do=fetch" class="button"> 
 
      <i class="fa fa-refresh"></i> 
 
      Fetch Exchange 
 
     </a> 
 

 
    </div> 
 

 
</div>

EDIT:これらのソリューションのの両方がフロート要素は、そのコンテナの高さに影響を与えないことがある欠陥を、共有しています。この問題を回避するには、コンテナを埋めるためにダミー要素を配置します(例:<div style="height:60px;"></div>)。この方法の重要な点は、ダミーdivの高さが、浮動要素の高さ+上余白と同じであることです。 また、float:leftをすべて削除して、両方をdisplay:inline-blockに設定することもできます。これは、レイアウトを実行する際に浮動小数点数よりもはるかに簡単です。

+0

これは私が最小限のバリエーションを試してみるとどうなるのですか?http://prntscr.com/gfw69i – empire

+0

ああ、高さを計算するとき浮遊要素は考慮されません。ダミー要素を追加して、それらがカバーするスペースを埋め込むことができます。あるいは、 'display:inline-block'に変更して浮動小数点数を扱うことはできません。私の答えを更新する – Armando

0

である:

.btn-float {  
 
    position: relative; 
 
    width: auto; 
 
    float: left; 
 
    padding-left: 15px; 
 
}
<input class="btn-left" type="submit" class="submit" value="Update Exchange Rates" /> 
 
<a class="btn-right" href="?do=fetch" class="button"><i class="fa fa-refresh"></i> Fetch Exchange</a>

0

.button { 
 
     width: 23%; 
 
     display: block; 
 
     text-align: center; 
 
     line-height: 3rem; 
 
     height: 3rem; 
 
     font-size: 1.2rem; 
 
     border: 1px solid #ccc; 
 
     background: #fafafa; 
 
    } 
 
    .button-container{ 
 
     margin-bottom: 20px; 
 
     width: 100%; 
 
    } 
 
    .button-container::after{ 
 
     content: ''; 
 
     display: block; 
 
     visibility: hidden; 
 
     clear: both; 
 
    } 
 
    .button-float{ 
 
     margin-left: 2%; 
 
     float: left; 
 
    }
<div class="button-container"> 
 
    <button class="button button-float">BTN-1</button> 
 
    <button class="button button-float">BTN-2</button> 
 
</div> 
 

 
<div class="button-container"> 
 
    <a href="?do=fetch" class="button button-float"><i class="fa fa-refresh"></i> Fetch Exchange</a> 
 
    <a href="?do=fetch" class="button button-float"><i class="fa fa-refresh"></i> Fetch Exchange</a> 
 
</div>

私は私が間違っているところを知っていると思います。 ダイブなどで2つのボタンをラップし、float leftに設定して、DIVのフロートをクリアする必要があります。

ブートストラップを使用している場合、あなただけの目標は、その父のコンテナ上でフロートをクリアした後、buttonフロートをさせることですcol-md-12

にこれらのボタンをラップすることができます。


は自分のCSSファイルで.button-container.button-container::after.button-floatを追加し、.button-containerクラスにdivとあなたの2 btnsをラップ、それを行うだろう、あなたの2 btnsに.button-floatクラスを追加し、

OK追加しました。

希望すると、これが役立ちます。

+0

1は送信フォームボタンです。^^ – empire

+0

@Empire、CSSルールにタグ名を含めないかどうかは関係ありません。 – Armando

関連する問題