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

目錄
我最擔(dān)心的問題
基本塊轉(zhuǎn)換
更神奇的東西:來自原始代碼的塊轉(zhuǎn)換
首頁 web前端 css教學(xué) WordPress塊變換

WordPress塊變換

Apr 06, 2025 am 10:29 AM

WordPress Block Transforms

CSS-Tricks 的Gutenberg 之年。去年年底,我們定下了這個目標(biāo)。我們的進展比預(yù)期快得多,所有內(nèi)容都在塊編輯器1中創(chuàng)作,現(xiàn)在所有內(nèi)容都啟用了塊編輯器。這意味著當(dāng)我們打開大多數(shù)舊帖子時,我們會看到所有內(nèi)容都在“經(jīng)典”塊中。它看起來像這樣:

帖子的全部內(nèi)容都在單個塊中,因此並沒有真正利用塊編輯器。它仍然是“可視的”,就像塊編輯器一樣,但更像是使用TinyMCE 的舊可視編輯器。我從未使用過它,因為它以我不喜歡的方式強制破壞了HTML。

我最擔(dān)心的問題

將經(jīng)典塊轉(zhuǎn)換為新塊就像選擇經(jīng)典塊並選擇“轉(zhuǎn)換為塊”選項一樣簡單。

當(dāng)我們從“轉(zhuǎn)換為塊”選項中告訴它這樣做時,塊編輯器如何處理舊內(nèi)容的塊化?如果轉(zhuǎn)換過程中內(nèi)容完全被破壞了怎麼辦?我們能夠切換嗎?

答案是:它做得相當(dāng)好。但是……仍然存在問題。不是“錯誤”,而是我們舊內(nèi)容中包含自定義HTML 的情況,它不知道該如何處理——更不用說如何將其轉(zhuǎn)換為我們希望的塊了。有一種方法!

基本塊轉(zhuǎn)換

這就是“塊轉(zhuǎn)換”這個想法的由來。所有(好吧,大多數(shù)?)原生塊都有“到”和“從”轉(zhuǎn)換。您可能已經(jīng)熟悉它在UI 中的表現(xiàn)方式。例如,段落可以轉(zhuǎn)換為引用,反之亦然。這是一個關(guān)於本段的超級元截圖:

這些轉(zhuǎn)換並非魔法;它們是明確編碼的。註冊塊時,您會指定轉(zhuǎn)換。假設(shè)您正在註冊您自己的自定義代碼塊。您需要確保您可以轉(zhuǎn)換它……

  • 和到默認(rèn)內(nèi)置代碼塊,以及可能還有其他一些可能有用的塊。
  • 返回到內(nèi)置代碼塊。

它可能看起來像這樣:

 <code>registerBlockType("my/code-block", { title: __("My Code Block"), ... transforms: { from: [ { type: "block", priority: 7, blocks: ["core/code", "core/paragraph", "core/preformatted"], transform: function (attributes) { return createBlock("my/code-block", { content: attributes.content, }); }, }, ], to: [ { type: "block", blocks: ["core/code"], transform: ({ content }) => createBlock("core/code", { content }), }, ], ...</code>

這些是到其他塊和從其他塊的轉(zhuǎn)換。幸運的是,這是一個非常簡單的塊,我們只是在四處移動內(nèi)容。更複雜的塊可能需要傳遞更多數(shù)據(jù),但我還沒有處理過這種情況。

更神奇的東西:來自原始代碼的塊轉(zhuǎn)換

這是舊內(nèi)容的真相時刻:

在這種情況下,塊的創(chuàng)建不是來自其他塊,而是來自原始代碼。從字面上看,HTML 正在被查看,並且正在做出關(guān)於從HTML 塊創(chuàng)建哪些塊的決定。這就是塊編輯器在選擇方面做得如此出色的地方,也是事情可能出錯、做出錯誤的塊選擇或破壞內(nèi)容的地方。

在我們的舊內(nèi)容中,帖子中的代碼塊(非常重要的事情)看起來像這樣:

 <code><code markup="tt">let html = `</code></code> cool `;

有時塊轉(zhuǎn)換會對這些塊進行處理,將其轉(zhuǎn)換為原生代碼塊。但存在一些問題:

  1. 我不想要原生代碼塊。我希望將其轉(zhuǎn)換為我們自己的代碼塊(此處有博客文章)。
  2. 我需要這些屬性中的一些信息來告知新塊的設(shè)置,例如代碼的類型。
  3. 我們舊代碼塊中的HTML未轉(zhuǎn)義,我需要它不要被卡住。

我在這裡並沒有所有答案,因為這是一個不斷發(fā)展的過程,但我確實已經(jīng)實現(xiàn)了一些現(xiàn)在運行得很好的塊轉(zhuǎn)換。以下是“原始”轉(zhuǎn)換(與“塊”轉(zhuǎn)換相反)的樣子:

 <code>registerBlockType("my/code-block", { title: __("My Code Block"), // ... transforms: { from: [ { type: "block", priority: 7, // ... }, { type: "raw", priority: 8, isMatch: (node) => node.nodeName === "PRE" && node.children.length === 1 && node.firstChild.nodeName === "CODE", transform: function (node) { let pre = node; let code = node.querySelector("code"); let codeType = "html"; if (pre.classList.contains("language-css")) { codeType = "css"; } if (pre.getAttribute("rel") === "CSS") { codeType = "css"; } if (pre.classList.contains("language-javascript")) { codeType = "javascript"; } if (code.classList.contains("language-javascript")) { codeType = "javascript"; } // ... other data wrangling... return createBlock("csstricks/code-block", { content: code.innerHTML, codeType: codeType, }); }, }, ], to: [ // ... ], // ... }</code>

isMatch函數(shù)運行於它找到的每個HTML 節(jié)點上,因此這是在您需要的情況下從該函數(shù)返回true的絕佳機會。請注意,在上面的代碼中,我特別是在尋找看起來像

<code>的HTML。當(dāng)匹配時,轉(zhuǎn)換運行,我可以返回一個`createBlock` 調(diào)用,該調(diào)用傳入我使用JavaScript 從節(jié)點中提取的數(shù)據(jù)和內(nèi)容。</code>另一個示例:粘貼URL


<p>“原始”轉(zhuǎn)換不僅發(fā)生在您“轉(zhuǎn)換為塊”時。當(dāng)您將內(nèi)容粘貼到塊編輯器中時,也會發(fā)生這種情況。您可能之前已經(jīng)體驗過這種情況。假設(shè)您從某處複製了一些表格標(biāo)記並將其粘貼到塊編輯器中——它可能會粘貼為表格。 YouTube URL 可能會粘貼到嵌入中。這種事情就是為什麼從Word 文檔等複制/粘貼往往與塊編輯器配合得如此好。</p>



<p>假設(shè)您希望在將某種類型的URL 粘貼到編輯器中時執(zhí)行某些特殊行為。這就是我使用自定義CodePen Embed 塊的情況。我希望如果粘貼codepen.io URL,它將使用此自定義塊,而不是默認(rèn)嵌入。</p>



<p>這是一個看起來像這樣的“from”轉(zhuǎn)換:</p>



{
  type: "raw",
  priority: 8, // higher number to beat out default
  isMatch: (node) =>
    node.nodeName === "P" &&
    node.innerText.startsWith("https://codepen.io/"),

  transform: function (node) {
    return createBlock("cp/codepen-gutenberg-embed-block", {
      penURL: node.innerText,
      penID: getPenID(node.innerText), // helper function
    });
  },
}


<h3>所以……</h3>


<p>它很凌亂嗎?有點。但它功能強大,滿足您的需求。如果您有一個包含大量定制HTML、短代碼等內(nèi)容的舊網(wǎng)站,那麼進入塊轉(zhuǎn)換是唯一的出路。</p>



<p>我很高興能夠掌握這一點,因為我現(xiàn)在非常喜歡塊編輯器。用它來寫作和構(gòu)建內(nèi)容是一種樂趣。我喜歡Justin Tadlock 的說法:</p>



<blockquote><p>塊系統(tǒng)不會消失。 WordPress 已經(jīng)超越了我們應(yīng)該將塊編輯器視為單獨實體的階段。它是WordPress 不可或缺的一部分,最終將觸及編輯屏幕之外的更多領(lǐng)域。</p></blockquote>



<p>它會一直存在。擁抱塊編輯器並使其符合我們的意願是關(guān)鍵。</p>




<ol><li>我們到底稱它為什麼呢? “Gutenberg”似乎不再合適了。感覺它會逐漸消失,即使它的開發(fā)仍在Gutenberg 插件中進行。我認(rèn)為我只會稱它為“塊編輯器”,除非特別指代該插件。</li></ol>

以上是WordPress塊變換的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(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

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(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”? 什麼是'渲染障礙CSS”? Jun 24, 2025 am 12:42 AM

CSS會阻塞頁面渲染是因為瀏覽器默認(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ù)雜腳本控制。

如何在無花果中使用Lotties 如何在無花果中使用Lotties Jun 14, 2025 am 10:17 AM

在接下來的教程中,我將向您展示如何在無花果中創(chuàng)建Lottie動畫。我們將使用兩種彩色設(shè)計來超越如何在無花果上進行動畫,然後向您展示如何從Figma到Lottie動畫。您只需要免費無花果

打破邊界:用(s)CSS構(gòu)建湯姆拼圖 打破邊界:用(s)CSS構(gòu)建湯姆拼圖 Jun 13, 2025 am 11:33 AM

我們對其進行了測試,事實證明,至少在低級邏輯和拼圖行為時,Sass可以替換JavaScript。除了地圖,混音,功能和大量數(shù)學(xué)外,我們都設(shè)法使我們的Tangram難題栩栩如生,沒有J

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

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

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

See all articles