2012-02-24 7 views
6

jQuery Mobileのテキスト入力の幅に関連した奇妙な振る舞いを見てきました。jQuery Mobileのテキスト入力の奇妙な幅

<div data-role="page"> 
    <div data-role="header"> 
     <h1>Test</h1> 
    </div> 

    <div data-role="content"> 
     <input type="text" value="192.168.1.1"></input> 

     <a data-role="button">Connect</a> 
    </div> 
</div> 

1つはまたjsFiddleで例えばbrowserwindowの幅を減らすことによって、この現象を再現することができます。

jsFiddle:
http://jsfiddle.net/QxYMa/

、これは正常な動作または単にバグですか?テキスト入力とボタンの幅が同じになるように、どうすれば "訂正"できますか?

+2

IMGリンクは、私はクラスにインラインスタイルに代わる – nickdos

答えて

6

入力とボタンには異なるCSSが自動的に適用されました。

<div data-role="page"> 
    <div data-role="header"> 
     <h1>Test</h1> 
    </div> 

    <div data-role="content"> 
     <input type="text" value="192.168.1.1" style="width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing: border-box;"/> 
     <br/> 
     <a data-role="button" style="width:100%;margin:0">Connect</a> 
    </div> 
</div> 

入力ボックス・モデルがオフだった、とボタンのマージンがオフだったように思われる:私はそれらの両方のためのCSSは目に見えて一貫性を保つために見えた次のCSSを追加しました。 ここでは、これについていくつかの光を当てるように見えるボックスモデルについて話している良い記事です:http://www.jefftk.com/news/2012-02-18.html

希望に役立ちます!

+0

壊れています。 – jrummell

+1

ありがとう!これは実際にあなたの記事にリンクしている本当に興味深い記事です。私はあなたのコードに2つの小さなタイプミスを修正しました。実際にはうまくいきますが、どういうわけか、それはある種の "ハックな"ものだと思います。私は少し待つつもりです、多分誰かがもっと良い解決策を持っています。 –

1

私のコアjquery mobile structure.cssの開始直前に、より完全なCSSリセットを追加しました。これはあなたを助けるかもしれません。

/* CSS Reset*/html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td {margin:0;padding:0;border:0;outline:0; font-size:100%;vertical-align:baseline; background:transparent}body {line-height:1}ol,ul {list-style:none}blockquote,q {quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}:focus {outline:0}ins {text-decoration:none}del {text-decoration:line-through}table {border-collapse:collapse;border-spacing:0} 
+0

私はそれを追加して助けになりません:http://jsfiddle.net/eKkjp/ - あなたのreset.cssはどこにありましたか?私は実際にEric Meyerのものを使用します。 –

+0

それは元々エリックに基づいていたことがわかった修正版です。私は、私が使用する傾向がないことをいくつか削除したと思います。 – imaginethepoet

+0

入力サイズを直接変更することもできます。私は、サイズを変更したいクラス値を追加することでこれを行います。奇妙なことに、私は実際にそれらのうちのいくつかが小さすぎると思うので、私はそれらの高さを増やしました。 – imaginethepoet

1

例として、新しいテーマを追加できます。下のケースでは、テーマを追加しました。テーマにさらにCSSを追加し、入力エレメントにdata-theme = "f"を呼び出します。それをあなたの心の中身に合わせてスタイルすることができます。注意すべき点が1つあります。 !importantを使用して、JQMによって設定された基本サイズを上書きする必要があるかもしれません。

.ui-bar-f input { 
    font-family: 'HelveticaNeueLTStd55Roman', Helvetica, Arial, sans-serif; 
    width:250px !important; 
} 
+0

動作可能なjsFiddeにデバイスサイズベースの幅を指定できますか?固定幅を使うことは私の選択肢ではありません。 –

+0

どのデバイスをターゲットにしようとしていますか?デバイスに応じてパーセンテージまたはmin-maxを指定するだけです。 – imaginethepoet

+0

Androidと、後でiOSデバイスに基づく中〜ハイエンドのデバイス。 –

0

入力フィールドは全角でなければなりません。幅を設定すると80pxになりますが、幅は制限されます。このフィドルをノーマルバージョンとミニサイズバージョンのラインでご覧ください。

http://jsfiddle.net/den232/WzH3Y/

.floatleft { 
    float:left; 
} 
.floatright { 
    float:right; 
} 
.forceinline{ /* Prevent fieldcontain from doing a BLOCK thing */ 
    display:inline !important; 
} 
.textwidth { /* limit width of input fields */ 
    width:80px; 
} 
.closespacing { /* controls spacing between elements */ 
    margin:0px 5px 0px 0px; 
} 
.bigselect { /* centers select with big buttons */ 
    padding: 0px; 
    margin:2px 5px 0px 0px; 
} 
.biginputheight { /* matches text input height to big buttons */ 
    padding-top:10px !important; 
    padding-bottom:12px !important; 
} 
.miniinputheight { /* matches text input height to minibuttons */ 
    padding-top:5px !important; 
    padding-bottom:5px !important; 
} 
<div data-role="page" class="type-home"> 

<ul data-role="listview"> 
    <li data-role="fieldcontain">first LI line</li> 
    <li data-role="fieldcontain"> 

    <div class='floatleft closespacing'> 
     Big Buttons<br>More Text 
    </div> 


    <div class='floatleft textwidth'> 
     <input type="text" placeholder="left" class='biginputheight'></input> 
    </div> 

    <div class='floatright textwidth'> 
     <input type="text" placeholder="right" class='biginputheight'></input> 
    </div> 

    </li> 
    <li data-role="fieldcontain"> 

    <div class='floatleft closespacing'>  
     Small Buttons 
    </div> 


    <div class='floatleft textwidth'> 
     <input type="text" placeholder="e2" class='miniinputheight'></input> 
    </div> 


    <div class='floatright closespacing'> 
     <div class='floatright closespacing'>  
     e3 Text<br>on right 
     </div> 
     <div class='floatright textwidth'> 
     <input type="text" placeholder="e3" class='miniinputheight'></input> 
     </div> 
    </div> 
    </li> 
    <li data-role="fieldcontain">last LI line</li> 

</ul><!-- /listview --> 

+0

jquery mobileの最新バージョンでは、テキスト入力に関連する多くのものが変更されています。それにもかかわらず、あなたの答えは何も元の質問にすることは何もありません。 –