亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

CSS中calc(100%-100px)不加空格不生效

  發(fā)布時間:2023-05-05 16:12:59   作者: 睡醒想錢錢   我要評論
本文主要介紹了CSS中calc(100%-100px)不加空格不生效,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

問題起因

在使用calc時發(fā)現(xiàn)無法生效,寫法是:

width: calc(100%-100px);

頁面無效果,加空格后就發(fā)現(xiàn)有效果了:

width: calc(100% - 100px);

這是為什么?

calc是什么?

css3 的計算屬性,用于動態(tài)計算長度值。calc語法:

calc(expression)      // expression 是數(shù)學(xué)表達(dá)式

用法&定義

  • 運算符前后都需要保留一個空格,例如:width: calc(100% - 100px);
  • 任何長度值都可以使用calc()函數(shù)進(jìn)行計算;
  • calc() 函數(shù)支持 "+", "-", "*", "/" 運算;
  • calc() 函數(shù)使用標(biāo)準(zhǔn)的數(shù)學(xué)運算優(yōu)先級規(guī)則;

先了解一下CSS中基礎(chǔ)語法和數(shù)據(jù)類型:

https://www.w3.org/TR/CSS2/syndata.html

在文檔的這里應(yīng)該是這里的核心語法:

image.png

stylesheet  : [ CDO | CDC | S | statement ]*;
statement   : ruleset | at-rule;
at-rule     : ATKEYWORD S* any* [ block | ';' S* ];
block       : '{' S* [ any | block | ATKEYWORD S* | ';' S* ]* '}' S*;
ruleset     : selector? '{' S* declaration? [ ';' S* declaration? ]* '}' S*;
selector    : any+;
declaration : property S* ':' S* value;
property    : IDENT;
value       : [ any | block | ATKEYWORD S* ]+;
any         : [ IDENT | NUMBER | PERCENTAGE | DIMENSION | STRING
              | DELIM | URI | HASH | UNICODE-RANGE | INCLUDES
              | DASHMATCH | ':' | FUNCTION S* [any|unused]* ')'
              | '(' S* [any|unused]* ')' | '[' S* [any|unused]* ']'
              ] S*;
unused      : block | ATKEYWORD S* | ';' S* | CDO S* | CDC S*;

DIMENSION語法在最上面:

DIMENSION {num}{ident}

num應(yīng)該是數(shù)字,翻一下ident的定義:

在4.1.1第二段的開頭

image.png

ident [-]?{nmstart}{nmchar}*

nmstart和nmchar的分別有:

nmstart [_a-z]|{nonascii}|{escape}
nmchar [_a-z0-9-]|{nonascii}|{escape}

解析calc(100%-100px)

手動解析一下calc(100%-100px)。先過DIMENSION語法,{num}{ident}將其分割為num:100、ident:%-100px。

為什么是%-100px?

其實,應(yīng)該是%-100px,兩個被作為單位解析。因為-100px符合nmchar語法,沒有將其拆分。如果-100px有個空格,就會拆分為-100以及px。但是這個例子,只能較好的解釋為什么在-后面加空格。為什么前面也要加空格?

引出新的例子

在此,引出一個新的例子:

width: calc(100px-100px);

在編譯時時,會將其直接拆分為100px-100px,將px-100px過nmchar完全符合\[\_a-z0-9-\]。將其保留作為單位解析。但是px-100px不屬于CSS中任何一個單位,也并無單位的定義。
(這個案例,會更加好的解釋,為什么-的前后都需要加空格。)
如果-的前后有空格,就會被拆分為100px(數(shù)字100和單位px)、-、100px(數(shù)字100和單位px)來解析。

源碼為什么怎么寫?

為什么要把-放在里面?寫成calc(100% -100px)或者calc(100px -100px)為什么不行?
在這里,要引入一個正負(fù)數(shù)的概念,因為在數(shù)學(xué)標(biāo)識符當(dāng)中還有正號和負(fù)號這兩個標(biāo)識符。光看calc(100% -100px)calc(100px -100px)的后半部分,-100px是不是更像是這里為-100px。因為在CSS中是有負(fù)數(shù)的概念的,就像margin和padding中會常常用到負(fù)數(shù)。再引出一個新的例子:

width: calc(500px - -100px);

再遇到這種情況怎么辦?

如果沒有對于負(fù)號的定義應(yīng)該就會500px、--、100px,兩個減號怎么編譯呢。在-的前后都加上空格,區(qū)別開減法和負(fù)號。

參考資料

https://www.w3.org/TR/CSS2/syndata.html

到此這篇關(guān)于CSS中calc(100%-100px)不加空格不生效的文章就介紹到這了,更多相關(guān)CSS中calc(100%-100px)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • CSS的calc函數(shù)用法小結(jié)

    CSS3新增的函數(shù)中有一個非常好用的函數(shù),就是calc()函數(shù),用過的都說好,這篇文章我們來嘮一老calc函數(shù),感興趣的朋友一起看看吧
    2022-06-23
  • css height屬性中的calc方法詳解

    大家都知道Calc方法有個很大的好處就是用在流體布局上,可以通過calc()計算得到元素的寬度,本文通過一個例子給大家詳細(xì)介紹,需要的朋友參考下吧
    2021-06-03
  • CSS使用calc()獲取當(dāng)前可視屏幕高度的實現(xiàn)

    這篇文章主要介紹了CSS使用calc()獲取當(dāng)前可視屏幕高度的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編
    2020-07-14
  • 深入理解CSS中的數(shù)學(xué)表達(dá)式calc()

    數(shù)學(xué)表達(dá)式calc()是CSS中的函數(shù),主要用于數(shù)學(xué)運算。這篇文章給大家介紹了CSS中的數(shù)學(xué)表達(dá)式calc()的相關(guān)知識,感興趣的朋友一起看看吧
    2020-01-19
  • css中的計算函數(shù)calc在網(wǎng)站布局中一個示例

    這篇文章主要介紹了css中的計算函數(shù)calc在網(wǎng)站布局中一個示例的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下
    2019-08-12
  • 淺析CSS中calc()的使用

    這篇文章主要介紹了淺析CSS中calc()的使用的相關(guān)資料,需要的朋友可以參考下
    2016-05-10

最新評論