cari
Rumahhujung hadapan webtutorial cssBagaimana Projek SCSS Ini Kekal Tersusun Bermula dari Peta

Apabila bekerja pada dokumentasi untuk produk saya, LiveAPI, saya mula menggunakan MkDocs, penjana tapak statik yang menghasilkan dokumentasi yang bersih dan profesional.

Walau bagaimanapun, saya mendapati reka bentuknya agak membosankan dan memutuskan untuk meneroka projek itu untuk membuat beberapa penyesuaian.

Perjalanan ini membawa saya ke bahagian seni binanya yang menarik: peta Sass.

Apa yang bermula sebagai pengubahsuaian kasual bertukar menjadi penghargaan yang lebih mendalam untuk reka bentuk yang bernas di sebalik projek ini.

Dalam blog ini, saya akan meneroka cara peta Sass digunakan dalam tema Bahan MkDocs—khususnya, dalam campurannya—dan cara ia menyumbang kepada fleksibiliti dan kebolehskalaan sistem reka bentuk. Mari selami!


Apakah Peta Sass?

Peta Sass ialah struktur data nilai kunci dalam Sass, serupa dengan kamus dalam Python atau objek dalam JavaScript.

Ia membolehkan kami menyimpan data berkaitan secara padat dan mendapatkan semula nilai secara dinamik.

Dalam tema Bahan MkDocs, peta Sass digunakan untuk menentukan titik putus khusus peranti untuk reka bentuk responsif. Contohnya:

@use "sass:map";
@use "sass:list";
@use "sass:math";

$break-devices: (
  mobile: (
    portrait: 220px 479px,
    landscape: 480px 719px,
  ),
  tablet: (
    portrait: 720px 959px,
    landscape: 960px 1219px,
  ),
  screen: (
    small: 1220px 1599px,
    large: 1600px 1999px,
  ),
) !default;

How This SCSS Project Stays Organized Starting from a Map

Peta ini menyusun titik putus ke dalam kategori (mudah alih, tablet, skrin) dan subkategori (potret, landskap, kecil, sederhana, besar).

Ia bukan sekadar takrifan statik—ia adalah tulang belakang bagaimana gelagat responsif dijana secara dinamik.


Cara Peta Sass Berfungsi dalam MkDocs Mixins

Tema menggunakan satu siri fungsi dan campuran untuk mengekstrak dan menggunakan data daripada peta $break-devices. Berikut ialah pecahan:

1. Mengekstrak Nilai Titik Putus

Fungsi peranti pilih-pecah merentasi peta untuk mencari kategori peranti yang berkaitan dan mendapatkan semula titik putus yang berkaitan.

Jika berbilang peringkat ditentukan (cth., potret mudah alih), ia menggali lebih dalam ke dalam hierarki.

@function break-select-device($device) {
  $current: $break-devices;
  @for $n from 1 through length($device) {
    @if type-of($current) == map {
      $current: map.get($current, list.nth($device, $n));
    } @else {
      @error "Invalid device map: #{$devices}";
    }
  }
  @return $current;
}
  • @for Loop: Gelung ini berjalan dari item pertama hingga terakhir dalam senarai $device, memastikan setiap peringkat dalam hierarki disemak.
  • @if Keadaan: Ini menyemak sama ada nilai semasa masih peta dan terus menggali jika benar. Jika tidak, ia terhenti dengan mesej ralat.
  • map.get: Fungsi Sass terbina dalam yang mendapatkan semula nilai daripada peta menggunakan kekunci.

2. Mencipta Pertanyaan Media

Dalam SCSS, mixin ialah blok kod boleh guna semula yang boleh anda tentukan sekali dan gunakan sepanjang helaian gaya anda.

Ia membantu mengekalkan kod anda KERING (Jangan Ulangi Sendiri) dengan membenarkan anda memasukkan gaya atau logik beberapa kali tanpa mengulangi kod.

Sebagai contoh, jika anda perlu menggunakan set gaya berulang kali, anda boleh mencipta campuran dan menggunakannya semula di mana-mana yang diperlukan:

Campuran pecah daripada peranti dan pemisah ke peranti memanfaatkan fungsi ini untuk menjana pertanyaan media secara dinamik. Contohnya:

@use "sass:map";
@use "sass:list";
@use "sass:math";

$break-devices: (
  mobile: (
    portrait: 220px 479px,
    landscape: 480px 719px,
  ),
  tablet: (
    portrait: 720px 959px,
    landscape: 960px 1219px,
  ),
  screen: (
    small: 1220px 1599px,
    large: 1600px 1999px,
  ),
) !default;

Campuran ini menggunakan gaya untuk lebar minimum yang dinyatakan dalam peta. Pendekatan serupa digunakan untuk campuran pecah-ke-peranti, yang menyasarkan lebar maksimum.


Memohon Mixin

Untuk melihat kuasa campuran pecah daripada peranti dan campuran pecah ke peranti, mari lihat contoh praktikal tentang cara menggunakannya untuk melaksanakan gaya responsif secara dinamik.

Contoh 1: Menggunakan Gaya Lalai untuk Peranti Mudah Alih

Secara lalai, kami menggunakan gaya untuk skrin mudah alih menggunakan reka letak grid yang berfungsi dengan baik pada skrin kecil tanpa memerlukan campuran. Contohnya:

@function break-select-device($device) {
  $current: $break-devices;
  @for $n from 1 through length($device) {
    @if type-of($current) == map {
      $current: map.get($current, list.nth($device, $n));
    } @else {
      @error "Invalid device map: #{$devices}";
    }
  }
  @return $current;
}

Dalam kes ini, reka letak sudah dioptimumkan untuk peranti mudah alih. Gaya asas memenuhi keperluan pengguna mudah alih secara lalai.

How This SCSS Project Stays Organized Starting from a Map

Untuk meningkatkan responsif untuk skrin yang lebih besar, anda boleh menggunakan campuran pecah daripada peranti untuk menyasarkan titik putus tertentu.


Contoh 2: Menyasarkan Landskap Tablet

Pada skrin yang lebih kecil, seperti tablet sehingga titik putus landskap, elemen tertentu seperti bar sisi mungkin tidak sesuai kerana ruang skrin yang terhad.

Dalam kes sedemikian, kami boleh menyembunyikan bar sisi dan menunjukkannya sebagai popover dari kiri untuk mengutamakan kandungan utama. Contohnya:

@mixin break-from-device($device) {
  @if type-of($device) == string {
    $device: $device;
  }
  @if type-of($device) == list {
    $breakpoint: break-select-device($device);
    $min: list.nth($breakpoint, 1);

    @media screen and (min-width: $min) {
      @content;
    }
  } @else {
    @error "Invalid device: #{$device}";
  }
}

@mixin break-to-device($device) {
  @if type-of($device) == string {
    $device: $device;
  }
  @if type-of($device) == list {
    $breakpoint: break-select-device($device);
    $max: list.nth($breakpoint, 2);

    @media screen and (max-width: $max) {
      @content;
    }
  } @else {
    @error "Invalid device: #{$device}";
  }
}
  • landskap tablet: Merujuk kepada kategori tablet dan subkategori landskapnya dalam peta $break-devices.
  • Pertanyaan media yang dihasilkan ialah:
.grid {
  display: grid;
  gap: 16px;
  grid-template-columns: repeat(1, 1fr); /* 1 column for small screens */
}

Untuk peranti yang lebih besar daripada titik putus landskap tablet, di mana lebih banyak ruang skrin tersedia, kami boleh memperkenalkan reka letak dua lajur untuk pengedaran kandungan yang lebih baik. Ini boleh dicapai menggunakan campuran pecah daripada peranti:

@include break-to-device(tablet landscape) {
  .sidebar {
    display: none;
  }
}
  • Pertanyaan media yang dihasilkan ialah:
  @media screen and (max-width: 1219px) {
    .sidebar {
      display: none;
    }
  }

How This SCSS Project Stays Organized Starting from a Map


Contoh 3: Menyasarkan Desktop

Apabila saiz skrin meningkat, lebih banyak ruang tersedia untuk mempersembahkan kandungan.

Untuk desktop, kami boleh melaraskan reka letak grid untuk membuat tiga atau empat lajur, bergantung pada saiz skrin, menggunakan campuran pecah daripada peranti.

Untuk desktop kecil:

Apabila saiz skrin cukup besar untuk memuatkan tiga lajur, gaya berikut digunakan:

@use "sass:map";
@use "sass:list";
@use "sass:math";

$break-devices: (
  mobile: (
    portrait: 220px 479px,
    landscape: 480px 719px,
  ),
  tablet: (
    portrait: 720px 959px,
    landscape: 960px 1219px,
  ),
  screen: (
    small: 1220px 1599px,
    large: 1600px 1999px,
  ),
) !default;
  • desktop kecil: Merujuk kepada kategori desktop dan subkategori kecilnya dalam peta $break-devices.
  • Pertanyaan media yang dihasilkan ialah:
@function break-select-device($device) {
  $current: $break-devices;
  @for $n from 1 through length($device) {
    @if type-of($current) == map {
      $current: map.get($current, list.nth($device, $n));
    } @else {
      @error "Invalid device map: #{$devices}";
    }
  }
  @return $current;
}
Untuk desktop yang besar:

Untuk skrin yang lebih besar, kami boleh mencipta empat lajur untuk memaksimumkan penggunaan hartanah skrin:

@mixin break-from-device($device) {
  @if type-of($device) == string {
    $device: $device;
  }
  @if type-of($device) == list {
    $breakpoint: break-select-device($device);
    $min: list.nth($breakpoint, 1);

    @media screen and (min-width: $min) {
      @content;
    }
  } @else {
    @error "Invalid device: #{$device}";
  }
}

@mixin break-to-device($device) {
  @if type-of($device) == string {
    $device: $device;
  }
  @if type-of($device) == list {
    $breakpoint: break-select-device($device);
    $max: list.nth($breakpoint, 2);

    @media screen and (max-width: $max) {
      @content;
    }
  } @else {
    @error "Invalid device: #{$device}";
  }
}
  • desktop besar: Merujuk kepada kategori desktop dan subkategori besarnya dalam peta $break-devices.
  • Pertanyaan media yang dihasilkan ialah:
.grid {
  display: grid;
  gap: 16px;
  grid-template-columns: repeat(1, 1fr); /* 1 column for small screens */
}

How This SCSS Project Stays Organized Starting from a Map


Keanggunan Senibina

Reka bentuk ini menunjukkan niat pengarang untuk mengutamakan kebolehskalaan dan kebolehselenggaraan.

Dengan mengabstraksi titik putus menjadi satu sumber kebenaran dan menggunakan campuran untuk pertanyaan media, mereka telah mencipta sistem yang:

  • Adalah Mudah Diselenggara: Mengemas kini titik putus atau menambah yang baharu tidak memerlukan pemburuan melalui pangkalan kod.
  • Meningkatkan Kebolehbacaan: Pertanyaan media disarikan kepada komponen yang logik dan boleh diguna semula.
  • Menggalakkan Kebolehskalaan: Peranti atau kategori baharu boleh ditambahkan pada peta tanpa melanggar fungsi sedia ada.

Fikiran Akhir

Meneroka Bahan MkDocs telah memperdalam penghargaan saya untuk reka bentuk yang bernas dalam seni bina bahagian hadapan.

Penggunaan peta Sass, campuran dan struktur data hierarki ialah kelas induk dalam sistem reka bentuk yang boleh diselenggara dan berskala.

Jika anda ingin mencipta atau memperbaik gaya responsif anda sendiri, pertimbangkan untuk menggunakan teknik yang serupa.

Pernahkah anda menemui atau menggunakan peta Sass dalam projek anda? Saya ingin mendengar pengalaman dan pandangan anda!

Ingin menyelam lebih dalam ke dalam dunia reka bentuk? Lihat catatan blog kami yang lain:

  • Peraturan Asas Reka Bentuk untuk Bukan Pereka
  • Prinsip Reka Bentuk dan Pelaksanaan UI yang Berkuasa
  • Membuat Widget Hebat

Langgan untuk mendapatkan dos mingguan cerapan tentang pembangunan, IT, operasi, reka bentuk, kepimpinan dan banyak lagi.

Atas ialah kandungan terperinci Bagaimana Projek SCSS Ini Kekal Tersusun Bermula dari Peta. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
@KeyFrames vs CSS Transitions: Apakah perbezaannya?@KeyFrames vs CSS Transitions: Apakah perbezaannya?May 14, 2025 am 12:01 AM

@keyframesandcsstransitionsdifferincomplexity:@keyframesallowsfordetailedanimationseSseSeSs, whileCstransitionShandlesImplestateShanges.usecsstransitionsforhovereffectsLikeButtonColorchanges, dan@keyframesforintricateanimation.

Menggunakan halaman CMS untuk pengurusan kandungan tapak statikMenggunakan halaman CMS untuk pengurusan kandungan tapak statikMay 13, 2025 am 09:24 AM

Saya tahu, saya tahu: terdapat satu tan pilihan sistem pengurusan kandungan yang tersedia, dan sementara saya telah menguji beberapa, tidak ada yang benar -benar menjadi satu, y ' tahu? Model harga pelik, penyesuaian yang sukar, sesetengahnya akhirnya menjadi keseluruhan &

Panduan Terbaik untuk Menghubungkan Fail CSS di HTMLPanduan Terbaik untuk Menghubungkan Fail CSS di HTMLMay 13, 2025 am 12:02 AM

Menghubungkan fail CSS ke HTML boleh dicapai dengan menggunakan unsur -unsur dalam sebahagian HTML. 1) Gunakan tag untuk menghubungkan fail CSS tempatan. 2) Pelbagai fail CSS boleh dilaksanakan dengan menambahkan beberapa tag. 3) Fail CSS luaran menggunakan pautan URL mutlak, seperti. 4) Pastikan penggunaan laluan fail yang betul dan pesanan pemuatan fail CSS, dan mengoptimumkan prestasi boleh menggunakan preprocessor CSS untuk menggabungkan fail.

CSS Flexbox vs Grid: Kajian KomprehensifCSS Flexbox vs Grid: Kajian KomprehensifMay 12, 2025 am 12:01 AM

Memilih Flexbox atau Grid bergantung kepada keperluan susun atur: 1) Flexbox sesuai untuk susun atur satu dimensi, seperti bar navigasi; 2) Grid sesuai untuk susun atur dua dimensi, seperti susun atur majalah. Kedua -duanya boleh digunakan dalam projek untuk meningkatkan kesan susun atur.

Cara memasukkan fail CSS: Kaedah dan amalan terbaikCara memasukkan fail CSS: Kaedah dan amalan terbaikMay 11, 2025 am 12:02 AM

Cara terbaik untuk memasukkan fail CSS adalah menggunakan tag untuk memperkenalkan fail CSS luaran di bahagian HTML. 1. Gunakan tag untuk memperkenalkan fail CSS luaran, seperti. 2. Untuk pelarasan kecil, css sebaris boleh digunakan, tetapi harus digunakan dengan berhati -hati. 3. Projek besar boleh menggunakan preprocessors CSS seperti SASS atau kurang untuk mengimport fail CSS lain melalui @import. 4. Untuk prestasi, fail CSS harus digabungkan dan CDN harus digunakan, dan dimampatkan menggunakan alat seperti CSSNANO.

Flexbox vs Grid: Sekiranya saya belajar kedua -duanya?Flexbox vs Grid: Sekiranya saya belajar kedua -duanya?May 10, 2025 am 12:01 AM

Ya, youdyhouldlearnbothflexboxandgrid.1) flexboxisidealforone-dimensi, flexiblelayoutslikenavigasiMenus.2)

Mekanik Orbital (atau bagaimana saya mengoptimumkan animasi kerangka utama CSS)Mekanik Orbital (atau bagaimana saya mengoptimumkan animasi kerangka utama CSS)May 09, 2025 am 09:57 AM

Apa yang kelihatan seperti refactor kod anda sendiri? John Rhea memisahkan animasi CSS lama yang dia tulis dan berjalan melalui proses pemikiran mengoptimumkannya.

Animasi CSS: Adakah sukar untuk mencipta mereka?Animasi CSS: Adakah sukar untuk mencipta mereka?May 09, 2025 am 12:03 AM

Csanimationsarenotinherenthardbutrequirepracticeandundunderpanderofcsspropertiesandtimingfunctions.1) startwithsimpleanimationslikescalingabuttonhoverusingkeyframes.2)

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Nordhold: Sistem Fusion, dijelaskan
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.