亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
>來加載GSS樣式表。
此嵌套規(guī)則集:
>用于客戶端安裝,請通過鮑爾安裝:
>您還可以通過github作為zip文件下載版本2.0.0。
經(jīng)常詢問有關GSS(網(wǎng)格樣式)的問題
>什么是GSS(網(wǎng)格樣式表)?
> GSS與傳統(tǒng)CSS有何不同?
是的,是的,GSS旨在工作。與傳統(tǒng)CSS一起。這意味著您可以逐漸將GSS引入項目,而無需重寫現(xiàn)有的CSS代碼。 GSS代碼可以用單獨的文件編寫或與常規(guī)CSS代碼混合。
gss開源嗎?這意味著任何人都可以為其開發(fā)做出貢獻,并在其項目中免費使用它。 GSS的源代碼可在GitHub上獲得。
>由于我們已經(jīng)討論了GSS利用cassowary.js,因此這是GSS的另一個重要功能:一個元素可以以任何一行代碼為中心。這使得很多解決方法都不必要和過去的事情。
gss
刀片算法的計算限制
>安裝GSS
>我將使用該文件的Codepen托管版本,但是您可以在此處找到CDN托管版本。接下來,我將在GSS參考腳本(我剛剛添加的行)下添加以下代碼,以傳遞GSS文檔對象。
>添加一些基本樣式后,我可以添加一些GSS來創(chuàng)建布局。這是樂趣開始的地方。
>示例2:基于動態(tài)更改窗口寬度
首頁 web前端 css教程 介紹GSS:網(wǎng)格樣式表

介紹GSS:網(wǎng)格樣式表

Feb 23, 2025 am 09:26 AM

Introducing GSS: Grid Style Sheets

介紹GSS:網(wǎng)格樣式表

>您最近可能聽說過HTML和CSS世界中的網(wǎng)格樣式(GSS)。 GSS重新構想CSS布局,并用利用來代替瀏覽器的布局引擎。那些不明白這句話的人……你好,歡迎!> GSS承諾將獲得更美好的未來。 GSS承諾相對定位和尺寸。 GSS承諾將任何元素以一行代碼為中心。 GSS提供。問題是:如何?

> 在本文中,我將介紹GSS的簡要歷史,并深入概述其所提供的功能。我還將查看GSS的基于約束的布局,Cassowary約束算法,并引導您完成安裝和使用GSS的過程。

那些寧愿不再等待W3C或瀏覽器趕上的人,我敦促您掛在那里并密切注意,而我解釋了GSS的謎團。在這一點上,讓我們從一點點歷史開始。

鑰匙要點

要開始使用GSS,需要通過bower安裝它或通過github作為zip文件下載,然后可以通過在a

>上添加type = type/gss或使用

>來加載GSS樣式表。

  • >簡短的歷史 GSS是與Dan Tocchini成為其創(chuàng)始人兼首席執(zhí)行官的網(wǎng)格的創(chuàng)建。這回答了為什么不是基于網(wǎng)格的樣式表被稱為網(wǎng)格樣式表。>
  • >網(wǎng)絡開發(fā)人員與前端技術之間的戰(zhàn)爭已經(jīng)持續(xù)了多年。在過去的十年中,CSS已被證明是勝利的。但是,Web開發(fā)人員會定期使用越來越多的工具來建立越來越復雜的用戶界面。例如,以CSS為中心的元素并不是最簡單的任務,尤其是使用可變的高度元素。

    >。

    flexbox是最新的解決方案之一,但是即使是小的更改也需要您深入HTML內容和CSS演示并進行更改。

    > GSS是時候參加競技場了。 GSS解決了這些問題,還有更多的問題 - 開發(fā)人員十多年來遇到的問題。

    本質上,GSS是利用CassoWary.js的CSS預處理器和JavaScript運行時。那些尚未知道的人Cassowary.js是Apple在Cocoa AutoLayout中使用的JavaScript端口。

    GSS和CASSOWARY都建立在約束編程上,使其非常適合授權CSS等聲明語言。約束編程是一個范式,Web開發(fā)人員關注聲明“什么”并將“如何”留給數(shù)學求解器。

    約束編程的重點是意圖,而不是實現(xiàn)。>

    >現(xiàn)在我們已經(jīng)建立了一些背景信息,讓我們繼續(xù)進行GSS優(yōu)惠的功能。

    GSS

    的概述 CSS最大的問題之一是相對論。您可以期望任何CSS元素都具有無休止的屬性列表 - 填充,高度,寬度,浮動,邊距,邊界,輪廓 - 但是這些信息都不告訴我們該元素在頁面上的其他元素(甚至整個頁面)。無盡的列表也沒有回答以不同的屏幕尺寸顯示元素的位置。>

    這使我們成為GSS的第一個功能:您定義了想要的布局。花費無數(shù)小時的試用和錯誤的日子已經(jīng)一去不復返了,制定了如何構建布局的策略。

    >由于我們已經(jīng)討論了GSS利用cassowary.js,因此這是GSS的另一個重要功能:一個元素可以以任何一行代碼為中心。這使得很多解決方法都不必要和過去的事情。

    > 例如,如果要在網(wǎng)站頁面右側垂直添加訂閱按鈕,請使用以下代碼:>

    另一個功能:GSS使浮子,表單元,透明封碼和水平/垂直中心過時。告別危險的陷阱,因為我們有W3C本身,說浮子不是應用程序布局的理想之選。

    “隨著網(wǎng)站從簡單文檔演變?yōu)閺碗s的,交互式應用程序,文檔布局的工具,例如浮子不一定適合應用程序布局。”

    - W3C網(wǎng)格布局模塊(工作草稿)
    .subscribe-button[right] == <span>::window[width];
    </span>.subscribe-button[center-y] == .header[center-y]<span>;</span>

    > CSS功能呢! GSS的第四個功能也有類似的事情:GSS采用約束層次結構來優(yōu)先考慮優(yōu)勢的約束。我們在這里談論的四個內置力量級別:


    !弱

    !

    !

    !
    • 請注意,需要!
    • 特殊的
    • 強度,可確保約束成立,如果沒有,一切都會破裂。建議仔細且不經(jīng)常使用它。
    • >
    • >強度水平提高了列表,并且在執(zhí)行過程中,優(yōu)先級更高。讓我們看一個示例:
    • 您已經(jīng)做到了這么遠,讓我們現(xiàn)在看一些基于約束的布局。
    > 基于約束的布局

    gss 的約束基本上是兩個或多個變量之間可能存在或可能不存在的變量之間的關系。元素的所有數(shù)字屬性都有資格受到約束。這是一個示例:

    .subscribe-button[right] == <span>::window[width];
    </span>.subscribe-button[center-y] == .header[center-y]<span>;</span>
    • p稱為selector
    • >
    • > line-height是GSS將計算
    • >值的屬性
    • []用于訪問屬性
    • =定義不等式約束
    • 10和20是像素中的數(shù)值
    • >

    在上面給出的示例中,這兩個約束都有效。這是一個不存在的約束的示例。

    >
    #light[years] == <span>50 !weak;
    </span>#light[years] == <span>20 !medium;
    </span>#light[years] == <span>35 !strong;
    </span>
    <span>/* #light[years] will hold the value 35 */</span>

    最初,兩個元素elementa和Elementb都被約束為150px的高度。在第三行中,兩個元素的總和為225px。因此,這兩個元素的約束之一將無法成立。

    GSS

    中的選擇器 GSS中的選擇器是一組HTML元素的查詢,它們用于確定最終受約束影響的元素。選擇器很重要,因為您必須在對其應用約束之前從DOM中選擇和觀察元素。

    >

    GSS支持以下基本選擇器。

    GSS

    中的規(guī)則集

    規(guī)則集將使您在單個選擇器上定義多個約束。您也可以嵌套它們并在其中使用CSS屬性。
    p[line-height] >= <span>10;
    </span>p[line-height] <= <span>::window[height] / 20;</span>

    此嵌套規(guī)則集:

    與:

    相同

    GSS
    #elementa[height] == <span>150;
    </span>#elementb[height] == <span>150;
    </span>#elementa[height] <span>+ #elementb[height] == 225;</span>
    中的屬性

    >我已經(jīng)在上面的示例中介紹了屬性,但讓我們更仔細地看一下它們。在GSS中,屬性是屬于元素的變量。當我們使用CSS已知的屬性時,它們相應的GSS計算值將分配為元素上的內聯(lián)樣式。

    類似的東西:
    #elementID[height] == <span>150;   /* id      */
    </span>div[height] == <span>150;         /* element */
    </span>.className[height] == <span>150; /* class   */</span>

    等于:

    >

    cassowary約束算法的簡介

    GSS使用Badros,Borning and Stuckey,1999年的CASSOWARY線性算術約束解決算法的JavaScript端口(cassowary.js),1999年。算法找到基于用戶使用自然語言給出的輸入約束的布局的最佳解決方案。
    <span>section < article {
    </span>  <span><span>.aclass</span> {
    </span>    <span>height: == 150;
    </span>  <span>}
    </span><span>}</span>

    >不需要用戶確保輸入約束不會彼此矛盾。實際上,這是刀片算法的本質。它會逐步評估約束并自動發(fā)現(xiàn)最佳解決方案。

    >
    <span>(section < article .aclass)[height] == 150;</span>
    刀片算法的計算限制

    GSS背后的約束求解器稱為CASSOWARY算法。該算法只能計算線性的約束(即形式y(tǒng) = mx c)?;具\算符( - , *, /)由算法支持。兩個(或多個)約束變量的乘法和劃分不是線性的,因此會丟棄錯誤。

    >安裝GSS

    >用于客戶端安裝,請通過鮑爾安裝:

    然后將此代碼添加到您的標記的部分:>
    <span><span>.container</span> {
    </span>  <span>height: == #elm[height];
    </span><span>}</span>

    >您還可以通過github作為zip文件下載版本2.0.0。

    安裝GSS后,通過在上添加type = type/gss來加載.gss樣式表

    .subscribe-button[right] == <span>::window[width];
    </span>.subscribe-button[center-y] == .header[center-y]<span>;</span>
    或使用元素:

    #light[years] == <span>50 !weak;
    </span>#light[years] == <span>20 !medium;
    </span>#light[years] == <span>35 !strong;
    </span>
    <span>/* #light[years] will hold the value 35 */</span>
    >一旦您啟動并運行了所有內容,就可以開始關注一些代碼示例。在下面,我將介紹初學者的教程。

    a GSS初學者的教程

    我將創(chuàng)建的示例將通過Codepen顯示,但我將像標準HTML文檔一樣瀏覽教程。首先,我將以下代碼行添加到我的HTML中以添加GSS引擎腳本:>

    >我將使用該文件的Codepen托管版本,但是您可以在此處找到CDN托管版本。接下來,我將在GSS參考腳本(我剛剛添加的行)下添加以下代碼,以傳遞GSS文檔對象。

    p[line-height] >= <span>10;
    </span>p[line-height] <= <span>::window[height] / 20;</span>

    如果您愿意,可以將其放置在引擎腳本后包含的單獨的JavaScript文件中。

    #elementa[height] == <span>150;
    </span>#elementb[height] == <span>150;
    </span>#elementa[height] <span>+ #elementb[height] == 225;</span>
    >示例1:垂直居中元素

    我將創(chuàng)建一個div,并將一些文本包裝在GSS布局中的H2標簽中,然后將其添加到HTML:

    >添加一些基本樣式后,我可以添加一些GSS來創(chuàng)建布局。這是樂趣開始的地方。

    #elementID[height] == <span>150;   /* id      */
    </span>div[height] == <span>150;         /* element */
    </span>.className[height] == <span>150; /* class   */</span>
    >我的目標是盡管大小尺寸將.foo元素垂直將.foo元素集中在視口內,并且即使元素的大小更改,也能夠將相同的對齊保持在適當?shù)奈恢谩?

    這是我將適用于實現(xiàn)此目標的限制:>

    >使用::窗口選擇器將元素與瀏覽器中的頁面的可見部分保持為中心。

    >使用:: [intinsic-height]屬性要獲得元素高度的相對值,該值將用于確定相對寬度。

      首先,我將帶有類型屬性設置為文本/GSS的HTML添加一個塊:
    • >
    • a 塊對于定義我要添加的GSS是必要的。我將通過在標簽中添加以下代碼來將元素放置在屏幕的中心:>
    >這就是需要的?,F(xiàn)在,使用GSS將該元素垂直(動態(tài)高度)居中。以下是演示:

    參見codepen上的SitePoint(@sitepoint)的GSS的筆垂直中心。
    <span>section < article {
    </span>  <span><span>.aclass</span> {
    </span>    <span>height: == 150;
    </span>  <span>}
    </span><span>}</span>

    >嘗試全屏演示,然后嘗試垂直調整瀏覽器大小以查看元素以任何窗口尺寸的中心保持。

    <span>(section < article .aclass)[height] == 150;</span>
    >示例2:基于動態(tài)更改窗口寬度

    的元素旋轉 在下一個示例中,

    >我將創(chuàng)建一個簡單的彩色正方形形狀,并動態(tài)旋轉。首先,讓我們通過在文檔的部分中添加以下代碼行來引導GSS:>
    .subscribe-button[right] == <span>::window[width];
    </span>.subscribe-button[center-y] == .header[center-y]<span>;</span>

    >請注意,您必須編輯上面的代碼才能指向文件的正確位置。您可以在此處獲取worker.js文件,然后在此處獲取GSS.JS文件。>

    >

    注意:由于某些錯誤,上面的文件路徑指向pre-2.0.0 gss的版本以使其工作。 現(xiàn)在,讓我們通過將其添加到html:來創(chuàng)建平方形狀。

    …并在CSS中添加一些樣式:

    >

    #light[years] == <span>50 !weak;
    </span>#light[years] == <span>20 !medium;
    </span>#light[years] == <span>35 !strong;
    </span>
    <span>/* #light[years] will hold the value 35 */</span>
    現(xiàn)在,我將返回HTML并添加一些GSS約束。

    >

    >請記住,使用GSS,您只需做出意圖,然后將數(shù)學計算留在算法上。在此示例中,我正在嘗試在窗口寬度動態(tài)變化時在元素和元素中產(chǎn)生旋轉的窗口之間創(chuàng)建一個約束。>>>>>。
    p[line-height] >= <span>10;
    </span>p[line-height] <= <span>::window[height] / 20;</span>
    這是我將適用于實現(xiàn)此目標的限制:>

    >使用::窗口[中心]選擇器將元素置于瀏覽器中的頁面的可見部分。

    >使用::窗口[width]用旋轉-Z創(chuàng)建約束,該約束將對其Z軸周圍的元素產(chǎn)生旋轉效果。在這里,從:: window [width]收到的值表示旋轉程度。

    >

      >就像我在第一個示例中一樣,我將在html上添加一個樣式塊,并在文本/gss上添加樣式塊。請記住,要定義我要添加的GSS的樣式塊是必需的。
    • >
    • >我將通過在樣式標簽中添加以下代碼來將方框與屏幕相關聯(lián):

    >就這樣做了。查看最終的Codepen演示:

    #elementa[height] == <span>150;
    </span>#elementb[height] == <span>150;
    </span>#elementa[height] <span>+ #elementb[height] == 225;</span>
    >請參閱codepen上的sitepoint(@sitepoint)使用GSS的筆動力旋轉。

    如果您查看全屏演示,請嘗試調整窗口大小。您會注意到,當窗口的寬度更改時,方框將改變其旋轉位置。
    #elementID[height] == <span>150;   /* id      */
    </span>div[height] == <span>150;         /* element */
    </span>.className[height] == <span>150; /* class   */</span>
    GSS

    的未來 GSS的未來看起來很有希望。是時候我們前進了前端技術了。我建議您在撕裂整個樣式表圖書館之前練習較小的原型。

    >

    我在這里介紹的只是您可以使用GSS的一小部分樣本,但我希望您發(fā)現(xiàn)本教程有用且有益的是讓您開始。

    您是否使用過GSS?您的經(jīng)歷如何?在評論部分中讓我知道。

    經(jīng)常詢問有關GSS(網(wǎng)格樣式)的問題

    >

    >什么是GSS(網(wǎng)格樣式表)?

    GSS或網(wǎng)格樣式表,是Web開發(fā)人員和設計師的強大工具。這是一種基于約束的布局引擎,可讓您使用簡單而直觀的語法創(chuàng)建響應式和靈活的布局。 GSS通過引入約束概念來擴展傳統(tǒng)的CSS模型,這使您能夠以更精確,更靈活的方式來定義元素之間的關系,并以更精確和靈活的方式來控制其行為。

    > GSS與傳統(tǒng)CSS有何不同?

    >傳統(tǒng)CSS使用框模型進行布局,在創(chuàng)建復雜的布局時,該模型可能會限制和復雜。另一方面,GSS使用基于約束的模型,該模型允許更具靈活性和精確度。使用GSS,您可以定義元素之間的關系,并以更直觀的方式控制其行為。

    >

    >我如何開始使用GSS?

    開始使用GSS,您需要包括GSS引擎在您的項目中。這可以通過從官方網(wǎng)站下載GSS庫或使用NPM等軟件包管理器來完成。項目中包含GSS引擎后,您可以在CSS文件中開始編寫GSS代碼。

    我可以將GSS與我現(xiàn)有的CSS代碼一起使用嗎?

    是的,是的,GSS旨在工作。與傳統(tǒng)CSS一起。這意味著您可以逐漸將GSS引入項目,而無需重寫現(xiàn)有的CSS代碼。 GSS代碼可以用單獨的文件編寫或與常規(guī)CSS代碼混合。

    >使用GSS?

    GSS提供了比傳統(tǒng)CSS的多種好處。它允許對布局進行更精確的控制,從而更輕松地創(chuàng)建復雜而響應的設計。 GSS還簡化了代碼,使閱讀和維護更加容易。此外,GSS支持實時編輯,這意味著您可以在代碼時實時看到更改。

    > GSS是所有瀏覽器支持的嗎?

    GSS使用JavaScript來實現(xiàn)其基于約束的布局引擎,這意味著它應該在支持JavaScript的任何現(xiàn)代瀏覽器中工作。但是,與任何新技術一樣,在多個瀏覽器中測試您的設計總是一個好主意。可用于學習GSS的資源。 GSS官方網(wǎng)站提供了綜合指南和文檔。還有幾個在線教程和課程可深入覆蓋GSS。其基于約束的布局引擎允許適應不同屏幕尺寸和方向的響應式設計。這使得在不同設備上創(chuàng)建一致的用戶體驗變得更加容易。

    gss開源嗎?這意味著任何人都可以為其開發(fā)做出貢獻,并在其項目中免費使用它。 GSS的源代碼可在GitHub上獲得。

    GSS的未來是什么?但是,其強大的功能以及對基于約束的布局的日益興趣表明,它具有有希望的未來。隨著越來越多的開發(fā)人員采用GSS,我們可以期望看到更多的資源,工具和社區(qū)支持這項創(chuàng)新技術。

    網(wǎng)格樣式表(GSS)是CSS預處理器和JavaScript運行時,用CassoWary約束求解器,有前途的相對定位和尺寸以及將任何元素置于另一個代碼中的任何元素的能力。 >

    gss采用約束編程,該編程的重點是意圖而不是實施,使開發(fā)人員可以聲明“什么”并將“如何”留給數(shù)學求解器。 GSS

    使浮子,桌子細胞,透明封裝和水平/垂直居中過時,并采用約束層次結構來優(yōu)先使用強度的約束,提供四個內置的強度水平:!弱,中等,!強,!

    GSS使用CASSOWARY線性算術約束算法解決算法來根據(jù)用戶自然語言給出的輸入約束來找到最佳的布局解決方案,從而逐漸評估約束并自動發(fā)現(xiàn)最佳解決方案。>>>>>>>>>>>>
      。
    • 要開始使用GSS,需要通過bower安裝它或通過github作為zip文件下載,然后可以通過在a
    • >上添加type = type/gss或使用
    • >來加載GSS樣式表。
    • 簡短的歷史
    • GSS是與Dan Tocchini成為其創(chuàng)始人兼首席執(zhí)行官的網(wǎng)格的創(chuàng)建。這回答了為什么不是基于網(wǎng)格的樣式表被稱為網(wǎng)格樣式表。>
    • >網(wǎng)絡開發(fā)人員與前端技術之間的戰(zhàn)爭已經(jīng)持續(xù)了多年。在過去的十年中,CSS已被證明是勝利的。但是,Web開發(fā)人員會定期使用越來越多的工具來建立越來越復雜的用戶界面。例如,以CSS為中心的元素并不是最簡單的任務,尤其是使用可變的高度元素。>。 flexbox是最新的解決方案之一,但是即使是小的更改也需要您深入HTML內容和CSS演示并進行更改。
    > GSS是時候參加競技場了。 GSS解決了這些問題,還有更多的問題 - 開發(fā)人員十多年來遇到的問題。

    本質上,GSS是利用CassoWary.js的CSS預處理器和JavaScript運行時。那些尚未知道的人Cassowary.js是Apple在Cocoa AutoLayout中使用的JavaScript端口。

    GSS和CASSOWARY都建立在約束編程上,使其非常適合授權CSS等聲明語言。約束編程是一個范式,Web開發(fā)人員關注聲明“什么”并將“如何”留給數(shù)學求解器。

    約束編程的重點是意圖,而不是實現(xiàn)。>

    >現(xiàn)在我們已經(jīng)建立了一些背景信息,讓我們繼續(xù)進行GSS優(yōu)惠的功能。
    GSS

    的概述 CSS最大的問題之一是相對論。您可以期望任何CSS元素都具有無休止的屬性列表 - 填充,高度,寬度,浮動,邊距,邊界,輪廓 - 但是這些信息都不告訴我們該元素在頁面上的其他元素(甚至整個頁面)。無盡的列表也沒有回答以不同的屏幕尺寸顯示元素的位置。>

    這使我們成為GSS的第一個功能:您定義了想要的布局?;ㄙM無數(shù)小時的試用和錯誤的日子已經(jīng)一去不復返了,制定了如何構建布局的策略。

    >由于我們已經(jīng)討論了GSS利用cassowary.js,因此這是GSS的另一個重要功能:一個元素可以以任何一行代碼為中心。這使得很多解決方法都不必要和過去的事情。

    > 例如,如果要在網(wǎng)站頁面右側垂直添加訂閱按鈕,請使用以下代碼:>

    另一個功能:GSS使浮子,表單元,透明封碼和水平/垂直中心過時。告別危險的陷阱,因為我們有W3C本身,說浮子不是應用程序布局的理想之選。

    “隨著網(wǎng)站從簡單文檔演變?yōu)閺碗s的,交互式應用程序,文檔布局的工具,例如浮子不一定適合應用程序布局。”

    - W3C網(wǎng)格布局模塊(工作草稿)

    .subscribe-button[right] == <span>::window[width];
    </span>.subscribe-button[center-y] == .header[center-y]<span>;</span>
    > CSS功能呢! GSS的第四個功能也有類似的事情:GSS采用約束層次結構來優(yōu)先考慮優(yōu)勢的約束。我們在這里談論的四個內置力量級別:

    !弱


    !

    !
    !

    請注意,需要!
      特殊的
    • 強度,可確保約束成立,如果沒有,一切都會破裂。建議仔細且不經(jīng)常使用它。
    • >

      >強度水平提高了列表,并且在執(zhí)行過程中,優(yōu)先級更高。讓我們看一個示例:

    .subscribe-button[right] == <span>::window[width];
    </span>.subscribe-button[center-y] == .header[center-y]<span>;</span>

    您已經(jīng)做到了這么遠,讓我們現(xiàn)在看一些基于約束的布局。

    > 基于約束的布局

    gss

    的約束基本上是兩個或多個變量之間可能存在或可能不存在的變量之間的關系。元素的所有數(shù)字屬性都有資格受到約束。這是一個示例:

    #light[years] == <span>50 !weak;
    </span>#light[years] == <span>20 !medium;
    </span>#light[years] == <span>35 !strong;
    </span>
    <span>/* #light[years] will hold the value 35 */</span>
    • p稱為selector
    • >
    • > line-height是GSS將計算
    • >值的屬性
    • []用于訪問屬性
    • =定義不等式約束
    • 10和20是像素中的數(shù)值
    • >

    在上面給出的示例中,這兩個約束都有效。這是一個不存在的約束的示例。

    >
    p[line-height] >= <span>10;
    </span>p[line-height] <= <span>::window[height] / 20;</span>

    最初,兩個元素elementa和Elementb都被約束為150px的高度。在第三行中,兩個元素的總和為225px。因此,這兩個元素的約束之一將無法成立。

    GSS

    中的選擇器 GSS中的選擇器是一組HTML元素的查詢,它們用于確定最終受約束影響的元素。選擇器很重要,因為您必須在對其應用約束之前從DOM中選擇和觀察元素。

    >

    GSS支持以下基本選擇器。

    GSS

    中的規(guī)則集

    規(guī)則集將使您在單個選擇器上定義多個約束。您也可以嵌套它們并在其中使用CSS屬性。
    #elementa[height] == <span>150;
    </span>#elementb[height] == <span>150;
    </span>#elementa[height] <span>+ #elementb[height] == 225;</span>

    此嵌套規(guī)則集:

    與:

    相同

    GSS
    #elementID[height] == <span>150;   /* id      */
    </span>div[height] == <span>150;         /* element */
    </span>.className[height] == <span>150; /* class   */</span>
    中的屬性

    >我已經(jīng)在上面的示例中介紹了屬性,但讓我們更仔細地看一下它們。在GSS中,屬性是屬于元素的變量。當我們使用CSS已知的屬性時,它們相應的GSS計算值將分配為元素上的內聯(lián)樣式。

    類似的東西:
    <span>section < article {
    </span>  <span><span>.aclass</span> {
    </span>    <span>height: == 150;
    </span>  <span>}
    </span><span>}</span>

    等于:

    >

    cassowary約束算法的簡介

    GSS使用Badros,Borning and Stuckey,1999年的CASSOWARY線性算術約束解決算法的JavaScript端口(cassowary.js),1999年。算法找到基于用戶使用自然語言給出的輸入約束的布局的最佳解決方案。
    <span>(section < article .aclass)[height] == 150;</span>

    >不需要用戶確保輸入約束不會彼此矛盾。實際上,這是刀片算法的本質。它會逐步評估約束并自動發(fā)現(xiàn)最佳解決方案。

    >

    刀片算法的計算限制

    GSS背后的約束求解器稱為CASSOWARY算法。該算法只能計算線性的約束(即形式y(tǒng) = mx c)。基本運算符( - , *, /)由算法支持。兩個(或多個)約束變量的乘法和劃分不是線性的,因此會丟棄錯誤。

    .subscribe-button[right] == <span>::window[width];
    </span>.subscribe-button[center-y] == .header[center-y]<span>;</span>

    >安裝GSS

    >用于客戶端安裝,請通過鮑爾安裝:

    #light[years] == <span>50 !weak;
    </span>#light[years] == <span>20 !medium;
    </span>#light[years] == <span>35 !strong;
    </span>
    <span>/* #light[years] will hold the value 35 */</span>

    然后將此代碼添加到您的標記的

    部分:>

    p[line-height] >= <span>10;
    </span>p[line-height] <= <span>::window[height] / 20;</span>
    >您還可以通過github作為zip文件下載版本2.0.0。

    安裝GSS后,通過在上添加type = type/gss來加載.gss樣式表

    或使用元素:

    #elementa[height] == <span>150;
    </span>#elementb[height] == <span>150;
    </span>#elementa[height] <span>+ #elementb[height] == 225;</span>

    >一旦您啟動并運行了所有內容,就可以開始關注一些代碼示例。在下面,我將介紹初學者的教程。

    #elementID[height] == <span>150;   /* id      */
    </span>div[height] == <span>150;         /* element */
    </span>.className[height] == <span>150; /* class   */</span>
    a GSS初學者的教程

    我將創(chuàng)建的示例將通過Codepen顯示,但我將像標準HTML文檔一樣瀏覽教程。首先,我將以下代碼行添加到我的HTML中以添加GSS引擎腳本:>

    >我將使用該文件的Codepen托管版本,但是您可以在此處找到CDN托管版本。接下來,我將在GSS參考腳本(我剛剛添加的行)下添加以下代碼,以傳遞GSS文檔對象。

    如果您愿意,可以將其放置在引擎腳本后包含的單獨的JavaScript文件中。
    <span>section < article {
    </span>  <span><span>.aclass</span> {
    </span>    <span>height: == 150;
    </span>  <span>}
    </span><span>}</span>

    >示例1:垂直居中元素

    <span>(section < article .aclass)[height] == 150;</span>
    我將創(chuàng)建一個div,并將一些文本包裝在GSS布局中的H2標簽中,然后將其添加到HTML:

    >添加一些基本樣式后,我可以添加一些GSS來創(chuàng)建布局。這是樂趣開始的地方。

    >我的目標是盡管大小尺寸將.foo元素垂直將.foo元素集中在視口內,并且即使元素的大小更改,也能夠將相同的對齊保持在適當?shù)奈恢谩?

    這是我將適用于實現(xiàn)此目標的限制:>
    <span><span>.container</span> {
    </span>  <span>height: == #elm[height];
    </span><span>}</span>

    >使用::窗口選擇器將元素與瀏覽器中的頁面的可見部分保持為中心。

    >使用:: [intinsic-height]屬性要獲得元素高度的相對值,該值將用于確定相對寬度。

    首先,我將帶有類型屬性設置為文本/GSS的HTML添加一個塊:

    >
    • a 塊對于定義我要添加的GSS是必要的。我將通過在標簽中添加以下代碼來將元素放置在屏幕的中心:>
    • >這就是需要的?,F(xiàn)在,使用GSS將該元素垂直(動態(tài)高度)居中。以下是演示:
    • 參見codepen上的SitePoint(@sitepoint)的GSS的筆垂直中心。

      >嘗試全屏演示,然后嘗試垂直調整瀏覽器大小以查看元素以任何窗口尺寸的中心保持。

      >示例2:基于動態(tài)更改窗口寬度

      的元素旋轉 在下一個示例中,

      >我將創(chuàng)建一個簡單的彩色正方形形狀,并動態(tài)旋轉。首先,讓我們通過在文檔的

      部分中添加以下代碼行來引導GSS:>

    .subscribe-button[right] == <span>::window[width];
    </span>.subscribe-button[center-y] == .header[center-y]<span>;</span>
    >請注意,您必須編輯上面的代碼才能指向文件的正確位置。您可以在此處獲取worker.js文件,然后在此處獲取GSS.JS文件。>

    >

    注意:由于某些錯誤,上面的文件路徑指向pre-2.0.0 gss的版本以使其工作。

    現(xiàn)在,讓我們通過將其添加到html:來創(chuàng)建平方形狀。 …并在CSS中添加一些樣式:

    >

    現(xiàn)在,我將返回HTML并添加一些GSS約束。
    #light[years] == <span>50 !weak;
    </span>#light[years] == <span>20 !medium;
    </span>#light[years] == <span>35 !strong;
    </span>
    <span>/* #light[years] will hold the value 35 */</span>
    >

    >請記住,使用GSS,您只需做出意圖,然后將數(shù)學計算留在算法上。在此示例中,我正在嘗試在窗口寬度動態(tài)變化時在元素和元素中產(chǎn)生旋轉的窗口之間創(chuàng)建一個約束。>>>>>。

    這是我將適用于實現(xiàn)此目標的限制:>
    p[line-height] >= <span>10;
    </span>p[line-height] <= <span>::window[height] / 20;</span>

    >使用::窗口[中心]選擇器將元素置于瀏覽器中的頁面的可見部分。

    >使用::窗口[width]用旋轉-Z創(chuàng)建約束,該約束將對其Z軸周圍的元素產(chǎn)生旋轉效果。在這里,從:: window [width]收到的值表示旋轉程度。

    >

    >就像我在第一個示例中一樣,我將在html上添加一個樣式塊,并在文本/gss上添加樣式塊。請記住,要定義我要添加的GSS的樣式塊是必需的。
      >
    • >我將通過在樣式標簽中添加以下代碼來將方框與屏幕相關聯(lián):
    >就這樣做了。查看最終的Codepen演示:

    >請參閱codepen上的sitepoint(@sitepoint)使用GSS的筆動力旋轉。
    #elementa[height] == <span>150;
    </span>#elementb[height] == <span>150;
    </span>#elementa[height] <span>+ #elementb[height] == 225;</span>

    如果您查看全屏演示,請嘗試調整窗口大小。您會注意到,當窗口的寬度更改時,方框將改變其旋轉位置。

    GSS
    #elementID[height] == <span>150;   /* id      */
    </span>div[height] == <span>150;         /* element */
    </span>.className[height] == <span>150; /* class   */</span>
    的未來 GSS的未來看起來很有希望。是時候我們前進了前端技術了。我建議您在撕裂整個樣式表圖書館之前練習較小的原型。

    >

    我在這里介紹的只是您可以使用GSS的一小部分樣本,但我希望您發(fā)現(xiàn)本教程有用且有益的是讓您開始。

    您是否使用過GSS?您的經(jīng)歷如何?在評論部分中讓我知道。

    經(jīng)常詢問有關GSS(網(wǎng)格樣式)的問題

    > > 什么是GSS(網(wǎng)格樣式)?對于網(wǎng)絡開發(fā)人員和設計師來說, gss或網(wǎng)格樣式表是一個有力的工具。這是一種基于約束的布局引擎,可讓您使用簡單而直觀的語法創(chuàng)建響應式和靈活的布局。 GSS通過引入約束的概念來擴展傳統(tǒng)的CSS模型,該模型使您能夠以更精確,更靈活的方式來定義元素之間的關系。

    >傳統(tǒng)CSS使用框模型進行布局,在創(chuàng)建復雜的布局時,該模型可能會限制和復雜。另一方面,GSS使用基于約束的模型,該模型允許更具靈活性和精確度。使用GSS,您可以定義元素之間的關系,并以更直觀的方式控制其行為。>如何開始使用GSS?

    要開始使用GSS,您需要在項目中包括GSS引擎。這可以通過從官方網(wǎng)站下載GSS庫或使用NPM等軟件包管理器來完成。項目中包含GSS引擎后,您可以在CSS文件中開始編寫GSS代碼。

    >我可以將GSS與現(xiàn)有的CSS代碼一起使用嗎?是的,GSS旨在與傳統(tǒng)CSS一起工作。這意味著您可以逐漸將GSS引入項目,而無需重寫現(xiàn)有的CSS代碼。 GSS代碼可以用單獨的文件編寫或與常規(guī)CSS代碼混合。

    >使用GSS有什么好處? GSS比傳統(tǒng)CSS提供了多種好處。它允許對布局進行更精確的控制,從而更輕松地創(chuàng)建復雜而響應的設計。 GSS還簡化了代碼,使閱讀和維護更加容易。此外,GSS支持實時編輯,這意味著您可以在編碼時實時看到更改。 GSS是否由所有瀏覽器支持?

    gss使用JavaScript實現(xiàn)其基于約束的布局引擎,這意味著它應該在支持JavaScript的任何現(xiàn)代瀏覽器中工作。但是,與任何新技術一樣,在多個瀏覽器中測試您的設計總是一個好主意,以確保兼容性。

    > 是否有任何資源可以學習GSS?

    是的,有幾種資源可以學習GSS。 GSS官方網(wǎng)站提供了綜合指南和文檔。還有幾個在線教程和課程可深入涵蓋GSS。是的,GSS是移動Web開發(fā)的絕佳工具。其基于約束的布局引擎允許適應不同屏幕尺寸和方向的響應式設計。這使得更容易在不同設備上創(chuàng)建一致的用戶體驗。

    是的,GSS是一個開源項目。這意味著任何人都可以為其開發(fā)做出貢獻,并在其項目中免費使用它。 GSS的源代碼可在GitHub上獲得。

    GSS的未來是什么?作為一種相對較新的技術,GSS仍在發(fā)展。但是,其強大的功能以及對基于約束的布局的日益興趣表明,它具有有希望的未來。隨著越來越多的開發(fā)人員采用GSS,我們可以期望看到更多的資源,工具和社區(qū)支持這項創(chuàng)新技術。

    以上是介紹GSS:網(wǎng)格樣式表的詳細內容。更多信息請關注PHP中文網(wǎng)其他相關文章!

    本站聲明
    本文內容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內容,請聯(lián)系admin@php.cn

    熱AI工具

    Undress AI Tool

    Undress AI Tool

    免費脫衣服圖片

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用于從照片中去除衣服的在線人工智能工具。

    Clothoff.io

    Clothoff.io

    AI脫衣機

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的代碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    功能強大的PHP集成開發(fā)環(huán)境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網(wǎng)頁開發(fā)工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級代碼編輯軟件(SublimeText3)

    CSS教程,用于創(chuàng)建加載旋轉器和動畫 CSS教程,用于創(chuàng)建加載旋轉器和動畫 Jul 07, 2025 am 12:07 AM

    創(chuàng)建CSS加載旋轉器的方法有三種:1.使用邊框的基本旋轉器,通過HTML和CSS實現(xiàn)簡單動畫;2.使用多個點的自定義旋轉器,通過不同延遲時間實現(xiàn)跳動效果;3.在按鈕中添加旋轉器,通過JavaScript切換類來顯示加載狀態(tài)。每種方法都強調了設計細節(jié)如顏色、大小、可訪問性和性能優(yōu)化的重要性,以提升用戶體驗。

    解決CSS瀏覽器兼容性問題和前綴 解決CSS瀏覽器兼容性問題和前綴 Jul 07, 2025 am 01:44 AM

    處理CSS瀏覽器兼容性和前綴問題需理解瀏覽器支持差異并合理使用廠商前綴。1.了解常見問題如Flexbox、Grid支持不一,position:sticky失效,動畫表現(xiàn)不同;2.查閱CanIuse確認特性支持情況;3.正確使用-webkit-、-moz-、-ms-、-o-等廠商前綴;4.推薦使用Autoprefixer自動添加前綴;5.安裝PostCSS并配置browserslist指定目標瀏覽器;6.構建時自動處理兼容性;7.老項目可用Modernizr檢測特性;8.不必追求所有瀏覽器一致,確

    造型與CSS不同訪問的鏈接 造型與CSS不同訪問的鏈接 Jul 11, 2025 am 03:26 AM

    設置訪問過鏈接的樣式能提升用戶體驗,尤其在內容密集型網(wǎng)站中幫助用戶更好導航。1.使用CSS的:visited偽類可定義已訪問鏈接樣式,如顏色變化;2.注意瀏覽器出于隱私限制僅允許修改部分屬性;3.顏色選擇應與整體風格協(xié)調,避免突兀;4.移動端可能不顯示該效果,建議結合其他視覺提示如icon輔助標識。

    使用CSS剪輯路徑創(chuàng)建自定義形狀 使用CSS剪輯路徑創(chuàng)建自定義形狀 Jul 09, 2025 am 01:29 AM

    使用CSS的clip-path屬性可以裁剪元素為自定義形狀,如三角形、圓形缺口、多邊形等,無需依賴圖片或SVG。其優(yōu)勢包括:1.支持circle、ellipse、polygon等多種基本形狀;2.可響應式調整,適配移動端;3.易于動畫化,可結合hover或JavaScript實現(xiàn)動態(tài)效果;4.不影響布局流,僅裁剪顯示區(qū)域。常見用法如圓形裁剪clip-path:circle(50pxatcenter)和三角形裁剪clip-path:polygon(50%0%,1000%,00%)。注意

    顯示:內聯(lián),顯示:塊和顯示:內聯(lián)塊之間有什么區(qū)別? 顯示:內聯(lián),顯示:塊和顯示:內聯(lián)塊之間有什么區(qū)別? Jul 11, 2025 am 03:25 AM

    Themaindifferencesbetweendisplay:inline,block,andinline-blockinHTML/CSSarelayoutbehavior,spaceusage,andstylingcontrol.1.Inlineelementsflowwithtext,don’tstartonnewlines,ignorewidth/height,andonlyapplyhorizo??ntalpadding/margins—idealforinlinetextstyling

    CSS繪畫API是什么? CSS繪畫API是什么? Jul 04, 2025 am 02:16 AM

    thecsspaintingapienablesdemimageGenerationinCsssingJavascript.1.developersCreateApaintWorkletClassWithaPaint()method.2.theyregisteritviaregisterpaint()。3.thecustompAntFunctionSthenusitySthenusedisthenusedisthenusedIncerspropertieslikeBacknockforg-image-image.thisallows.thisallowsforderforderynamecvis

    如何使用CSS創(chuàng)建響應式圖像? 如何使用CSS創(chuàng)建響應式圖像? Jul 15, 2025 am 01:10 AM

    要使用CSS創(chuàng)建響應式圖片,主要可通過以下方法實現(xiàn):1.使用max-width:100%和height:auto讓圖片在保持比例的同時自適應容器寬度;2.結合HTML的srcset和sizes屬性智能加載適配不同屏幕的圖片源;3.利用object-fit和object-position控制圖片裁剪與焦點展示。這些方法共同確保圖片在不同設備上清晰、美觀地呈現(xiàn)。

    什么是常見的CSS瀏覽器不一致? 什么是常見的CSS瀏覽器不一致? Jul 26, 2025 am 07:04 AM

    不同瀏覽器對CSS解析存在差異,導致顯示效果不一致,主要包括默認樣式差異、盒模型計算方式、Flexbox和Grid布局支持程度及某些CSS屬性行為不一致。1.默認樣式處理不一致,解決方法是使用CSSReset或Normalize.css統(tǒng)一初始樣式;2.舊版IE的盒模型計算方式不同,建議統(tǒng)一使用box-sizing:border-box;3.Flexbox和Grid在邊緣情況或舊版本中表現(xiàn)有差異,應多測試并使用Autoprefixer;4.某些CSS屬性行為不一致,需查閱CanIuse并提供降級

    See all articles