2012-02-24 6 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에서 브라우저 창의 너비를 줄이면이 ​​동작을 재현 할 수도 있습니다.

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

이 정상적인 행동을하거나 버그인가? 텍스트 입력과 버튼의 너비가 같아 지도록 어떻게 수정할 수 있습니까?

+2

IMG 링크가 내가 클래스와 인라인 스타일을 대체 할 – nickdos

답변

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

+1

감사합니다. 이것은 실제로 당신이 당신의 포스트에서 연결 한 진짜로 재미있는 기사이다. 나는 당신의 코드에 2 개의 작은 오타를 수정했고 실제로 작동한다. 그러나 어쨌든 나는 그것이 "hackish"라고 생각한다. 나는 잠시 동안 기다릴거야, 어쩌면 다른 누군가가 더 나은 해결책을 가지고 있을지도 모른다. –

1

내 핵심 jquery 모바일 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

그것은 원래 Eric 's에 기반을 둔 것으로 판명 된 수정 된 버전입니다. 나는 결코 사용하지 않는 몇 가지 사항을 제거했다고 생각합니다. – imaginethepoet

+0

입력 크기를 직접 수정할 수도 있습니다. 저는 이것을 현명한 크기로 바꾸고 싶습니다. 이상하게도 실제로 나는 그 중 일부가 너무 작다고 생각합니다. 그래서 나는 그것들의 높이를 증가 시켰습니다. – imaginethepoet

1

예제와 같이 새 테마를 추가 할 수 있습니다. 아래의 경우에는 테마를 추가했습니다. F. 테마를 추가 한 다음 input 요소에서 data-theme = "f"를 호출하십시오. 그런 다음 당신의 마음 내용에 스타일을 적용 할 수 있습니다. 주목할 사실 하나. ! important를 사용하여 JQM이 설정 한 기본 크기를 재정의해야 할 수도 있습니다.

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

작동중인 jsFidde에 장치 크기 기반 너비를 제공 할 수 있습니까? 고정 너비를 사용하는 것은 나를위한 옵션이 아닙니다. –

+0

어떤 기기를 타겟팅하려합니까? 기기에 따라 백분율 또는 최소 최대 값을 입력해야 할 수도 있습니다. – imaginethepoet

+0

Android 및 iOS 기기 기반의 중급 및 고급형 기기입니다. –

0

입력란은 전체 너비가되고 싶습니다. 너비 설정 : 80px는 너비를 제한합니다. 이 바이올린을 일반 버전과 미니 버전의 라인으로 볼 수 있습니다.

.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"> 

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

<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의 최신 버전에서 텍스트 입력과 관련된 많은 것들이 변경되었습니다. 따라서 이제는 작동해야하므로 질문은 더 이상 관련이 없습니다. 그럼에도 불구하고 어떤 방식 으로든 원래의 질문에 답할 수있는 답변이 없습니다. –

관련 문제