Kompilasi yang kurang agresif dengan CSS3 calc


336

The Kurang compiler yang saya gunakan ( OrangeBits dan dotless 1.3.0.5 ) secara agresif menerjemahkan

body { width: calc(100% - 250px - 1.5em); }

ke

body { width: calc(-151.5%); }

Yang jelas tidak diinginkan. Saya bertanya-tanya apakah ada cara untuk memberi sinyal ke kompiler Kurang untuk dasarnya mengabaikan atribut selama kompilasi. Saya telah mencari melalui dokumentasi Less dan dokumentasi kedua kompiler, dan saya tidak dapat menemukan apa pun.

Apakah kompiler Kurang atau Kurang mendukung ini?

Jika tidak, apakah ada pemanjang CSS yang berfungsi?


9
Apakah Anda yakin tidak ingin kompiler kurang agresif?
fiatjaf

Saya juga sangat yakin, ingin kompiler menjadi lebih agresif! (negasi ganda dalam komentar sebelumnya membingungkan saya;)) (jadi suara saya juga untuk fitur yang bagus di bawah ini)
Andreas Dietrich

Jawaban:


530

Kurang tidak lagi mengevaluasi ekspresi di dalam calcsecara default sejak itu v3.00.


Jawaban asli ( Less v1.x...2.x):

Melakukan hal ini:

body { width: calc(~"100% - 250px - 1.5em"); }

Dalam Less 1.4.0 kita akan memiliki strictMathsopsi yang mengharuskan semua perhitungan Less berada di dalam tanda kurung, sehingga calcakan bekerja "out-of-the-box". Ini adalah opsi karena ini merupakan perubahan besar. Beta awal 1.4.0 mengaktifkan opsi ini secara default. Versi rilis telah dinonaktifkan secara default.


2
Perhatikan bahwa jika Anda kurang kompilasi dengan reses twitter itu mengabaikan ini melarikan diri . Setidaknya pada saat menulis komentar ini.
Attila Fulop

1
Saya baru saja mencoba calc(100% - 50px)less.css 1.4.0 dan hasilnya adalah calc(50%). ~"..."Trik yang luar biasa terus bekerja, tetapi saya bingung dengan pernyataan "out-of-the-box", yang membuat saya berpikir hal di atas akan berhasil. Luke, bagaimana dukungan untuk calcperubahan dalam Less 1.4.0? Terima kasih!
Brian M. Hunt

2
Pertanyaannya adalah mengapa less.js berupaya menghitung ini sejak awal? Seharusnya ada kesalahan "100% - 250px" karena tidak bisa menghitung jawaban yang masuk akal.
mpen

72
Untuk pembaca yang akan datang, Anda juga dapat melarikan diri dari operator, memungkinkan Anda untuk menggunakan variabel juga. Contoh:calc(@somePercent ~"-" @someLength)
0b10011

10
Alih-alih mengurangi kesalahan perhitungan ini atau membuat kesalahan mengapa tidak dapat menyadari apa yang pengguna coba lakukan dan membiarkannya sendiri? Jelas persentase dan nilai piksel tidak dapat dihitung bersama dalam waktu kurang.
dfmiller

37

Penggunaan kata kunci yang sangat umum adalah mengambil 100% lebar dan menambahkan beberapa margin di sekitar elemen.

Seseorang dapat melakukannya dengan:

@someMarginVariable = 15px;

margin: @someMarginVariable;
width: calc(~"100% - "@someMarginVariable*2);
width: -moz-calc(~"100% - "@someMarginVariable*2);
width: -webkit-calc(~"100% - "@someMarginVariable*2);

-o-calc- belum didukung .
lain

28

Ada beberapa opsi untuk melarikan diri dengan hasil yang sama:

body { width: ~"calc(100% - 250px - 1.5em)"; }
body { width: calc(~"100% - 250px - 1.5em"); }
body { width: calc(100% ~"-" 250px ~"-" 1.5em); }

9

Ada cara yang lebih rapi untuk memasukkan variabel di dalam escaped calc, seperti yang dijelaskan dalam posting ini: fungsi CSS3 calc () tidak berfungsi dengan Less # 974

@variable: 2em;

body{ width: calc(~"100% - @{variable} * 2");}

Dengan menggunakan kurung keriting Anda tidak perlu menutup dan membuka kembali tanda kutip yang keluar.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.