Rumah > Soal Jawab > teks badan
Bagaimana untuk mendapatkan dan menetapkan sifat tersuai CSS (sifat diakses melalui var(…)
dalam helaian gaya) menggunakan JavaScript (biasa atau jQuery)?
Ini adalah percubaan saya yang tidak berjaya: mengklik butang mengubah sifat font-weight
属性,但不会更改自定义 --mycolor
biasa:
<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> <style> body { --mycolor: yellow; background-color: var(--mycolor); } </style> </head> <body> <p>Let's try to make this text bold and the background red.</p> <button onclick="plain_js()">Plain JS</button> <button onclick="jQuery_()">jQuery</button> <script> function plain_js() { document.body.style['font-weight'] = 'bold'; document.body.style['--mycolor'] = 'red'; }; function jQuery_() { $('body').css('font-weight', 'bold'); $('body').css('--mycolor', 'red'); } </script> </body> </html>
P粉4211197782023-10-21 17:19:53
Cara standard untuk mendapatkan/menetapkan pembolehubah CSS3 ialah .setProperty()
和 .getPropertyValue()
.
Jika pembolehubah anda ialah pembolehubah global (diisytiharkan dalam :root
), anda boleh menggunakan yang berikut untuk mendapatkan dan menetapkan nilainya.
// setter document.documentElement.style.setProperty('--myVariable', 'blue'); // getter document.documentElement.style.getPropertyValue('--myVariable');
Walau bagaimanapun, jika nilai var telah ditetapkan menggunakan .setProperty()
, pengambil hanya akan mengembalikan nilai tersebut.
Jika ditetapkan melalui pengisytiharan CSS, undefined
akan dikembalikan. Lihat dalam contoh ini:
let c = document.documentElement.style.getPropertyValue('--myVariable');
alert('The value of --myVariable is : ' + (c?c:'undefined'));
:root{ --myVariable : red; }
div{ background-color: var(--myVariable); }
<div>Red background set by --myVariable</div>
Untuk mengelakkan tingkah laku yang tidak dijangka ini, anda mesti memanggil kaedah .getPropertyValue()
之前使用 getCompulatedStyle()
.
Pengambil akan kelihatan seperti ini:
getComputedStyle(document.documentElement,null).getPropertyValue('--myVariable');
Pada pendapat saya, mengakses pembolehubah CSS sepatutnya lebih mudah, lebih pantas, intuitif dan semula jadi...
Saya melaksanakan CSSGlobalVariables
pembantu javascript kecil (<3kb) yang secara automatik mengesan semua global CSS aktif dalam dokumen dan membungkusnya ke dalam objek, <3kb) javascript 帮助程序,它自动检测文档中所有活动的 CSS 全局变量并将其打包到一个对象中, untuk akses dan manipulasi yang lebih mudah < /strong>.
// get the document CSS global vars let cssVar = new CSSGlobalVariables(); // set a new value to --myVariable cssVar.myVariable = 'red'; // get the value of --myVariable console.log( cssVar.myVariable );
Sebarang perubahan yang digunakan pada sifat objek ditukar secara automatik kepada pembolehubah CSS.
Tersedia: https://github.com/colxi/ css-global variables
P粉8632950572023-10-21 14:23:27
Anda boleh menggunakan document.body.style.setProperty('--name', value);
:
var bodyStyles = window.getComputedStyle(document.body); var fooBar = bodyStyles.getPropertyValue('--foo-bar'); //get document.body.style.setProperty('--foo-bar', newValue);//set