cms网站内容如何自定义(什么是HTML代码?HTML组件的基础知识:自定义元素(custom))

优采云 发布时间: 2021-12-01 06:05

  cms网站内容如何自定义(什么是HTML代码?HTML组件的基础知识:自定义元素(custom))

  组件是Web开发的方向。现在的热点是 JavaScript 组件,但未来 HTML 组件可能更有前景。

  本文介绍了 HTML 组件的基础知识:自定义元素。

  

  文章 最后还有一个(包括React Native),欢迎关注。

  一、浏览器处理

  我们通常使用标准的 HTML 元素。

  

<p>Hello World

</p>

  在上面的代码中,

  它是一个标准的 HTML 元素。

  如果使用非标准的自定义元素会发生什么?

  

Hello World

  在上面的代码中,它是一个非标准元素,浏览器无法识别。运行这段代码的结果是浏览器照常显示Hello World,说明浏览器没有过滤这个元素。

  

  现在,设置自定义元素的样式。

  

greeting {

display: block;

font-size: 36px;

color: red;

}

  操作结果如下。

  

  接下来,使用脚本来操作这个元素。

  

function customTag(tagName, fn){

Array

.from(document.getElementsByTagName(tagName))

.forEach(fn);

}

function greetingHandler(element) {

element.innerHTML = '你好,世界';

}

customTag('greeting', greetingHandler);

  操作结果如下。

  

  这表明浏览器将自定义元素视为标准元素,只是没有默认样式和行为。这个处理方法是写出来的。

  “用户代理必须将他们不理解的元素和属性视为语义中立;将它们留在 DOM(对于 DOM 处理器)中,并根据 CSS(对于 CSS 处理器)对它们进行样式设置,但不能从中推断出任何含义。”

  上一段的意思是浏览器必须在DOM中保留自定义元素,但它没有任何语义。此外,自定义元素与标准元素一致。

  实际上,浏览器提供了一个 HTMLUnknownElement 对象,所有自定义元素都是这个对象的实例。

  

var tabs = document.createElement('tabs');

tabs instanceof HTMLUnknownElement // true

tabs instanceof HTMLElement // true

  在上面的代码中,tabs 是一个自定义元素,同时继承了 HTMLUnknownElement 和 HTMLElement 接口。

  二、HTML 导入

  使用自定义元素,您可以编写具有非常好的语义的 HTML 代码。

  

微博

微信

  上面的代码可以一目了然地看到语义。

  如果将该元素的样式和脚本封装在一个 HTML 文件 share-buttons.html 中,则该元素可以重复使用。

  使用的时候先介绍一下share-buttons.html。

  然后,它可以在网页中使用。

  

Title

... ...

  HTML导入的更多用法请参考教程(1,2)。目前只有Chrome浏览器支持这种语法。

  三、自定义元素标准

  HTML5 标准规定自定义元素是合法的。然后,W3C 开发了一个单独的自定义元素。

  它与其他三个标准——HTML 导入、HTML 模板、Shadow DOM——统称为规范。目前,该规范仅适用于 Chrome 浏览器。

  

  自定义元素标准对自定义元素的名称施加了限制。

  “自定义元素的名称必须收录破折号 (-),因此是正确的名称,总和不正确。此限制允许 HTML 解析器区分哪些是标准元素,哪些是自定义元素。”

  

  请注意,一旦在名称中使用破折号,自定义元素就不是 HTMLUnknownElement 的实例。

  

var xTabs = document.createElement('x-tabs');

xTabs instanceof HTMLUnknownElement // false

xTabs instanceof HTMLElement // true

  自定义元素标准规定自定义元素的定义可以使用 ES6。

  

// 定义一个

class MyElement extends HTMLElement {...}

window.customElements.define('my-element', MyElement);

  上面代码中使用原生window.customElements对象的define方法来定义Custom Element。该方法接受两个参数,第一个参数是自定义元素的名称,第二个参数是一个 ES6 类。

  该类使用 get 和 set 方法来定义自定义元素的某个属性。

  

class MyElement extends HTMLElement {

get content() {

return this.getAttribute('content');

}

set content(val) {

this.setAttribute('content', val);

}

}

  有了这个定义,就可以插入到网页中了。

  

Hello

  处理脚本如下。

  

function customTag(tagName, fn){

Array

.from(document.getElementsByTagName(tagName))

.forEach(fn);

}

function myElementHandler(element) {

element.textConent = element.content;

}

customTag('my-element', myElementHandler);

  操作结果如下。

  

  ES6 Class 的好处之一是您可以轻松编写继承的类。

  

class MyNewElement extends MyElement {

// ...

}

customElements.define('my-new-element', MyNewElement);

  今天的教程到此结束,更多使用请参考谷歌官方教程。

  四、参考链接

  (正文结束)

  ================================

  以下是培训信息。

  自从写了《React 技术栈教程系列》以来,有两种反馈:一种是内容不完整和深入,希望有更详细的介绍,另一种是求要添加的 React Native。我对此无能为力。我精力有限,无法继续投资。我只能推荐大家阅读官方文档。

  昨天,优达学城的一个朋友联系了我。他们与 React Training 合作,正式推出了 React 培训课程。我希望我可以帮助推广它。

  

  我当时很兴奋,因为 React Training 是美国最专业的 React 培训机构,水平非常高。React 社区有几位讲师非常有名,React Router、unpkg 和 mustache.js 都是他们的作品。我相信在中国很难找到这种水平的老师和课程。

  

  事实上,此事在美国也备受关注,Techcrunch 对此进行了报道。

  

  整个课程与美国完全同步。它总共持续4个月,分为三个阶段。

  

  课程内容涉及整个React技术栈,PC端和移动端并重。学习后,您可以获得纳米*敏*感*词*书。

  课程价格为RMB 3399。注意本课程不是零基础,要求学习者已经掌握了JavaScript的基本语法,所以有注册复习链接。

  

  想学习React/React Native的可以考虑。点击这里了解更多。注册将于 6 月 27 日结束。

  (超过)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线