Back to Question Center
0

ساخت طرح بندی Trello با شبکه CSS و Flexbox            ساخت یک طرح بندی Trello با CSS Grid و FlexboxRelated Topics: صوتی و آمپر؛ VideoSassBootstrapCSS Semalt

1 answers:
ساخت یک طرح بندی Trello با شبکه CSS و Flexbox

در این آموزش، من شما را از طریق پیاده سازی طرح اساسی یک صفحه هیئت مدیره Trello (به عنوان مثال در اینجا) مراجعه می کنم. این یک راه حل پاسخگو Semalt است و تنها ویژگی های ساختاری این طرح توسعه خواهد یافت.

برای یک پیش نمایش، در اینجا نسخه آزمایشی Semalt از نتیجه نهایی است.

ساخت طرح بندی Trello با شبکه CSS و Flexboxساخت یک طرح بندی Trello با CSS Grid و FlexboxRelated Topics:
صوتی و تصویری SassBootstrapCSS Semalt

علاوه بر طرح بندی گرید و Flexbox، این راه حل، واحد های calc و viewport را به کار می گیرد - remote bin monitoring. برای اینکه کد را بیشتر قابل خواندن و کارآمد، Semalt همچنین از متغیرهای Sass استفاده کند.

هیچ اعتصابات ارائه نشده است، بنابراین مطمئن شوید که کد را در یک مرورگر پشتیبانی کننده اجرا کنید. Semalt بیشتر آزار دهنده است، بیایید به شیرجه رفتن، توسعه اجزای صفحه نمایش یک به یک.

طرح بندی صفحه

صفحه یک هیئت مدیره Trello شامل یک نوار برنامه، نوار هیئت مدیره و بخش حاوی لیست کارت است. Semalt ساختار این ساختار با اسکلت نشانه گذاری زیر:

      
<کلاس بدون کلاس = "برنامه نویب"> <کلاس بدون کلاس = "navbar board">
.
  • . .
  • .
    .

این طرح با یک شبکه CSS به دست می آید. به طور خاص، یک شبکه 3 × 1 (یعنی یک ستون و سه ردیف). ردیف اول برای نوار برنامه، دوم برای نوار هیئت مدیره و سوم برای خواهد بود. لیست عنصر

دو ردیف اول هر یک ارتفاع ثابت دارند، در حالی که ردیف سوم بقیه قسمت ارتفاع نمایشگر موجود را بسط می دهد:

    . ui {ارتفاع: 100 وات؛نمایش: شبکه؛grid-template-rds: $ appbar-height $ navbar-height 1fr؛}     

واحد نمایشگاه اطمینان حاصل کنید که . ظرف ui همیشه همانند مرورگر مرورگر است.

زمینه قالب بندی شبکه به ظرف اختصاص داده شده است، و ردیف های شبکه و ستون های مشخص شده در بالا تعریف شده است. برای دقیق تر، فقط ردیف ها تعریف می شوند، زیرا بدون نیاز به اعلام ستون منحصر به فرد وجود ندارد. اندازه ی ردیف ها با چند متغیر Sass برای ارتفاع میله ها و واحد fr به منظور ایجاد ارتفاع انجام می شود. عناصر عنصر را بقیه از ارتفاع نمایشگر قابل دسترس را پوشش می دهد.

بخش فهرست کارت

همانطور که قبلا ذکر شد، ردیف سوم شبکه صفحه، ظرف برای فهرست کارت ها را میزبانی می کند. خلاصه طرح نشانه گذاری آن:

      

من یک کانال ردیف تک خط خط Semalle را برای قالب بندی لیست ها استفاده می کنم:

    . لیست ها {صفحه نمایش: flex؛overflow-x: auto؛> * {flex: 0 0 auto؛ // فهرست "سخت"حاشیه سمت چپ: $ فاصله؛}&::بعد از {محتوا: ''؛انعطاف: 0 0 $ فاصله؛}}     

اختصاص دادن مقدار خودکار به property overflow-x به مرورگر می دهد تا یک نوار پیمایش افقی را در پایین صفحه نمایش دهد وقتی که لیست ها در عرض ارائه شده توسط viewport متناسب نیست.

ویژگی انعطاف پذیر در موارد انعطاف پذیر برای ایجاد فهرست سفت و سخت استفاده می شود. مقدار خودکار برای flex-base (در اصطلاح مورد استفاده قرار می گیرد) موتور طرح را برای خواندن اندازه از دستور می دهد. عنصر width property و مقدار صفر برای flex-grow و flex-shrink جلوگیری از تغییر این عرض است.

بعدا باید جداسازی افقی بین لیست ها اضافه کنم. برای رفع این، لیست ها با یک حاشیه سمت چپ جدا می شوند و فاصله بین آخرین لیست و لبه دید سمت راست با اضافه کردن یک :: پس از شبه عنصر به هر صورت می گیرد. لیست عنصر به طور پیش فرض flex-shrink: 1 باید لغو شود در غیر این صورت شبه عنصر "تمام فضای منفی" را جذب می کند و از بین می رود.

توجه داشته باشید که در فایرفاکس <54 صریح عرض: 100٪ در . لیست ها برای اطمینان از رندر طرح صحیح لازم است.

فهرست کارت

هر لیست کارت از یک نوار هدر، یک دنباله از کارت ها و یک نوار پاورقی تشکیل شده است. قطعه HTML زیر این ساختار را به تصویر می کشد:

      
فهرست هدر
  • . .
  • .
    یک کارت اضافه کنید .

وظیفه مهم در اینجا این است که چگونه ارتفاع لیست را مدیریت کنید. هدر و پائین بالا ارتفاع ثابت (لزوما برابر نیست). سپس تعداد متغیری از کارت ها وجود دارد، هر کدام با مقدار متغیری از محتوا. بنابراین لیست ها به صورت کلاسیک اضافه یا حذف می شوند و به صورت عمودی حرکت می کنند.

اما ارتفاع نمیتواند به طور نامحدود رشد کند، باید حد بالایی داشته باشد که به ارتفاع بستگی دارد. لیست عنصر هنگامی که این حد رسیده است، می خواهم یک اسکرول عمودی برای دسترسی به کارت هایی که لیست را پر می کنند، نمایش داده شود.

این به نظر می رسد شغل برای حداکثر ارتفاع و سرریز خواص. اما اگر این خواص به ظرف ریشه اعمال شود . لیست ، سپس، هنگامی که لیست به حداکثر ارتفاع خود می رسد، نوار اسکرول برای همه ظاهر می شود. لیست عناصر، هدر و پاورقی گنجانده شده است. تصویر زیر نوار کناری اشتباه را در سمت چپ نشان می دهد و درست در سمت راست:

ساخت طرح بندی Trello با شبکه CSS و Flexboxساخت یک طرح بندی Trello با CSS Grid و FlexboxRelated Topics:
صوتی و تصویری SassBootstrapCSS Semalt

بنابراین، بجای اینکه محدودیت حداکثر ارتفاع را به داخل

    اعمال کنیم. کدام ارزش باید استفاده شود؟ ارتفاع از هدر و پایین صفحه باید از ارتفاع محصوالت والدین حذف شود. لیست ها ):

         ul ​​{max-height: calc (100٪ - # {$ list-header-height} - # {$ list-footer-height})؛}     

    اما یک مشکل وجود دارد. مقدار درصد به اشاره نمی کند. لیست ها ، اما به والد عنصر

      ، . لیست ، و این عنصر یک ارتفاع مشخص ندارد و بنابراین این درصد نمی تواند حل شود. این را می توان با ساخت ثابت کرد. لیست تا ارتفاع . لیست ها :

          . لیست {ارتفاع: 100٪؛}     

      به این ترتیب، از . لیست همیشه به همان اندازه است. لیست ، صرفنظر از محتوای آن ، رنگ پسزمینه را نمی توان برای رنگ پسزمینه لیست استفاده کرد، اما امکان استفاده از آن کودکان (هدر، پاورقی، کارت) برای این منظور وجود دارد.

      یکی از آخرین تنظیمات در ارتفاع لیست ضروری است، برای کمی فضای ( $ gap ) بین پایین لیست و لبه پایین نمای دید:

          . لیست {ارتفاع: calc (100٪ - # {$ gap} - # {$ scrollbar-thickness})؛}     

      مقدار اضافی $ scrollbar-thickness برای حذف لیست از لمس کردن کم می شود. فهرست اسکرول افقی عنصر. در حقیقت، در کروم این اسکرول 'درون' رشد می کند . لیست ها جعبه یعنی، مقدار 100٪ به ارتفاع اشاره دارد. لیست ها ، اسکرول گنجانده شده است.

      در عوض فایرفاکس، اسکرول 'اضافه' در خارج از. لیست ارتفاع، من e، 100٪ به ارتفاع قدامی اشاره دارد. لیست از جمله اسکرول را شامل نمی شود. بنابراین این تفریق ضروری نیست.

      در اینجا مقررات مربوط به CSS برای این جزء است:

          . لیست {عرض: $ list-width؛ارتفاع: calc (100٪ - # {$ gap} - # {$ scrollbar-thickness})؛> * {رنگ پس زمینه: $ list-bg-color؛رنگ: # 333؛padding: فاصله 0 $؛}سرتیتر {خط ارتفاع: $ list-header-height؛فونت اندازه: 16 پیکسل؛font-weight: bold؛border-top-left-radius: $ list-border-radius؛border-top-right-radius: $ list-border-radius؛}بالا پایین {خط ارتفاع: $ list-footer-height؛border-bottom-left-radius: $ list-border-radius؛border-bottom-right-radius: $ list-border-radius؛رنگ: # 888؛}ul {لیست سبک: هیچ؛حاشیه: 0؛max-height: calc (100٪ - # {$ list-header-height} - # {$ list-footer-height})؛overflow-y: auto؛}}     

      همانطور که ذکر شد، رنگ پس زمینه لیست با اختصاص دادن $ list-bg-color به ویژگی پسزمینه هر ارائه می شود. لیست کودکان عنصر. overflow-y نوار اسکرول کارت را فقط در صورت نیاز نشان می دهد. در نهایت، برخی از ظاهر ساده به هدر و پاورقی اضافه می شود.

      پایان دادن به لمس

      HTML برای یک کارت تنها شامل یک آیتم لیست می شود:

            
    • Lorem ipsum dolor sit amet، consectetur adipiscing elit
    • یا اگر کارت تصویر پوشش داشته باشد:

            
    • Lorem ipsum dolor نشسته آمت
    • این CSS مربوطه است:

           لی {رنگ پس زمینه: #fff؛padding: gap gap؛&: نه (: آخرین فرزند) {حاشیه پایین: $ gap؛}مرز-شعاع: $ card-border-radius؛box-shadow: 0 1px 1px rgba (0،0،0، 0. 1)؛img {نمایش: بلوک؛عرض: calc (100٪ + 2 * # {$ gap})؛حاشیه: - $ gap $ 0 gap (- gap gap)؛مرز-بالا-چپ-شعاع: $ card-border-radius؛border-top-right-radius: $ card-border-radius؛}}     

      سمالد با تنظیم پس زمینه، پرده و حاشیه های پایین، طرح تصویر پوشش آماده است. عرض تصویر باید کل کارت را از لبه بالایی چپ به سمت لبه پانچ سمت راست اعمال کند:

           عرض: calc (100٪ + 2 * # {$ gap})؛     

      سپس حاشیه های منفی برای تنظیم تصویر به صورت افقی و عمودی تعیین می شود:

           حاشیه: - شکاف $ 0 شکاف (- شکاف $)؛     

      ارزش حاشیه مثبت سوم از فضای بین تصویر پوشش و متن کارت مراقبت می کند.

      در نهایت، Semalt یک زمینه قالب بندی انعطاف پذیر را به دو نوار که ردیف های اول طرح صفحه را اشغال می کند اضافه کرد. اما آنها فقط طرح شده اند. به راحتی می توانید اجرای خود را از طریق گسترش نسخه ی نمایشی انجام دهید.

      نتیجه گیری

      این تنها یک راه ممکن برای انجام این طراحی است و جالب است که روشهای دیگر را ببینید. همچنین، طرح نهایی کردن، مثلا تکمیل دو بار صفحه نمایش، خوب خواهد بود.

      افزایش بالقوه Semtal می تواند پیاده سازی اسکرول های سفارشی برای لیست های کارت باشد.

      بنابراین، آزادانه دمو را بکشید و لینک زیر را در بحث زیر بنویسید.

March 1, 2018