2012-02-24 35 views
6

Tôi đã gặp một hành vi kỳ lạ liên quan đến chiều rộng của một đầu vào văn bản trong jQuery Mobile - nó đơn giản là quá lớn.Chiều rộng đầu vào văn bản lạ trong 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> 

Bạn cũng có thể tạo lại hành vi này bằng cách giảm chiều rộng của cửa sổ trình duyệt chẳng hạn trong jsFiddle.

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

Đây có phải là hành vi bình thường hay chỉ là một lỗi? Làm thế nào tôi có thể "sửa" điều đó, để đầu vào văn bản và nút có cùng chiều rộng?

+2

link img được chia – nickdos

Trả lời

6

Đầu vào và nút có một số CSS khác nhau được tự động áp dụng cho nó. Tôi được thêm vào CSS sau đó dường như làm cho CSS rõ ràng phù hợp cho cả hai:

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

Nó sẽ xuất hiện mà đầu vào hộp mô hình đã được tắt, và lề nút đã được tắt. Đây là bài viết hay nói về mô hình hộp có vẻ như đã làm sáng tỏ điều này: http://www.jefftk.com/news/2012-02-18.html

Hy vọng điều này sẽ hữu ích!

+0

tôi sẽ thay thế các phong cách nội tuyến với các lớp học. – jrummell

+1

Cảm ơn! Đây thực sự là một bài viết thực sự thú vị mà bạn đã liên kết trong bài đăng của mình. Tôi đã sửa hai lỗi chính tả nhỏ trong mã của bạn và nó thực sự hoạt động - nhưng bằng cách nào đó tôi nghĩ nó là loại "hackish". Tôi sẽ chờ một chút, có lẽ một người khác có một giải pháp tốt hơn. –

1

Ngay trước khi bắt đầu cấu trúc di động lõi của tôi. Tôi đã thêm một cài đặt CSS hoàn chỉnh hơn. Điều này có thể giúp bạn.

/* 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

Tôi đã thêm nó, và nó không giúp được gì: http://jsfiddle.net/eKkjp/ - Dù sao, bạn đã lấy các thiết bị reset.css của mình ở đâu, tôi thực sự sử dụng công cụ của Eric Meyer. –

+0

Đó là một phiên bản sửa đổi tôi tìm thấy một thời gian trở lại ban đầu được dựa trên của Eric. Tôi tin rằng tôi đã loại bỏ một vài điều tôi không bao giờ có xu hướng sử dụng. – imaginethepoet

+0

Bạn cũng có thể muốn sửa đổi kích thước đầu vào trực tiếp. Tôi làm điều này với việc thêm một giá trị lớp vào những cái mà tôi muốn thay đổi kích thước khôn ngoan. Thật kỳ lạ tôi thực sự nghĩ rằng một số trong số đó quá nhỏ - vì vậy tôi đã tăng chiều cao của chúng. – imaginethepoet

1

Ví dụ: Bạn có thể thêm chủ đề mới. Trong trường hợp dưới đây tôi đã thêm một chủ đề F. Thêm nhiều css vào chủ đề và sau đó gọi data-theme = "f" trên phần tử đầu vào của bạn. Sau đó, bạn có thể tạo kiểu cho nội dung trái tim của mình. Một điều cần lưu ý. Bạn có thể cần phải sử dụng! Quan trọng để ghi đè kích thước cơ sở được thiết lập bởi JQM.

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

Bạn có thể cung cấp jsFidde hoạt động với chiều rộng dựa trên thiết bị không? Sử dụng chiều rộng cố định không phải là một tùy chọn cho tôi. –

+0

Thiết bị nào bạn đang cố gắng nhắm mục tiêu - bạn có thể chỉ phải đi với tỷ lệ phần trăm - hoặc min-max tùy thuộc vào thiết bị. – imaginethepoet

+0

Thiết bị từ trung cấp đến cao cấp dựa trên Android và sau đó cũng là Thiết bị iOS. –

0

Trường nhập chỉ muốn có chiều rộng đầy đủ. Đặt chiều rộng: 80px tuy nhiên sẽ giới hạn chiều rộng của chúng. Xem fiddle này với các dòng của cả hai phiên bản bình thường và kích thước nhỏ.

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

rất nhiều thứ liên quan đến văn bản đầu vào đã thay đổi trong phiên bản mới nhất của điện thoại di động jquery - do đó câu hỏi không liên quan nữa, vì nó sẽ hoạt động ngay bây giờ. tuy nhiên, câu trả lời của bạn không có gì phải làm với câu hỏi ban đầu theo bất kỳ cách nào. –

Các vấn đề liên quan