/ 摘要:本文着眼于使用具有内置功能和样式的组件来扩充HTML。...在过去几年中,人们对样式指南和模式库的兴趣不断增加。由于开发人员和设计师一般都分布在多个团队中,所以大公司需要寻求实现一致性的方法,比如提供简单的颜色样本。不过对于我们来说,可以比他们做得更好。...但是通过用自定义元素 API 定义新的标记,我们就可以用具有内置功能的可重用元素来扩充HTML。 创建自定义元素很像在 React 中创建一个组件 —— 但在这里是扩展了 HTMLElement 。...对于具有相应值的属性,我们将在自定义元素的类定义中包含以下内容。...但是关于标记和样式,我们的自定义元素相当于空的无样式 。 要将HTML和CSS封装为组件的一部分,还需要附加一个shadow DOM。 最好在构造函数中执行此操作。
其中包括处理复杂布局和交互元素的方法,以及利用新技术和工具来实现更高级的响应式效果。 下面是正文~~~ 大家都知道响应式设计的工作原理,但我们大多数开发人员仍在寻找最佳实践来实现它。...文件的分离为我们提供了一种简单的结构顺序,因此将媒体查询放置在每个组件中,靠近它们自己的样式,是最好的位置。 现在,由于每个组件都有相同的断点,将它们放入变量中以便更轻松地维护代码会更好。...例如: Closed breakpoints 闭合断点 当我们使用具有开始和结束值的媒体查询时。例如: 好的,哪个更好用? 请仅使用闭合断点!除非是我们想要支持的最大分辨率的最后一个断点。...在这张图片中,HTML 是相同的,但移动设备+平板电脑和桌面版本看起来完全不同! 我所做的是将“移动导航栏”的样式放在移动+平板电脑的断点上,将桌面的样式放在桌面断点上。...总结 从这篇文章中需要了解的重点是什么: 以小组件为单位工作 在单独的文件中定义SASS变量中的常见闭合断点 在每个需要的组件中使用SASS变量的断点 工作和思考时要“基本优先”!
设计系统(作为一种设计相关的技术产品),不仅仅只是一个设计框架,UI工具包或组件库。亦或是一套样式指南或代码指南。实际上,它所涵盖的内容要远远多于以上设计内容的总和。那它究竟是什么呢?...更进一步的分析,对于设计系统的重要部分的讨论,虽然设计师们观点不一,争议不断,但就我而言,更偏向于从公司的角度来分析:好的设计系统应该是能够让用户轻松了解到:什么公司?其使命是什么?...无需再引入任何新内容。尽管,这听起来可能有些极端或不可理解。但在我看来,却恰恰相反。正是由于在这方面的认识不同,才使许多设计师误入歧途,给产品UI设计带来更多的问题。...也可以构建一些更炫酷部件 当设计和构建一些组件时,设计师也可以组合多个组件来创建更复杂的部件,如图下拉菜单组件: 该下拉菜单组件并未使用预定义的样式库之外的任何样式。...由于页边距在不同的案例中设置有所不同,因此设计师最好还是在页面样式表中使用“div”和“wrapper”代码单独进行定义。
我只向大家展示了如何处理单个块中不同的修饰符和子代(或孙子代)元素。 但是如果有多个区块咱怎么办呐? 事情有点复杂。 我们使用一个网站范围的导航来说明两个块之间的关系。 ? 好啦。 现在有两个区块。...假设我把上面的代码转换成一个带有命名空间的代码。HTML将完全相同(只加了少数的class前缀)。 在这个例子中要特别注意.o和.c前缀: ? .o-和.c-是什么意思呢?...如果你阅读Harry的文章,要注意一下我的命名空间不同于他的。(待会儿我会分享有哪些不同的内容)。...以下是我的样式表中典型的.o-button对象的示例: ? 虽然对象不能影响外部结构,但它改变其内部结构是很合理的。 例如,我提到的.o-countdown计时器可以具有以下HTML和CSS: ?...如果您的网站很简单,那么这是一个很好的开始,并且不需要为多个对象/组件使用相同的标题样式。 但是举个栗子哈,如果你有一个带链接的导航样式和你的h5样式一致怎么办? 你会这样做吗? ?
例如对一个站点中的多个页面使用了同一套CSS样式表,而某些页面中的某些元素想使用其他样式,就可以针对这些样式单独定义一个样式表应用到页面中。...2、多个HTML元素可以包含许多文档,可以在其中创建类。 3、要在复杂情况下对样式进行分组,请使用选择器和分组方法。 Q7、使用CSS的缺点?...Q17、如何设置h2和h3标签的相同样式? 通过用逗号(,)分隔符来定位多个元素 h2, h3 { color: blue; } Q18、CSS中的float属性如何使用?...visibility:hidden 表示该标签不可见,但在页面上为其分配了空间。标签已呈现,只是在页面上看不到。 Q28.CSS的特异性是什么意思?...对于大型项目(具有多种布局和内容类型的站点,或在同一设计框架下具有多个品牌的站点),使用模块化方法并将CSS拆分为多个文件更为明智。 跨文件拆分CSS可以更轻松地将任务打包给团队。
您可以决定在要使用的平台的模拟器/仿真器上运行,也可以直接在自己的设备上运行它。 DOM和样式 React-Native不使用HTML来渲染应用程序,而是提供以类似方式工作的替代组件。...要为您的React-Native组件设置样式,您必须在Javascript中创建样式表。...平台特定代码 使用相同代码集设计多个平台的应用程序有时可能会压倒一切,您的代码很快就会开始看起来很丑陋。...假设你可以控制你的应用程序的外观和行为,你有两个选择: 您可以为应用程序定义通用设计,使其在两个平台上看起来完全相同,只要它保持直观,并不会混淆平台用户。...您可以为每个平台定义代码集,这意味着您将拥有不同的DOM,样式表,甚至可能会有不同的逻辑和动画,以便遵循平台的UI和UX准则。
但是,某些中性颜色风格是不变的,在任何一种模式下都不会改变。在Figma Design System中,我们选择了白色和黑色作为固定颜色,无论您使用哪种模式,该颜色都将保持不变。...另外,图像占位符的颜色也是恒定的,不会改变。 例如,在上图中,我们展示了该按钮在浅色和深色主题中的外观。图标,文本和计数器具有恒定的颜色。按钮的背景有变化,但其中的内容未更改。...1.1颜色样式-灰度样式 灰度颜色是可更改的样式,因为在黑暗模式下应用相同的颜色时时,您将不会获得与在明亮模式下相同的效果。...请注意:可以将系统颜色作为背景,但例如按钮,标签等颜色应该从亮色或者暗色模式的“常量样式”中调用。 2. 效果样式 效果样式是应用于设计系统中某些组件的微小更改和效果。...如何在亮色模式和暗色模式之间切换 设置好设计系统后,就可以轻松地将组件和模块切换为暗色模式了。为此,您将需要一个名为Appearance的插件,该插件可以在Figma社区找到。
例如,我经常希望向页面添加额外的 HTML,或者嵌入 SVG 文件的内容,以便我们可以为其设置动画和样式。...本周我在思考如何用一些新的与 fetch 相关的标记模式来实现这一点,例如 rel="preload" 或 HTML import,但我总是得出的相同结论,即这些都不能使你方便地访问所取得的文件的内容。...值得注意的是,如果你要导入包含多个元素的 HTML 文件,我建议将其全部包装在 div 中,以使 iframe 标记能够简单地查找 body中的第一个子节点。...好处 与我们过去使用的其他模式相比,这种模式有一些很明显的好处: 这是声明性的。与大多数自定义 JavaScript 方法不同,这个方法是 HTML 驱动的,它在标记中的目的非常清楚,一目了然。...例如对页面上所有图标使用可能会过重,但是对于需要进行动画和样式化的特定图标来说,它可能会很好用。不过现在我只能做更多的测试。
什么是烂代码 每个人的性格、技术水平和工作经历都不一样,看待“好代码与烂代码”的标准也各不相同,下图是一张比较出名的关于在Code Review中评判代码质量的图片 逻辑混乱,实现复杂 代码可读性很差...接下来讨论一下在使用封装的过程中遇见的问题 强行封装 现在需要封装一个商品组件,我们有两种思路 一种是根据支持传入某些查询条件,组件先查询商品,再进行展示,相当于组件需要负责查询和展示 另一种是只接收一个商品参数...导致在不同的业务场景中,为了适配每个逻辑的特殊性,额外做一些if..else判断。 后来我才理解到,封装并不是从物理位置把代码拆分到不同的函数、类或文件中,而应该是从概念上,定义良好的输入和输出。...rem 但在某些场景下,我们希望某个或某些文件下面的样式不被转换,因此可以使用postcss-px2rem-exclude,这个插件允许我们指定exclude参数来忽略某些文件的单位自动转换 但如果我们如果需要在同一个样式表中...如果一个类有多个变更理由,那么它就具有多个职责。
所有的页面内容都包含在这个所谓的主页面中。但在写的时候,还是会分开写(页面片段),然后在交互的时候由路由程序动态载入,单页面的页面跳转,仅刷新局部资源。多应用于pc端。...多页面(MPA),就是指一个应用中有多个页面,页面跳转时是整页刷新 单页面的优点:用户体验好,快,内容的改变不需要重新加载整个页面,基于这一点spa对服务器压力较小;前后端分离;页面效果会比较炫酷(比如切换页面内容时的专场动画...项目中所需要的资源文件图片,字体图标,样式文件等都可以放在这两个文件下,这是相同点 不相同点:assets 中存放的静态资源文件在项目打包时,也就是运行 npm run build 时会将 assets...36.请说下封装 vue 组件的过程? 答: 建立组件的模板,先把架子搭起来,写写样式,考虑好组件的基本逻辑。(os:思考1小时,码码10分钟,程序猿的准则。) 准备好组件的数据输入。...这种情况下,多个路由指定相同的chunkName,会合并打包成一个js文件。 vuex常见面试题篇 56.vuex是什么?怎么使用?哪种功能场景使用它? 答:vue框架中状态管理。
基本样式是在页面加载后用户会看到的样式,非基本样式是那些保持隐藏状态的组件,如对话框和通知。需要显示用户操作的元素或组件。...13 、结合通用样式 通过将具有相同样式规则的选择器分组来避免重复样式。你可以用逗号来分隔具有相同样式主体的选择器。...20、规范化或重置你的 CSS 每个浏览器都带有CSS元素的默认样式,并且这些样式各不相同,因此,你的东西可能在一个浏览器中看起来是一种方式,而在另一种浏览器中则不同,它可能具有你意想不到的额外边框或形状...34 、 避免不断覆盖/撤消样式 一个巨大的危险信号是你编写 CSS 样式,然后在其他地方编写具有不同值的相同 CSS,几乎覆盖了所有内容。如果你经常这样做,那么,你处理项目样式的方式显然有问题。...44 、 让父级处理间距、位置和大小 当为要在内容流中使用的组件设置样式时,让内容和内部间距定义大小,不包括位置和边距等内容。让使用此组件的容器来决定位置以及此组件与其他组件的距离。
2) 两个端使用同一个url: 利于seo,可以集中精力和资源做一个url的seo,提升搜索引擎的排名。以Google来说,网址不同但内容相同的情况下,虽不会将该网站列为恶意连结,但仍会影响评价。...由于项目中绝大部分模块的样式代码即使移动端和桌面端有所不同,也只需要书写两种即可,不必特意针对不同尺寸的屏幕分别书写样式代码。据此可以试着来优化代码。...默认是h5的样式,pc如果有所不同直接覆盖样式即可。这样就把移动端和桌面端的样式写在了一起,样式中减少了大量的媒体查询的代码,并且.pc、.h5的名字不比媒体查询的代码更容易看懂吗?...为了保证两个端都有较好的用户体验,某些组件(如城市选择器,日期选择器)不得不分别引入。这是导致尺寸增加最重要的因素。要解决这个问题需要根据模块展示的位置做不同处理。...一开始我们有考虑过是否可以把req这个对象中必要的字段序列化到html中,比如说headers,这样就能保证前端也能完全有这套配置。但是考虑到这种做法太魔法,不太好理解,最终针对性的出了解决方法。
设计理念 在制作框架的过程中,我们把框架需要的特性进行整理和思考,形成了一套对于该框架的设计理念,在这些设计理念之中,最核心的关键为通用于多个项目,高效迭代和保持代码稳健,框架的设计也遵循这三个核心点,...作为 UI 框架,框架内整合的组件和样式必须有能力剥离业务,才能跨项目使用。 能轻易控制整体样式。需要高效地迭代项目,样式的整体控制必不可少。 保持代码稳健。...Class-name 命名规范 作为一个 Web UI 框架,编写代码主要是 CSS 与 HTML,而提到 CSS 与 HTML 的编写,首先要处理的是 Class-name 的命名,在过往的开发中,Class-name...组合而不是继承 在处理组件时,继承的方式是指一个组件类承担复杂的功能,而组合的方式则是把组件类拆分成一个基类,以及多个子类,每个子类承担的功能不重复,对于我们的主场景——频繁迭代,保持稳健,显然组合会更加适合...基础配置与组件 前文提到,框架中会有一份配置表,是各种 Sass 的变量,这些变量控制了一个网页基本的字体样式,链接颜色,通用组件的样式配置等基础样式,在创建一个新项目时,应该先根据设计稿配置好这些信息
-- 好的做法 --> 在事件中使用短横线命名 在发出定制事件时,最好使用短横线命名,这是因为在父组件中...,我们使用相同的语法来侦听该事件。...在 JS 中,驼峰式声明是标准,在HTML中,是短横线命名。因此,我们相应地使用它们。 幸运的是,Vue 已经提供了驼峰式声明和短横线命名之间转换,因此除了实际声明它们之外,我们不必担心任何事情。...基本组件应该相应地加上前缀 根据Vue样式指南,基本组件是仅包含以下内容的组件: HTML 元素 额外的基础组件 第三方的UI组件 为这些组件命名的最佳实践是为它们提供前缀Base、V或App。...}).join(' ') }} 基本上,我们希望模板中的所有内容都直观明了。
React 组件也一样, 它的输入是 props,输出是关于 UI 的描述。我们可以在多个 UI 中重用单个组件,组件也可以包含其他组件。...在 React 中,React 元素接收的属性列表称为 props 。使用函数组件时,你不必将包含属性列表的对象命名为 props,但这是标准做法。...React 将这些样式对象转换为内联 CSS 样式属性。当然,这不是设置 React 组件样式的最佳方法,但在条件样式中,使用它非常方便。...JSX不是模板语言一些处理 HTML 的库为它提供了模板语言。使用具有循环和条件的"增强"HTML 语法编写动态视图。然后,这些库使用 JavaScript 将模板转换为 DOM 操作。...如果我们给纯函数相同的输入,我们将始终获得相同的输出。如果 React 组件不依赖于其定义之外的任何内容,我们也可以将该组件标记为纯组件。纯组件在没有任何问题的情况下更有可能被重用。
这种做法有助于提高性能并保持代码的可维护性。 ---- 5. 删除不必要的字体 诸如Google Fonts之类的服务使将自定义字体添加到任何页面变得容易。...以下是渐进式渲染的一些关键概念和技术: 「分段加载内容:」 将页面内容划分为多个模块或组件,并按照优先级逐步加载。通常,首屏内容、核心内容和附加内容可以分别进行加载。...「分块渲染:」 将页面内容分为不同的块或区域,并在加载完成每个块后立即呈现。这样,即使页面的某些部分尚未完全加载,用户仍然可以浏览已经呈现出来的内容。...分段加载内容 与使用单个整站CSS文件不同,渐进式渲染是一种为单独的组件定义独立样式表的技术。每个样式表会在HTML中引用组件之前立即加载: <!...页面会更早可用,因为每个组件按顺序渲染;页面顶部的内容可以在剩余内容加载时被查看。 懒加载 假设我们有一个包含多个段落的网页,我们将通过分块加载和渲染逐步显示这些段落。 <!
你并不需要编写基础的 CSS 样式规则,只需要直接在 HTML 中应用已经事先定义好的类名。 这样的类名还有很多。...上面这个例子可不夸张,我甚至可以说它是一个最简化的例子了 —— 至少对于那些有明确要求、明确设计风格(基于不同屏幕尺寸作出的响应式变化和样式调整)的应用来说,是这样的。 那么要怎么组织这些类名呢?...我可不想像找威利一样去找元素的字号(译者注:威利是儿童书籍《威利在哪里》中的人物,读者需要在一张人山人海的图片中找到威利) 我的观点是,部分 HTML 元素会使用非常多的样式,这种情况下应该考虑将样式与...PurgeCSS 会分析你的内容和 css 文件,首先它将 css 文件中使用的选择器与内容文件中的选择器进行匹配,然后它会从 css 中删除未使用的选择器,从而生成更小的 css 文件。...这还是挺香的,我相信你也同意这种做法。 但今天的工具,比如说 SASS (周下载量超过五百万),早就可以轻松创建工具类和变量并在代码中重用了。甚至原生的 CSS 也已经支持使用变量。
领取专属 10元无门槛券
手把手带您无忧上云