要将样式与组件进行绑定,需要创建一个同名的样式文件,这样样式将会自动应用到组件
在组件中定义的样式的作用域是属于组件的,这样允许组件可以在不同的上下文中可以复用,
可以阻止其他组件的样式的复写

css 作用域例子

  • 重要说明
    一个组件的文件夹和文件名是骆驼的情况下,myComponent,myComponent.html,和myComponent.css。
    在HTML标记中,camelCase映射到kebab-case。当组件呈现时,<template>标记将替换为标记包含组件的
    命名空间
  • 一个简单demo

    demo 说明,包含了两个组件,cssParent 以及cssChild 每个组件包含一个<p>标签,cssParent.css 样式定义xx-large p
    样式,样式只应用到parent p 标签,而不是在child 中的

    标签

cssParent.js

 
import { LightningElement } from 'lwc';
export default class CssParent extends LightningElement {}

cssParent.html

<template>
  <p>To Do List</p>
  <example-css-child></example-css-child>
</template>
 
 

cssParent.css

p {
    font-size: xx-large;
}

cssChild.js

import { LightningElement } from 'lwc';
export default class CssChild extends LightningElement {}

cssChild.html

<template>
     <p>To Do Item</p>
</template>
 
 

cssChild.css

/*
:host {
    display: block;
    background: whitesmoke;
}
*/
 
 

父组件应用样式到child 组件,这个可以通过元素样式的方式

/* cssParent.css */
p {
    font-size: xx-large;
}
example-css-child {
    display: block;
    background: whitesmoke;
}
 
 

子组件样式的应用,可以通过:host 配置样式,以及类似parent 的样式配置

/* cssChild.css */
:host {
    display: block;
    background: whitesmoke;
}
 

同时对于组件我们可以添加<slot></slot> 方便的进行内容填充

css 的支持以及对于性能的影响

  • 一些不支持的css 选择器
    :host-context()
    ::slotted
    不支持id 选择器
  • 对于性能的影响
    每个选择器都有自己作用域链,所以传递给的每个复合表达式:host()都会扩展到多个选择器中。这种转换增加了生成的CSS的大小和复杂性。
    为了确保CSS封装,每个元素都有一个额外的属性,这也增加了渲染时间

参考资料

https://lwc.dev/guide/reference#component-bundles
https://lwc.dev/guide/composition#pass-markup-into-slots

Lightning Web Components 组件样式(四)的更多相关文章

  1. Lightning Web Components 组件生命周期(六)

    组件创建以及渲染流程 组件移除dom 处理流程 组件从dom 移除 组件中的disconnectedCallback() 方法被调用 子组件从dom 移除 每个子组件的disconnectedCall ...

  2. Lightning Web Components 来自salesforce 的web 组件化解决方案

    Lightning Web Components 是一个轻量,快速,企业级别的web 组件化解决方案,官方网站也提供了很全的文档 对于我们学习使用还是很方便的,同时我们也可以方便的学习了解salesf ...

  3. Lightning Web Components html_templates(三)

    Lightning Web Components 强大之处在于模版系统,使用了虚拟dom 进行智能高效的组件渲染. 使用简单语法以声明方式将组件的模板绑定到组件的JavaScript类中的数据 数据绑 ...

  4. Lightning Web Components 安装试用(一)

    Lightning Web Components 简称(lwc) 是一个快速企业级的web 组件化解决方案,同时官方文档很全,我们可以完整的 学习lwc 项目结构 使用npx 官方提供了一个creat ...

  5. Lightning Web Components 开发指南(二)

    Lightning Web Components 是自定义元素使用html 以及现代javascript进行构建. Lightning Web Components UI 框架使用web compon ...

  6. lightning & web components & templates & slots

    lightning & web components & templates & slots Web components, Custom elements, Template ...

  7. Lightning Web Components 组合(五)

    使用组合我们可以用来设计复杂的组件. 组合一些比较小的组件,可以增加组件的重新性以及可维护性. 通过以下一个简单的demo,将会展示关于owner 以及container 的概念,在实际的项目中 ex ...

  8. 前端组件化-Web Components【转】

    以下全部转自:http://www.cnblogs.com/pqjwyn/p/7401918.html 前端组件化的痛点在前端组件化横行的今天,确实极大的提升了开发效率.不过有一个问题不得不被重视,拟 ...

  9. Web Components之Custom Elements

    什么是Web Component? Web Components 包含了多种不同的技术.你可以把Web Components当做是用一系列的Web技术创建的.可重用的用户界面组件的统称.Web Com ...

随机推荐

  1. idea远程部署SpringBoot项目到Docker

    安装docker服务或者系统学习docker参考这篇文档:https://shimo.im/docs/fE0eJCx8IIojQXzB/ 1.配置docker的远程端口 vim /usr/lib/sy ...

  2. 【题解】Luogu P5339 [TJOI2019]唱、跳、rap和篮球

    原题传送门 这题zsy写的是\(O(n^2)\),还有NTT\(O(n^2\log n)\)的做法.我的是暴力,\(O(\frac{a b n}{4})\),足够通过 考虑设\(f(i)\)表示序列中 ...

  3. Java 函数式编程和Lambda表达式

    1.Java 8最重要的新特性 Lambda表达式.接口改进(默认方法)和批数据处理. 2.函数式编程 本质上来说,编程关注两个维度:数据和数据上的操作. 面向对象的编程泛型强调让操作围绕数据,这样可 ...

  4. el-select和el-cascader的visible-change下拉框隐藏时触发相关事件(下拉框下拉显示时不触发)

    原文:https://blog.csdn.net/CarryBest/article/details/79959389 今天做项目时,用elementUI框架,需要下拉框隐藏时出发某个函数,用了vis ...

  5. pandas-08 pd.cut()的功能和作用

    pandas-08 pd.cut()的功能和作用 pd.cut()的作用,有点类似给成绩设定优良中差,比如:0-59分为差,60-70分为中,71-80分为优秀等等,在pandas中,也提供了这样一个 ...

  6. property Alternative forms propretie

    property Alternative forms propretie English English Wikipedia has articles on: Property (disambigua ...

  7. php中call_user_func()与call_user_func_array()区别

    call_user_func:把一个参数作为回调函数调用 用法说明: call_user_func ( callable $callback [, mixed $parameter [, mixed ...

  8. restframework中根据请求的类型修改序列化类

    只要在视图中重写get_serializer_class方法就可以,用if对请求的类型进行判断 def get_serializer_class(self): if self.action == &q ...

  9. docker实战 (3) 常规配置

    本节会持续更新,在项目实战中遇到的docker配置都会更新进来 docker常用命令: docker 介绍: what: 是什么 why: 为什么用 how: 怎么用 docker 特点: 轻量级,可 ...

  10. 二十六、聊聊mysql如何实现分布式锁

    分布式锁的功能 分布式锁使用者位于不同的机器中,锁获取成功之后,才可以对共享资源进行操作 锁具有重入的功能:即一个使用者可以多次获取某个锁 获取锁有超时的功能:即在指定的时间内去尝试获取锁,超过了超时 ...