2011-06-29 26 views
30

Các yếu tố đầu vào của biểu mẫu html chẳng hạn như trường nhập văn bản hoặc hộp chọn tự động kế thừa thuộc tính phông chữ-gia đình khỏi phần thân? Ví dụ:Họ phông chữ không được kế thừa cho các trường nhập biểu mẫu?

body { 
font-family:'Lucida Casual', 'Comic Sans MS'; 
} 

Nó sẽ không sử dụng phông chữ trên trong dưới trường mẫu đầu vào:

<form> 
    <div> 
     <label for="name">Name</label> 
     <input id="name" name="name" type="text" /> 

    <div> 
</form> 

hãy có một cái nhìn tại http://jsfiddle.net/3fkNJ/

Có phổ biến mà chúng ta phải làm lại -define họ phông chữ cho các trường nhập liệu, hoặc tôi đang làm gì sai?

Trả lời

37

Có, bạn cần đặt số font vào thẻ input.

.input{ 
padding:5px; 
font-size:16px; 
font-family:'Lucida Casual', 'Comic Sans MS';  
} 

http://jsfiddle.net/jasongennaro/3fkNJ/1/

Bạn cũng có thể sử dụng inherit để thiết lập font trên form lĩnh vực.

input, textarea, select{font-family:inherit;} 

http://jsfiddle.net/jasongennaro/3fkNJ/7/

EDIT - giải thích thêm

Hầu hết các trình duyệt hiển văn bản bên form yếu tố như của hệ điều hành của người dùng. Điều này là để giữ, như tôi hiểu nó, một cái nhìn chung và cảm nhận cho người dùng. Tuy nhiên, tất cả có thể được ghi đè bằng mã ở trên.

+0

này không hoạt động trong trường hợp jquery-autocomplete. Bạn có một đầu mối tại sao? –

+0

@ManasPaldhe có thể do tự động hoàn thành có bộ chọn css cụ thể hơn. Tôi đã kiểm tra http://jqueryui.com/autocomplete/ và nó cho thấy 'đầu vào' có một' id' của "thẻ". Đặt phông chữ trong đó 'id' và bạn nên được tốt. –

1

Hãy thử thay đổi thuộc tính cơ CSS của bạn để

body *{font-family:'Lucida Casual', 'Comic Sans MS';} 

Các * lực lượng mỗi phần tử con kế thừa các giá trị quy định trong quy tắc CSS bạn đã viết vì các quy tắc CSS trên đặc điểm kỹ thuật. Hãy xem fiddle here

Điều này rất tiện lợi nếu bạn muốn mọi phần tử trên trang của mình có giá trị gia đình phông chữ giống nhau, không tiện dụng nếu bạn muốn biểu mẫu của mình có giá trị khác nhau.

Smashing Magazine has an article có thể giúp bạn thêm.

Tôi hy vọng điều đó sẽ hữu ích.

+1

Điều này sẽ hiệu quả, nhưng đó là thực hành cẩu thả.Hiệu suất có một cú đánh từ bộ chọn '*', và '*' sẽ được ưu tiên theo những cách mà bạn có thể không mong đợi một cách ngầm định. – TechZilla

+0

Nó không làm cho nó "thực hành cẩu thả", nó chỉ có nghĩa là khi được sử dụng người cần phải hiểu những gì họ đang làm do đó tham khảo tạp chí Smashing. Theo như hiệu suất, có nó sử dụng chi phí trình duyệt lớn hơn nhưng nếu nó là thích hợp phụ thuộc vào mục tiêu, nên mỗi phần tử có cùng một phông chữ bất kể hoặc jus một vài yếu tố? Nếu nó chỉ là một vài yếu tố sau đó chỉ định trong bộ chọn là tốt hơn. Đối với tôi sunjie là rõ ràng rằng ông muốn tất cả các yếu tố có cùng một phông chữ bất kể vì vậy giải pháp của tôi sẽ là thích hợp để thực thi điều này, nhưng có, nó sẽ có phí của nó ở nơi khác. – Ryan

+1

Tôi nghĩ rằng bạn hiểu lầm, chính xác những gì tôi tuyên bố là "thực hành cẩu thả". Trong khi nó sẽ là thích hợp hơn để tránh các bộ chọn '*' không liên quan, chỉ sử dụng một bộ lọc không nhất thiết là 'thực hành cẩu thả'. Mặt khác, bằng cách sử dụng CSS của bạn để tránh thừa kế idiosyncrasies IS "thực hành cẩu thả". Không nơi nào tác giả nói rằng anh ta muốn * phổ biến * trước các bộ chọn với một họ phông chữ được chỉ định. – TechZilla

0

nó làm việc cho tôi:

tags-input *, tags-input *:before, tags-input *:after { 
    font-family: "IRANSans" !important; 
} 

tags-input .tags .input { 
    padding-right: 5px; 
    float: right !important; 
    font: 13px "IRANSans", tahoma !important; 
} 

tags-input .tags .tag-item { 
    float: right !important; 
    font: 13px "IRANSans", tahoma !important; 
} 
Các vấn đề liên quan