IT技术博客大学习 共学习 共进步

CSS/HTML

共 360 篇文章

IT 2016-03-01 23:53:24 / 累计浏览 2,488

小叙透明

这篇讲的是网页设计中“透明效果”的实现细节与兼容性考量。作者从渐变、圆角等常见视觉手法中,聚焦于“半透明”这个容易被忽略但效果显著的特性,将其拆解为**背景透明的图片**和**半透明的纯色背景**两个方向展开讨论。 文章的核心对比在于CSS中实现半透明的两种主要属性:`opacity`和`rgba()`。作者指出,`opacity`控制整个元素及其子元素的透明度,类似PS的蒙版效果;而`rgba()`则专用于控制背景色或边框等颜色的透明度。关键差异在于,前者会让内容也变透明,后者则能实现“背景透,内容不透”。这种差异决定了它们各自适用的场景。 更实际的是,文章没有回避历史包袱,详细剖析了在需要兼容IE8及以下浏览器时,如何组合使用`rgba()`与IE私有的`filter`滤镜,并指出了其中需要注意的`haslayout`激活和元素定位等关键细节。最后,作者也简要提及了`hsla()`作为另一种颜色定义方式。整体来看,文章没有停留在概念科普,而是直接切入了不同方法的选择策略与实战中的兼容“坑点”,对前端开发者有很强的实操参考价值。

IT 2016-03-01 13:53:19 / 累计浏览 2,991

记一次淘宝首页奇葩的渲染问题

这篇讲的是一个藏在淘宝首页代码里的、只有在特定交互下才会现身的Chrome浏览器渲染Bug。 作者在维护首页时发现,鼠标滑过某个模块边界时,会出现诡异的渲染残影或错位。这个问题非常“娇气”,只在元素边界与瓦片边界重合时才可能触发,属于浏览器渲染引擎在处理层合并与瓦片栅格化时的计算漏洞。通过Chrome开发者工具的“显示层边框”功能,作者定位到了代表“缺失调整验证”的粉色块,这直接指向了引擎未正确处理元素边界增长后的瓦片重绘。 最实用的经验是,遇到这类难以复现的奇葩渲染问题,一个有效的“土办法”是为目标元素添加 `transform: translateZ(0)`。这行代码能强制浏览器为该元素创建独立的硬件加速渲染层,从而隔离问题,解决概率高达80%。这篇文章的价值不仅在于给出了一句修复代码,更在于完整展现了从现象发现、工具调试到引擎原理追踪的排查思路,为前端开发者解决同类疑难杂症提供了清晰的路径。

IT 2016-02-21 22:44:07 / 累计浏览 2,693

小谈inline-block的那点空隙

这篇文章从一个常见困惑出发:明明没设置边距,`inline-block` 元素间却总出现难看的空隙。作者首先点明问题根源在于 HTML 代码中的空白符(如换行、空格)被浏览器渲染成了可见间距。 在剖析了 `inline-block` 同时具备行级与块级特性的本质后,文章系统地介绍了几种解决方案。从需要牺牲代码结构的“彻底消除空白符”,到利用 CSS 特性但需注意浏览器兼容性的 `font-size:0` 方法,再到利用 `word-spacing` 和负 `margin` 的调整技巧,甚至探讨了去掉闭合标签这种“非常规手段”。每种方案都配有代码与效果图进行直观对比。 文章的价值不止于解决问题。它还对比了 `inline-block` 与 `float` 的适用场景:前者更适合需要文档流参与、利用 `text-align` 水平居中或实现垂直对齐的布局,而后者则可能脱离文档流影响周围元素。文末附带了深入阅读资源,为进一步学习提供了入口。

IT 2016-02-20 14:27:39 / 累计浏览 1,860

小tip:中文或英文左右padding一致两端对齐实现

这篇讲的是解决中英文混合文本在定宽容器中右端不对齐的前端小技巧。作者从同事遇到的实际问题出发,揭示了CSS的text-align:justify属性主要针对英文单词间的空格进行拉伸,而中文字符间没有空格,因此默认无法生效。 解决方法的核心思路是:用JS为每个字符(包括中文)之间插入空格,使justify生效;随后通过letter-spacing负值(例如-0.15em)来抵消空格带来的多余宽度,恢复紧凑的视觉间距。这样仅需三行代码,就能实现完美的两端对齐效果,且兼容性良好,包括IE7。 作者通过效果截图和简明代码,将这个看似基础却常被忽略的方案讲得很清楚。对于前端开发者来说,这是一个在需要文本版式规整的场景下,值得收藏的实用小方案。

IT 2016-02-20 11:38:02 / 累计浏览 1,551

margin那些事儿

这篇讲的是CSS外边距margin那些容易让人困惑的“坑”与巧妙用法。作者从“能用padding就不用margin”的常见忠告切入,直面开发者实际遇到的问题。 文章重点剖析了两个经典难题:外边距叠加与IE6的双外边距bug。对于叠加问题,作者厘清了其发生的关键条件——块元素、毗邻、普通流、垂直方向,并指出触发BFC并非万能解药,提出“不如从源头避免叠加”的实用思路。对于双外边距,明确其出现的特定场景,并给出简单规避方法。 更有价值的是后半部分对负边距的创意运用。作者列举了利用负值margin实现水平居中、创造不规则布局、解决等间距列表挤压等实际案例,并详细拆解了经典的双飞翼布局实现原理。文中附有代码片段和效果示意图,让抽象概念变得直观。文章最后还展望了Flexbox、Grid等CSS3新布局方式对传统margin的可能替代。整体而言,这是一篇从痛点出发,深入原理并提供实用解决方案的扎实分享。

IT 2016-02-20 11:37:15 / 累计浏览 2,109

《web前端最佳实践》—HTML篇

web前端开发中,许多开发者更关注页面的炫酷表现,却忽视了底层HTML代码的质量与规范。这篇文章正是从“web标准”这一常被忽视的基石出发,系统阐述了标准HTML带来的诸多好处,包括更好的浏览器兼容性、更优的搜索引擎排名以及更易于维护和扩展的代码结构。 作者从“如何做到标准”切入,强调了正确的文档结构、标签闭合以及样式与结构分离等基本原则。随后,文章重点探讨了如何编写“高可读性HTML”,其核心在于“语义化”。文中具体对比了标签的正确与错误用法,例如应使用`

`到`

`来层级清晰地定义标题,而非仅用于样式;在表单中,应使用`
IT 2016-02-18 23:53:30 / 累计浏览 1,849

z-index和zoom这哥俩

这篇讲的是前端开发中两个常被误用的CSS属性:z-index和zoom。 作者从“为什么设置了z-index却无效”这个经典老问题出发,通过大量代码与截图,一步步演示了z-index生效的严格条件。核心结论很清晰:z-index必须配合position定位使用才有效,并且它只在同级元素或同级子元素之间比较层级,父子之间并不会直接对比。文章特别指出了一个关键点:只要子元素设置了z-index大于等于0,它就会位于父元素之上;若想子元素显示在父元素下面,则子元素需设置小于0的值,同时父元素z-index为auto。 在文章后半部分,作者简要对比了zoom属性。它常被用于触发IE的hasLayout,能清除浮动与边距重叠,但其缩放效果在视觉上,并未真正改变元素尺寸,这与CSS3的transform:scale有本质区别。 整篇文章通过具体的代码调试过程,剖析了z-index的层叠上下文规则,并澄清了zoom的常见误解,对前端开发者理清层叠上下文和布局触发机制很有帮助。

IT 2016-02-16 22:21:04 / 累计浏览 7,232

-webkit-margin-start 属性

这篇笔记讲清楚了 WebKit 浏览器下的一个 CSS 属性 `-webkit-margin-start` 的核心作用:它本质上是控制元素在书写方向“开始”一侧的外边距。对于绝大多数从左到右排版的页面来说,它等同于我们熟悉的 `margin-left`。 文章直接给出了简洁的语法和参数说明。这个属性接受各种长度单位(如 px、em、rem 等),也能设置为 `auto`。一个关键点是,它会随着书写方向自动调整:在从左到右(LTR)的文档中设置左侧边距,而在从右到左(RTL)的文档中则控制右侧边距,这使得它在处理多语言布局时非常灵活。 文章还提到了兼容性细节,指出它主要支持 Safari 和 iOS 浏览器,并且早期版本曾使用 `-khtml-margin-start` 这个名称。最后通过一个简单的代码示例和效果图,直观展示了设置不同值后的盒子边距效果,帮助读者快速理解其用法。 这个属性是理解 CSS 逻辑属性(Logical Properties)的一个小切口,关注它能帮你写出更具适应性的布局代码。

IT 2016-02-16 22:07:59 / 累计浏览 2,091

你不该忽视的小问题之margin叠加篇

这篇讲的是CSS中一个常被低估但至关重要的细节——外边距叠加(margin collapsing)。作者从开发者常见的“浏览器bug”抱怨入手,指出了深入理解CSS机制的必要性。 文章通过清晰的图示和实验,梳理了三种外边距叠加的典型场景:相邻块级元素的垂直外边距合并、父子元素在特定条件下的外边距穿透,以及空块元素自身的上下外边距合并。作者特别强调,这些现象只在普通文档流的块框上出现,且针对的是垂直方向。 针对最易被忽视的父子元素叠加,文章后半部分做了重要修正和深化。它明确列出了发生叠加所需满足的一系列条件,例如父元素未创建BFC(块格式化上下文)、无边框、无内边距等。相应地,解决思路也变得清晰:为父元素创建BFC,或为其添加适当的border/padding。文章还补充了创建BFC的常见方式,如设置overflow不为visible、使用浮动或绝对定位等。 作者不仅仅是在列举知识点,更是在引导一种解决问题的思维方式——遇到现象不能敷衍了事,而要追问“为什么”并动手验证。这对于希望建立扎实CSS基础、减少布局困惑的开发者来说,是一次从表象到原理的梳理。

IT 2016-02-16 21:19:34 / 累计浏览 1,269

IE7浏览器下CSS属性选择器二三事

这篇讲的是在无需兼顾IE6的当下,前端开发者如何挖掘IE7浏览器的CSS潜力,文章聚焦于一个易被忽视的领域:属性选择器的兼容性“怪状”。 作者指出,令人意外的是,IE7其实支持包括`[attr*=val]`在内的多种CSS3属性选择器。然而,“坑”也随之而来:对于表单元素的`[checked]`属性,IE7并不认识,这会导致无法实现常见的自定义复选框/单选框效果。深入探索后,作者发现是因为IE7底层实际使用的是`defaultChecked`属性,因此改用`[defaultChecked]`选择器便能解决问题。相比之下,`[disabled]`属性选择器则能被IE7完美支持。 文章还揭示了另一个关键细节:在IE7中,如果属性选择器(如`[type=checkbox]`)前面没有标签或类名选择器等限定,样式将不会生效。作者通过多个在线Demo和对比截图,清晰地验证了这些兼容性差异与解决方案,为需要处理遗留项目的开发者提供了实用的避坑指南。

IT 2016-02-16 20:53:53 / 累计浏览 1,310

图文浅谈css3

这篇讲的是CSS3的全景概览。作者将CSS3比作一个大宝藏,指出许多开发者可能因实际应用的局限,只接触到其中一鳞半爪。因此,文章的目标就是跳出单纯的炫技案例,为读者提供一次稍大范围的、概括性的梳理。 作者系统地展示了CSS3如何用代码替代图片和JS,显著提升了效率与灵活性。内容从最核心的布局开始,深入解析了灵活的Flexbox、多栏布局、Calc计算以及新兴的Grid网格布局,对比了它们与传统浮动布局的优势。在视觉表现上,详细介绍了阴影、圆角、渐变、图像边框和多背景图等特性。此外,文章还涵盖了Transform、Transition、Animation这套动画组合拳,以及强大的选择器和Rem单位等实用模块。 尽管CSS3常被与炫酷动画关联,但作者强调其宝藏远不止于此。文章最后指出,用好这项技术需达到功能性、灵活性与合理性的平衡,才能在实际项目中挥洒自如。

IT 2016-02-16 20:38:37 / 累计浏览 1,632

CSS 样式规则的匹配算法实现

这篇讲的是移动端开发中的一个具体问题:如何在自定义框架里,让CSS选择器像在浏览器中一样准确地匹配到UI控件。作者从自己开发的iOS CSS布局框架CocoaUI出发,拆解了其中CSS样式规则匹配算法的实现。 文章把核心放在了数据结构和匹配逻辑上。它定义了一个包含选择器数组的样式对象,并为其实现match方法。有趣的是,实现时并没有按照我们阅读CSS从左到右的习惯,而是采用了从右到左的顺序进行匹配。 这种倒序匹配有一个高效的关键点:先判断“关键元素”(即最右边的选择器)是否与目标节点匹配。如果不匹配,则整个规则立即失效,省去了不必要的遍历。匹配成功后,再依次向左,让目标节点的祖先节点与剩余选择器进行比对。整个过程在遇到节点树顶端或所有选择器都匹配完成时终止,清晰高效。 作者在讲解算法的同时,也点明了CSS“级联”特性与树结构的天然关联,并提供了完整的实现代码仓库链接,让读者不仅能理解思路,也能看到工程实践。

IT 2016-02-13 23:56:30 / 累计浏览 1,852

CSS1-CSS3 <color>颜色知识知多少?

这篇文章带我们回顾了CSS颜色关键字从1.0到3.0的演变历程。作者从一个实际开发者的视角出发,指出早期CSS1标准仅支持16种基本颜色关键字,这受限于当时的显示设备条件;到了CSS2,才新增了orange、brown等少数颜色;而CSS3时代则引入了大量源自X11窗口系统的颜色名称,使得可选关键字激增至147个。 作者坦言,尽管他早在2010年就整理过这些扩展颜色名,但因其拼写复杂、不便于记忆,在中文开发者社区中传播效果并不理想。文章的核心价值在于,它并非简单罗列,而是按CSS版本层级对颜色关键字进行了清晰归类与可视化展示,帮助读者直观理解规范的历史扩展脉络。对于前端开发者而言,这份梳理清晰的列表可以作为快速查阅颜色关键字的实用参考。

IT 2016-02-13 23:54:02 / 累计浏览 1,546

html5 section和article,向左还是向右?

这篇讲的是HTML5中一对让不少前端开发者犯难的兄弟标签:section和article。作者没有从枯燥的定义出发,而是直指核心困惑——按照字面意思理解,“部分”和“文章”在实际布局中常常可以互相包含,界限非常模糊。 文章抓住了区分两者的关键:article强调内容的“独立性”和“完整性”,是可以被单独复制或引用的,比如一篇博客、一则用户评论;而section更侧重于对内容进行逻辑上的“分块”或区域划分,比如一篇文章中的不同章节。作者通过两个直观的代码示例来印证这一点:一个是在描述“苹果”的文章下,用article包裹每条彼此独立的用户评论;另一个是用section将同一篇文章拆分为“红富士”和“国光”两个介绍段落。 值得注意的是,文章提醒大家不要陷入“标签按内容块头大小来选”的误区,语义的本质在于内容本身的功能。最后,作者还总结了使用section时的几个实用禁忌,比如不要把它当样式容器、不要为无标题的内容区块使用它。这些基于语义和实践的细节梳理,能帮助开发者在编码时做出更清晰的选择。

IT 2016-02-13 23:41:05 / 累计浏览 1,209

轻松入门css3之border-image

这篇讲的是CSS3中一个常被误解的属性:border-image。作者指出,很多人按传统边框的思路去理解它,结果容易卡住。文章的核心是帮读者转换思维——别把“图片边框”当成“线框加图片”,它更像一个“九宫格”剪裁游戏。 文章从最基础也最关键的两步讲起:首先是横竖两刀把源图裁成九块,裁剪尺寸遵循上、右、下、左的规则;其次是理解裁剪后的动作——四个角保持原样,中间被挖空,剩下的边缘部分会根据round(平铺)、repeat(重复)或stretch(拉伸)的方式向四周“撑开”以形成边框。作者通过同一张图展示了三种模式的效果,让差异一目了然。 更实用的是,文中总结了四个最容易踩坑的注意事项:裁剪尺寸默认单位是px、显示方式参数只能写一到两个、必须显式设置border-width、以及边框宽度与原图尺寸独立。最后,文章给出了完整的属性语法,并解释了“边框图像超出边框的量”这个进阶参数的含义。 对于想掌握border-image的开发者,作者建议先放下固有认知,记住“九宫格”原理和那几条注意事项,动手试过基本效果后,再回头深入理解会更透彻。

IT 2016-02-13 23:11:47 / 累计浏览 1,789

解读CSS布局之-水平垂直居中

这篇文章从CSS布局的分类入手,系统梳理了水平垂直居中的多种实现路径。作者基于实际项目已无需兼容低版本IE的背景,重点介绍了 `line-height + text-align:center`、盒模型(padding/margin填充)、绝对定位(50%偏移 + transform/负margin)等核心方法,并附有可运行的Demo。 文章的关键在于对比了不同方案的适用场景:`line-height` 方案简单但仅限单行文本;盒模型填充方案性能好、不触发回流,是重要的布局思想,但通常需要预知尺寸;而绝对定位的 `transform` 方案则能实现对未知宽高元素的完美居中,是现代前端的常用技巧。作者通过代码片段与原理解释,清晰地呈现了每种技术的取舍点。 通篇行文从整体布局观出发,落脚于具体实现细节,为开发者在面对“居中”这个高频需求时,提供了清晰的选择图谱和可直接套用的代码参考。

IT 2016-02-13 23:08:49 / 累计浏览 2,135

再谈怎样更好的写css

这篇讲的是作者在独自负责一个项目全部前端工作后,基于一年的实践痛点,对“如何更好地编写和维护CSS”进行的再思考。与初谈的基础不同,这次更聚焦于项目中的实战心法。 作者从如何“庖丁解牛”地解构视觉稿出发,强调应将页面按区块模块化,并采用“基类+扩展类+实例类”的命名方式来组织代码,以增强复用性和可读性。文章重点讨论了选择器的使用原则,主张多用类选择器,慎用元素选择器以实现样式与结构的解耦,并解释了为何要控制CSS选择器嵌套层级——这与浏览器从右向左的解析机制直接相关。 此外,文章也谈到了CSS预处理工具(如Sass、Less)和后处理工具(如Autoprefixer)的价值,认为它们能显著提升编码效率和兼容性处理能力。最后,作者展望了CSS3带来的强大能力(如Flexbox、动画),指出CSS的边界正在不断拓宽,鼓励开发者积极尝试新工具与新特性,以更灵活地解决问题。整篇文章源于实战,其模块化和工具化的思路对追求代码可维护性的前端开发者颇具启发。

IT 2016-02-13 23:06:48 / 累计浏览 1,754

初谈怎样更好的去规划CSS

这篇讲的是一位前端开发者如何从零开始,逐步构建更合理、高效的CSS代码体系。作者从初学者常见的内联式、内嵌式写法说起,详细对比了它们与外联式CSS在实现结构表现分离上的差异,并自然引出了CSS优先级、选择器特殊性(包括类、ID、包含关系及伪类等)这些核心概念。 文章的核心在于分享一套实用的CSS规划思路:首先通过全局定义和继承来处理共性样式,节省大量重复劳动;其次构建可重用的CSS组件库(如重置、公共样式),提升开发效率;再者强调模块化组织和语义化命名,避免代码混乱。作者还提倡用“效果类”封装通用的视觉呈现(如阴影、遮罩),只需在使用时传入特定参数,这种思想颇具工程化色彩。 整篇文章以作者个人的实践与踩坑经验为主线,从基础概念平滑过渡到项目级的架构规划,对前端新人理解CSS组织逻辑、以及中级开发者优化代码结构,都提供了清晰且可操作的路径。

IT 2016-02-13 23:05:39 / 累计浏览 1,266

导航类“不定宽水平居中”的几种思路

这篇讲的是前端布局中一个常见却棘手的问题:如何让导航栏这类元素在容器宽度不固定时,依然能水平居中。作者从实际开发场景出发,系统梳理了五种主要思路。 文章首先展示了经典的“绝对定位+相对定位”方案,通过双重定位来抵消偏移,但也提醒了溢出内容可能被挤压的潜在风险。接着介绍了更简洁的Flexbox解法,一行`justify-content: center`便能解决问题,尽管需要考虑旧版浏览器的兼容性。此外,还提到了利用JavaScript动态计算总宽度、使用浮动配合相对定位(被称为“整体右移,逐项左移”的巧妙方式),以及将列表项设为`inline-block`并利用`text-align`实现居中等方法。 每种方案都附带了具体的CSS代码片段和核心原理说明,不仅告诉读者“怎么做”,也解释了“为什么能行”。比如,指出了`margin-left: -50%`在此场景下的局限性,以及`translateX`的优势。文末以作者自身的求知经历作结,让这些技术方案更添一份实践温度。对于前端开发者来说,这是一份思路清晰、可直接参考的解决方案集。

IT 2016-02-13 22:42:37 / 累计浏览 1,874

使用CSS3 will-change提高页面滚动、动画等渲染性能

这篇文章从一个实际案例出发,介绍了如何使用CSS3 `will-change`属性来解决页面渲染性能问题。 案例中,开发者使用`background-attachment: fixed`实现视差滚动时,发现页面帧率降至30 FPS,肉眼可见卡顿。文章分析了其根因在于该属性会导致浏览器进行实时计算重绘。 为解决此问题,作者分享了三个优化技巧:将`background-attachment: fixed`替换为`position: fixed`;使用`::before`伪元素承载背景图;以及关键一步——添加`will-change: transform`。文章重点解释了`will-change`的工作原理:它允许开发者提前告知浏览器元素即将发生的变化类型,从而让浏览器可以提前创建独立的渲染层并启用GPU加速,优化绘制性能。这相比于过去常用`translateZ`等3D变换来“欺骗”浏览器以触发硬件加速的hack方法,是一个更标准、更语义化的解决方案。文章在最后指出,这一属性已在主流浏览器中得到支持。