Флажокът с опции за приложение html input е много обширен, но най-често този елемент се използва при форми за пренос на данни. Той обаче може да направи много повече "трикове", отколкото да получи ценности от форми. Удобно е да го използвате за създаване на различни "акордеони" на чист CSS.
HTML:
CSS:
label[for^="accordion"]:hover ~ label[for^="accordion"]{opacity: 0.8;text-shadow: 1px 1px 2px currentColor;}
В този пример, когато задържите курсора на мишката върху етикета ("Точка 1"), стиловете се прехвърлят към всички останали етикети, които се намират по-долу (братя и сестри, от английски - братя и сестри). За да прехвърлите свойства на братя и сестри, използвайте знака "~" за прехвърляне на стилове само към посочените етикети, а не на всички братя и сестри на страницата. Символът "^" означава "започва с ...", в примера "за ^ = 'акордеон" - "за (за) ID вход, който започва с думата" акордеон ":
label[for^="accordion"]
В резултат на това, когато задържите курсора върху етикет, стилът на долните етикети се променя.
Етикетите са много полезни, защото на екраните на мобилните телефони е много трудно да кликнете върху малката клетка html box, те разширяват областта, която е достъпна за потребителя, за да изберете желания отговор. Освен това, благодарение на етикета, можете напълно да премахнете квадратите от екрана:
input[id^="accordion"]{position: absolute;left: -9999px;}
Можете също да добавите курсора: указател, така че посетителите на сайта да могат да разберат, че елементите са „кликащи“:
label[for^="accordion"]:hover{cursor:pointer;}
В резултат на това, когато задържите курсора върху текста (например "Точка 1"), курсорът вместо "стрелка" ще се превърне в "ръка". За да оживите още повече, можете да добавите допълнителни стилове в CSS.
label[for^="accordion"]:hover{cursor:pointer;color: red;text-shadow: 1px 1px 2px currentColor;}
CSS трикове не свършват дотук. Добавете скрития текст към нашата "акордеон".
Текст 1.
Текст 2.
Текст 3.
Стилове за скрит текст:
[id^="accordion-box-"]{overflow: hidden;max-height:0;}
За да се покаже текстът, когато кликнете върху етикета, добавете max-height: 100% към стиловете:
input[id^="accordion"]:checked + [id^="accordion-box-"]{max-height: 100%;}
Процесът започва, когато потребителят „кликне“ върху етикета, отметката за отметка html е избрана (вход: отметнато), след което се прехвърля с помощта на знака „+“ (което означава „само първия брат по-долу“))
Когато изберете съответния текст, се появява текстът.
HTML:
Текст 1.
Текст 2.
Текст 3.
CSS:
label[for^="accordion"]{font-size: 20px;}label[for^="accordion"]:hover{cursor:pointer;color: red;text-shadow: 1px 1px 2px currentColor;}label[for^="accordion"]:hover ~ label[for^="accordion"]{opacity: 0.8;text-shadow: 1px 1px 2px currentColor;}input[id^="accordion"]:checked + [id^="accordion-box-"]{max-height: 100%;margin: 10px;}input[id^="accordion"]{position: absolute;left: -9999px;}[id^="accordion-box-"]{overflow: hidden;max-height:0;}
Помислете за отметки в полето html примери за използване във формуляри, където също е възможно да получите стойности (value = "my_value").
Стойностите се записват в value = "" оператора.
Когато изпращате формуляр, масивът $ _POST ще съдържа оператора name = "" в ключа на масива, а стойността - value = "".
Ако е бил редовен масив, ще изглежда така:
$post = array(name => value);
или
$post = array("HTML_name" => "HTML","CSS_name" => "CSS","javascript_name" => "Javascript","jQuery_name" => "jQuery","PHP_name" => "PHP","ajax_name" => "Ajax",);
Преобразуваме масива $ _POST в низ с помощта на функцията PHP implode () и присвояваме стойността $ _POST ["ajax_name"] на променливата $ ajax. Обикновено за всички $ _POST стойности се създават променливи, но например пишем само един, за да не претоварваме кода с ненужна информация. Също така е необходимо да се провери сигурността на входните данни $ _POST, но тук няма да направим това, за това е написано много в други статии.
PHP:
echo "
{$ajax = $_POST["ajax"];}
Мои навыки: ".implode( ', ', $_POST );if( isset( $_POST["ajax"] ) ) if( isset( $ajax ) ){echo "
Переменная $ajax установлена";}echo "echo "
Мои навыки: ".implode( ', ', $_POST );if( isset( $_POST["ajax"] ) ) if( isset( $ajax ) ){echo "
Переменная $ajax установлена";}echo ""; var_dump ($ _ POST); ехо"";
За да получите стойностите от формуляра, без да презареждате страницата, използвайте скриптове (javascript или jQuery):
$(document).ready(function() );$("#log").html("Выбрано: " + val.join( ", " ) + "
{$("input.my-class").on("click", function(e) {var val = [];$("input:checked").each( function(){val.push( $(this).val() );}
");});});$(document).ready(function() );$("#log").html("Выбрано: " + val.join( ", " ) + "
");});});
Създайте масив:
var val = [];
След това всеки (всеки) избран елемент ("input: checked") с помощта на push функцията се записва в val () масива:
$("input:checked").each( function(){val.push( $(this).val() );});
Съдържанието на масива val () ще се покаже на страницата, за което ще добавим html обект
JQuery:
$("#log").html("Выбрано: " + val.join( ", " ) + "
");
Можете да разберете дали е избрано квадратчето за отметка html с помощта на .is (": checked") и .prop ("отметен").
Ще получим стойностите (val) на всяка отметка и ще я изведем чрез сигнал ():
if ( $(this).is(':checked') ) alert($(this).val());
Направете същото, за да получите идентификатора (id) с помощта на .prop ("отметнато"):
if ( $(this).prop('checked') ) alert($(this).attr("id"));
Извеждането на ключове и стойности чрез alert () е само само, те не са необходими за работата на формуляра, така че те трябва да бъдат премахнати от кода.
Ако бутонът за изпращане на формуляри не е налице („деактивиран“), ако не е поставен отметка
$('#submitButton').prop("disabled", !$(this).prop("checked"));
Обърнете внимание на двоеточие: .is (": checked") работи правилно с двоеточие, а .prop ("проверено") работи без двоеточие !!!
Добавете възможността да маркирате всички елементи едновременно.
if($("#checkAll").prop("checked") ) $('input.my-class').not(this).prop('checked', this.checked);
Цял код.
HTML:
Необходими умения:
JQuery:
$(document).ready(function() );if($("#checkAll").prop("checked") ) else });});
{$("input.my-class").on("click", function(e) {var val = [];if ( $(this).is(':checked') ) alert($(this).val());if ( $(this).prop('checked') ) alert($(this).attr("id"));$('#submitButton').prop("disabled", !$(this).prop("checked"));if($("#checkAll").prop("checked") ) $('input.my-class').not(this).prop('checked', this.checked);$("input:checked").each( function(){val.push( $(this).val() );}$(document).ready(function() );if($("#checkAll").prop("checked") ) else });});
{$("#log").html("Выбрано: ALL
");}$(document).ready(function() );if($("#checkAll").prop("checked") ) else });});
{$("#log").html("Выбрано: " + val.join( ", " ) + "
");}$(document).ready(function() );if($("#checkAll").prop("checked") ) else });});
PHP:
if(isset($_POST["ALL"])){echo "Мои навыки: все перечисленные";}else{echo "
{$ajax = $_POST["ajax"];}
Мои навыки: ".implode( ', ', $_POST );}if( isset( $_POST["ajax"] ) ) if( isset( $ajax ) ){echo "
Переменная $ajax установлена";}echo "if(isset($_POST["ALL"])){echo "Мои навыки: все перечисленные";}else{echo "
Мои навыки: ".implode( ', ', $_POST );}if( isset( $_POST["ajax"] ) ) if( isset( $ajax ) ){echo "
Переменная $ajax установлена";}echo ""; var_dump ($ _ POST); ехо"";
За да подредим бутоните в съответствие с дизайна на сайта, ще използваме само CSS. Скриване на оригиналния квадрат, като се използват свойствата на z-index и opacity, в този случай квадратите не се движат от екрана, а просто стават прозрачни (непрозрачност: 0).
CSS:
position: absolute;z-index: -1;opacity: 0;margin: 10px 0 0 20px;
На същото място показваме бутони със собствен дизайн.
Маркерът за въвеждане може да се появи преди етикета на етикета, след което да използвате първия пример на бутони за оформяне:
.my-class {position: absolute;z-index: -1;opacity: 0;margin: 10px 0 0 20px;}.my-class + label {position: relative;padding: 0 0 0 60px;cursor: pointer;}.my-class + label:before {content: '';position: absolute;top: -4px;left: 0;width: 50px;height: 26px;border-radius: 13px;background: #CDD1DA;box-shadow: inset 0 2px 3px rgba(0,0,0,.2);transition: 1.2s;}.my-class + label:after {content: '';position: absolute;top: -2px;left: 2px;width: 22px;height: 22px;border-radius: 10px;background: #FFF;box-shadow: 0 2px 5px rgba(0,0,0,.3);transition: .2s;}.my-class:checked + label:before {background: #87CEFA;-webkit-animation: blackblur 2s 0.15s 1 alternate;}.my-class:checked + label:after {left: 26px;}.my-class:focus + label:before {box-shadow: inset 0 2px 3px rgba(0,0,0,.2), 0 0 0 3px rgba(206,250,135,.7);}@-webkit-keyframes blackblur {from { box-shadow: 0 0 72px black; color: transparent; }to { box-shadow: 0; color: black; }}
Ако входът е вътре в етикет с етикет, текстът на квадратчето за отметка се поставя в div с класа "text". Стиловете се подават от входа: проверяват се към div с класа "text" във втория пример:
.label input{position: absolute;z-index: -1;opacity: 0;margin: 10px 0 0 20px;}.text {position: relative;padding: 0 0 0 60px;cursor: pointer;}.text:before {content: '';position: absolute;top: -4px;left: 0;width: 50px;height: 26px;border-radius: 13px;background: #CDD1DA;box-shadow: inset 0 2px 3px rgba(0,0,0,.2);transition: .2s;}.text:after {content: '';position: absolute;top: -2px;left: 2px;width: 22px;height: 22px;border-radius: 10px;background: #FFF;box-shadow: 0 2px 5px rgba(0,0,0,.3);transition: .2s;}.label input:checked + .text:before {background: #87CEFA;-webkit-animation: blackblur 2s 0.15s 1 alternate;}.label input:checked + .text:after {left: 26px;}.label input:focus + .text:before {box-shadow: inset 0 2px 3px rgba(0,0,0,.2), 0 0 0 3px rgba(206,250,135,.7);}@-webkit-keyframes blackblur {from { box-shadow: 0 0 72px black; color: transparent; }to { box-shadow: 0; color: black; }}
HTML:
Необходими умения:
По този начин, в зависимост от ситуацията, винаги можете да изберете подходящото място за въвеждане и етикет. Ако по някаква причина опцията, когато входът е разположен пред етикета, не е подходящ, можете да позиционирате входа вътре в етикета на етикета.
Можете също да стилизирате отметката в полето html с помощта на скриптове (javascript, jQuery), модерните браузъри вършат страхотна работа с тях. Но ако потребителят влезе в сайта от стар браузър, тогава предпочитанието е да се даде CSS.
Също така е необходимо да се вземе под внимание, че в различните операционни системи стиловете за отметки ще изглеждат различно. Ако Google Chrome се опита да изглади тези различия, в други браузъри дизайнът на бутоните може да бъде много различен.