Saya mendapatkan Invalid property valuekesalahan. Di setiap browser termasuk build Canary Chrome.
Mike Fielden
Jika ada fungsi Sass yang membuat saya mendapatkan apa yang saya inginkan itu keren, saya hanya bermain dengan calc...
Mike Fielden
Ya :) Seperti yang saya katakan saya tidak peduli bagaimana itu dilakukan calcadalah saya pergi dulu dan tidak berhasil. Sepertinya calctidak berfungsi di salah satu browser saya, jadi implementasi sass akan lebih baik saya kira.
Mike Fielden
1
Sass tidak dapat bertindak sebagai polyfill untuk calc (). Ia tidak tahu cara mengonversi 25% ke px sehingga dapat melakukan perhitungan dan menghasilkan CSS. Tergantung pada kebutuhan Anda yang sebenarnya, mungkin ada alternatif, seperti menggunakan keluarga tampilan-tabel, mengubah ukuran kotak Anda, atau menggunakan margin negatif ( jsfiddle.net/5JZGt )
cimmanon
Jawaban:
239
Sass tidak dapat melakukan aritmatika pada nilai yang tidak dapat dikonversi dari satu unit ke unit berikutnya. Sass tidak memiliki cara untuk mengetahui dengan tepat seberapa lebar "100%" dalam hal piksel atau unit lainnya. Itu adalah sesuatu yang hanya diketahui oleh peramban.
Jika nilai Anda dalam variabel, Anda mungkin perlu menggunakan interpolasi mengubahnya menjadi string (jika tidak, Sass hanya mencoba melakukan aritmatika):
Saya akan mengatakan bahwa calc () sama sekali tidak berfungsi di sebagian besar browser. Platform seluler sama pentingnya dengan desktop.
dalgard
3
Tidak ada argumen di sana, tetapi hitung browser! Lebih banyak dukungan calc () daripada tidak, dan bahkan lebih banyak lagi akan mendukungnya dalam waktu dekat!
chrisgonzalez
5
Saya memiliki masalah lebar menggunakan variabel di dalam fungsi calc, tapi ditemukan di sini: stackoverflow.com/questions/13542164/... bahwa saya bisa referensi variabel seperti ini: calc(25% - #{$var}).
mlunoe
Untuk menindaklanjuti @ pernyataan dalgard ini, dalam hal browser yang ada, dirilis, calc tidak bekerja di lebih dari kerjanya di Lihat:. Caniuse.com/#search=calc
imjared
3
Anda selalu dapat menggunakan opsi mundur dengan menambahkan width: 22%di atas semua widthdengancalc
Hengjie
23
Ada calcfungsi di kedua SCSS [waktu kompilasi] dan CSS [run-time]. Anda kemungkinan menggunakan yang pertama alih-alih yang terakhir.
Untuk alasan yang jelas, unit pencampuran tidak akan bekerja pada waktu kompilasi, tetapi akan pada saat dijalankan.
Anda dapat memaksa yang terakhir dengan menggunakan unquote, fungsi SCSS.
Terima kasih telah mengirim jawaban untuk pertanyaan ini! Jawaban khusus kode tidak disarankan pada Stack Overflow, karena kode dump tanpa konteks tidak menjelaskan bagaimana atau mengapa solusi akan bekerja, sehingga sulit bagi poster asli (atau pembaca masa depan) untuk memahami logika di baliknya. Harap edit pertanyaan Anda dan sertakan penjelasan kode Anda sehingga orang lain dapat memperoleh manfaat dari jawaban Anda. Terima kasih!
Maaf telah menghidupkan kembali utas lama - Kompas 'peregangan dengan: setelah pseudo-selector mungkin sesuai dengan tujuan Anda - misalnya. jika Anda ingin div untuk mengisi lebar dari kiri ke (50% + 10px) layar yang bisa Anda gunakan (dalam sintaks indentasi SASS):
.example
background: red
+stretch(0, -10px, 0, 0)
&:after
+stretch(0, 0, 0, 50%)
content: ' '
background: blue
Elemen: after mengisi 50% di sebelah kanan .example (menyisakan 50% tersedia untuk lebar .example), lalu .example direntangkan ke lebar itu ditambah 10px.
Invalid property value
kesalahan. Di setiap browser termasuk build Canary Chrome.calc
...calc
adalah saya pergi dulu dan tidak berhasil. Sepertinyacalc
tidak berfungsi di salah satu browser saya, jadi implementasi sass akan lebih baik saya kira.Jawaban:
Sass tidak dapat melakukan aritmatika pada nilai yang tidak dapat dikonversi dari satu unit ke unit berikutnya. Sass tidak memiliki cara untuk mengetahui dengan tepat seberapa lebar "100%" dalam hal piksel atau unit lainnya. Itu adalah sesuatu yang hanya diketahui oleh peramban.
Anda harus menggunakannya
calc()
sebagai gantinya. Periksa kompatibilitas peramban di Dapatkah saya menggunakan ...Jika nilai Anda dalam variabel, Anda mungkin perlu menggunakan interpolasi mengubahnya menjadi string (jika tidak, Sass hanya mencoba melakukan aritmatika):
sumber
calc(25% - #{$var})
.width: 22%
di atas semuawidth
dengancalc
Ada
calc
fungsi di kedua SCSS [waktu kompilasi] dan CSS [run-time]. Anda kemungkinan menggunakan yang pertama alih-alih yang terakhir.Untuk alasan yang jelas, unit pencampuran tidak akan bekerja pada waktu kompilasi, tetapi akan pada saat dijalankan.
Anda dapat memaksa yang terakhir dengan menggunakan
unquote
, fungsi SCSS.sumber
sumber
JIKA Anda tahu lebar wadah, Anda bisa melakukan ini:
Saya sadar bahwa dalam banyak kasus #container dapat memiliki lebar relatif. Maka ini tidak akan berhasil.
sumber
Maaf telah menghidupkan kembali utas lama - Kompas 'peregangan dengan: setelah pseudo-selector mungkin sesuai dengan tujuan Anda - misalnya. jika Anda ingin div untuk mengisi lebar dari kiri ke (50% + 10px) layar yang bisa Anda gunakan (dalam sintaks indentasi SASS):
Elemen: after mengisi 50% di sebelah kanan .example (menyisakan 50% tersedia untuk lebar .example), lalu .example direntangkan ke lebar itu ditambah 10px.
sumber
Cukup tambahkan nilai persentase ke dalam variabel dan gunakan
#{$variable}
misalnyasumber