IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:CSS

共 444 篇相关文章

IT 累计浏览 10,055

iframe大小自适应

这篇讲的是如何实现iframe高度自适应,起因竟然是一个前端面试题。作者坦诚自己最初也对iframe有“性能差、不友好”的偏见,但深入研究后发现它在嵌入第三方内容时不可或缺。 文章的核心是针对两种场景给出了解决方案。在同域下,方法很直接:JavaScript可以直接访问iframe内部DOM,获取其滚动高度和宽度,然后设置给外层iframe标签,轻松实现自适应。但更挑战的是跨域场景,由于同源策略限制,父页面无法直接操作iframe内容。 为此,作者巧妙地利用了一个“代理页面”作为桥梁。在跨域的iframe内部,通过一个隐藏的iframe将页面尺寸信息编码到location.hash中,传递给这个代理页面。由于代理页面与父页面同源,它就能安全地读取这些信息,并反过来设置父页面中iframe的大小。这个方法虽然步骤多一些,但思路清晰,有效绕过了安全限制。 作者还特别提醒了开发测试时需要用本地服务器,避免浏览器直接访问文件导致的权限问题。文章最后附上了完整的Node.js测试代码和参考文献,方便读者动手实践和深入研究。

IT 累计浏览 2,877

BFC(Block formatting contexts)初探

这篇讲的是前端开发中一个常见但容易模糊的概念——BFC(块级格式化上下文)。作者从自己面试和开发中遇到的困惑出发,系统梳理了BFC的定义、核心布局规则以及触发条件。 文章没有停留在理论,而是重点通过三个经典案例,演示了BFC的实际作用:如何利用它实现自适应两栏布局、有效清除内部浮动,以及防止外边距(margin)的垂直重叠。这些例子直指日常开发中的痛点,比如浮动带来的高度塌陷问题。 作者最后总结了关键点:BFC本质上是一个隔离的独立容器,其内外元素互不影响。理解这一点,就能明白为何BFC能解决上述布局难题。对于前端开发者而言,这篇文章能帮助理清BFC这个“既熟悉又陌生”的概念,并将它切实应用到解决实际问题中。

IT 累计浏览 3,706

小tip: 纯CSS实现视差滚动效果

这篇讲的是一个有趣的纯CSS技巧:实现视差滚动效果。作者从“视差滚动通常依赖JavaScript或插件”这个普遍认知出发,探讨了在不考虑IE兼容性的前提下,如何仅用几行CSS代码达成同样炫酷的效果。 核心实现思路巧妙地运用了CSS 3D的属性。作者在容器上设置`perspective`来建立3D视角,再对需要“慢速滚动”的背景元素应用`transform: translateZ(-1px) scale(2)`。这里的-1px与scale(2)是关键,它们共同制造了一种视觉错觉:虽然元素因Z轴位移在视觉上缩小了(如原文比喻的“近大远小”),但通过放大两倍补偿了这种缩小,使得在平面视角上看不出变化。然而,当页面滚动时,其位移速度自然与前景元素形成差异,从而产生视差感。原文用“电瓶车看月亮”的比喻很形象地说明了这一原理。 文章最后也提到了该技巧的适用边界,比如对直接body滚动效果不佳。对于想用最轻量级代码增加页面动态感,且无需支持老版本IE的项目来说,这个“解密”后的CSS小魔法提供了一个非常实用的思路。

IT 累计浏览 1,992

CSS中height:100%和height:inherit的异同

这篇讲的是CSS中`height:100%`与`height:inherit`看似简单却容易被忽略的差异。作者从日常编码中的一个小吐槽切入,对比了两者的兼容性与核心行为。 多数情况下,两者表现一致:父容器定高时继承相同高度,父容器高度为auto时则同为auto。但真正的关键差异出现在子元素为绝对定位,且父容器未设置定位(position为static)的场景。此时,`height:100%`会寻找已定位的祖先元素,导致高度计算异常;而`height:inherit`则忠实地继承父元素的高度,即使父元素没有定位特性。 文章附带的在线演示清晰地展现了这种区别:使用`height:100%`的元素“深入地域”,而使用`height:inherit`的元素则完美自适应父级。这个特性在避免复杂布局中滥用`position: relative`以防止层级混乱时,显得尤为实用。

IT 累计浏览 2,144

CSS深入理解流体特性和BFC特性下多栏自适应布局

这篇讲的是CSS布局中一个经典而重要的话题:如何利用元素的基础特性来构建灵活的多栏自适应页面。作者没有去罗列一堆实现方法,而是深入剖析了两种底层原理——块状元素的“流体特性”与“BFC(块级格式化上下文)特性”,并对比了它们在自适应布局中的实际表现与差异。 文章首先解释了什么是流体特性:块状元素默认会自动填满容器,但其内容区域会响应margin、padding或border而变窄。利用这一点,配合浮动或绝对定位,就能做出左定宽、右自适应的布局。但作者也指出,这种方法的不足在于,开发者必须精确知道固定栏的尺寸,才能设置对应的间距,缺乏灵活性和复用性。 于是,文章的重点转向了BFC特性。当元素触发BFC(例如设置`overflow: hidden`)后,它会生成一个独立的格式化区域。关键在于,当这个BFC元素与浮动元素相邻时,它会自动避开浮动元素的区域,但依然保留填满剩余空间的流体特性。这便催生了更智能的解决方案:只需给浮动元素设置`margin-right`,BFC元素就能自动适应并保持间距,无需关心其具体宽度。 作者总结道,相比于纯流体布局,BFC自适应模块更加健壮、容错性更强,并且可以抽象成像`.ovh`(设置`overflow: hidden`)这样的通用类,在整个项目中复用,真正实现了布局的解耦和高效。文章通过代码示例和形象比喻,清晰地传达了BFC这一特性在解决实际布局问题时的巧妙与实用。

IT 累计浏览 2,290

table-cell的手机应用场景

作者从CSS垂直居中这个常见需求切入,对比了包括margin负值、position+margin在内的多种传统方案。这些方法往往需要预先知道元素高度,或在内容溢出时出现布局问题,对于移动端尤其是内容动态的H5页面来说并不友好。 文章重点介绍了display:table-cell这个被许多人忽略的属性值。它在PC端因兼容性问题(仅支持IE8+)而鲜少使用,但在移动端现代浏览器环境下,反而能发挥独特价值。该属性使元素表现得像表格单元格(td/th),配合父元素设置为display:table和vertical-align:center,可以实现真正的、内容自适应的垂直居中,且无需依赖固定高度。 作者通过代码示例和效果对比指出,table-cell更适合单列布局,多个元素使用时会像表格单元格一样并排显示,margin属性也会失效。因此,它尤其适用于移动端全屏单页应用的垂直居中场景,为开发者提供了一个在特定环境下更灵活、简洁的布局思路。

IT 累计浏览 3,920

小tip:纯CSS让overflow:auto页面滚动条出现时不跳动

这篇讲的是前端开发中一个很常见但恼人的体验问题:当页面内容动态加载导致滚动条出现时,采用 `margin: 0 auto` 的水平居中布局会发生“跳动”。作者指出,传统的解决方案,如直接给 body 加 `overflow-y: scroll`,虽然能阻止跳动,但会在内容未超一屏时强行显示一个丑陋的滚动条,破坏了现代浏览器的视觉设计。 文章的核心亮点在于,利用 CSS3 的 `calc` 计算函数和视口单位 `vw`,提供了一个极其简洁的纯 CSS 解决方案。只需在主体的父容器上添加一行 `margin-left: calc(100vw - 100%);`,即可让页面在任何情况下(包括滚动条出现或消失时)都保持居中,且滚动条仅在内容确实溢出时才自然出现。 作者详细解释了原理:`100vw` 包含了浏览器视口的完整宽度(含滚动条),而 `100%` 是元素的可用宽度(不含滚动条),两者之差恰好就是滚动条的宽度。这个方案兼容 IE9+ 及现代浏览器,并且作者还贴心地给出了在窄屏幕下可能需要添加媒体查询进行响应式处理的建议。对于追求页面平滑与布局稳定的前端开发者来说,这是一个非常实用且优雅的技巧。

IT 累计浏览 2,429

小tip:CSS计数器+伪类实现数值动态计算与呈现

这篇讲的是如何用纯CSS实现动态计数和计算,完全不需要JavaScript的参与。作者从CSS计数器的基本用法出发,展示了它与伪类(如`:checked`)结合后产生的有趣化学反应。 文章通过两个具体Demo来演示这种能力:第一个是一个“冰淇淋选择器”,页面会实时显示你勾选了多少种;第二个是一个数值计算小游戏,只有当复选框组合的运算结果恰好为72时,才会显示成功提示。这两个案例都仅依靠HTML结构、CSS计数器(`counter-reset`与`counter-increment`)以及选择器的状态判断来完成。 核心实现原理很精巧:通过为不同的复选框状态设定不同的计数增量(例如+64、-32),让计数器承担了“累加器”的职责。再利用相邻兄弟选择器和`:checked`状态组合,就能在CSS层面“判断”出最终的运算结果是否符合预期,并据此改变呈现内容。这相当于在样式层实现了基础的逻辑判断,展现了CSS在交互潜力上的另一面。

IT 累计浏览 2,353

table-cell的手机应用场景

这篇讲的是如何利用一个有点“过气”的 CSS 属性 `display: table-cell` 来解决移动端开发中棘手的垂直居中问题。作者从一篇老文章出发,重新审视了 `table-cell` 在当前移动场景下的价值。 文章先盘点了传统的垂直居中方案,如 `position` 配合负 `margin`,虽然兼容性好但必须预先知道元素高度,内容超出时容易“走光”。作者指出,这些方案在需要内容自适应垂直居中的移动 H5 页面里显得力不从心。 核心方案在于利用 `table-cell` 模拟表格单元格的行为。只需父元素设为 `display: table`,子元素设为 `display: table-cell` 并加上 `vertical-align: middle`,就能让内容在容器内完美垂直居中,无需知晓具体高度。作者还分享了一个关键的踩坑经验:必须避免在 `table-cell` 元素上同时使用 `position` 定位,否则效果会失效。 总的来说,这篇文章为移动端,特别是单屏滚动的 H5 活动页开发,提供了一个轻巧、可靠的垂直居中思路,非常适合那些对布局高度自适应有要求的场景。

IT 累计浏览 4,605

小tips: 使用等空格实现最小成本中文对齐

这篇讲的是用几个特殊空格字符,在不借助复杂CSS的情况下,轻松实现中文排版的等宽对齐。作者从自身多年前的一篇旧文谈起,核心是介绍了 和 这两个“宝藏”空格。 它们的关键特性在于宽度稳定: 的宽度正好是中文字符的一半(1/2),而 的宽度则等同于一个完整的中文字符(1/1)。利用这个特性,只需在汉字之间插入对应数量的这些空格,就能实现“姓名”、“手机号”等不同字数中文的两端对齐,代码简单直观。 此外,文章还引入了全角空格 作为新成员,它同样占据一个汉字宽度。作者分享了如何用字符实体表示它,并提供了将任意字符转换为HTML识别格式的小工具。最后提到,由于IE6已退出历史舞台,这个原本受兼容性困扰的轻量方案现在可以放心使用了。

IT 累计浏览 2,775

再说iconfont和font-face

这篇讲的是CSS3字体属性中一个让人“蛋疼”又离不开的话题:iconfont和@font-face。作者从网页内容的主体——文字说起,直指@font-face这个能让你彻底摆脱用户系统字体限制的关键属性。文章没有停留在浅层介绍,而是深入拆解了@font-face的语法,逐项解释了font-family、src、unicode-range等参数,并用一个清晰的表格展示了IE、Firefox、Chrome等主流浏览器对不同字体格式(如.eot, .ttf, .woff)的支持情况。更关键的是,它厘清了@font-face与iconfont之间相辅相成的关系:一个负责引入自定义字体,一个负责将图标集打包成字体以便调用。文中提供的兼容性写法代码,对处理多浏览器环境下的字体加载问题直接提供了实用参考。

IT 累计浏览 3,705

网页字体排印指南

这篇讲的是网页上那95%的文字,到底该怎么排才好看又专业。作者从“阅读”这个最核心的用户行为出发,把字体排印清晰地分为偏向设计的Creative Typography和偏向技术的Technical Typography,并聚焦于后者,为前端工程师提供一套有迹可循的实践规则。 文章直面了中文网页排版的核心痛点:由于系统预置字体稀少且WebFont体积庞大,我们只能在有限的“系统安全字体”里做选择。为此,作者详细梳理了桌面端(Mac、Windows、Linux)与移动端(iOS、Android)上,中西文字体的推荐组合,并解释了宋体与黑体在内文与标题上的不同角色。 更进阶的是,文章将排版提升到了“旋律”的层面。它借鉴《字体排印的风格要素》中的理念,将字号大小类比为音乐的音阶,提出了以16px内文为基础,对标题字号进行同比例递减的具体方案,旨在构建视觉上的和谐韵律。文末直接提供了两套经过考量的`font-family`代码,分别用于内文和标题,极具实操参考价值。对于任何希望提升页面文字可读性与质感的开发者而言,这都是一份扎实的指南。

IT 累计浏览 3,000

10条影响CSS渲染速度的写法与建议

这篇文章聚焦于CSS的渲染性能,作者从日常编码中常见的写法入手,剖析了10种可能导致浏览器渲染变慢的习惯。 文章开篇就直指通配符选择器`*`的滥用,它会遍历所有标签,是性能的一大隐患。接着,作者犀利地指出了IE滤镜(如实现灰色效果的`filter: gray`)的高资源消耗问题,并以汶川地震时大量网站变灰导致CPU飙升的实际案例佐证。此外,诸如过度使用绝对定位、背景图片平铺策略不当、CSS选择器路径过深等影响渲染链效率的写法,也都被一一拆解。 对于每个问题,作者都提供了务实的替代方案,比如针对通配符,建议改为对常用标签(body, li等)单独重置;对于背景平铺,则建议将色彩少的图片制成尺寸稍大的GIF格式。文章强调,合理的布局和让属性通过继承传递,能从根本上优化渲染路径。这些经验之谈,源于作者在真实项目中遇到的性能瓶颈,为前端开发者提供了清晰的避坑指南。

IT 累计浏览 3,763

高效jQuery的奥秘

这篇文章系统梳理了提升jQuery与JavaScript代码性能的实战技巧,核心观点是:好的代码规范直接带来速度提升,而更快的渲染与响应能显著优化用户体验。作者从“jQuery本质就是JavaScript”这一前提出发,强调应遵循相同的编码最佳实践。 文中列举了多项具体优化措施,并辅以代码对比。例如,通过缓存DOM元素减少昂贵的遍历操作,为jQuery对象使用匈牙利命名法($前缀)以增强代码可读性,以及将分散的var声明合并为单条语句。在事件处理上,推荐统一使用`.on()`方法;在代码组织上,则提倡链式操作与适当的格式化以兼顾简洁与可维护性。 文章进一步深入选择器优化层面,指出应避免使用通用选择符(如`*`),而是利用`.children()`等更高效的方法;同时强调ID选择符的唯一性,无需添加冗余的父级选择符。此外,诸如短路求值、分离元素进行批量操作等JavaScript通用技巧,也被融入jQuery的使用场景中加以说明。 总体来看,这并非泛泛而谈的理论,而是一套源自实践的“编码惯例”清单,旨在帮助开发者通过养成良好的编码习惯,从细节处挖掘出jQuery应用的性能潜力。

IT 累计浏览 2,964

重温CSS:Border属性

这篇文章重新审视了 CSS 的 border 属性,作者指出它远不止 `1px solid black` 这么简单。文章从最基础的复合属性与单属性拆分讲起,重点展示了拆分属性(如 `border-color`)在状态切换时的优雅之处,并为后文的高级技巧埋下伏笔。 核心篇幅则聚焦于 `border-radius` 这一 CSS3 特性。作者不仅回顾了其基本用法和分角设置,更演示了如何通过组合不同角的圆角值,创造出如“柠檬”形状这样的自定义图形,摆脱了对背景图像或切图的依赖。这部分内容生动体现了 CSS 的设计潜力。 在扩展部分,文章开始介绍边的更多玩法,例如设置不同的边框样式(`border-style`)。整体而言,这篇“重温”不仅巩固了基础,更揭示了简单属性背后的灵活创造力,让读者对这个最熟悉的属性有了新的认识。

IT 累计浏览 4,363

解决IOS点击链接触发的颜色块

这篇讲的是移动端开发中一个常见的视觉“坑”:在iOS设备上,手指点击链接时系统默认触发的半透明灰色高亮块,有时会影响页面设计的整洁度。作者从实际项目出发,通过对比淘宝、京东等主流网站,发现它们巧妙地避免了这一现象。 问题的根源在于iOS Safari的一个默认行为,而非CSS样式问题。作者通过审查元素,最终定位到WebKit的私有CSS属性`-webkit-tap-highlight-color`。通过将该属性的Alpha通道(即RGBA颜色值的最后一个参数)设为0,就可以完全禁用这个点击高亮效果。 文章进一步解释了该属性的完整用法,包括它支持的系统版本、适用的元素范围,以及如何利用RGBa颜色值来定义高亮色或彻底隐藏它。最后,作者还贴心地分享了苹果官方的Safari CSS参考文档,为需要在iOS上进行深度Web开发的同学提供了进一步探索的路径。

IT 累计浏览 1,285

函数式 CSS

这篇讲的是如何将函数式编程的核心思想——比如不可变性和组合性——应用到传统上“全局且可变”的CSS开发中。作者从Wealthfront工程团队的实践出发,指出CSS的全局作用域、样式易被覆盖和与DOM结构紧耦合等问题,会带来意想不到的样式冲突和维护噩梦。 文章给出的核心方案是“函数式CSS”风格指南。其关键在于通过严格的命名约定为类名添加前缀,从而模拟出作用域,隔离样式;同时倡导使用组合(如同时应用多个类或Sass的@extend指令)来扩展样式,而不是重写已有的规则。这样既能避免副作用,又能提升样式的可复用性。 作者通过对比修改前后的代码实例,展示了如何减少样式依赖、增强组件独立性。最终目标是让样式表变得更具伸缩性、更少“意外”,即使在大型项目中也能保持可维护性。对于任何受困于CSS全局混乱的前端团队,这套实践提供了清晰的约束思路和改进路径。

IT 累计浏览 1,525

引入css外部样式表

这篇讲的是一个看似基础却让不少前端开发者栽跟头的问题——CSS外部样式表的引入与缓存。作者从在微信端调试样式,修改后却无法实时看到更新的实际踩坑经历出发,深入探讨了路径选择、缓存控制等关键细节。 文章清晰地对比了相对路径与绝对路径在实际项目中的优劣,明确指出了项目上线时应优先使用绝对路径,以提升索引效率、有利于SEO和外链权重。更核心的部分聚焦于缓存问题,详细解释了浏览器(尤其是微信)缓存旧版CSS的机制,并通过分析淘宝和Facebook的实践案例,给出了具体的解决方案:为URL添加版本号参数(如 `?t=20150105`)或使用文件哈希值,可以有效强制浏览器更新资源。 作者最终总结出几条实用建议:少用相对路径、多用绝对路径、WebApp引入CSS时最好带版本号、并合理利用缓存机制(如304状态码)。对于前端初学者或曾为样式更新不生效而困惑的开发者而言,这些基于真实场景的总结和对比,提供了非常直接的参考和避坑指南。

IT 累计浏览 2,537

关于webapp中的文字单位的一些捣腾

这篇文章探讨的是移动WebApp开发中一个经典纠结:文字单位该用px、em、百分比还是rem?作者没有停留在理论争论,而是用实测对比给出了直观结论。 作者从PC与移动端对文字尺寸需求的差异出发,分别在未设置viewport和设置了`width=device-width`的情况下,对这几种单位进行了实测。关键发现是:当正确设置了viewport使布局宽度等于设备宽度后,不同单位计算出的最终显示大小趋于一致,px、em和rem在视觉效果上已无本质区别。 文章的核心价值在于澄清了一个常见误区,并提供了清晰的实践路径。它建议开发者可以优先遵循设计稿的px数值进行输出,后期根据实际设备再微调。同时,考虑到代码维护和未来兼容性,作者推荐使用px与rem作为首选单位,尤其强调了为html根元素设定基础字体大小的重要性。 因此,这篇文章为前端工程师在移动端文字排版上提供了一份基于实测的决策参考,帮助大家跳出单位选择的“内耗”,将精力集中在更统一、可控的工程实践上。

IT 累计浏览 2,862

Github 的 CSS 风格指南

这篇讲的是GitHub内部如何“写”CSS。它并非基础教程,而是一套从实战中淬炼出的系统性工程规范,直接解决了前端开发中代码混乱、维护困难的痛点。 文章清晰定义了从微观编码到宏观架构的每一层细节。微观上,它明确了如双空格缩进、属性冒号后加空格、优先使用`//`注释等具体规则,确保代码风格统一可读。更关键的是架构层面,它倡导使用SCSS,并给出了清晰的目录组织范例(components, globals, sections等),强调`$variable`与`@mixin`的集中管理。 在CSS特异性控制上,指南给出了极具操作性的原则:谨慎使用ID选择器,优先使用类名,倾向直接后代选择器(`>`)以降低复杂性。对于字体大小等单位选择、`js-`与`is-`类名的命名区分,也都有明确约定。整套体系的目标是提升代码的一致性、可维护性与团队协作效率,对于任何希望规范化CSS项目的团队都具有很高的参考价值。