informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Mendeklarasikan variabel - -
Bisa berupa nilai apa pun atauekspresi
--direction: to top;
--gradientColor: deeppink, deepskyblue;
--gradient: to top, deeppink, deepskyblue;
--linear-gradient: linear-gradient(to top, deeppink, deepskyblue);
Elemen turunan dapat mewarisi set CSS oleh elemen leluhur tanpa perubahan.Properti khususnilai.
body {
--color: deepskyblue;
}
.box {
background-color: var(--color);
}
:root {
--borderColor: #ccc;
}
Karakteristik variabel
Nilai variabel dapat diteruskan satu sama lain
body {
--green: #4CAF50;
--successColor: var(--green);
}
Variabel css tidak dapat memberikan nilai pada dirinya sendiri
/* 这种写法是非法的 */
--primary-color: var(--primary-color, #2a80eb);
Variabel css tidak dapat digunakan sebagai nilai fitur @media media
:root {
--maxWidth: 640px;
}
/* 不合法,语法无效 */
@media (max-width: var(--maxWidth)) {}
Variabel CSS sebagai nilai properti konten tidak berpengaruh
/* 无效 */
.bar::before {
content: var(--percent);
}
Gunakan variabel var()
p {
background-color: var(--any-what, deepskyblue);
}
deepskyblue adalahNilai bawaan, gunakan deepskyblue ketika –apa pun tidak valid
body {
--color: 20px;
background-color: deeppink;
background-color: var(--color, deepskyblue);
}
Warna latar belakang akhir badan adalah transparan karena nilai awal warna latar belakang transparan
Selama nilai parameter pertama dari fungsi var() valid, meskipun nilai parameternya berantakan, nilai parameter tersebut akan tetap diurai secara normal. Jika nilai parameter pertama ilegal, fungsi var() akan menentukan nilai awal atau nilai yang diwarisi dari properti CSS saat ini (jika ada warisan), yaitu, dirender sesuai dengan aturan kata kunci global yang tidak disetel. (Perhatikan bahwa aturan rendering serupa dan tidak setara dengan menyetel langsung kata kunci yang tidak disetel.)
html {
font-size: 14px;
}
body {
--size: 20;
font-size: 16px;
font-size: var(--size)px;
}
Ukuran font badan akhir adalah 14px
Prinsip: Di sini font-size:var(–size)px setara dengan font-size:20 px. Perhatikan bahwa ada spasi setelah 20, yang merupakan nilai atribut font-size ilegal. Karena var(-size)px secara tata bahasa sah, font-size:16px akan disetel ulang, dan ukuran font yang ditetapkan oleh elemen induk 14px pada akhirnya akan digunakan.
Rencana perbaikannya adalah:
body {
--size: 20;
font-size: calc(var(--size) * 1px);
}
atau
body {
--size: 20px;
font-size: var(--size);
}
js mendapatkan nilai variabel global CSS
let borderColor= getComputedStyle(document.documentElement).getPropertyValue("--borderColor");
// 获取 --color CSS变量值
var cssVarColor = getComputedStyle(box).getPropertyValue('--color');
// 输出cssVarColor值,结果是deepskyblue
console.log(cssVarColor);
js mengubah nilai variabel global CSS
document.documentElement.style.setProperty("--borderColor","green");
js menetapkan nilai variabel lokal CSS
<div id="box">
<img src="1.jpg" style="border: 10px solid var(--color);">
</div>
box.style.setProperty('--color', 'deepskyblue');
Contoh praktis
/* 有效 */
.bar::before {
counter-reset: progress var(--percent);
content: counter(progress);
}
https://blog.csdn.net/weixin_41192489/artikel/detail/121007837
:root {
--icon-check: url("data:image/svg+xml,%3Csvg viewBox='0 0 32 32'%3E%3Cpath
fill='green' d='M28.027 5.161l-17.017 17.017-7.007-7.007-3.003 3.003 10.010 10.010
20.020-20.020z'%3E%3C/path%3E%3C/svg%3E");
}
.icon-check {
background: var(--icon-check) no-repeat center / 16px;
/* 尺寸限制 */
display: inline-block;
width: 20px; height: 20px;
}
.valid-pass::after {
content: var(--icon-check);
/* 尺寸限制 */
display: inline-block;
width: 20px; height: 20px;
}
Lihat efeknya https://demo.cssworld.cn/baru/8/1-3.php
Lihat efeknya https://demo.cssworld.cn/baru/8/1-1.php
button {
/* 这里的空格很重要 */
--open: ;
color: #2a80eb;
-webkit-text-fill-color: #fff;
border-radius: 4px;
padding: 9px 20px;
border: 1px solid var(--open, rgba(0,0,0,.1));
box-shadow: var(--open, inset 0 1px 2px rgba(0,0,0,.1));
background: var(--open, linear-gradient(#0003, transparent)) currentColor;
text-shadow: var(--open, -1px -1px #0003);
transition: .15s;
}
button:active {
/* 任意全局关键字都可以 */
--open: inherit;
}
Prinsip implementasi
Ada spasi di depan –open:;, yaitu nilai atribut –open adalah spasi, yang mungkin valid secara sintaksis.Namun spasi tidak valid untuk properti CSS seperti box-shadow dan background. Oleh karena itu, properti CSS seperti box-shadow dan background diselesaikan ke nilai awal.
Setelah mengklik tombol untuk memicu :active pseudo-class, pernyataan CSS –open:inherit akan dijalankan. Kata kunci CSS global harus tidak valid sebagai nilai atribut khusus CSS, sehingga fungsi var() akan menggunakan atribut CSS cadangan nilai untuk rendering.
https://blog.csdn.net/weixin_41192489/artikel/detail/121021277
https://blog.csdn.net/weixin_41192489/artikel/detail/121022170