它最后试图使用sass的darken函数用在background-color属性,但button元素继承它的父class元素.alert。...在大屏幕上你想要每一项之间有足够的空间,但小屏幕又负担不起那么大的空间,所以“gutter”的值要较小。 正如我上面提到的,在媒体查询里面Sass 不能正常运行,所以你必须每个单独处理。...你可以使用一个 gutter 属性,然后随着媒体查询的变化,更新gutter 的值,它就会做出相应的变化。...另外,自定义属性,按钮组件仍是没有语境且不能完全与header 组件解耦, 按钮组件简单的说申明:无论它们现状如何,我要自己的风格基于这些自定义属性; header 组件:我要设置这些属性值,由我的子代来确定和如何使用它们...,父组件将数据传递给子组件,然后子组件定义props,他们愿意接受和使用它们。
在前端开发中经常需要按不同屏幕尺寸来进设计达到PC和移动端响应式。我们一般使用CSS媒体查询来检测视口宽度或高度,然后根据该模式改变设计。 这就是在过去10年中设计Web布局的方式。...例如,如果我在平板中使用 featured 也就是 PC 的样式,它不能工作,为什么?因为它的媒体查询宽度是大于1300px。 不仅如此,当内容低于预期时,我们还会面临一个问题。...考虑下图: 在第一种情况下(Case 1),文章太宽,会导致封面变形。第二种情况下(Case 2)也是一样的问题 如果使用容器查询,我们可以通过查询父组件来决定如何显示特定组件来解决这些问题。...考虑下图,它展示了我们如何使用容器查询来修复这个问题。 这样的话,如果我们把思路转向组件的父组件呢?换句话说,如果我们查询父组件,并根据父组件的宽度或高度来决定组件应该是什么样子的呢?...当一个组件被放置在一个项中,它就被包含在该项中。这意味着,我们可以查询父元素的宽度并据此修改它。考虑下图 注意,每个卡片都有一个黄色的轮廓线,代表每个组件的父组件。
在某些情况下,一个组件或一个布局可能会根据子元素的数量而改变。 这在CSS中已经存在很多年了,但现在通过CSS :has,它变得更加强大。...介绍:nth-last-child 这篇文章的主要要素之一是:nth-last-child伪类。我们可以使用该选择器来模拟计算子元素。 来看看它是如何工作的。我将尽可能用直白的话来解释。...不可能根据元素的数量来设计父元素的样式 想象一下,当有5个或更多的项时,我们需要为每个添加display: flex。我们不能用 :nth-last-child 伪类选择器来做这个。...CSS :nth-last-child伪类是构建条件性布局的关键。通过将它与CSS :has选择器相结合,我们可以检查一个父元素是否至少有特定数量的项,并对其进行相应的样式设计。...但这还没有得到很好的支持(目前来说)。我们可以添加一个布尔CSS变量,当标题有4个或更多的项目时,它将被切换,然后使用样式查询来改变标题。
在@container之后,元素可以响应父容器的大小或样式!唯一需要注意的是,容器必须将自己声明为可能的查询目标,这是一个很小的要求,可以带来很大的好处。...在 :has() 之后,元素树中较高的主体可以保留为主体,同时提供有关子项的查询:ul:has(> li)。...媒体查询范围 在媒体查询范围之前,CSS 媒体查询使用 min-width 和 max-width 来表达条件。...在以下示例中,当 .media-block 的子项是 .content 的兄弟或父项时,将专门应用 img 和 .content 样式: @scope (.media-block) to (.content...(1)snapChanging() 浏览器一发布快照子项,就会触发此事件。这允许用户界面反映缺少快照子项和滚动条的不确定快照状态,因为它现在正在使用,并将在新的地方落地。
我们先看一看循环能做什么,以及在主流的 CSS 预处理器(Sass, Less,Stylus )中如何使用。每一种语言都有特殊的语法,但是最终的效果是相同的。...在 Less 中,你做每件事都会遇到困难(原文评论中有很多人提出了反对意见)。这是它的特点。 社交媒体按钮 遍历列表很有用,但是很多时候你想遍历对象。...一个普通的例子就是给社交媒体按钮添加不同的颜色和图标。对于列表中的每一项,我们需要社交网络的名称以及品牌颜色。...栅格系统 我通常在抽象的 Sass 工具包中使用递增循环,几乎不在具体的样式表中使用。...我并不想遍历整个集合或者特定数量的迭代——我想在找到需要的元素时就停止循环。我通常在抽象的工具包中使用,而在日常编写样式表时并不需要。 我使用 Sass 创建了一个帮助我储存及控制颜色的工具包。
它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。...Less即可以在客户端上运行(支持IE6+,Webkit,Firefox),也可以在服务端运行(借助Node.js)。Sass变量必须是$开始,而Less变量必须使用@符号开始。为什么要使用它们?...在建立 Render Tree 时(WebKit 中的「Attachment」过程),浏览器就要为每个 DOM Tree 中的元素根据 CSS 的解析结果(Style Rules)来确定生成怎样的 Render...将CSS代码放在标签内部;内联样式,将CSS样式直接定义在HTML元素内部;移动端的布局用过媒体查询吗?通过媒体查询可以为不同大小和尺寸的媒体定义不同的css,适应相应的设备的显示。...下可能会出现FOUC现象(即样式失效导致的页面闪烁问题)使用 base64 编码的优缺点base64编码是一种图片处理格式,通过特定的算法将图片编码成一长串字符串,在页面上显示时可用该字符串来代替图片的
接下来,widget 一个个确定 子项 的 位置(在 x 轴上确定水平位置,在 y 轴上确定垂直位置)。 最后,widget 将其自身大小告知父项(当然这个大小也要符合原始约束)。...例如,如果一个 widget 是一个带有一些 padding 的 column,并且想要布局自己的两个子项: Widget:你好父项,我的约束是什么?...父项:你的宽度必须在 90 到 300 像素之间,高度在 30 到 85 像素之间。 Widget:我想有 5 像素的 padding,所以我的子项最多有 290 像素的宽度和 75 像素的高度。...我将把第一个子项放在 x: 5 和 y: 5 的位置,将第二个子项放在 x: 80 和 y: 25 的位置。 Widget:你好父项,我决定将自己设为 300 像素宽和 60 像素高。...widget不知道,也无法确定自己在屏幕上的位置,因为它的位置是由父项决定的。 由于父项的大小和位置又取决于上一级父项,因此只有考虑整个树才能精确定义每个 widget 的大小和位置。
1部分中,我们探讨了如何使用复合组件和静态类属性来构建可读可重用的 Stepper 组件。...点击此处查看第2部分 在本部分中,我们将探讨一种设计模式,该模式可以解决到目前为止我们已经确定的所有问题。 它被称为:render props。...我们使用它与 React 来描述 UI 应该是什么样子(有点像模板语言),同时它具有 JavaScript的全部功能。...更进一步的想象,我们还能用函数做些什么? 我们可以在调用它们时传递参数: ? 我们花点时间来消化刚刚发生的事情。...为了解决它,我们必须克隆并遍历每个元素,然后传递所需的 props。 现在使用 Render Props 设计模式,我们可以将 props 传递给子组件。 我们可以根据需要命名 props。
媒体查询的灵活性 媒体查询是CSS的一个关键优势,它提供了内置的响应式设计能力。媒体查询帮助你针对不同的设备或屏幕宽度应用不同的样式。...这使得CSS在创建响应式设计中扮演着重要的角色。 让我们回顾一下CSS中的媒体查询是如何保持新鲜的: 1994年:我们的主要人物Håkon Wium Lie提出了媒体查询的第一个想法。...这是一项重大的开端! 1998年:CSS2登场,为我们带来了第一次媒体查询的体验。 2001年:CSS3亮相,通过一些新功能使媒体查询升级。 2012年:媒体查询大放异彩!它们成为W3C推荐的标准。...过去,更新CSS值是一项手动、耗时的工作,静态CSS的时代已经过去了。现在,我们的工具包中有了CSS变量,可以在整个样式表中存储和重用特定的值。这些变量确保一致性,并使更新变得轻而易举。...根据后代元素来设置样式的一种方法。基本上,你可以根据子元素来应用样式,这意味着它可以作为一种理想的父选择器。然而,你也可以在父元素内部对子元素进行样式设置。
派生选择器允许你根据文档的上下文关系来确定某个标签的样式。通过合理地使用派生选择器,我们可以使 HTML 代码变得更加整洁。 三、进阶CSS面试题 Q32、什么是弹性布局?...浏览器根据key选择器筛选出DOM中的元素,并遍历其父元素以确定匹配项。选择器链的长度越短,浏览器就可以更快地确定该元素是否与选择器匹配。...使网站具有响应能力意味着某些元素将通过CSS媒体查询根据设备的屏幕尺寸(通常是视口宽度)来调整其大小或其他功能,从而做出响应。 例如,在较小的设备上减小字体大小。...元素的宽度是通过内容的宽度+水平填充+水平边框宽度来计算的。 在我们的盒子模型中,考虑到填充物和边框,与设计人员实际如何想象网格中的内容产生了更好的共鸣。 Q39、什么是CSS预处理器?...何时建议在项目中使用预处理器? CSS预处理器是用一种专门的编程语言,进行Web页面样式设计,然后再编译成正常的CSS文件,以供项目使用。
sizes属性接受一个以逗号分隔的媒体查询和尺寸列表。为了理解其中的内容,让我们逐个解析列表中的每个项。 我们的第一个项(max-width: 800px)100vw 有两个部分。...我们通过这个项表达的意思是,假设我们的图像在屏幕上占据了800像素,我们应该选择我们的图像。然后,浏览器将使用这个尺寸来确定要下载的图像。...,确保您的默认尺寸(即没有媒体查询的尺寸)始终放在最后,因为它总是为真,所以如果它排在最前面,它将始终被选择,而不考虑其他媒体查询。...原因是浏览器在不知道父元素的宽度之前,无法确定百分比定义的内容的宽度。这意味着浏览器必须等到整个页面加载完成后才能确定要下载哪个图像。...它的工作方式类似于sizes属性中的媒体查询,但是在source元素的media属性中,您只能定义一个媒体查询。这些查询与sizes属性一样,从上到下逐个检查,只有第一个匹配的媒体查询会被使用。
1部分中,我们探讨了如何使用复合组件和静态类属性来构建可读可重用的 Stepper 组件。...点击此处查看第2部分 在本部分中,我们将探讨一种设计模式,该模式可以解决到目前为止我们已经确定的所有问题。 它被称为:render props。...我们使用它与 React 来描述 UI 应该是什么样子(有点像模板语言),同时它具有 JavaScript的全部功能。...更进一步的想象,我们还能用函数做些什么? 我们可以在调用它们时传递参数: 我们花点时间来消化刚刚发生的事情。...为了解决它,我们必须克隆并遍历每个元素,然后传递所需的 props。 现在使用 Render Props 设计模式,我们可以将 props 传递给子组件。 我们可以根据需要命名 props。
清晰的项放置 一个网格是由Grid Container(用 display: grid 创建),和Grid项(这是子项)构成。...在我们的CSS中,我们可以容易并且清晰的组织网格项的放置和顺序,而不用管他们在标记中的放置。 举个例子,在我的文章“使用CSS网格的圣杯布局,我展示一下我们如何使用这个组件来创建类似的“圣杯布局”。...这允许我们根据网格容器中剩下的空间来分配网格子项目中的宽和高。...这个组件介绍一个创建自定义变量的方法,它可以赋值给CSS属性。 举个例子,如果我们需要在样式表中多个地方使用到colour,我们可以把它当做一个变量和并引用它,而不必多次写它的实际值。...什么是兼容情况 如你所见,不是所有的特性都被所有浏览器所支持,所以我们要如何合适使用它们在生产中?好吧,用渐进增强!上一年,我在Fronteers 会议上讲了一个关于如何在CSS上使用渐进增加的演讲。
然后我会讲到为什么你应该使用 em 或 rem 的单位。 最后,我们会看看到底哪些典型元素的设计,你应该在实际应用中使用哪种类型的单位。...继承效果只能被明确的字体单位覆盖,比如px,vw 使用 em 单位的元素字体大小根据它们来定。 但该元素可能继承其父元素的字体大小,而父元素又继承其父元素的字体大小,等等。...始终使用 rem 单位做媒体查询 特别注意,当使用 rem 单位创建统一可扩展的设计,媒体查询也应该是rem单位。 这将确保,无论用户浏览器的字体大小,您的媒体查询会对它作出反应和调整您的布局。...采用固定的尺寸值的前提应该是,如果被缩放的话,它的结构会被打碎。 这真的不常出现,所以你想拿出那些 px 单位之前,问问自己是否使用它们是绝对必要的。...使用rem单位,除非你确定你需要 em 单位,包括对字体大小。 媒体查询中使用 rem 单位 不要在多列布局中使用 em 或 rem -改用 %。
在这个由两部分组成的系列中,我想将CSS放在聚光灯下,并探索弥合它与JavaScript之间的差距。在本系列中,我将假设您正在使用像webpack这样的模块解析器。...我们只能有条件地应用样式集 - 如果按钮是主要的,我们可能会应用“primary”类并在单独的CSS文件中定义它的样式以应用它在屏幕上的样式。...可能会想到内联样式来解决此问题,但它们不支持伪类,属性选择器,媒体查询等。 可重用性 重用规则集,媒体查询等是我最近很少看到的一个主题,因为它已经被Sass和Less等预处理器解决了。...但是我仍然想在这个系列中再次提起它。 我将列出一些处理这些挑战的技术以及它们在本系列的两个部分中的局限性。...此特定示例演示了如何将媒体查询保存在变量中并在多个位置重用它。响应式图像是一个很好的用例,因为sizes属性基本上包含CSS,所以我们可以使用JavaScript来使代码更简洁。
自定义属性在某个地方存储一个值,然后在其他许多地方引用它。另一个好处是语义化的标识。...当一个属性默认是继承父元素的属性值时,它使用继承的值;如是属性不继承的话,就使用其默认的值 revert 它可以将一属性值重置为用户 stylesheet 样式表中的值,(在 css 自定义属性中一般是空值...我们可以渐进式的在支持这些特性的浏览器中使用它来增强你的应用。 例如:你制作两个 css 文件,一个用 css 自定义属性,一个不用,在这种方法中,属性是内联方式,我们将在下来的内容中讨论它。 如何使用它们 在最近的调查中, sass 依旧是开发社区中首选的 css 预处理器。 所以,我们设计一种方法,在 sass 中使用 css 的自定义属性。 1....从 sass 转到 postcss(cssnext) 从 sass 变量彻底转到 css 自定义属性变量 在 sass 中使用 css 变量,检测它是否被支持 从以上经验中,我得到了一个基本满足我需要的解决方案
五、IE 兼容模式 IE 支持通过特定的 标签来确定绘制当前页面所应该采用的 IE 版本。...十一、减少标签的数量 编写 HTML 代码时,尽量避免多余的父元素。很多时候,这需要迭代和重构来实现。 ?...四、媒体查询(Media query)的位置 4.1 相关规则附近 将媒体查询放在尽可能相关规则的附近。不要将他们打包放在一个单一样式文件中或者放在文档底部。如果你把他们分开了,将来只会被大家遗忘。...九、Less 和 Sass 中的操作符 为了提高可读性,在圆括号中的数学计算表达式的数值、变量和操作符之间均添加一个空格。 ? 十、注释 10.1 注意 代码是由人编写并维护的。...(6)使用 .js-* class 来标识行为(与样式相对),并且不要将这些 class 包含到 CSS 文件中。 在为 Sass 和 Less 变量命名时也可以参考上面列出的各项规范。
嵌套 选择器嵌套 在 Sass 中,可以在父选择器中写子选择器,以嵌套的形式来表达关联的关系,这样做可以减少我们重复书写父选择器的工作量。...元素只要满足群组中任何一个选择器,都会使用群组对应的样式进行渲染,如 a, span, label { color: grey; } 在 Sass 中,我们可以使用嵌套的形式来简写群组。...Sass 对 @media 做了一些改进,允许我们在嵌套的过程中书写媒体查询和响应代码。在编译时, Sass 会把媒体查询编译到文件最外层,并为子选择器加上父选择器前缀。...媒体查询的好处: 以前使用原生 CSS 做响应式布局时,我们需要先写好不同的媒体查询区块,整理出元素在不同设备的特殊样式,然后写入对应的区块。...一个元素的样式分散在不同的媒体查询中,维护起来比较麻烦。 在 Sass 中,我们可以在写完一个元素的公共样式之后,直接在下面嵌套媒体查询,所有的响应代码和这个元素都写在同一块地方,维护起来非常方便。
时的高度, 当它里面的任一列高度增加了,则父容器的高度被撑到里面最高那列的高度, 其他比这列矮的列会用它们的padding-bottom补偿这部分高度差。...目前非ie由于不支持这个属性,它们又是通过什么属性来实现元素的缩放呢? 可以通过css3里面的动画属性scale进行缩放。 22、移动端的布局用过媒体查询吗?...假设你现在正用一台显示设备来阅读这篇文章,同时你也想把它投影到屏幕上,或者打印出来,而显示设备、屏幕投影和打印等这些媒介都有自己的特点,CSS就是为文档提供在不同媒介上展示的适配方法 当媒体查询为真时,...当媒体查询返回假,标签上带有媒体查询的样式表仍将被下载 (只不过不会被应用)。 包含了一个媒体类型和至少一个使用宽度、高度和颜色等媒体属性来限制样式表范围的表达式。...CSS3加入的媒体查询使得无需修改内容便可以使样式应用于某些特定的设备范围。
CSS 原生嵌套语法 在之前,只有在 LESS、SASS 等预处理器中,我们才能使用嵌套的写法,像是这样: div { & > p { color: red; }...等类似,& 符号在嵌套中,也表示嵌套的父选择器本身,因此,上面两个嵌套选择器最终的表达式实则为: div h3 { color: red }; div h3 span { color blue };...在嵌套中使用媒体查询 这个就比较有意思了,我们甚至可以在嵌套中,使用媒体查询语法。...其实也很好理解,也就是 & 符号的时候,上面提到了,& 符号在嵌套中,也表示嵌套的父选择器本身,因此,我们还可以有这样的写法: div { & h2 & { /* 表示 div...随着兼容性的铺开,慢慢地,我们可以尝试真正运用它们到实际代码中。
领取专属 10元无门槛券
手把手带您无忧上云