Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
復(fù)雜的網(wǎng)站都會(huì)有大量的CSS代碼,通常也會(huì)有許多重復(fù)的值。
舉個(gè)例子,同樣一個(gè)顏色值可能在成千上百個(gè)地方被使用到,如果這個(gè)值發(fā)生了變化,需要全局搜索并且一個(gè)一個(gè)替換,效率不高且容易出錯(cuò)。
自定義屬性在某個(gè)地方存儲(chǔ)一個(gè)值,然后在其他許多地方引用它。另一個(gè)好處是語(yǔ)義化的標(biāo)識(shí)。比如,--main-text-color 會(huì)比 #00ff00 更易理解,尤其是這個(gè)顏色值在其他上下文中也被使用到。
自定義屬性(有時(shí)候也被稱作CSS變量或者級(jí)聯(lián)變量)是由CSS作者定義的,它包含的值可以在整個(gè)文檔中重復(fù)使用。
由自定義屬性標(biāo)記設(shè)定值(比如: --main-color: black;),由 var() 函數(shù)來(lái)獲取值(比如: color: **var(--main-color)**;)。
在構(gòu)建大型站點(diǎn)時(shí),作者通常會(huì)面對(duì)可維護(hù)性的挑戰(zhàn)。在這些網(wǎng)頁(yè)中,所使用的CSS 的數(shù)量是非常龐大的,并且在許多場(chǎng)合大量的信息會(huì)重復(fù)使用。
例如,在網(wǎng)頁(yè)中維護(hù)一個(gè)配色方案,意味著一些顏色在 CSS 文件中多次出現(xiàn),并被重復(fù)使用。當(dāng)你修改配色方案時(shí),不論是調(diào)整某個(gè)顏色或完全修改整個(gè)配色,都會(huì)成為一個(gè)復(fù)雜的問(wèn)題,不容出錯(cuò),而單純查找替換是遠(yuǎn)遠(yuǎn)不夠的。
如果使用了CSS 框架,這種情況會(huì)變得尤其糟糕,此時(shí)如果要修改顏色,則需要對(duì)框架本身進(jìn)行修改。
在這些場(chǎng)合使用 LESS 或 Sass 類似的預(yù)處理器是非常有幫助的,但是這種通過(guò)添加額外步驟的方式,可能會(huì)增加系統(tǒng)的復(fù)雜性。
CSS變量為我們帶來(lái)一些預(yù)處理器的便利,并且不需要額外的編譯。
這些變量的第二個(gè)優(yōu)勢(shì)就是名稱本身就包含了語(yǔ)義的信息。CSS 文件變得易讀和理解。main-text-color比文檔中的#00ff00更容易理解,特別是同樣的顏色出現(xiàn)在不同的文件中的時(shí)候。
下面是 CSS 變量的使用方法和步驟。
我們都知道,在 JS 中要使用一個(gè)變量前,必須聲明這個(gè)表變量。在 CSS 中也是一樣的道理。
聲明一個(gè)自定義屬性,屬性名需要以兩個(gè)減號(hào)(--)開(kāi)始,屬性值則可以是任何有效的CSS值。和其他屬性一樣,自定義屬性也是寫在規(guī)則集之內(nèi)的,如下:
body {
--bg-color: #7F583F;
--color: #F7EFD2;
}
上面代碼中,body選擇器里面聲明了兩個(gè)變量:--bg-color和--color。
它們與color、font-size等正式屬性沒(méi)有什么不同,只是沒(méi)有默認(rèn)含義。所以 CSS 變量(CSS variable)又叫做**"CSS 自定義屬性"**(CSS custom properties)。
規(guī)則集所指定的選擇器定義了自定義屬性的可見(jiàn)作用域。通常的最佳實(shí)踐是定義在根偽類 :root下,這樣就可以在HTML文檔的任何地方訪問(wèn)到它了:
:root {
--main-bg-color: #eee;
}
自定義屬性名是大小寫敏感的,--my-color 和 --My-color 會(huì)被認(rèn)為是兩個(gè)不同的自定義屬性。
通過(guò)var()函數(shù)來(lái)讀取變量。語(yǔ)法如下:
var(custom-property-name, value)
變量名稱必須以兩個(gè)破折號(hào)(--)開(kāi)頭,且區(qū)分大小寫!
使用方法:
element {
background-color: var(--main-bg-color);
}
變量也可以使用在變量聲明中:
:root {
--primary-color: #eee;
--primary-bg-color: var(--main-bg-color);
}
變量值只能用作屬性值,不能用作屬性名。
在 JS 代碼中,我們可能需要讀取 CSS 變量的值,其方法如下:
const root = document.querySelector(":root");
// 設(shè)置 CSS 變量
root.style.setProperty("--main-bg-color", "red");
// 讀取 CSS 變量
const computedStyle = getComputedStyle(root);
const mainBgColor = computedStyle.getPropertyValue("--main-bg-color");
console.log(mainBgColor);
// 刪除 CSS 變量
root.style.removeProperty("--main-bg-color");
以上就是關(guān)于 CSS 變量的一些基本概念及使用方法,更多詳情待后續(xù)!
靈活使用 CSS 變量,不僅可以提高生產(chǎn)力,也能夠提高代碼的可閱讀性和維護(hù)性。
~
~
~ 本文完
學(xué)習(xí)有趣的知識(shí),結(jié)識(shí)有趣的朋友,塑造有趣的靈魂!
大家好!我是〖編程三昧〗的作者 隱逸王,我的公眾號(hào)是『編程三昧』,歡迎關(guān)注,希望大家多多指教!
知識(shí)與技能并重,內(nèi)力和外功兼修,理論和實(shí)踐兩手都要抓、兩手都要硬!
PHP中預(yù)定義了幾個(gè)超級(jí)全局變量(superglobals),它們?cè)谝粋€(gè)腳本的全部作用域中你不需要特別說(shuō)明,就可以在函數(shù)及類中使用。
1、$GLOBALS 是PHP的一個(gè)超級(jí)全局變量組,在一個(gè)PHP腳本的全部作用域中都可以訪問(wèn)。
$GLOBALS 是一個(gè)包含了全部變量的全局組合數(shù)組。變量的名字就是數(shù)組的鍵。
<?php
$x = 'tiantian';
$y = '好';
function add()
{
$GLOBALS['a'] = $GLOBALS['x'].$GLOBALS['y'];
}
add();
echo $a;
?>
以上實(shí)例中 a 是一個(gè)$GLOBALS數(shù)組中的超級(jí)全局變量,該變量同樣可以在函數(shù)外訪問(wèn)。
2、 $_SERVER 是一個(gè)包含了諸如頭信息(header)、路徑(path)、以及腳本位置(script locations)等等信息的數(shù)組。
$_SERVER 變量中的重要元素:
<?php
echo $_SERVER['PHP_SELF']; // 結(jié)果:/index.php 注釋:當(dāng)前執(zhí)行腳本的文件名
echo "<br>";
echo $_SERVER['SERVER_NAME']; // 結(jié)果:abcphp.com 注釋:當(dāng)前運(yùn)行腳本所在的服務(wù)器的主機(jī)名。
echo "<br>";
echo $_SERVER['HTTP_HOST']; // 結(jié)果:abcphp.com 注釋:當(dāng)前請(qǐng)求頭中 Host: 項(xiàng)的內(nèi)容,如果存在的話。
echo "<br>";
echo $_SERVER['HTTP_REFERER']; // 結(jié)果:" " 注釋:引導(dǎo)用戶代理到當(dāng)前頁(yè)的前一頁(yè)的地址(如果存在)。
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT']; // 結(jié)果:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 注釋:
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];// 結(jié)果:/index.php 注釋:包含當(dāng)前腳本的路徑。這在頁(yè)面需要指向自己時(shí)非常有用。
echo "<br>";
echo $_SERVER['GATEWAY_INTERFACE']; // 結(jié)果:CGI/1.1 注釋:服務(wù)器使用的 CGI 規(guī)范的版本;
echo "<br>";
echo $_SERVER['SERVER_ADDR']; // 結(jié)果:127.0.0.1 注釋:當(dāng)前運(yùn)行腳本所在的服務(wù)器的 IP 地址。
echo "<br>";
echo $_SERVER['SERVER_SOFTWARE']; // 結(jié)果:nginx/1.15.11 注釋:服務(wù)器標(biāo)識(shí)字符串,在響應(yīng)請(qǐng)求時(shí)的頭信息中給出。
echo "<br>";
echo $_SERVER['SERVER_PROTOCOL']; // 結(jié)果:HTTP/1.1 注釋:請(qǐng)求頁(yè)面時(shí)通信協(xié)議的名稱和版本。
echo "<br>";
echo $_SERVER['REQUEST_METHOD']; // 結(jié)果:GET 注釋:訪問(wèn)頁(yè)面使用的請(qǐng)求方法;例如,"GET", "HEAD","POST","PUT"。
echo "<br>";
echo $_SERVER['REQUEST_TIME']; // 結(jié)果:1630663828 注釋:請(qǐng)求開(kāi)始時(shí)的時(shí)間戳。從 PHP 5.1.0 起可用。
echo "<br>";
echo $_SERVER['QUERY_STRING']; // 結(jié)果:" " 注釋:query string(查詢字符串),如果有的話,通過(guò)它進(jìn)行頁(yè)面訪問(wèn)。
echo "<br>";
echo $_SERVER['HTTP_ACCEPT']; // 結(jié)果:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 注釋:當(dāng)前請(qǐng)求頭中 Accept: 項(xiàng)的內(nèi)容,如果存在的話。
echo "<br>";
echo $_SERVER['HTTP_ACCEPT_CHARSET']; // 結(jié)果:" " 注釋:當(dāng)前請(qǐng)求頭中 Accept-Charset: 項(xiàng)的內(nèi)容,如果存在的話。例:"iso-8859-1,*,utf-8"。
echo "<br>";
echo $_SERVER['HTTPS']; // 結(jié)果:" " 注釋:如果腳本是通過(guò) HTTPS 協(xié)議被訪問(wèn),則被設(shè)為一個(gè)非空的值。
echo "<br>";
echo $_SERVER['REMOTE_ADDR']; // 結(jié)果:127.0.0.1 注釋:瀏覽當(dāng)前頁(yè)面的用戶的 IP 地址。
echo "<br>";
echo $_SERVER['REMOTE_HOST']; // 結(jié)果:" " 注釋:瀏覽當(dāng)前頁(yè)面的用戶的主機(jī)名。DNS 反向解析不依賴于用戶的 REMOTE_ADDR。
echo "<br>";
echo $_SERVER['REMOTE_PORT']; // 結(jié)果:58836 注釋:用戶機(jī)器上連接到 Web 服務(wù)器所使用的端口號(hào)。
echo "<br>";
echo $_SERVER['SCRIPT_FILENAME']; // 結(jié)果:F:/phpstudy_pro/WWW/php/index.php 注釋:當(dāng)前執(zhí)行腳本的絕對(duì)路徑。
echo "<br>";
echo $_SERVER['SERVER_ADMIN']; // 結(jié)果:" " 注釋:該值指明了 Apache 服務(wù)器配置文件中的 SERVER_ADMIN 參數(shù)。
echo "<br>";
echo $_SERVER['SERVER_PORT']; // 結(jié)果:80 注釋: Web 服務(wù)器使用的端口。默認(rèn)值為 "80"。如果使用 SSL 安全連接,則這個(gè)值為用戶設(shè)置的 HTTP 端口。
echo "<br>";
echo $_SERVER['SERVER_SIGNATURE']; // 結(jié)果:" " 注釋:包含了服務(wù)器版本和虛擬主機(jī)名的字符串。
echo "<br>";
echo $_SERVER['PATH_TRANSLATED']; // 結(jié)果:F:/phpstudy_pro/WWW/php 注釋:當(dāng)前腳本所在文件系統(tǒng)(非文檔根目錄)的基本路徑。
echo "<br>";
echo $_SERVER['SCRIPT_URI']; // 結(jié)果:" " 注釋:URI 用來(lái)指定要訪問(wèn)的頁(yè)面。例如 "/index.html"。
?>
3、$_REQUEST 用于收集HTML表單提交的數(shù)據(jù)。
以下實(shí)例顯示了一個(gè)輸入字段(input)及提交按鈕(submit)的表單(form)。 當(dāng)用戶通過(guò)點(diǎn)擊 "Submit" ,我們可以使用超級(jí)全局變量 $_REQUEST 來(lái)收集表單中的 input 字段數(shù)據(jù):
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
//$_SERVER['PHP_SELF'] 當(dāng)前執(zhí)行腳本的文件名
Name: <input type="text" name="rname">
<input type="submit">
</form>
<?php
$name = $_REQUEST['rname'];
echo $name;
?>
</body>
</html>
4、$_POST 被廣泛應(yīng)用于收集表單數(shù)據(jù),在HTML form標(biāo)簽的指定該屬性:"method="post"。
以下實(shí)例顯示了一個(gè)輸入字段(input)及提交按鈕(submit)的表單(form)。 當(dāng)用戶通過(guò)點(diǎn)擊 "Submit" 按鈕提交表單數(shù)據(jù)時(shí),使用超級(jí)全局變量 $_POST 來(lái)收集表單中的 input 字段數(shù)據(jù):
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_POST['fname'];
echo $name;
?>
</body>
</html>
5、$_GET 同樣被廣泛應(yīng)用于收集表單數(shù)據(jù),在HTML form標(biāo)簽的指定該屬性:"method="get"。
<html>
<body>
<form method="get" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_POST['fname'];
echo $name;
?>
</body>
</html>
$_GET 也可以收集URL中發(fā)送的數(shù)據(jù)。
果你正在構(gòu)建網(wǎng)站或Web應(yīng)用程序,你應(yīng)該已經(jīng)知道代碼重復(fù)被認(rèn)為是一種不良實(shí)踐。
這就是為什么你應(yīng)該學(xué)習(xí)如何使用CSS變量來(lái)減少你編寫的CSS代碼量并將你的樣式帶到一個(gè)新的水平。
最成功的Web應(yīng)用程序擁有令人驚嘆的設(shè)計(jì)。不幸的是,為了達(dá)到預(yù)期的效果,Web開(kāi)發(fā)人員需要準(zhǔn)備大量的樣式。這迫使我們?cè)谠S多不同的元素中重復(fù)值,比如顏色。
幸運(yùn)的是,現(xiàn)代樣式表支持CSS變量,這使您可以減少代碼庫(kù)中的重復(fù)。你不需要像CSS模塊、Less或SASS這樣的外部工具來(lái)利用它。
在這個(gè)全面的指南中,我將向您展示如何有效地使用CSS變量,涵蓋從純HTML和CSS的基本示例到更高級(jí)的框架,如React和Next.js。
(本文內(nèi)容參考:java567.com)
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。