2008-11-06 6 views

Odpowiedz

31
  • ukryć rzeczywistą kontrolę
  • wykonany div z kontroli i stylizacji chcesz na nim

Przycisk nie jest standardowym kontrola HTML.

Patrz: http://www.quirksmode.org/dom/inputfile.html

+0

, więc nie można tego osiągnąć za pomocą natywnej kontroli? – Larsenal

+0

Zaktualizowałem odpowiedź. Zobacz: http://www.quirksmode.org/dom/inputfile.html –

+1

Nie ma potrzeby używania krycia - możesz po prostu przekazać kliknięcie na ekranie: żaden element - znacznie prostszy i nie musisz brać (zmienna) wielkość wejściowa pod uwagę. –

22

co z

<input type="file" size="50" .... /> 

? będzie wyglądać tak samo z wyjątkiem safari na mac Chyba (na mac, wszystkie kontrole wysyłania wygląda inaczej, na wszystkich przeglądarkach)

+1

szerokość wejścia nic nie robi. Być może myślisz o wielkości wejściowej, która zmienia szerokość, ale nie w jednostkach, które możesz ujednolicić w różnych przeglądarkach. – bobince

+0

Tak, masz rację, nie zwracałem na to uwagi :) –

+1

To działa ... obsługuje firefox. Podczas gdy CSS width propery obsługuje Chrome, IE i Safari –

7

Oprócz tutorialu Quirks Mode, oto kolejny dobry zasób: http://www.shauninman.com/archive/2007/09/10/styling_file_inputs_with_css_and_the_dom

Jeśli jesteś ukrywając rzeczywistą kontrolę, pamiętaj, że bardzo ważne jest, aby ustawić krycie kontrolki na zero i nie używać w rzeczywistości visibility: hidden. Wykonanie tego spowoduje ukrycie elementu, wyłączając akcję kliknięcia.

Ponadto, jeśli ukrywasz kontrolkę za pomocą przycisku graficznego, pamiętaj, że w niektórych przeglądarkach (Firefox i IE, jak sądzę), nie będziesz w stanie zmienić typu kursora na rękę, gdy jest nad częścią wejściową pliku sterowania tekstem (zawsze będzie to domyślne wejście lub zwykły wskaźnik inny niż link). I tak, próbowałem używać cursor: pointer (i cursor: hand).

Osobiście zmagałem się z niestandardowymi skrzynkami wysyłkowymi, a nie ma srebrnej kuli, aby uzyskać doskonały wygląd lub dostosowywanie. (szczególnie w odniesieniu do zachowania kursora, ponieważ uważam, że łamacz transakcji typu UI). Podsumowując, wydaje mi się, że łatwiej zaakceptować, że różne przeglądarki wyrenderują kontrolę w inny sposób, i tak właśnie jest.