Mulai di Firefox 75, Chrome 79, dan Safari 11.1 (kecuali clamp).
min()dan max()mengambil sejumlah argumen.
clamp()memiliki sintaks clamp(MIN, VAL, MAX)dan setara dengan max(MIN, min(VAL, MAX)).
min()dan max()mungkin bersarang. Mereka dapat digunakan di dalam calc()maupun di luarnya, mereka juga mungkin berisi ekspresi matematika, yang berarti Anda dapat menghindarinya calc()saat menggunakannya.
Oleh karena itu contoh aslinya dapat ditulis sebagai:
Untuk apa nilainya, MS Edge untuk macOS (Versi 81.0.416.68) juga memungkinkan ini. Orang akan menganggap versi Windows juga berfungsi. Tidak tahu versi yang didukung min.
jhelzer
1
Edge baru pada dasarnya adalah Chrome, versinya mengikuti versi Chrome. Data kompatibilitas browser lengkap ada di akhir halaman tertaut.
pengguna
115
Solusi css 'murni' sebenarnya sekarang dimungkinkan dengan menggunakan kueri media:
Solusi bagus! Saya sebenarnya telah menggunakannya untuk ketinggian minimum, tampaknya Anda juga dapat menggunakan kueri media untuk max-height+1
avishic
102
Tidak Anda tidak bisa. max()dan min()telah dihapus dari CSS3 Values and Units. Namun, mereka dapat diperkenalkan kembali dalam Nilai dan Unit CSS4 . Saat ini tidak ada spesifikasi untuk mereka, dan calc()spesifikasi tidak menyebutkan bahwa keduanya valid di dalam suatu calc()fungsi.
Anda bisa menggunakan JavaScript untuk mendapatkan gaya yang dihitung (sebenarnya gaya yang digunakan) dari elemen. Hapus 80px darinya dan bandingkan dengan 500 untuk melihat mana yang lebih besar. Sesuatu seperti var val = parseInt (window.getComputedStyle (el, null) .getPropertyValue ("width")) - 80) untuk mendapatkan lebar - 80 dan el.style.maxWidth untuk menyetel max-width.
David Storey
10
Terima kasih. Namun, saya lebih suka solusi CSS murni.
Arnaud
41
Kapan pun ada pertanyaan CSS dan tanggapan dimulai dengan "Anda dapat menggunakan JavaScript", itu salah. Ada banyak alasan yang valid untuk ingin menyimpan semua kode presentasi di CSS. Semua-- tidak kebanyakan.
Ini adalah ide yang bagus, tetapi jika saya memahami pertanyaan @ Arnaud dengan benar, dia menginginkan lebar maksimal dari salah satu 500pxatau 100% - 80px. Solusi Anda membatasi lebar maksimal 500pxbahkan jika 100% - 80pxlebih besar.
Theophilus
2
Tapi itu sama dengan menggunakan min()karena itu mungkin membantu orang lain.
Seika85
17
Menurut saya, menggunakan min-width alih-alih max-width dalam contoh di atas mungkin setara dengan perilaku yang diminta.
Gert Sønderby
1
Answer membantu saya menambahkan margin ke wadah fleksibel setelah lebar halaman menjadi kecil. codepen.io/OBS/pen/wGrRJV
ofer.sheffer
Saya memposting solusi yang menunjukkan komentar @ GertSønderby memang solusi yang tepat.
SherylHohman
13
Meskipun jawaban @ david-mangold di atas "hampir" ternyata salah.
(Anda dapat menggunakan solusinya jika Anda menginginkan lebar minimum , bukan lebar maksimum ).
Solusi ini mendemonstrasikan bahwa komentar @ gert-sønderby untuk jawaban itu berhasil:
Jawabannya seharusnya menggunakan min-width, bukan max-width.
Ini yang seharusnya dikatakan:
min-width:500px;
width: calc(100%-80px);
Ya, gunakan min-width plus width untuk meniru fungsi max () .
Berikut codepennya (lebih mudah untuk melihat demo di CodePen, dan Anda dapat mengeditnya untuk pengujian Anda sendiri).
Berikut adalah draf proposalnya: https://drafts.csswg.org/css-values-4/#comp-func .
Scroll ke atas halaman untuk melihat tanggal revisi terakhir (Sampai hari ini, terakhir direvisi pada 5 April 2019).
Jawaban:
min()
,,max()
danclamp()
akhirnya tersedia!Mulai di Firefox 75, Chrome 79, dan Safari 11.1 (kecuali
clamp
).min()
danmax()
mengambil sejumlah argumen.clamp()
memiliki sintaksclamp(MIN, VAL, MAX)
dan setara denganmax(MIN, min(VAL, MAX))
.min()
danmax()
mungkin bersarang. Mereka dapat digunakan di dalamcalc()
maupun di luarnya, mereka juga mungkin berisi ekspresi matematika, yang berarti Anda dapat menghindarinyacalc()
saat menggunakannya.Oleh karena itu contoh aslinya dapat ditulis sebagai:
sumber
Solusi css 'murni' sebenarnya sekarang dimungkinkan dengan menggunakan kueri media:
sumber
max-height
+1Tidak Anda tidak bisa.
max()
danmin()
telah dihapus dari CSS3 Values and Units. Namun, mereka dapat diperkenalkan kembali dalam Nilai dan Unit CSS4 . Saat ini tidak ada spesifikasi untuk mereka, dancalc()
spesifikasi tidak menyebutkan bahwa keduanya valid di dalam suatucalc()
fungsi.sumber
Solusinya adalah menggunakan
width
dirinya sendiri.sumber
500px
atau100% - 80px
. Solusi Anda membatasi lebar maksimal500px
bahkan jika100% - 80px
lebih besar.min()
karena itu mungkin membantu orang lain.Meskipun jawaban @ david-mangold di atas "hampir" ternyata salah.
(Anda dapat menggunakan solusinya jika Anda menginginkan lebar minimum , bukan lebar maksimum ).
Solusi ini mendemonstrasikan bahwa komentar @ gert-sønderby untuk jawaban itu berhasil:
Jawabannya seharusnya menggunakan
min-width
, bukanmax-width
.Ini yang seharusnya dikatakan:
Ya, gunakan min-width plus width untuk meniru fungsi max () .
Berikut codepennya (lebih mudah untuk melihat demo di CodePen, dan Anda dapat mengeditnya untuk pengujian Anda sendiri).
Yang mengatakan, jawaban @ andy di atas mungkin lebih mudah untuk alasan tentang, dan mungkin lebih tepat dalam banyak kasus penggunaan.
Perhatikan juga, bahwa pada akhirnya a
max()
danmin()
fungsi dapat diperkenalkan ke CSS, tetapi mulai April 2019 ini bukan bagian dari spesifikasi.Di sini Anda dapat memeriksa
max()
kompatibilitas Browser:https://developer.mozilla.org/en-US/docs/Web/CSS/max#Browser_compatibility .
Berikut adalah draf proposalnya:
https://drafts.csswg.org/css-values-4/#comp-func .
Scroll ke atas halaman untuk melihat tanggal revisi terakhir (Sampai hari ini, terakhir direvisi pada 5 April 2019).
sumber
@Amaud Apakah ada alternatif untuk mendapatkan hasil yang sama?
Ada pendekatan css murni non-js yang akan mencapai hasil serupa. Anda perlu menyesuaikan padding / margin wadah elemen induk.
sumber