国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
>來加載GSS樣式表。
此嵌套規(guī)則集:
>用於客戶端安裝,請通過鮑爾安裝:
>您還可以通過github作為zip文件下載版本2.0.0。
經(jīng)常詢問有關(guān)GSS(網(wǎng)格樣式)的問題
>什麼是GSS(網(wǎng)格樣式表)?
> GSS與傳統(tǒng)CSS有何不同?
是的,是的,GSS旨在工作。與傳統(tǒng)CSS一起。這意味著您可以逐漸將GSS引入項(xiàng)目,而無需重寫現(xiàn)有的CSS代碼。 GSS代碼可以用單獨(dú)的文件編寫或與常規(guī)CSS代碼混合。
gss開源嗎?這意味著任何人都可以為其開發(fā)做出貢獻(xiàn),並在其項(xiàng)目中免費(fèi)使用它。 GSS的源代碼可在GitHub上獲得。
>由於我們已經(jīng)討論了GSS利用cassowary.js,因此這是GSS的另一個(gè)重要功能:一個(gè)元素可以以任何一行代碼為中心。這使得很多解決方法都不必要和過去的事情。
gss
刀片算法的計(jì)算限制
>安裝GSS
>我將使用該文件的Codepen託管版本,但是您可以在此處找到CDN託管版本。接下來,我將在GSS參考腳本(我剛剛添加的行)下添加以下代碼,以傳遞GSS文檔對象。
>添加一些基本樣式後,我可以添加一些GSS來創(chuàng)建佈局。這是樂趣開始的地方。
>示例2:基於動(dòng)態(tài)更改窗口寬度
首頁 web前端 css教學(xué) 介紹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重新構(gòu)想CSS佈局,並用利用來代替瀏覽器的佈局引擎。那些不明白這句話的人……你好,歡迎! > GSS承諾將獲得更美好的未來。 GSS承諾相對定位和尺寸。 GSS承諾將任何元素以一行代碼為中心。 GSS提供。問題是:如何?

> 在本文中,我將介紹GSS的簡要?dú)v史,並深入概述其所提供的功能。我還將查看GSS的基於約束的佈局,Cassowary約束算法,並引導(dǎo)您完成安裝和使用GSS的過程。

那些寧願(yuàn)不再等待W3C或?yàn)g覽器趕上的人,我敦促您掛在那裡並密切注意,而我解釋了GSS的謎團(tuán)。在這一點(diǎn)上,讓我們從一點(diǎn)點(diǎn)歷史開始。

鑰匙要點(diǎ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)絡(luò)開發(fā)人員與前端技術(shù)之間的戰(zhàn)爭已經(jīng)持續(xù)了多年。在過去的十年中,CSS已被證明是勝利的。但是,Web開發(fā)人員會(huì)定期使用越來越多的工具來建立越來越複雜的用戶界面。例如,以CSS為中心的元素並不是最簡單的任務(wù),尤其是使用可變的高度元素。

    >。

    flexbox是最新的解決方案之一,但是即使是小的更改也需要您深入HTML內(nèi)容和CSS演示並進(jìn)行更改。

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

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

    GSS和CASSOWARY都建立在約束編程上,使其非常適合授權(quán)CSS等聲明語言。約束編程是一個(gè)範(fàn)式,Web開發(fā)人員關(guān)注聲明“什麼”並將“如何”留給數(shù)學(xué)求解器。

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

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

    GSS

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

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

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

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

    另一個(gè)功能:GSS使浮子,表單元,透明封碼和水平/垂直中心過時(shí)。告別危險(xiǎn)的陷阱,因?yàn)槲覀冇蠾3C本身,說浮子不是應(yīng)用程序佈局的理想之選。

    “隨著網(wǎng)站從簡單文檔演變?yōu)檠}雜的,交互式應(yīng)用程序,文檔佈局的工具,例如浮子不一定適合應(yīng)用程序佈局?!?

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

    > CSS功能呢! GSS的第四個(gè)功能也有類似的事情:GSS採用約束層次結(jié)構(gòu)來優(yōu)先考慮優(yōu)勢的約束。我們在這裡談?wù)摰乃膫€(gè)內(nèi)置力量級(jí)別:


    !弱

    !

    !

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

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

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

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

    >
    #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>

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

    GSS

    中的選擇器 GSS中的選擇器是一組HTML元素的查詢,它們用於確定最終受約束影響的元素。選擇器很重要,因?yàn)槟仨氃趯ζ鋺?yīng)用約束之前從DOM中選擇和觀察元素。

    >

    GSS支持以下基本選擇器。

    GSS

    中的規(guī)則集

    規(guī)則集將使您在單個(gè)選擇器上定義多個(gè)約束。您也可以嵌套它們並在其中使用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)在上面的示例中介紹了屬性,但讓我們更仔細(xì)地看一下它們。在GSS中,屬性是屬於元素的變量。當(dāng)我們使用CSS已知的屬性時(shí),它們相應(yīng)的GSS計(jì)算值將分配為元素上的內(nèi)聯(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線性算術(shù)約束解決算法的JavaScript端口(cassowary.js),1999年。算法找到基於用戶使用自然語言給出的輸入約束的佈局的最佳解決方案。
    <span>section < article {
    </span>  <span><span>.aclass</span> {
    </span>    <span>height: == 150;
    </span>  <span>}
    </span><span>}</span>

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

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

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

    >安裝GSS

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

    然後將此代碼添加到您的標(biāo)記的部分:>
    <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>
    >一旦您啟動(dòng)並運(yùn)行了所有內(nèi)容,就可以開始關(guān)註一些代碼示例。在下面,我將介紹初學(xué)者的教程。

    a GSS初學(xué)者的教程

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

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

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

    如果您願(yuàn)意,可以將其放置在引擎腳本後包含的單獨(dú)的JavaScript文件中。

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

    我將創(chuàng)建一個(gè)div,並將一些文本包裝在GSS佈局中的H2標(biāo)籤中,然後將其添加到HTML:

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

    #elementID[height] == <span>150;   /* id      */
    </span>div[height] == <span>150;         /* element */
    </span>.className[height] == <span>150; /* class   */</span>
    >我的目標(biāo)是儘管大小尺寸將.foo元素垂直將.foo元素集中在視口內(nèi),並且即使元素的大小更改,也能夠?qū)⑾嗤膶R保持在適當(dāng)?shù)奈恢谩?

    這是我將適用於實(shí)現(xiàn)此目標(biāo)的限制:>

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

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

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

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

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

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

    的元素旋轉(zhuǎn) 在下一個(gè)示例中,

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

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

    >

    注意:由於某些錯(cuò)誤,上面的文件路徑指向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ù)學(xué)計(jì)算留在算法上。在此示例中,我正在嘗試在窗口寬度動(dòng)態(tài)變化時(shí)在元素和元素中產(chǎn)生旋轉(zhuǎn)的窗口之間創(chuàng)建一個(gè)約束。 >>>>>。
    p[line-height] >= <span>10;
    </span>p[line-height] <= <span>::window[height] / 20;</span>
    這是我將適用於實(shí)現(xiàn)此目標(biāo)的限制:>

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

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

    >

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

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

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

    如果您查看全屏演示,請嘗試調(diào)整窗口大小。您會(huì)注意到,當(dāng)窗口的寬度更改時(shí),方框?qū)⒏淖兤湫D(zhuǎn)位置。
    #elementID[height] == <span>150;   /* id      */
    </span>div[height] == <span>150;         /* element */
    </span>.className[height] == <span>150; /* class   */</span>
    GSS

    的未來 GSS的未來看起來很有希望。是時(shí)候我們前進(jìn)了前端技術(shù)了。我建議您在撕裂整個(gè)樣式表圖書館之前練習(xí)較小的原型。

    >

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

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

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

    >

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

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

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

    >傳統(tǒng)CSS使用框模型進(jìn)行佈局,在創(chuàng)建複雜的佈局時(shí),該模型可能會(huì)限制和復(fù)雜。另一方面,GSS使用基於約束的模型,該模型允許更具靈活性和精確度。使用GSS,您可以定義元素之間的關(guān)係,並以更直觀的方式控制其行為。

    >

    >我如何開始使用GSS?

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

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

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

    >使用GSS?

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

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

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

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

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

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

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

    使浮子,桌子細(xì)胞,透明封裝和水平/垂直居中過時(shí),並採用約束層次結(jié)構(gòu)來優(yōu)先使用強(qiáng)度的約束,提供四個(gè)內(nèi)置的強(qiáng)度水平:!弱,中等,!強(qiáng),!

    GSS使用CASSOWARY線性算術(shù)約束算法解決算法來根據(jù)用戶自然語言給出的輸入約束來找到最佳的佈局解決方案,從而逐漸評估約束並自動(dòng)發(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)絡(luò)開發(fā)人員與前端技術(shù)之間的戰(zhàn)爭已經(jīng)持續(xù)了多年。在過去的十年中,CSS已被證明是勝利的。但是,Web開發(fā)人員會(huì)定期使用越來越多的工具來建立越來越複雜的用戶界面。例如,以CSS為中心的元素並不是最簡單的任務(wù),尤其是使用可變的高度元素。 >。 flexbox是最新的解決方案之一,但是即使是小的更改也需要您深入HTML內(nèi)容和CSS演示並進(jìn)行更改。
    > GSS是時(shí)候參加競技場了。 GSS解決了這些問題,還有更多的問題 - 開發(fā)人員十多年來遇到的問題。

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

    GSS和CASSOWARY都建立在約束編程上,使其非常適合授權(quán)CSS等聲明語言。約束編程是一個(gè)範(fàn)式,Web開發(fā)人員關(guān)注聲明“什麼”並將“如何”留給數(shù)學(xué)求解器。

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

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

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

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

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

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

    另一個(gè)功能:GSS使浮子,表單元,透明封碼和水平/垂直中心過時(shí)。告別危險(xiǎn)的陷阱,因?yàn)槲覀冇蠾3C本身,說浮子不是應(yīng)用程序佈局的理想之選。

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

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

    .subscribe-button[right] == <span>::window[width];
    </span>.subscribe-button[center-y] == .header[center-y]<span>;</span>
    > CSS功能呢! GSS的第四個(gè)功能也有類似的事情:GSS採用約束層次結(jié)構(gòu)來優(yōu)先考慮優(yōu)勢的約束。我們在這裡談?wù)摰乃膫€(gè)內(nèi)置力量級(jí)別:

    !弱


    !

    !

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

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

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

    您已經(jīng)做到了這麼遠(yuǎn),讓我們現(xiàn)在看一些基於約束的佈局。

    > 基於約束的佈局

    gss

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

    #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將計(jì)算
    • >值的屬性
    • []用於訪問屬性
    • =定義不等式約束
    • 10和20是像素中的數(shù)值
    • >

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

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

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

    GSS

    中的選擇器 GSS中的選擇器是一組HTML元素的查詢,它們用於確定最終受約束影響的元素。選擇器很重要,因?yàn)槟仨氃趯ζ鋺?yīng)用約束之前從DOM中選擇和觀察元素。

    >

    GSS支持以下基本選擇器。

    GSS

    中的規(guī)則集

    規(guī)則集將使您在單個(gè)選擇器上定義多個(gè)約束。您也可以嵌套它們並在其中使用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)在上面的示例中介紹了屬性,但讓我們更仔細(xì)地看一下它們。在GSS中,屬性是屬於元素的變量。當(dāng)我們使用CSS已知的屬性時(shí),它們相應(yīng)的GSS計(jì)算值將分配為元素上的內(nèi)聯(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線性算術(shù)約束解決算法的JavaScript端口(cassowary.js),1999年。算法找到基於用戶使用自然語言給出的輸入約束的佈局的最佳解決方案。
    <span>(section < article .aclass)[height] == 150;</span>

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

    >

    刀片算法的計(jì)算限制

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

    .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>

    然後將此代碼添加到您的標(biāo)記的

    部分:>

    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>

    >一旦您啟動(dòng)並運(yùn)行了所有內(nèi)容,就可以開始關(guān)註一些代碼示例。在下面,我將介紹初學(xué)者的教程。

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

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

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

    如果您願(yuàn)意,可以將其放置在引擎腳本後包含的單獨(dú)的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)建一個(gè)div,並將一些文本包裝在GSS佈局中的H2標(biāo)籤中,然後將其添加到HTML:

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

    >我的目標(biāo)是儘管大小尺寸將.foo元素垂直將.foo元素集中在視口內(nèi),並且即使元素的大小更改,也能夠?qū)⑾嗤膶R保持在適當(dāng)?shù)奈恢谩?

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

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

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

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

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

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

      >示例2:基於動(dòng)態(tài)更改窗口寬度

      的元素旋轉(zhuǎn) 在下一個(gè)示例中,

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

      部分中添加以下代碼行來引導(dǎo)GSS:>

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

    >

    注意:由於某些錯(cuò)誤,上面的文件路徑指向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ù)學(xué)計(jì)算留在算法上。在此示例中,我正在嘗試在窗口寬度動(dòng)態(tài)變化時(shí)在元素和元素中產(chǎn)生旋轉(zhuǎn)的窗口之間創(chuàng)建一個(gè)約束。 >>>>>。

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

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

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

    >

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

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

    如果您查看全屏演示,請嘗試調(diào)整窗口大小。您會(huì)注意到,當(dāng)窗口的寬度更改時(shí),方框?qū)⒏淖兤湫D(zhuǎn)位置。

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

    >

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

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

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

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

    >傳統(tǒng)CSS使用框模型進(jìn)行佈局,在創(chuàng)建複雜的佈局時(shí),該模型可能會(huì)限制和復(fù)雜。另一方面,GSS使用基於約束的模型,該模型允許更具靈活性和精確度。使用GSS,您可以定義元素之間的關(guān)係,並以更直觀的方式控制其行為。>如何開始使用GSS?

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

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

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

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

    > 是否有任何資源可以學(xué)習(xí)GSS?

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

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

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

    以上是介紹GSS:網(wǎng)格樣式表的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

    本網(wǎng)站聲明
    本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

    熱AI工具

    Undress AI Tool

    Undress AI Tool

    免費(fèi)脫衣圖片

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費(fèi)的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強(qiáng)大的PHP整合開發(fā)環(huán)境

    Dreamweaver CS6

    Dreamweaver CS6

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

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級(jí)程式碼編輯軟體(SublimeText3)

    什麼是'渲染障礙CSS”? 什麼是'渲染障礙CSS”? Jun 24, 2025 am 12:42 AM

    CSS會(huì)阻塞頁面渲染是因?yàn)闉g覽器默認(rèn)將內(nèi)聯(lián)和外部CSS視為關(guān)鍵資源,尤其是使用引入的樣式表、頭部大量內(nèi)聯(lián)CSS以及未優(yōu)化的媒體查詢樣式。 1.提取關(guān)鍵CSS並內(nèi)嵌至HTML;2.延遲加載非關(guān)鍵CSS通過JavaScript;3.使用media屬性優(yōu)化加載如打印樣式;4.壓縮合併CSS減少請求。建議使用工具提取關(guān)鍵CSS,結(jié)合rel="preload"異步加載,合理使用media延遲加載,避免過度拆分與復(fù)雜腳本控制。

    外部與內(nèi)部CSS:最好的方法是什麼? 外部與內(nèi)部CSS:最好的方法是什麼? Jun 20, 2025 am 12:45 AM

    thebestapphachforcssdepprodsontheproject'sspefificneeds.forlargerprojects,externalcsSissBetterDuoSmaintoMaintainability andReusability; forsMallerProjectsorsingle-pageApplications,InternaltCsmightBemoresobleable.InternalCsmightBemorese.it.it'sclucialtobalancepopryseceneceenceprodrenceprodrenceNeed

    我的CSS必須在較低的情況下嗎? 我的CSS必須在較低的情況下嗎? Jun 19, 2025 am 12:29 AM

    否,CSSDOESNOTHAVETOBEINLOWERCASE.CHOMENDENS,使用flowercaseisrecommondendendending:1)一致性和可讀性,2)避免使用促進(jìn)性技術(shù),3)潛在的Performent FormanceBenefits,以及4)RightCollaboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraborationWithInteams。

    CSS案例靈敏度:了解重要的 CSS案例靈敏度:了解重要的 Jun 20, 2025 am 12:09 AM

    cssismostlycaseminemintiment,buturlsandfontfamilynamesarecase敏感。 1)屬性和valueslikeColor:紅色; prenotcase-sensive.2)urlsmustmustmatchtheserver'server'scase,例如

    什麼是AutoPrefixer,它如何工作? 什麼是AutoPrefixer,它如何工作? Jul 02, 2025 am 01:15 AM

    Autoprefixer是一個(gè)根據(jù)目標(biāo)瀏覽器範(fàn)圍自動(dòng)為CSS屬性添加廠商前綴的工具。 1.它解決了手動(dòng)維護(hù)前綴易出錯(cuò)的問題;2.通過PostCSS插件形式工作,解析CSS、分析需加前綴的屬性、依配置生成代碼;3.使用步驟包括安裝插件、設(shè)置browserslist、在構(gòu)建流程中啟用;4.注意事項(xiàng)有不手動(dòng)加前綴、保持配置更新、非所有屬性都加前綴、建議配合預(yù)處理器使用。

    什麼是CSS計(jì)數(shù)器? 什麼是CSS計(jì)數(shù)器? Jun 19, 2025 am 12:34 AM

    csscounterscanautomationallymentermentermentections和lists.1)usecounter-ensettoInitializize,反插入式發(fā)芽,andcounter()orcounters()

    CSS:何時(shí)重要(何時(shí)不)? CSS:何時(shí)重要(何時(shí)不)? Jun 19, 2025 am 12:27 AM

    在CSS中,選擇器和屬性名不區(qū)分大小寫,而值、命名顏色、URL和自定義屬性則區(qū)分大小寫。 1.選擇器和屬性名不區(qū)分大小寫,例如background-color和Background-Color相同。 2.值中的十六進(jìn)制顏色不區(qū)分大小寫,但命名顏色區(qū)分大小寫,如red有效而Red無效。 3.URL區(qū)分大小寫,可能導(dǎo)致文件加載問題。 4.自定義屬性(變量)區(qū)分大小寫,使用時(shí)需注意大小寫一致。

    CSS中的情況敏感性:選擇器,屬性和值所解釋的 CSS中的情況敏感性:選擇器,屬性和值所解釋的 Jun 19, 2025 am 12:38 AM

    cssselectorsand and propertynamesarecase-insimentimentiment.1)selectorSlike like'div'div'div'div'and'and'and'And'Andiv'areequivalent.2)propertioessuchas'backusuchas'backusuchas'backusuchas'backusuchas'backer'back-and'background and backorgook crolor'backorground-artreateateDthesementhesame.3)

    See all articles