Pemahaman mendalam tentang pembolehubah css (ringkasan tersusun)

WBOY
Lepaskan: 2022-01-26 16:53:29
ke hadapan
1567 orang telah melayarinya

Artikel ini membawakan anda pengetahuan yang berkaitan tentang pembolehubah css secara beransur-ansur mula menyokong fungsi sarang, pembolehubah dan fungsi.

Pemahaman mendalam tentang pembolehubah css (ringkasan tersusun)

Sesiapa yang telah menggunakan sass atau kurang tahu bahawa mereka boleh mempunyai fungsi sarang, pembolehubah dan fungsi Malah, dalam css asli, ia telah mula disokong secara beransur-ansur. Memang benar bahawa pada masa ini hanya Anda dan saya yang mengetahuinya dengan baik, tetapi yang lain masih dalam peringkat permulaan Jika anda memahami pembolehubah CSS, anda akan mendapati bahawa CSS telah menjadi sangat berkuasa mulai sekarang.

Pengisytiharan pembolehubah

Apabila mengisytiharkan pembolehubah, tambah dua sempang (--) di hadapan nama pembolehubah

// 局部声明
body {
  --foo: #ed145b;
  --bar: #F7EFD2;
}
// 全局声明
:root{
  --foo: #ed145b;
  --bar: #F7EFD2;
}
Salin selepas log masuk

Sebagai contoh , di atas Kami mengisytiharkan dua pembolehubah: --foo dan --bar Sebenarnya, anda hanya perlu memahaminya sebagai sifat tersuai css ia tidak berbeza daripada sifat formal seperti warna dan saiz fon, tetapi ia tidak mempunyai makna lalai . Beri perhatian kepada css Nama pembolehubah adalah sensitif huruf besar dan biasanya CSS yang kami tulis tidak.

Anda mungkin bertanya, mengapa memilih dua baris kata hubung (--) untuk mewakili pembolehubah? Kerana $foo digunakan oleh Sass, dan @foo digunakan oleh Less. Untuk mengelakkan konflik, pembolehubah CSS rasmi menggunakan dua baris kata hubung.

Konvensyen penamaan

Mengenai penamaan, pelbagai bahasa mempunyai beberapa petunjuk Contohnya, pemilih CSS tidak boleh bermula dengan nombor, dan pembolehubah dalam JS tidak boleh secara langsung dalam pembolehubah CSS , tiada sekatan seperti itu, seperti:

:root {
  --1: #369;
}
body {
  background-color: var(--1);
}
Salin selepas log masuk

tidak boleh mengandungi aksara seperti $, [, ^, (, %, dll. Aksara biasa terhad kepada "nombor [0-9]" " huruf [a -zA-Z]", "underscore_" dan "dash-" ialah gabungan, tetapi ia boleh dalam bahasa Cina, Jepun atau Korea, contohnya:

body {
  --深蓝: #369;
  background-color: var(--深蓝);
}
Salin selepas log masuk

fungsi var()

Selepas mengisytiharkan pembolehubah, kita secara semula jadi ingin mendapatkan dan menggunakannya, jadi fungsi var() digunakan untuk membaca pembolehubah

p {
  color: var(--foo);
  border::1px solid var(--bar);
}
Salin selepas log masuk

Parameter kedua var()

color: var(--foo, #ED145B); //第二个参数就是默认值,假设--foo为空情况下,会使用#ED145B
Salin selepas log masuk

Fungsi var() juga boleh digunakan dalam pengisytiharan pembolehubah

:root {
  --primary-color: red;
  --logo-text: var(--primary-color); // 上面刚声明,这里就可以使用
}
Salin selepas log masuk

Nilai pembolehubah hanya boleh digunakan sebagai nilai atribut, bukan nama atribut

.foo {
  --side: margin-top;
  /* 很显然,下面是无效的 */
  var(--side): 20px;
}
Salin selepas log masuk

Jenis nilai pembolehubah

Jika nilai pembolehubah ialah rentetan, ia boleh digabungkan dengan rentetan lain

--bar: 'hello';
--foo: var(--bar)' world';
// 示例
body:after {
  content: '--screen-category : 'var(--screen-category);
}
Salin selepas log masuk

Jika nilai pembolehubah ialah nilai berangka, ia tidak boleh digunakan secara langsung dengan unit berangka

foo {
  --gap: 20;
  /* 下面无效 */
  margin-top: var(--gap)px;
 /* 通过calc去计算,下面有效 */
  margin-top: calc(var(--gap) * 1px);
}
Salin selepas log masuk

Jika nilai pembolehubah mengandungi Jika terdapat unit, ia tidak boleh ditulis sebagai rentetan

/* 无效 */
.foo {
  --foo: '20px';
  font-size: var(--foo);
}
/* 有效 */
.foo {
  --foo: 20px;
  font-size: var(--foo);
}
Salin selepas log masuk

Skop

Pembolehubah CSS yang sama boleh diisytiharkan dalam berbilang pemilih apabila membaca, pengisytiharan dengan keutamaan tertinggi ini berkuat kuasa dengan peraturan "lata" CSS

<style>
  :root { --color: blue; }
  div { --color: green; }
  #alert { --color: red; }
  * { color: var(--color); }
</style>
<p>蓝色</p>
<div>绿色</div>
<div id="alert">红色</div>
Salin selepas log masuk

Dalam kod di atas, tiga pemilih mengisytiharkan -. -pembolehubah warna apabila elemen berbeza membaca pembolehubah ini, mereka akan menggunakan peraturan dengan keutamaan tertinggi, jadi warna bagi tiga perenggan adalah berbeza

Pemprosesan keserasian

Untuk penyemak imbas yang. tidak menyokong pembolehubah CSS, kaedah penulisan berikut boleh digunakan >

a {
  color: #7F583F;
  color: var(--primary); // 应该很好理解,如果这里读不出值,那么并不会覆盖上面的color
}
Salin selepas log masuk
Anda juga boleh menggunakan arahan @support untuk mengesan

a {
@supports ( (--a: 0)) {
  /* supported */
}
@supports ( not (--a: 0)) {
  /* not supported */
}
Salin selepas log masuk
operasi JavaScript (esensi)

<🎜. >JavaScript juga boleh mengesan sama ada penyemak imbas menyokong pembolehubah CSS

JavaScript mengendalikan pembolehubah CSS seperti berikut
const isSupported =
  window.CSS &&
  window.CSS.supports &&
  window.CSS.supports(&#39;--a&#39;, 0);
if (isSupported) {
  /* supported */
} else {
  /* not supported */
}
Salin selepas log masuk

Ini bermakna JavaScript boleh menyimpan sebarang nilai dalam helaian gaya ialah contoh mendengar acara dan maklumat acara disimpan dalam pembolehubah CSS
// 设置变量
document.body.style.setProperty(&#39;--primary&#39;, &#39;#7F583F&#39;); //局部
document.documentElement.style.setProperty(&#39;--primary&#39;, &#39;#7F583F&#39;); //全局
// 读取变量
document.body.style.getPropertyValue(&#39;--primary&#39;).trim(); /局部
document.documentElement.style.getPropertyValue(&#39;--primary&#39;).trim(); /全局
getComputedStyle(document.documentElement).getPropertyValue(&#39;--time&#39;); // 全局,如果是在css表中设置的需要这种方式获取
// &#39;#7F583F&#39;
// 删除变量
document.body.style.removeProperty(&#39;--primary&#39;); //局部
document.documentElement.style.removeProperty(&#39;--primary&#39;); //全局
Salin selepas log masuk

Ini bermakna JavaScript boleh menyimpan nilai sewenang-wenangnya dalam lembaran gaya , dan maklumat acara disimpan dalam pembolehubah CSS
const docStyle = document.documentElement.style;
document.addEventListener(&#39;mousemove&#39;, (e) => {
  docStyle.setProperty(&#39;--mouse-x&#39;, e.clientX);
  docStyle.setProperty(&#39;--mouse-y&#39;, e.clientY);
});
Salin selepas log masuk
Salin selepas log masuk

Itu tidak berguna untuk CSS Maklumat juga boleh dimasukkan ke dalam pembolehubah CSS
const docStyle = document.documentElement.style;
document.addEventListener(&#39;mousemove&#39;, (e) => {
  docStyle.setProperty(&#39;--mouse-x&#39;, e.clientX);
  docStyle.setProperty(&#39;--mouse-y&#39;, e.clientY);
});
Salin selepas log masuk
Salin selepas log masuk

Dalam kod di atas, nilai --foo ialah pernyataan yang tidak sah dalam CSS, tetapi ia boleh dibaca oleh JavaScript Ini bermakna tetapan gaya boleh ditulis Dalam pembolehubah CSS, biarkan JavaScript membacanya CSS.
--foo: if(x > 5) this.width = 10;
Salin selepas log masuk

Ringkasan

Ciri asli penyemak imbas boleh dijalankan terus tanpa sebarang terjemahan

Ahli objek DOM, yang sangat memudahkan sambungan antara CSS dan JS

Ia tidak menghalang anda daripada menggunakan Sass/Less, ia boleh digabungkan

(Belajar perkongsian video:

tutorial video css

)

Atas ialah kandungan terperinci Pemahaman mendalam tentang pembolehubah css (ringkasan tersusun). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
css
sumber:juejin.im
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan