Jadual Kandungan
Penyelesaian golf dalam 12 percubaan
Kaedah "hanya memusatkan perkara dang"
Percubaan 12: 115 bait
Kaedah "sempadan"
Percubaan 9 dan 10: 118 bait
Kaedah "margin funky"
Percubaan 13:

Latihan golf CSS

Apr 21, 2025 am 09:39 AM

Latihan golf CSS

Kod Golf adalah sejenis pengaturcaraan di mana matlamatnya adalah untuk menyelesaikan tugas menggunakan sedikit bait yang mungkin. CSSBattle adalah kod medan perang golf di mana pemain lengkap untuk mencipta imej sasaran menggunakan CSS dan HTML.

Peraturannya agak mudah:

  • Tiada sumber luaran (maaf, tidak Latihan golf CSS)
  • Penyelesaian anda mesti diberikan dengan betul dalam krom (hanya untuk tujuan pemarkahan)

Ini boleh menjadi pemergian yang sangat menyeronokkan dari kerja-kerja depan sehari-hari. Tidak perlu risau tentang mengekalkan, semantik, prestasi, kebolehcapaian, atau apa -apa selain membuat sesuatu benar -benar, benar -benar kecil dan masih diberikan dengan betul.

Penyelesaian golf dalam 12 percubaan

Pemikiran jenis ini adalah pemergian yang cukup dramatik dari bagaimana kebanyakan kita menulis kod depan untuk tapak pengeluaran (saya harap!), Jadi saya telah menyiarkan semua penyelesaian saya di GitHub dalam usaha untuk berkongsi pengetahuan dan belajar dari orang lain. Sebagai kesan sampingan yang bernasib baik, ia juga bermakna terdapat sejarah yang agak terperinci mengenai penyerahan saya.

Berikut adalah akaun permulaan percubaan saya ke-7, yang kelihatan seperti ini:

Kaedah "hanya memusatkan perkara dang"

Pendekatan pertama yang munasabah adalah dengan hanya melekatkan elemen di tengah -tengah halaman, menampar bayang -bayang kotak dan jejari sempadan di atasnya, dan memanggilnya. Jika kita menulis ini "untuk sebenar," mungkin kelihatan seperti ini:

 

  
    <yaya>
      badan {
        Latar Belakang: #0B2429;
        Margin: 0;
      }

      .leaf {
        lebar: 150px;
        Ketinggian: 150px;
        Radius sempadan: 67% 0;
        Latar Belakang: #F3AC3C;
        Margin: 75px 0 75px 175px;
        kotak bayang-bayang:
          -50px 0 #998235, 
          -100px 0 #1A4341
      }
    
  
  
    <div></div>
  
</yaya>
Salin selepas log masuk

Tetapi itulah 423 bait! Itu tidak akan dilakukan untuk golf CSS, jadi mari kita lihat apa yang boleh kita keluarkan.

Percubaan 1: 144 bait

 <p style="margin: 75 167; ketinggian: 150; lebar: 150; radius sempadan: 67%0; box-shadow: -50px 0#998235, -100px 0#1a4341,0 0 0 5in#0b2429; Latar Belakang:#f3ac3c"></p>
Salin selepas log masuk

Inilah versi golf. Sudah pasti ada kegilaan yang berlaku di sini - tidak , tidak , tidak

, tidak ada '. Penyemak imbas tidak memerlukannya (dan, sebenarnya, memasukkannya untuk kami), jadi kami menyimpan banyak bait dengan meninggalkan mereka. Kami menggunakan

bukannya

kerana ia lebih pendek, dan kami tidak menutup tag sama sekali kerana ia tidak diperlukan untuk membuat perkara.

CSS itu sendiri tidak jauh berbeza, selain dari fakta bahawa kami telah menggunakan bayang -bayang kotak yang besar dan bukannya latar belakang pada elemen badan ("latar belakang" yang panjang sehingga mengelakkannya dapat bermanfaat). Ia juga digariskan dalam elemen sejak tag tag kos tambahan.

Anda mungkin menyedari bahawa kami menggunakan 5in untuk penyebaran dalam bayang -bayang kotak terakhir kami. Bermain dengan unit pelik adalah sebahagian besar golf CSS. Dalam kes ini, kita hanya memerlukan bayangan untuk menutup kanvas 400 × 300 dan '5in' (480px) adalah lebih pendek daripada nilai piksel.

Percubaan 2: 141 bait

 <p style="margin:" ketinggian: lebar: radius sempadan: box-shadow: latar belakang:></p>
Salin selepas log masuk

Ini memperkenalkan helah golf yang sangat penting: Menggantikan ruang dengan tanda -tanda plus membolehkan kita mengeluarkan petikan di sekitar atribut, menjimatkan bait pasangan. Saya tidak pasti mengapa ini berfungsi. Seseorang mencadangkan ia mungkin berkaitan dengan bahagian spesifikasi HTML ini. Sekiranya anda mempunyai jawapan yang lebih baik, sila beritahu saya!

Percubaan ini juga membersihkan beberapa kesilapan ruang putih dari percubaan terakhir.

Percubaan 3: 126 bait

 
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Menggunakan tag

dan bukannya

bermaksud:

  • Kami tidak lagi menghabiskan ketinggian atau lebar tetapan bait pada perenggan
  • Kami mendapat akses ke BGColor

BGColor adalah atribut yang tidak disengajakan yang sering muncul dalam penyelesaian golf CSS. Ia hanya berfungsi pada beberapa tag (

termasuk), dan melakukan dua perkara hebat:
  • Menyelamatkan kami daripada membelanjakan bait pada "latar belakang:"
  • Menyelamatkan kami dengan membolehkan kami menghilangkan # dalam warna hex. Di samping itu, jika warna berakhir dalam satu atau dua sifar, kita boleh mengeluarkannya dan ia masih akan diberikan dengan betul. Sebagai contoh, FFFF00 adalah sama dengan FFFF.

Terdapat regresi golf dalam lelaran ini! Bolehkah anda melihatnya?

Kaedah "sempadan"

Pada ketika ini, saya telah menghabiskan beberapa jam untuk mengamalkan dan mematikan dengan sasaran ini dan semakin terperangkap. Nasib baik, CSSBattle mempunyai komuniti yang mesra mengenai spektrum yang lebih bersedia untuk meminjamkan tangan.

Pada masa itu, Praveen memegang tempat #1 dengan dua bait kurang daripada yang saya telah berjaya, jadi saya meminta bantuan. Beliau mencadangkan memanfaatkan kedua -dua unsur -unsur dan untuk meletakkan segala -galanya semasa menggunakan sempadan sebagai ganti warna latar belakang.

Percubaan 4: 126 bait

 <gaya>*{border-radius: 67% 0; sempadan: 75px pepejal#f3ac3c; margin: 0 50; box-shadow: -50px 0#998235, -100px 0#1a4341,0 0 0 5in#0b2429</gaya>
Salin selepas log masuk

Ini adalah pemergian yang cukup besar dari strategi terakhir kami. Tag badan kami hilang dan kami menggunakan *{untuk mensasarkan tag dan yang dimasukkan penyemak imbas untuk kami. Gabungan margin dan sempadan menjatuhkan bentuk kami tepat di mana ia perlu, dan bayang-bayang kotak pada merangkumi semua perkara yang berlebihan yang anda lihat dari gaya pada .

Ini sukar bagi saya untuk Grok, tetapi Praveen membuat rajah yang menerangkan perkara dengan baik. Inilah versi yang tersembunyi:

A dan B adalah margin dan sempadan pada , dan c adalah margin pada

. Margin yang betul pada tidak melakukan apa -apa kerana tidak ada ruang untuk menolak ke kiri dan ia sudah mempunyai lebar sifar.

Sebaik sahaja bayang -bayang kotak kami digunakan, B ditutup dan semua yang tersisa adalah imej sasaran kami.

Masih terdapat beberapa pengoptimuman yang hilang di sini. Dorus van den Oord dapat mengambil kaedah sempadan ke bawah 121 bait, menawarkan sedikit nasihat ini:

Petunjuk kecil untuk sampai ke 121: Bagaimana jika anda boleh memindahkan elemen sebanyak seperempat ...?

Percubaan 5 dan 6: 122 bait

 <gaya>*{border-radius: 67% 0; sempadan: 75px pepejal#f3ac3c; margin: 0 50; box-shadow: -53q 0#998235, -25vw 0#1a4341,0 0 0 5in#0b2429</gaya>
Salin selepas log masuk

Ternyata semua yang kami perlukan adalah satu unit yang tidak pernah didengar oleh sesiapa sahaja (Q) (dan VW yang rendah hati). Mempunyai menulis "PX" jarang betul dalam CSS Golf, jadi ia adalah sesuatu yang perlu dilihat. Di sini, kita boleh menggantikan 100px dengan 25VW dan 50px dengan 53Q.

A Q, atau suku milimeter, adalah betul-betul-1/4 dari milimeter, atau hanya di bawah piksel. Unit Q adalah ruji golf CSS sebagai salah satu daripada dua nilai (yang lain %) yang memerlukan hanya satu bait untuk menyatakan. Saya telah menggabungkan percubaan ke -5 dan ke -6 saya di sini kerana kedua -duanya hanya tweak unit. Kami masih byte dari 121 walaupun!

Percubaan 7: 121 bait

 <gaya>*{border-radius: 67%0; sempadan: 75px pepejal#f3ac3c; margin: 0 50; box-shadow: -53q 0#998235, -25vw 0#1a4341,0 0 0 5in#0b2429</gaya>
Salin selepas log masuk

Kami akhirnya menetapkan regresi itu dari percubaan ketiga, terima kasih kepada permintaan tarik dari Praveen. Peratusan tidak memerlukan ruang di antaranya dan nilai-nilai berikutnya, jadi kita dapat menyelamatkan byte di radius sempadan kita. Ini adalah contoh hebat bagaimana kod perkongsian dapat membantu semua orang yang terlibat. Saya telah terjebak dengan ini untuk masa yang lama.

Kaedah "margin funky"

Sempadan bukan satu -satunya pendekatan, walaupun! Masukkan margin funky Rasmus Fløe:

Saya mendapat 123 chars di #7 dengan menggunakan box-shadow dan margin funky: 75 400 75-150 :)

Percubaan 8: 120 bait

 
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Begini cara ini berfungsi, seperti yang dijelaskan oleh Rasmus:

Margin kanan positif menolaknya dari kanvas ke kiri - dan margin kiri negatif membentangkan elemen ke lebar yang dikehendaki :)

Di sini ia ditarik:

Margin yang betul (b) menolak elemen

sepanjang jalan ke kiri, runtuhnya ke lebar sifar. Margin kiri negatif (a) kemudian membentangkannya kembali ke 150px lebar (lebar bentuk daun), dan kemudian bayang -bayang kotak kami (C) cukup diimbangi untuk dilihat. Ini hebat kerana kita tidak lagi perlu berurusan dengan bayang -bayang kotak negatif untuk mendapatkan segala -galanya dengan betul.

Kami juga kembali ke Bgcolor dan dapat memanfaatkan warna latar belakang yang bagus: kerana tidak mempunyai warna latar belakang sendiri, ia mewarisi satu dari

.

Percubaan 9 dan 10: 118 bait

 
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dengan sedikit lebih banyak unit-wrangling kami dapat menyelamatkan diri saya dua lagi bait (props to Dorus, yang merupakan yang pertama untuk mengetahui pengoptimuman ini). Melaraskan margin menjimatkan digit (150 menjadi 90), dan, sebagai bonus manis, kita dapat menukar 86mm hingga 70mm, yang menjadi 7cm. Saya sekali lagi menggabungkan dua percubaan di sini yang merupakan pembetulan unit kecil. (Saya malu untuk mengatakan bahawa saya pada mulanya terlepas penukaran MM -cm.)

Percubaan 11: 117 bait

 
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Romain Deltour adalah yang pertama mencari penyelesaian 117-bait ini. Menukar 340 hingga 85% bermakna kita dapat menghilangkan ruang selepas salah satu nilai kita (sama seperti yang kita lakukan dengan Radius Border), menjimatkan bait lain.

Percubaan 12: 115 bait

 
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dua minggu penuh selepas penyelesaian 117-bait Romain, Viacheslav Popov dapat Alpha Composite ke 115 bait melalui kod hex 4 digit.

Saya sangat suka ini kerana - bukan sahaja ia pandai pandai - tetapi banyak orang (termasuk saya) menganggap sasaran itu telah dioptimumkan sepenuhnya. Kegigihan Viacheslav kedua-duanya mencetuskan perbincangan pusingan baru dan menambah satu lagi CSS-Trick ™ ke senjata kami untuk sasaran masa depan.

Percubaan 13:

Ini seolah -olah sangat dekat dengan optimum kepada saya tetapi itu pastinya tidak bermakna ia tidak dapat ditewaskan - mengapa tidak memberikannya? Terdapat seni terdahulu untuk memulakan anda, banyak orang yang bersedia membantu, dan juga beberapa alat. Selamat Golf ⛳️

Atas ialah kandungan terperinci Latihan golf CSS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

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!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Vue 3 Vue 3 Apr 02, 2025 pm 06:32 PM

Ia &#039; s! Tahniah kepada pasukan Vue untuk menyelesaikannya, saya tahu ia adalah usaha besar dan lama datang. Semua dokumen baru juga.

Bolehkah anda mendapatkan nilai harta CSS yang sah dari penyemak imbas? Bolehkah anda mendapatkan nilai harta CSS yang sah dari penyemak imbas? Apr 02, 2025 pm 06:17 PM

Saya mempunyai seseorang yang menulis dengan soalan yang sangat legit ini. Lea hanya blog tentang bagaimana anda boleh mendapatkan sifat CSS yang sah dari penyemak imbas. That &#039; s seperti ini.

Kad yang disusun dengan kedudukan melekit dan sasaran sass Kad yang disusun dengan kedudukan melekit dan sasaran sass Apr 03, 2025 am 10:30 AM

Pada hari yang lain, saya melihat sedikit ini sangat indah dari laman web Corey Ginnivan di mana koleksi kad timbunan di atas satu sama lain semasa anda menatal.

Sedikit di CI/CD Sedikit di CI/CD Apr 02, 2025 pm 06:21 PM

Saya &#039;

Menggunakan Markdown dan Penyetempatan di Editor Blok WordPress Menggunakan Markdown dan Penyetempatan di Editor Blok WordPress Apr 02, 2025 am 04:27 AM

Jika kita perlu menunjukkan dokumentasi kepada pengguna secara langsung dalam editor WordPress, apakah cara terbaik untuk melakukannya?

Membandingkan penyemak imbas untuk reka bentuk responsif Membandingkan penyemak imbas untuk reka bentuk responsif Apr 02, 2025 pm 06:25 PM

Terdapat beberapa aplikasi desktop ini di mana matlamat menunjukkan laman web anda pada dimensi yang berbeza pada masa yang sama. Oleh itu, anda boleh menulis

Kenapa kawasan -kawasan yang dikurangkan ungu di susun atur flex tersilap dianggap sebagai 'ruang limpahan'? Kenapa kawasan -kawasan yang dikurangkan ungu di susun atur flex tersilap dianggap sebagai 'ruang limpahan'? Apr 05, 2025 pm 05:51 PM

Soalan mengenai kawasan slash ungu dalam susun atur flex Apabila menggunakan susun atur flex, anda mungkin menghadapi beberapa fenomena yang mengelirukan, seperti dalam alat pemaju (D ...

Bagaimana untuk memilih elemen kanak -kanak dengan item nama kelas pertama melalui CSS? Bagaimana untuk memilih elemen kanak -kanak dengan item nama kelas pertama melalui CSS? Apr 05, 2025 pm 11:24 PM

Apabila bilangan elemen tidak ditetapkan, bagaimana untuk memilih elemen anak pertama nama kelas yang ditentukan melalui CSS. Semasa memproses struktur HTML, anda sering menghadapi unsur yang berbeza ...

See all articles