Chcę utworzyć przycisk przełączania w html za pomocą CSS. Chcę, żeby po kliknięciu pozostał wepchnięty, a po ponownym kliknięciu wyskoczył.
Jeśli nie ma sposobu, aby to zrobić, po prostu używając css. Czy jest sposób, aby to zrobić za pomocą jQuery?
Odpowiedzi:
Dobrym sposobem semantycznym byłoby użycie pola wyboru, a następnie stylizowanie go na różne sposoby, jeśli jest zaznaczone, czy nie. Ale nie ma dobrych sposobów, aby to zrobić. Musisz dodać dodatkowy zakres, dodatkowy element div i, aby uzyskać naprawdę ładny wygląd, dodać trochę javascript.
Dlatego najlepszym rozwiązaniem jest użycie małej funkcji jQuery i dwóch obrazów tła do stylizacji dwóch różnych stanów przycisku. Przykład z efektem w górę / w dół wynikającym z obramowań:
Oczywiście możesz dodać obrazy tła, które reprezentują przycisk w górę i w dół, i sprawić, że kolor tła będzie przezroczysty.
źródło
Interfejs użytkownika JQuery ułatwia tworzenie przycisków przełączania. Po prostu to włóż
na twojej stronie, a następnie w twoim ciele
onLoad
lub twojej$.ready()
(lub niektórychinit()
funkcji literałów obiektowych, jeśli budujesz witrynę ajax ..) upuść trochę JQuery w następujący sposób:Otóż to. (nie zapomnij o tym,
< label for=...>
że JQueryUI używa tego dla treści przycisku przełączania ..)Stamtąd po prostu pracujesz z nim jak z każdym innym
input="checkbox
”, ponieważ tym właśnie jest podstawowa kontrolka, ale JQuery UI po prostu nadaje jej wygląd, aby wyglądał jak ładny przycisk przełączania na ekranie.źródło
oto przykład przy użyciu
pure css
:źródło
W połączeniu z tą odpowiedzią możesz również użyć tego rodzaju stylu, który przypomina przełącznik ustawień mobilnych.
HTML
CSS
jQuery
Mógłby być znacznie ładniejszy, ale daje pomysł.
Jedną z zalet jest to, że można go animować za pomocą jquery i / lub CSS3
Fiddler
źródło
Jeśli chcesz mieć odpowiedni przycisk, będziesz potrzebować javascript. Coś takiego (wymaga trochę pracy nad stylizacją, ale masz sedno). Nie zawracałbym sobie głowy używaniem jquery do czegoś tak trywialnego, żeby być uczciwym.
źródło
Możesz po prostu użyć
toggleClass()
do śledzenia stanu. Następnie sprawdzasz, czy element przycisku ma klasę, na przykład:I używam tego
button
elementu dla przycisków ze względów semantycznych.źródło
Możesz użyć elementu kotwicy (
<a></a>
) i użyć a: active i a: link, aby zmienić obraz tła, aby włączyć lub wyłączyć. Tylko myśl.Edycja: powyższa metoda nie działa zbyt dobrze w przypadku przełączania. Ale nie musisz używać jquery. Napisz prostą funkcję javascript onClick dla elementu, która odpowiednio zmienia obraz tła, aby wyglądał jak naciśnięty przycisk, i ustaw jakąś flagę. Następnie po następnym kliknięciu obraz i flaga są przywracane. Tak, tak
I tak HTML
<div id="toggleDiv" onclick="toggle()">Some thing</div>
źródło
Nie sądzę, aby używanie JS do tworzenia przycisku było dobrą praktyką. Co się stanie, jeśli przeglądarka użytkownika dezaktywuje JavaScript?
Ponadto możesz po prostu użyć pola wyboru i trochę CSS, aby to zrobić. I łatwo jest odzyskać stan swojego pola wyboru.
To tylko jeden przykład, ale możesz go stylizować, jak chcesz.
http://jsfiddle.net/4gjZX/
HTML
CSS
Mam nadzieję że to pomoże
źródło
Byłbym skłonny użyć klasy w twoim css, która zmienia styl obramowania lub szerokość obramowania, gdy przycisk jest wciśnięty, więc daje wygląd przycisku przełączania.
źródło
Spróbuj tego trochę:
źródło
Istnieje wtyczka jquery firmy Swizec , która może to zrobić między innymi: https://github.com/Swizec/styled-button
(Stary link to http://swizec.com/code/styledButton/ , nie w pełni przetestowałem zamiennik, po prostu znalazłem go w Google.)
źródło
Możesz użyć "aktywnej" pseudoklasy (jednak nie będzie działać w IE6 dla elementów innych niż linki)
źródło
Oto jeden z przykładów / wariantów (bardziej szczegółowo opisanych) ToggleButton używającego jQuery z
<label for="input">
implementacją.Najpierw utworzymy kontener dla naszego ToggleButton przy użyciu klasycznego HTML
<input>
i<label>
Następnie zdefiniujemy funkcję przełączania naszego przycisku. Nasz przycisk jest w rzeczywistości zwykłym,
<label>
który będziemy stylizować, aby reprezentował przełączanie wartości.Funkcja jest realizowana w sposób wielokrotnego użytku. Możesz go użyć dla więcej niż jednego, dwóch lub nawet trzech utworzonych przez siebie ToggleButtons.
... i wreszcie ... aby działało zgodnie z oczekiwaniami, powinniśmy powiązać funkcję toggle ze zdarzeniem (zdarzeniem "zmiany") naszego zaimprowizowanego
<label>
przycisku (będzie toclick
zdarzenie, ponieważ nie zmieniamycheckbox
bezpośrednio, więc nie machange
zdarzenia można strzelać<label>
).W CSS możemy zdefiniować
backgorund-image
lub niektóreborder
reprezentować zmianę wartości, podczas gdy<label>
zrobimy to za nas, zmieniając wartość pola wyboru;).Mam nadzieję, że to komuś pomoże.
źródło
.addClass()
/.removeClass()
możesz użyć.toggleClass()
, ale opisana metoda wyraźnie definiuje akcje dlachecked
/unchecked
values.Próbować;
I upewnij się, że w
Pamiętaj, kiedy to kodujesz, tylko
somename
isomeid
możesz zmienić tag wejściowy, w przeciwnym razie to nie zadziała.źródło
O ile również szukałem odpowiedzi i chciałem to zakończyć za pomocą CSS. Znalazłem rozwiązanie CSS NINJA. To fajne uzupełnienie
<input type="checkbox">
i trochę demo CSS Live ! Chociaż nie działa w IE 8, możesz zaimplementować selectivizr ! i gdzie naprawić CSS zastosowaniaopacity
dofilter
aby pracować w IE.EDYCJA 2014:
w przypadku nowych przycisków przełączania używam rozwiązania znalezionego na blogu Lea Verou, wizualnie podobnego do pola wyboru w iOS
źródło