Apabila anda mengklik butang log masuk atau pendaftaran pada halaman, tetingkap modal akan muncul, iaitu lapisan pop timbul Kami boleh menukar borang log masuk dan pendaftaran pada lapisan pop timbul, yang sangat mudah untuk pengguna dan tidak perlu ditutup Klik pada lapisan untuk beralih ke operasi lain, yang telah digunakan secara meluas di banyak laman web.
Artikel ini menggabungkan contoh untuk mencapai kesan ini dengan menggunakan jQuery serta teknologi CSS3 dan HTML5.
HTML
Kami kini mempunyai dua butang pautan di halaman utama, iaitu butang log masuk dan pendaftaran.
<nav class="main_nav"> <ul> <li><a class="cd-signin" href="#0">登录</a></li> <li><a class="cd-signup" href="#0">注册</a></li> </ul> </nav>
Kemudian, buat lapisan pop timbul tetingkap modal div.cd-user-modal, letakkan dua pautan untuk menukar ul.cd-switcher dalam lapisan pop timbul, dan kemudian letakkan borang log masuk dan pendaftaran, sepadan dengan div #cd- log masuk dan div#cd-daftar.
<div class="cd-user-modal"> <div class="cd-user-modal-container"> <ul class="cd-switcher"> <li><a href="#0">用户登录</a></li> <li><a href="#0">注册新用户</a></li> </ul> <div id="cd-login"> <form class="cd-form"> <!-- 登录表单 --> </form> </div> <div id="cd-signup"> <form class="cd-form"> <!-- 注册表单 --> </form> </div> </div> </div>
Di atas adalah keseluruhan struktur html, dan bahagian borang ditinggalkan di sini Anda boleh menulis struktur borang anda secara bebas mengikut keperluan anda. Anda juga boleh memuat turun dan melihat kod sumber secara langsung.
CSS
Tetingkap modal lalai mempunyai gaya keterlihatan: tersembunyi; dan kelegapan: 0;, yang bermaksud ia tidak kelihatan secara lalai. Gunakan .is-visible untuk memutuskan sama ada hendak muncul paparan. Berikut ialah kod css utama Untuk kod css yang lebih terperinci, sila muat turun kod sumber untuk dilihat.
.cd-user-modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(52, 54, 66, 0.9); z-index: 3; overflow-y: auto; cursor: pointer; visibility: hidden; opacity: 0; -webkit-transition: opacity 0.3s 0, visibility 0 0.3s; -moz-transition: opacity 0.3s 0, visibility 0 0.3s; transition: opacity 0.3s 0, visibility 0 0.3s; } .cd-user-modal.is-visible { visibility: visible; opacity: 1; -webkit-transition: opacity 0.3s 0, visibility 0 0; -moz-transition: opacity 0.3s 0, visibility 0 0; transition: opacity 0.3s 0, visibility 0 0; } .cd-user-modal.is-visible .cd-user-modal-container { -webkit-transform: translateY(0); -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); transform: translateY(0); } .cd-user-modal-container { position: relative; width: 90%; max-width: 600px; background: #FFF; margin: 3em auto 4em; cursor: auto; border-radius: 0.25em; -webkit-transform: translateY(-30px); -moz-transform: translateY(-30px); -ms-transform: translateY(-30px); -o-transform: translateY(-30px); transform: translateY(-30px); -webkit-transition-property: -webkit-transform; -moz-transition-property: -moz-transform; transition-property: transform; -webkit-transition-duration: 0.3s; -moz-transition-duration: 0.3s; transition-duration: 0.3s; } .cd-user-modal-container .cd-switcher:after { content: ""; display: table; clear: both; } .cd-user-modal-container .cd-switcher li { width: 50%; float: left; text-align: center; } .cd-user-modal-container .cd-switcher li:first-child a { border-radius: .25em 0 0 0; } .cd-user-modal-container .cd-switcher li:last-child a { border-radius: 0 .25em 0 0; } .cd-user-modal-container .cd-switcher a { display: block; width: 100%; height: 50px; line-height: 50px; background: #d2d8d8; color: #809191; } .cd-user-modal-container .cd-switcher a.selected { background: #FFF; color: #505260; } #cd-login, #cd-signup { display: none; } #cd-login.is-selected, #cd-signup.is-selected{ display: block; }
jQuery
Kesan pop timbul dan penutup lapisan pop timbul dikawal oleh jQuery menggunakan panggilan style.is-visible, dan borang penukaran dikawal oleh jQuery menggunakan panggilan demo.is-selected.
jQuery(document).ready(function($){ var $form_modal = $('.cd-user-modal'), $form_login = $form_modal.find('#cd-login'), $form_signup = $form_modal.find('#cd-signup'), $form_modal_tab = $('.cd-switcher'), $tab_login = $form_modal_tab.children('li').eq(0).children('a'), $tab_signup = $form_modal_tab.children('li').eq(1).children('a'), $main_nav = $('.main_nav'); //弹出窗口 $main_nav.on('click', function(event){ if( $(event.target).is($main_nav) ) { // on mobile open the submenu $(this).children('ul').toggleClass('is-visible'); } else { // on mobile close submenu $main_nav.children('ul').removeClass('is-visible'); //show modal layer $form_modal.addClass('is-visible'); //show the selected form ( $(event.target).is('.cd-signup') ) ? signup_selected() : login_selected(); } }); //关闭弹出窗口 $('.cd-user-modal').on('click', function(event){ if( $(event.target).is($form_modal) || $(event.target).is('.cd-close-form') ) { $form_modal.removeClass('is-visible'); } }); //使用Esc键关闭弹出窗口 $(document).keyup(function(event){ if(event.which=='27'){ $form_modal.removeClass('is-visible'); } }); //切换表单 $form_modal_tab.on('click', function(event) { event.preventDefault(); ( $(event.target).is( $tab_login ) ) ? login_selected() : signup_selected(); }); function login_selected(){ $form_login.addClass('is-selected'); $form_signup.removeClass('is-selected'); $form_forgot_password.removeClass('is-selected'); $tab_login.addClass('selected'); $tab_signup.removeClass('selected'); } function signup_selected(){ $form_login.removeClass('is-selected'); $form_signup.addClass('is-selected'); $form_forgot_password.removeClass('is-selected'); $tab_login.removeClass('selected'); $tab_signup.addClass('selected'); } });
Contoh ini juga mempunyai kesan paparan yang baik pada peranti mudah alih seperti telefon bimbit Disebabkan penggunaan kesan css3, jika anda menggunakan pelayar IE, sila tingkatkan versi kepada IE9 atau lebih tinggi. Anda amat disyorkan untuk memuat turun kod sumber dan membuat sedikit perubahan untuk menggunakannya secara langsung pada projek anda.
Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.