2012-02-24 41 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> 

也可以通过在jsFiddle中减小browserwindow的宽度来重现此行为。

的jsfiddle:
http://jsfiddle.net/QxYMa/

这是正常的行为,或只是一个错误?我该如何“纠正”,以便文本输入和按钮具有相同的宽度?

+2

IMG链路断开时 – nickdos 2012-02-24 19:49:11

回答

6

输入和按钮有一些不同的CSS自动应用到它。我增加了以下CSS这似乎让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> 

这样看来,在输入框的模式被关闭,并且按钮利润率为关闭。 这里是一个很好的文章,谈论盒模型似乎在这方面略显淡化:http://www.jefftk.com/news/2012-02-18.html

希望这有助于!

+0

我会带班取代内嵌样式。 – jrummell 2012-02-24 20:01:34

+1

谢谢!这实际上是一篇非常有趣的文章,你在文章中已经链接过。我已经修复了代码中的两个小错别字,它实际上可行 - 但不知何故,我觉得它有点“黑客”。我会等一会儿,也许别人有更好的解决方案。 – 2012-02-24 20:17:29

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的一个。 – 2012-02-26 11:27:14

+0

这是我发现的一个修改版本,后面最初是基于Eric的。我相信我删除了一些我从不倾向于使用的东西。 – imaginethepoet 2012-02-27 02:12:50

+0

您可能还想要直接修改输入尺寸。我通过向想要改变尺寸的元素添加类值来做到这一点。奇怪的是我实际上认为其中一些太小 - 所以我增加了它们的高度。 – imaginethepoet 2012-02-27 02:14:25

1

就像一个例子你可以添加一个新的主题。在下面的例子中,我添加了一个主题F.向主题添加更多css,然后在您的输入元素上调用data-theme =“f”。然后,您可以将它设计为您的内容。有一点需要注意。您可能需要使用!important来覆盖由JQM设置的基本大小。

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

你能否提供一个基于设备尺寸的工作jsFidde宽度?使用固定宽度不适合我。 – 2012-02-28 21:07:31

+0

您试图设定哪个设备 - 您可能需要按百分比进行设置 - 或根据设备的最小/最大值。 – imaginethepoet 2012-02-28 21:10:40

+0

基于Android的中高端设备以及后来的iOS设备。 – 2012-02-29 14:44:58

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中发生了变化 - 因此问题不再相关,因为它现在应该可以工作。尽管如此,你的答案并没有以任何方式回答原始问题。 – 2012-10-24 06:49:27