首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何学习 CSS

有些选择器的行为就好像你已经将类应用于文档中的某些内容。 例如p:first-child就像你在第一个p元素中添加了一个类一样,这些被称为 伪类选择器。...image.png 继承和层叠 层叠是指当元素应用了多个样式规则,哪个规则优先应用。 如果你曾经遇到过无法理解为什么某些CSS似乎没有应用的情况,那可能是层叠没有运用好。...层叠与继承紧密相关,继承定义了子元素可以继承父元素的样式属性。 它还与特异性有关,不同的选择器具有不同的特异性,当有几个选择器可以应用于一个元素时,继承可以决定应用哪个规则。...在开发者工具中,您可以看到元素选择器被划掉,因为它没有被应用。 一旦你看到浏览器正在获取你的CSS(但其他东西已经推翻了它),那么你可以开始找出原因。...我觉得把速查表作为记忆助手查找语法没有问题,我自己也出版过一些速查表。完全依赖速查表的问题是当你复制语法时,你可能会忽略为什么要这样写。

1.8K10

【web前端阶段二】CSS巩固学习(持续更新)

CSS代码用style属性添加到开始标签中 红色字体 用分号分割 ---- 2.内部样式表 直接把CSS代码添加到头部的style标签中 ...当一个页面被加载的时候,link引用的CSS会同时被加载,@import引用的CSS会等到页面全部被下载完再被加载。...所以有时候浏览@import加载CSS的页面时开始会没有样式(就是闪烁),网速慢的时候会比较明显。 兼容性的差别。@import在IE5以上才能识别,而link标签无此问题。...使用dom控制样式时的差别。当使用javascript控制dom去改变样式的时候,只能使用link标签,因为dom操作元素的样式时,用@import方式的样式也许还未加载完成。...2.层叠性 可以定义多个样式 3.优先级 样式定义冲突时,按照不同样式规则的优先级来应用样式 css样式表优先级总结: 相同的选择器,其样式表排序:行内样式>内部样式>外部样式(就近原则) 相同方式的样式表

65840
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    实战!半小时写一个脑力小游戏

    这组卡片将被包装在一个 section容器元素中。 最终代码如下: ? CSS 我们将使用一个简单但非常有用的配置,把它应用于所有项目: ?...每次元素被点击时都会触发 :active伪类,它引发一个 0.2秒的过渡: ? 翻转卡片 要在单击时翻转卡片,需要把一个 flip类添加到元素。...每当卡片被点击时,都会触发 flipCard函数,其中 this代表被单击的卡片。 该函数访问元素的 classList并切换到 flip类: ?...CSS 中的 flip类会把卡片旋转 180deg: ? 为了产生3D翻转效果,还需要将 perspective属性添加到 .memory-game。 这个属性用来设置对象与用户在 z轴上的距离。...洗牌 我们的游戏看起来相当不错,但是如果不能洗牌就没有乐趣,所以现在处理这个功能。 当 display: flex在容器上被声明时,flex-items会按照组和源的顺序进行排序。

    1.7K20

    【Web技术】264- Web Component可以取代你的前端框架吗?

    还有adoptedCallback,当元素通过调用document.adoptNode(element)被采用到文档时将会被调用,虽然到目前为止,我还没有碰到这个方法被调用的时候。...同样重要的是,你可以在组件使用customElement.define()之前去使用它。当改元素出现在DOM或者被插入到DOM,而还没有被注册时。它将会是一个HTMLUnkonwElement的实例。...当使用customElement.whenDefined升级元素时,可以调用回调,并会返回一个promise。当这个元素被升级时。...当你在开发者工具中再次查看video元素时,你就可以看到该元素的Shadow DOM了。 Shadow DOM还提供了局部作用域的CSS。所有的CSS都只应用于组件本身。...当然可以在组件中修改元素的DOM和CSS,但是尝试创建一个Shadow root将会抛出一个错误。 扩展内置元素的另一个好处就是,这些元素也可以应用于子元素被限制的情况。

    2.6K30

    编写优秀 CSS 代码的 8 个策略

    1qjnmmn gbhjnhbgfsjkgff 编写基本的CSS和HTML是我们作为Web开发人员学习的首要事情之一。然而,我遇到的很多应用程序显然没有人花时间真正考虑前端开发的长久性和可维护性。...首先,如果大多数样式被定义为你所知道的实用程序和类,那么你就不必花费大量时间刷新和重新创建应用程序中已存在的样式。...下面是实践中可能的处理例子: a {color:blue; &:hover{color:black; }}.link--red {color:red; } 然后将其添加到HTML中的每个li元素。...我在这里作出的假设是:某一天,此红色的链接将在应用程序的其他地方被使用。我不想把它嵌入到用户表单中,因为那样我就不得不在未来编写另外一个样式来说明需要红色链接的情况。...这真的是BEM最棒的地方,也是为什么我建议使用它的原因。 6.只使用!inportant作为最后的手段 在一个类上放上!

    1K60

    web 编写优秀 CSS 代码的 8 个策略

    编写基本的CSS和HTML是我们作为Web开发人员学习的首要事情之一。然而,我遇到的很多应用程序显然没有人花时间真正考虑前端开发的长久性和可维护性。...首先,如果大多数样式被定义为你所知道的实用程序和类,那么你就不必花费大量时间刷新和重新创建应用程序中已存在的样式。...3.在CSS中定义实用工具来干你的CSS 我们将’utilities’定义为一个CSS类,实际上它只用来做一件特定的事情,而不是封装整个元素。...我在这里作出的假设是:某一天,此红色的链接将在应用程序的其他地方被使用。我不想把它嵌入到用户表单中,因为那样我就不得不在未来编写另外一个样式来说明需要红色链接的情况。...这真的是BEM最棒的地方,也是为什么我建议使用它的原因。 6.只使用!inportant作为最后的手段 在一个类上放上!

    2.3K00

    用不了多久 Web Component,就能取代你的前端框架吗?

    还有adoptedCallback,当元素通过调用document.adoptNode(element)被采用到文档时将会被调用,虽然到目前为止,我还没有碰到这个方法被调用的时候。...同样重要的是,你可以在组件使用customElement.define()之前去使用它。当改元素出现在DOM或者被插入到DOM,而还没有被注册时。它将会是一个HTMLUnkonwElement的实例。...当使用customElement.whenDefined升级元素时,可以调用回调,并会返回一个promise。当这个元素被升级时。...当你在开发者工具中再次查看video元素时,你就可以看到该元素的Shadow DOM了。 Shadow DOM还提供了局部作用域的CSS。所有的CSS都只应用于组件本身。...当然可以在组件中修改元素的DOM和CSS,但是尝试创建一个Shadow root将会抛出一个错误。 扩展内置元素的另一个好处就是,这些元素也可以应用于子元素被限制的情况。

    2.3K40

    8个用于编写可维护,简化的前端代码的CSS策略

    然而,我遇到过很多的应用都没有人花时间真正考虑前端开发的长久性和可维护性。 我认为这主要是因为许多开发人员对CSS / HTML和JavaScript的长久维护缺乏深刻的理解。...这使得你编写CSS会很快。首先,大多数的样式被定义为你所知道的组件和类,则不必花费大量时间刷新和重新创建网页中已存在的样式。...所以,在这种情况下,我会100%确定需要一个额外的css类来处理红色链接。这是在实践中会出现的例子: 然后将其添加到HTML中的每个li元素。...我会在这里作出这样的假设:这个红色的链接会在某一天在网站的其他地方被使用。我不想将它嵌入到用户表单中,因为那样我就不得不在未来写出另外一种风格来解释需要红色链接的情况。...我认为这是具有长期可维护性的应用程序与难以处理的应用程序之间的最大因素之一。

    1.4K90

    Web 隐藏技术:几中隐藏 Web 中的元素方法及优缺点

    当浏览器加载一个web页面时,它不会渲染带有hidden属性的元素,除非该元素被CSS手动覆盖,这与应用display: none的效果类似。...那么,你可能会问为什么不使用display: none呢?这是个好问题。当通过其hidden属性调用图像选择器时,我们可以确定即使CSS因为某种原因没有加载,元素也会被隐藏。...请参见下图: image.png 注意,当蓝皮书被隐藏时,它已被完全从堆栈中删除。为它保留的空间已经消失了。同样的概念也适用于在HTML中隐藏元素时。...元素的预留空间已经没有了,它更改了文档流,或者在我们的示例中,更改了图书流堆栈。 下面是一个动画,演示当移除书本时发生的情况: image.png 如果资源隐藏在CSS中,它们会加载吗?...当clip-path应用于元素时,透明黑色区域下的任何内容都不会显示。 为了更直观地演示以上内容,我将使用clippy工具。

    5.1K30

    前端入门系列之CSS

    比如,我想将我的CSS规则应用到我HTML文档中的所有段落上。...1)伪类 一个 CSS 伪类(pseudo-class) 是一个以冒号(:)作为前缀,被添加到一个选择器末尾的关键字,当你希望样式在特定状态下才被呈现到指定的元素时,你可以往元素的选择器后面加上对应的伪类...你可能希望某个元素在处于某种状态下呈现另一种样式,例如当鼠标悬停在元素上面时,或者当一个复选框被禁用或被勾选时,又或者当一个元素是它在 DOM 树中父元素的第一个子元素时。...当多个CSS规则匹配相同的元素时,它们都被应用到该元素中。只有在这之后,任何相互冲突的属性才会被评估,以确定哪种风格会战胜其他类型。...(没有应用任何样式时,先使用自定义属性,否则使用默认样式) inherit 值是最有趣的——它允许我们显式地让一个元素从其父类继承一个属性值。 让我们看一个例子。

    2.7K10

    编写模块化CSS:命名空间

    如果您还没有深入了解,那得知道OOCSS背后的主要思想是表层和结构的分离。 换句话说,影响块或其元素的位置的属性应该被抽象为一个单独的类用于重复利用。 在CSS中,定位块的行为也称为布局块。...当涉及到布局时,我将布局分为两个不同的类别 —— 全局布局和块级布局。 全局布局 全局布局是应用于所有页面的布局。在我的用例中,它们通常是在任何地方都使用的大型网格容器。...一些对象包含.o-前缀(甚至是一个类)本身就没有意义,因为它们被使用得太多了。 举一个这样的例子——输入元素: ?...这些可爱的课程来自SMACSS(如果你想知道的话)。 当您在CSS中设计状态类时,建议您尽可能保持样式接近所讨论的对象/组件。 例如: ? 如果您不用Sass,你可以用这种方式来书写CSS: ?...这意味着你不应该在排版类中添加margin或padding。而这些margin或padding应该直接添加到组件。(阅读Harry的在大型应用上管理排版了解为什么我推荐这个)。 让我们继续。

    2.7K70

    使用这种技巧,可以大大地提高前端布局效率

    上已经收录,文章的已分类,也整理了很多我的文档,和教程资料。 在布局中,对于每块功能的 DOM 结构,我们一般使用一个带有 wrapper 类元素把它包裹起来,让代码或者网页内容更易于阅读。...Wrapper 的display类型 由于wrapper 是,因此默认情况下它是块级元素。 问题是,当要将wrapper内的内容放置在grid中时,该怎么办?...在每个项目中,我都准备了一组用于margin和padding的实用工具类,在必要时使用它们,考虑下图。 ?...important; } 这样,wrapper 的 CSS保持原样,并且使用附加的 CSS 类添加了间距。 现在,你可能会问,为什么可以在一个页面上添加多个wrapper?...现在,当将display:flex应用于.site-header元素时,.wrapper的后代项将成为.site-header的子项。 ?

    3.9K20

    yui3:widget

    如果JavaScript启用了,widget的HTML代码应该尽早被隐藏起来,避免在JavaScript和CSS组件被添加到页面后,渲染widget时出现无样式内容闪动的情况。...如果在构造函数中未提供这两个节点,widget会创建这两个节点,然后再render方法被调用的时候把这两个节点添加到页面中。...widget代码标签图示 下图展示widget的HTML标签和class名: 为什么使用嵌套的两个盒子 两个嵌套盒子为CSS应用、装饰元素支持、bounding box宽高控制提供方便。...这些元素作为content box的兄弟元素,当他们和content box有同一个父元素时,对他们的定位、大小的设定会更方便。...他们的差异如下: 扩展——一个类级别的概念 扩展提供的功能在类级别中使用; 扩展被用于创建共享扩展功能的多个新widget类; 如果功能对于类来说是必须的,它就应该存在于扩展中; 有些功能被添加到一个类中

    1.5K20

    Web 框架的替代方案

    在浏览常见框架的文档后,我就直接找到了第一部分中提及的特性。我在阅读诸如 MDN 之类的 Web 平台的文档时,会发现很多工作方式都是杂乱无章的,没有数据绑定,没有列表同步,也没有反应性的结论性表述。...我不喜欢过度使用 CSS 类作为 JavaScript 选择器。我认为它们应该被用来将风格相似的元素组合在一起,而不是作为改变组件风格的一种万能机制。...你的 HTML 文件现在包含了应用程序的所有 HTML——静态部分是渲染的 DOM 的一部分,而动态部分在模板中表达,准备在时机成熟时被克隆并追加到文档中。...当任务被添加时,这个表单将通过克隆模板的内容而被重复。 隐藏的输入表示不直接显示的数据,但用于样式设计和选择。 注意这个 DOM 是如何简洁的。它没有在其元素中散布类。...我还添加了一个辅助位,使它在任务被聚焦时可见。

    2.6K10

    JavaScript是如何工作的:渲染引擎和优化其性能的技巧

    当浏览器构建页面的 DOM 时,它在 head 标签下如遇到了一个 link 标记且引用了外部 theme.css CSS 样式表。 浏览器预计可能需要该资源来呈现页面,它会立即发送请求。...在为页面上的任何对象计算最终样式集时,浏览器以适用于该节点的最常规规则开始(例如,如果它是 body 元素的子元素,则应用所有 body 样式),然后递归地细化,通过应用更具体的规则来计算样式。...不同浏览器对于相同元素的默认样式并不一致,这也是为什么我们在 CSS 的最开始要写 *{padding:0;marging:0};,也就是我们要重置CSS默认样式的。...每个渲染器代表一个矩形区域,通常对应于一个节点的 CSS 盒模型。它包含几何信息,例如宽度、高度和位置。 渲染树的布局 创建渲染器并将其添加到树中时,它没有位置和大小,计算这些值称为布局。...但是,如果你在访问 box 之前更改了它的样式(例如,通过动态地向元素添加一些 CSS 类),浏览器必须先应用样式更改并执行布局过程,这是非常耗时和耗费资源的,所以尽可能避免。

    1.6K30

    30道CSS 面试知识点总结

    CSS(层叠样式表)是一种样式语言,对于 HTML 元素来说足够简单。 它在网页设计中非常流行,其应用在XHTML中也很常见。 问题2:为什么要开发CSS?...CSS用于在HTML标记中应用样式,它允许在不影响实际文档的情况下对文档进行额外标记。它可以用来: 为第一个字母、行或元素设置样式。...我们可以使用诸如font-awesome或者阿里的 iconfont 之类的图标库将图标添加到HTML网页。 我们必须将给定图标类的名称添加到任何内联HTML元素中。 (或)。...物理元素 物理元素,又叫实体标签,它所做的是一种物理行为,比如上面我把一段文字用b标签加粗了,它所传达的给浏览器,告诉浏览器 我要加粗这段文字,从单词Bold中也可以看出来,英文中仅仅是加粗的意思,并没有其他作用...问题 20:如何在CSS中定义一个伪类?它们是用来干什么的 CSS伪类是用来添加一些选择器的特殊效果。

    1.4K20

    5 个 CSS 新功能

    它有三个值: visible — 元素渲染正常进行 hidden— 跳过元素渲染时,无论是在屏幕外还是在屏幕上 auto — 当元素在屏幕外时,将跳过其渲染; 当它出现在屏幕上时,将自动渲染 可以简单地将...content-visibility属性添加到我们希望更改其渲染过程的元素中。...当元素接近视口时,浏览器不再增加大小限制,而是开始绘制并命中测试元素的内容。这使得渲染工作能够及时被用户看到。...:is 和 :where 伪类 :is() CSS 伪类 函数将选择器列表作为参数,并选择该列表中任意一个选择器可以选择的元素。这对于以更紧凑的形式编写大型选择器非常有用。...:where() CSS 伪类函数接受选择器列表作为它的参数,将会选择所有能被该选择器列表中任何一条规则选中的元素。

    1.7K30

    使用纯粹的JS构建 Web Component

    模板允许你声明标记片段,它们可以被解析为 HTML。这些片段在页面开始加载时不会被用到,之后运行时会被实例化。 Shadow DOM: Shadow DOM 被设计为构建基于组件的应用的一个工具。...你可以使用下面的生命周期回调函数: — 每当元素插入 DOM 时被触发。 — 每当元素从 DOM 中移除时被触发。 — 当元素上的属性被添加、移除、更新或取代时被触发。...connectedCallback 现在我们需要定义创建元素并且添加到 DOM 中会发生什么。注意这里 和 方法的区别。 方法是元素被实例化时调用,而 方法是每次元素插入 DOM 时被调用。...小贴士和技巧 还有很多关于 Web Component 的东西没有在这篇短文中写到,我想简单的陈述一些开发 Web Component 的小贴士和技巧。 组件的命名 定制元素的名称必须包含一个短横线。...方法会在我们改变定制组件的属性时被触发。 组件元素是类的实例 既然组件元素是类的实例,就可以在这些类中定义公用方法。

    1.2K60

    画了20张图,详解浏览器渲染引擎工作原理

    dispaly:none,所以这个元素也没有被包含进渲染树中。...当一个 DOM 元素受到多条样式控制时,样式的优先级顺序如下:「内联样式 > ID选择器 > 类选择器 > 标签选择器 > 通用选择器 > 继承样式 > 浏览器默认样式」 CSS常见选择器的优先级如下:...简单来说,重绘是由对元素绘制属性的修改引发的。 当我们修改元素绘制属性时,页面布局阶段不会执行,因为并没有引起几何位置的变换,所以就直接进入了绘制阶段,然后执行之后的一系列子阶段。...操作DOM时,尽量在低层级的DOM节点进行操作 不要使用table布局, 一个小的改动可能会使整个table进行重新布局 使用CSS的表达式 不要频繁操作元素的样式,对于静态页面,可以修改类名,而不是样式...使用absolute或者fixed,使元素脱离文档流,这样他们发生变化就不会影响其他元素 避免频繁操作DOM,可以创建一个文档片段documentFragment,在它上面应用所有DOM操作,最后再把它添加到文档中

    2.6K21

    WebComponent:像搭积木一样构建Web应用

    阻碍前端组件化的因素 在前端虽然 HTML、CSS 和 JavaScript 是强大的开发语言,但是在大型项目中维护起来会比较困难,如果在页面中嵌入第三方内容时,还需要确保第三方的内容样式不会影响到当前内容...,这些基础的元素结构是可以被重复使用的。...总之,通过影子 DOM,我们就实现了 CSS 和元素的封装,在创建好封装影子 DOM 的类之后,我们就可以使用 customElements.define 来自定义元素了(可参考上述代码定义元素的方式)...浏览器为了实现影子 DOM 的特性,在代码内部做了大量的条件判断,比如当通过 DOM 接口去查找元素时,渲染引擎会去判断 geek-bang 属性下面的 shadow-root 元素是否是影子 DOM,...另外,当生成布局树的时候,渲染引擎也会判断 geek-bang 属性下面的 shadow-root 元素是否是影子 DOM,如果是,那么在影子 DOM 内部元素的节点选择 CSS 样式的时候,会直接使用影子

    1.1K10
    领券