国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

為啥CSS不會支持雙斜杠( // )注釋?

開發 前端
CSS 中大部分屬性和值都比較簡單,乍一看,好像沒有什么語法有雙斜杠//,其實不然,只是非常少,但并不是沒有。

眾所周知,CSS 僅支持多行注釋,也就是/**/注釋。

/* 這是CSS注釋 */
div{
  color: red;
}

習慣了 SCSS或者LESS這些預處理器的同學,肯定非常希望有雙斜杠注釋。

// SCSS注釋
div{
  color: red; // SCSS注釋
}

很明顯這種寫法要比/**/簡潔地多,那么,為啥官方遲遲不支持雙斜杠注釋呢?

下面就來探討一下這個問題以及關于 CSS 語法的一些思考。

一、語法沖突

CSS 中大部分屬性和值都比較簡單,乍一看,好像沒有什么語法有雙斜杠//,其實不然,只是非常少,但并不是沒有。

舉個例子,下面是border-image的一些寫法

border-image - CSS: Cascading Style Sheets | MDN (mozilla.org)[1]。

/* source | slice */
border-image: linear-gradient(red, blue) 27;

/* source | slice | repeat */
border-image: url("/images/border.png") 27 space;

/* source | slice | width */
border-image: linear-gradient(red, blue) 27 / 35px;

/* source | slice | width | outset | repeat */
border-image: url("/images/border.png") 27 23 / 50px 30px / 1rem round space;

看到第 4 種語法沒,出現了兩個斜杠,關鍵是,兩斜杠中間的width還可以省略,這一點從border-image的語法規范可以看出。

border-image = 
  <'border-image-source'>                             ||
  <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]?  ||
  <'border-image-repeat'>

看到<'border-image-width'>后面的問號沒?這個就表示可選的意思,所以理論上border-image可以有以下的寫法。

border-image: 0//0;

這種寫法其實等同于。

border-image-source: none;
border-image-slice: 0;
border-image-width: 1;
border-image-outset: 0;
border-image-repeat: stretch;

我們可以打開控制臺來驗證一下這個語法的合法性。

圖片

可以看到,這種寫法完全是有效的(暫不考慮實際功能)。

所以,雙斜杠語法可能會造成語法沖突。

還有一個和border-image比較像的屬性,叫做-webkit-mask-box-image,也可以實現雙斜杠語法。

-webkit-mask-box-image - CSS: Cascading Style Sheets | MDN (mozilla.org)[2]。

-webkit-mask-box-image: 0//0;

目前我能想到的就這兩個,有知道其他的歡迎留言補充????。

不過這種畢竟是小部分,如果有新規范,也很容易規避這個問題。更要命的其實是下面這個原因,如果要是支持了,可能會讓以前的CSS規范全部崩塌!

二、無法兼容現版本

為啥說這個問題更大呢?我們可以換個角度來思考,如果現在CSS支持了雙斜杠語法會怎么樣?

舉個例子:

<div>CSS COMMENT</div>

下面加了一行注釋

div{
  font-size: 30px; // 字號
  background-color: yellow;
  color: blue;
}

如果瀏覽器支持這個特性,那非常符合直覺,那如果瀏覽器不支持(現階段),你覺得最終的樣式是?

A. 30px字號,黃色背景,藍色文字
B. 30px字號,藍色文字
C. 黃色背景,藍色文字
D. 藍色文字
E. 全部不生效,默認樣式

思考兩分鐘...

答案是 B,你猜對了嗎?

圖片

為啥會這樣呢?這要“歸功”于 CSS 強大且精準的“容錯”解析規則:

CSS 解析中并不存在換行規則,每個屬性和對應值通過分號;區分,在選擇器內部,如果碰到非法語句,則會依次尋找到下一個;為止,也可以通過{}進行分塊區分。

上面這一段是我自己總結的一套規則,可能還是有些不好理解,拿上面那個例子來說,你可以把兩行連起來看,實際上等同于。

div{
  font-size: 30px; 
  // 字號 background-color: yellow;
  color: blue;
}

也就是// 字號 background-color當成了一個新的屬性,但是這個屬性無效,所以最終的表現就是30px字號,藍色文字。

這樣就帶來了一個非常嚴重的問題,在不支持注釋的瀏覽器上產生了不符合預期的解析錯誤,也就是說,一般的不兼容語法只是不起作用,但是這種注釋卻影響到了其他樣式,這才是最要不得的。

三、注釋的其他寫法

再來看一些常見的注釋寫法,看看有什么副作用。

<div>CSS COMMENT</div>

首先是最常見的注釋。

div{
  // font-size: 30px; 
  background-color: yellow;
  color: blue;
}

這種寫法其實是符合預期的,在目前階段也是可以正常解析,因為//會向后找到第一個;,也就是整行// font-size: 30px;無效。

圖片

然后是這種注釋。

div{
  // 標題
  font-size: 30px; 
  background-color: yellow;
  color: blue;
}

根據前面的分析,其實可以等同于。

div{
  // 標題 font-size: 30px; 
  background-color: yellow;
  color: blue;
}

所以第一行就無效了,結果和前面一致。

圖片

如果需要不影響現有樣式,可以在后面加上;,直接終止解析,如下:

div{
  // 標題;
  font-size: 30px; 
  background-color: yellow;
  color: blue;
}

然后是選擇器外面的寫法。

<div>CSS COMMENT</div>
<p>CSS COMMENT</p>
// 標題 
div{
  font-size: 30px; 
  background-color: yellow;
  color: blue;
}
p{
  color: red
}

這種會如何解析呢?

其實你可以將這個注釋想象成一個選擇器,也就是和下面的div連起來了。

// 標題 div{
  font-size: 30px; 
  background-color: yellow;
  color: blue;
}
p{
  color: red
}

由于并不存在// 標題 div這樣的選擇器,并且也不是一個合法的選擇器(斜杠需要轉義),所以整個DIV樣式完全無效,但并不影響后面選擇器(p)的樣式。

圖片

如果需要不影響現有樣式,需要在后面加上{},告訴瀏覽器這是一個區塊,如下:

// 標題{}
div{
  font-size: 30px; 
  background-color: yellow;
  color: blue;
}
p{
  color: red
}

四、CSS 語法其實從未改變

CSS 發展這么多年,各種屬性和新特性層出不窮,其實最核心的語法規則從未改變過,這也是設計之初就決定好的。

像之前出現的CSS變量。

:root{
  --c: red;
}

本質上其實就是一個特殊的屬性,即便舊瀏覽器不支持也不會有其他影響,就相當于不存在一樣。

這也是為啥 CSS 為何不能像 SASS 那樣直接將語法放在最外層,就像這樣。

--c: red;
div{
  color: var(--c)
}

如果按照 CSS 的解析規則,必然導致連同下面的 div樣式整體失效。

還有一些@符號的新語法,例如@property。

@property --speed{
  syntax: '<number>';
  inherits: false;
  initial-value: 0;
}

其實從結構上來講,和@font-face并沒有什么區別。

@font-face {
  font-family: "Trickster";
  src: xxx;
}

或者說也滿足下面這種更通用格式。

選擇器 {
  屬性1: 值;
  屬性2: 值;
}

所以即使不支持,也不會影響其他 CSS 語句。再想想看,有什么新特性會讓其他樣式“掛掉”?

五、最后總結一下

這下大概能明白為啥不支持雙斜杠語法了吧,以上就是關于CSS語法的一些思考了,相信大家對 CSS 的語法又有了一個新的認識,下面總結一下

  1. 有部分屬性值會出現雙斜杠語法,比如border-image、-webkit-mask-box-image。
  2. 不支持雙斜杠注釋最主要的原因是無法兼容現版本,會對現有 CSS 帶來副作用。
  3. 為了兼容現有版本,CSS 新特性不能影響其他 CSS 語句,語法規則也從未改變過。

可以肯定地說,CSS 以后也不會有雙斜杠注釋的規則。另外,本文的很多觀點和結論都是歸納總結而來,并沒有追究官方資料,可能有少許不準確或者有誤的地方。

責任編輯:姜華 來源: 前端偵探
相關推薦

2022-04-19 16:44:19

MySQLbuffer數據庫

2025-07-04 01:55:00

CSS樣式Chrome

2010-09-01 10:17:38

CSShack注釋

2009-11-10 09:04:08

2010-09-13 10:00:51

CSS注釋

2011-11-25 16:29:01

諾基亞Nokia DriveWindows Pho

2010-09-14 15:10:49

CSS注釋

2015-12-15 10:32:44

chromecss開發

2025-07-29 00:00:00

2012-01-10 16:33:23

2023-07-24 09:11:43

CSS滾動驅動動畫

2023-02-06 09:31:17

CSSJS 動態

2024-09-23 09:20:02

calc-sizeCSS前端

2018-07-04 10:45:28

容災鏈路設計

2021-02-04 17:04:22

Python編程語言代碼

2023-09-05 09:44:26

CSS處理器函數

2017-03-12 10:38:56

Chromewindows

2023-09-05 09:40:55

SCSS預處理器

2014-06-09 15:29:13

OData v4.0

2012-03-01 10:05:02

Windows Pho雙核處理器
點贊
收藏

51CTO技術棧公眾號

亚洲一区二区精品| 91高跟黑色丝袜呻吟在线观看| 四虎在线观看| 久久久亚洲欧洲日产国码αv| 亚洲成人av动漫| 亚洲一区国产一区| 99精品在线直播| 香蕉视频国产精品| 国产精品女视频| 精品影片在线观看的网站| 欧美丰满片xxx777| 经典三级久久| 久久精品中文字幕| 日韩在线电影| 久久久精品在线观看| 伦一区二区三区中文字幕v亚洲| 日韩久久免费电影| 日韩精品av| 亚洲色图综合网| 97精品国产综合久久久动漫日韩| 亚洲欧美三级在线| 激情久久99| 欧美高清激情视频| 亚洲精品一区国产| 69av在线视频| 国产一区二区三区网| 国产精品揄拍500视频| 日韩理论电影大全| 不卡视频一区| 蜜桃传媒麻豆第一区在线观看| 一区二区三区国| 成人爽a毛片一区二区免费| 2018国产在线| 中文字幕一区二区三区在线观看 | 欧美色视频在线| 麻豆视频在线播放| 亚洲丁香婷深爱综合| 台湾成人免费视频| 97精品一区二区三区| 国产精品久久久久久久久久10秀| 国产精品一区二区av| 蜜桃精品视频在线| 麻豆av免费在线| 天天影视涩香欲综合网| wwwav在线| www.欧美精品| 91视频综合| 日本在线观看一区| 26uuuu精品一区二区| 99热在线网站| 日韩欧美国产午夜精品| 成人在线免费av| 51ⅴ精品国产91久久久久久| 亚洲高清资源在线观看| 亚洲va韩国va欧美va精四季| 黄色污污视频在线观看| 亚洲理论在线观看| 亚洲欧洲精品一区| 99久久久无码国产精品| qvod激情图片| 久久亚洲影视婷婷| 国产在线播放91| 高清日韩中文字幕| 亚洲 日韩 国产第一| 中文字幕在线资源| 亚洲高清不卡在线| 欧美伦理视频在线观看| 二区三区在线播放| 国内精品久久久久久久久| 2019中文字幕在线电影免费| 亚洲五月综合| 97视频在线观看免费| 国产一区二区久久| 久久九九热re6这里有精品| 精品国产乱码久久久久久久久| 韩国精品视频在线观看 | 一区久久精品| 欧美成人精品三级在线观看| 91综合在线| 日韩在线视频在线| 一区二区三区四区在线免费观看| 色的视频在线免费看| 欧美成人高清视频| 亚洲高清二区| 日韩高清不卡av| 麻豆91精品视频| 黄网在线观看| 不卡av电影在线观看| 天堂影视av| 日韩极品精品视频免费观看| 久草在线综合| 免费在线国产精品| 亚洲激情五月婷婷| www.26天天久久天堂| 久久手机视频| 亚洲午夜免费福利视频| 亚洲免费资源| 亚洲欧洲久久| 色综合久久88色综合天天6| 9l亚洲国产成人精品一区二三| 中文字幕久久一区| 欧美视频一区在线观看| 国产影视一区| 手机看片福利盒子久久| 亚洲人高潮女人毛茸茸| 一区二区三区国产盗摄| 婷婷国产在线| 人人做人人澡人人爽欧美| 91亚洲精华国产精华精华液| www.超碰在线| 日韩欧美三级一区二区| 欧美少妇bbb| 综合在线视频| 在线欧美成人| 青青青国产精品一区二区| 91美女精品福利| 欧美二三四区| 一区二区精品在线观看| 日韩一级成人av| 西西裸体人体做爰大胆久久久| 国产综合在线观看| 亚洲va久久久噜噜噜久久天堂| 一区二区三区在线观看国产| 激情视频极品美女日韩| 丁香啪啪综合成人亚洲| 日韩在线视频观看| 国产精品123区| 成人影院网站| 久久99久久99精品| 日韩在线观看你懂的| 91丨porny丨户外露出| 日韩国产一二三区| 国产69精品久久久久999小说| 日韩av网址在线观看| 精品一区二区三区在线观看 | av手机在线观看| 欧洲精品久久| 亚洲精品国产欧美| 国产精品一区二区三区99| а√天堂8资源中文在线| 午夜精品区一区二区三| 亚洲美女自拍视频| 99热精品国产| 任你躁在线精品免费| 亚州黄色一级| 91亚洲精华国产精华| 在线成人免费视频| 久久99最新地址| 一级欧美视频| 毛片毛片毛片毛片| 国产精品麻豆免费版| 精品裸体舞一区二区三区| 国产美女视频一区| 欧美日韩中出| 中文字幕一区二区三区免费视频| 91九色视频在线观看| 精品免费日韩av| 2022国产精品视频| 香蕉久久夜色精品国产使用方法 | 2024短剧网剧在线观看| 婷婷五月色综合| 夜夜嗨av一区二区三区免费区| 91丨porny丨户外露出| 中文字幕精品影院| 午夜激情在线观看| 日本一本中文字幕| 欧美整片在线观看| 制服丝袜日韩国产| 91首页免费视频| 欧美黄色录像片| 国产自产自拍视频在线观看| 日本久久精品一区二区| 亚洲精品免费一区二区三区| 亚洲精品www久久久| 国产精品久久综合| 亚洲一区观看| 欧美黄色一级| 日本在线免费网| 国产在线观看福利| 成人精品水蜜桃| 中文字幕亚洲无线码在线一区| 一区二区三区在线免费观看| 三级欧美在线一区| 午夜欧洲一区| 96av在线| 97色伦图片97色伦在线电影| 一区二区视频国产| 国产精品久久久久秋霞鲁丝 | 日韩精品卡一| 在线观看国产一级片| 久久99精品久久久久久三级| 久久国内精品一国内精品| 在线免费观看一区| 国产亚洲一区二区在线观看| 亚洲清纯自拍| 丁香综合av| 小视频免费在线观看| 宅男视频免费在线观看视频| 国产精品333| 午夜欧美性电影|