نحوه ارتقاء فرمهای بوت استرپ 2 به 3
تمام این تغییرات در بوت استرپ 3، جهت پیاده سازی ایده mobile-first بودن آن است. برای مثال فرمهای افقی بوت استرپ 3 با کوچک شدن اندازه صفحه، به صورت خودکار واکنش نشان داده و تبدیل به فرمهای معمولی که اجزای آن به صورت یک stack عمودی قرار گرفتهاند، میشوند.
اکنون اگر فرمهایی را دارید که در برنامههای پیشین خود از بوت استرپ 2 استفاده کردهاند، نیاز است تغییرات ذیل را به آنها اعمال کنید تا با سیستم جدید بوت استرپ 3 سازگار شوند:
- کلاس control-group را به کلاس form-group تبدیل کنید.
- form-search حذف شده است. آنرا با form-inline جایگزین کنید.
- دیگر نیازی به استفاده از input-block-level نیست؛ از آنجائیکه به صورت پیش فرض کلیه inputها دارای عرض 100 درصد هستند.
- help-inline حذف شده است. آنرا با help-block جایگزین کنید.
- عرض ستونها را در فرمهای افقی، برچسبها و کنترلها مشخص کنید.
- کلاس controls حذف شده است.
- کلاس form-control را به inputها و selectها اضافه کنید.
- checkboxها و radioها باید در یک div محصور شوند.
- کلاسهای radio.inline و checkbox.inline باید با inline جایگزین شوند.
- کلاسهای input-small به input-sm و input-large به input-lg تبدیل شدهاند.
- کلاسهای input-prepend با input-group و input-append با input-group جایگزین شدهاند.
- کلاس alert-error حذف شدهاست. بجای آن میشود از alert-warning استفاده کرد.
- کلاس alert-block را با alert جایگزین کنید.
ایجاد اولین فرم افقی با بوت استرپ 3
فرض کنید که قصد داریم یک چنین فرم افقی را توسط امکانات بوت استرپ 3 ایجاد کنیم:
همانطور که ملاحظه میکنید، با کوچک شدن اندازه صفحه، این فرم نیز تغییر شکل میدهد:
کدهای کامل این فرم را در ادامه ملاحظه میکنید:
<div class="container"> <h4 class="alert alert-info"> فرمهای بوت استرپ 3</h4> <div class="row"> <article class="registrationform"> <h2> فرم ثبت نام</h2> <form class="registration form-horizontal" action="#"> <fieldset id="personalinfo"> <legend>اطلاعات شخصی</legend> <section class="row"> <label class="col col-lg-4 control-label" for="myname"> نام</label> <div class="controls"> <input class="col col-lg-8" type="text" name="myname" id="myname" autofocus placeholder="نام و نام خانوادگی" required> </div> <!-- controls --> </section><!-- row --> <section class="row"> <label class="col col-lg-4 control-label" for="companyname"> نام شرکت</label> <div class="controls"> <input class="col col-lg-8" type="text" name="companybname" id="companyname" /> </div> <!-- controls --> </section><!-- row --> <section class="row"> <label class="col col-lg-4 control-label" for="myemail"> ایمیل</label> <div class="controls"> <input class="col col-lg-8" type="email" name="myemail" id="myemail" required autocomplete="off" /> </div> <!-- controls --> </section><!-- row --> </fieldset> <!-- personal info --> <fieldset id="otherinfo"> <legend>سایر اطلاعات</legend> <section class="row"> <label class="col col-lg-4 control-label"> نوع درخواست</label> <div class="controls col col-lg-8"> <label class="radio"> <input type="radio" name="requesttype" value="question" /> سؤال </label> <label class="radio"> <input type="radio" name="requesttype" value="comment" /> انتقاد </label> </div> <!-- controls --> </section><!-- row --> <section class="row"> <label class="col col-lg-4 control-label"> خبرنامه</label> <div class="controls col col-lg-8"> <label class="checkbox"> <input type="checkbox" id="subscribe" name="subscribe" checked value="yes" /> آیا مایل به دریافت ایمیلهای خبرنامه ما هستید؟ </label> </div> <!-- controls --> </section><!-- row --> <section class="row"> <label class="col col-lg-4 control-label" for="reference"> چطور از وجود سایت ما آگاه شدید؟</label> <div class="controls col col-lg-8"> <select name="reference" id="reference"> <option>لطفا انتخاب کنید...</option> <option value="friend">از طریق یک دوست</option> <option value="facebook">Facebook</option> <option value="twitter">Twitter</option> </select> </div> <!-- controls --> </section><!-- row --> </fieldset> <button class="btn" type="submit"> ارسال</button> </form> </article> </div> <!-- end row --> </div> <!-- /container -->
- باید درنظر داشت که اگر هیچگونه فرمتی را به فرمهای بوت استرپ 3 اعمال نکنیم، به صورت پیش فرض فرمت دهی شده و تبدیل به فرمهای عمودی شکیلی میشوند که شاید از دیدگاه خیلیها مناسب بوده و نیاز به تغییرات خاصی نداشته باشند.
- برای تبدیل این فرم عمودی پیش فرض، به فرمهای افقی دو ستونه، نیاز است یک سری کلاس بوت استرپ 3 را به المانهای آن اضافه کنیم. برای این منظور ابتدا کلاس form-horizontal را به تگ فرم اضافه میکنیم.
- هر سطر فرم، در یک المان section با کلاس row قرار خواهد گرفت.
- اکنون هر سطر، از یک برچسب به همراه یک یا چند المان تشکیل خواهد شد. در هر سطر، کنترلها در یک div با کلاس controls قرار میگیرند.
- برای اینکه برچسبهای هر ردیف با کنترلها و المانهای آن ردیف، تراز شوند، تنها کافی است به آنها کلاس control-label را اضافه کنیم.
در ادامه تمام این مراحل را باید به ازای هر سطر فرم تکرار کنیم.
- زمانیکه به radio buttons یا check boxes میرسیم، باید به چند نکته دقت داشت:
الف) حین کار با radio buttons، علاوه بر برچسب آن سطر که با label مشخص میشود، هر radio button نیز باید داخل یک label با کلاس radio محصور شود.
ب) تمام radio buttons یک سطر نیز باید در یک div ایی با کلاس controls محصور شوند.
این نکته در مورد check boxes نیز صادق است.
با رعایت همین چند نکته ساده میتوان به یک طراحی دو ستونی خودکار واکنشگرا رسید.
اصلاح قالب ایجاد فرمهای خودکار ASP.NET MVC بر اساس بوت استرپ 3
مطلب «ویرایش قالب پیش فرض Add View در ASP.NET MVC برای سازگار سازی آن با Twitter bootstrap» جهت بوت استرپ 2 تهیه شده بود. فایل نهایی ویرایش شده آنرا با توجه به توضیحات مطلب جاری برای بوت استرپ 3 از پیوست انتهای بحث دریافت کنید و برای استفاده از آن فقط کافی است آنرا در مسیر CodeTemplates\AddView\CSHTML\CreateBootstrap3Form.tt ریشه پروژه جاری خود کپی و به پروژه اضافه کنید تا در صفحه دیالوگ Add view ظاهر شود (خاصیت custom tool آنرا هم خالی کنید).
در مورد اعتبارسنجیهای فرمها چطور؟
اصلاح مطالبی مانند «اعمال کلاسهای ویژه اعتبارسنجی Twitter bootstrap به فرمهای ASP.NET MVC» جهت کار با فرمهای بوت استرپ 3 بسیار ساده است. از این جهت که در کدهای آن فقط باید نام کلاسهای CSS قدیمی به جدید ویرایش شوند. مابقی کدها یکسان است. مثلا نام کلاس control-group شده است form-group (همان توضیحات ابتدای بحث جاری). کلاسهای error شدهاند has-error و success شده است has-success.
فایلهای نهایی این قسمت را از اینجا نیز میتوانید دریافت کنید:
bs3-sample05.zip