首页
开发技巧正文内容

用一行 CSS 代码改善项目

2024年08月21日
阅读时长 2 分钟
阅读量 9
用一行 CSS 代码改善项目

这些一行代码中的大多数将是 CSS 规则内的一个声明。在某些情况下,选择器将不仅仅是一个简单的元素;在其他情况下,我将添加额外的声明作为更好体验的建议,从而使它们不再是一行代码——对于这些情况,提前向您道歉。

这些一行代码中的一些更多是个人选择,并不适用于所有网站(并非每个人都使用表格或表单)。我将简要描述每个解决方案,它们的作用(附有示例图像),以及我喜欢使用它们的原因。请注意,示例图像可能基于先前示例构建。

以下是这些一行代码的摘要:

  1. 限制内容宽度在视口内

  2. 增加正文文本大小

  3. 增加文本行之间的间距

  4. 限制图像宽度

  5. 限制内容中文本的宽度

  6. 以更平衡的方式包装标题

  7. 表单控件颜色与页面样式匹配

  8. 易于跟随的表格行

  9. 表格单元格和标题中的间距

  10. 减少动画和移动


限制视口内的内容宽度

body {
  max-width: clamp(320px, 90%, 1000px);
  /* 额外建议 */
  margin: auto;
}

添加这一行代码将减小内容大小,使其占据视口的 90%,将其宽度限制在 320 到 1000 像素之间(请随时更新最小和最大值)。

这个改变将自动使您的内容看起来更加美观。它将不再是一个巨大的文本块,而是看起来更有结构和组织。如果您还在 body 中添加 margin: auto;,内容将居中显示在页面上。两行代码让内容看起来好看多了。

对齐和包含的文本比巨大的文本墙更好看


增加文本大小

body {
  font-size: 1.25rem;
}

面对现实吧:浏览器默认的 16px 字体大小太小了。 尽管这可能是基于我变老了的个人观点 😅👴

一个快速的解决方案是增加正文中的字体大小。由于浏览器使用的级联和 em 单位,网页上的所有文本都会自动增大。


增加行间距

body {
  line-height: 1.5;
}

另一个改进可读性、打破可怕的文本墙的偏好是增加段落和内容中行之间的间距。我们可以使用 line-height 属性轻松实现这一点。

行间距打破文本墙和空白河

这个选择(与前两个一起)将显著增加我们页面的垂直尺寸,但我向您保证,文本将更易读,对所有用户更友好。


限制图像大小

img {
  max-width: 100%;
}

图像应该大致与它们将占据的空间大小相同,但有时我们会得到非常长的图片,导致内容移动并创建水平滚动。

避免这种情况的一种方法是将最大宽度设置为 100%。虽然这不是一个绝对有效的解决方案(边距和填充可能会影响宽度),但在大多数情况下都有效。

防止水平滚动,使图像与文本更好地配合


限制内容中文本的宽度

p {
  max-width: 65ch;
}

避免可怕的文本墙和空白河的另一种策略是即使与 body 中的最大宽度一起应用这种样式。这可能看起来多余,有时甚至有点奇怪,因为段落会比其他元素更窄。但我喜欢这种对比和更短的行。

对我来说,60ch 或 65ch 的值在过去有效,但您可以使用不同的值并调整最大宽度以满足您的需求。尝试并探索它在您的网页上的效果。

将更大的文本块分解为更小的块以提高可读性


以更平衡的方式包装标题

h1, h2, h3, h4, h5, h6 {
  text-wrap: balance;
}

标题是网页结构的重要部分,但由于它们较大的大小和较短的内容,它们可能看起来奇怪。特别是当它们占据多于一行时。帮助的一个解决方案是使用 text-wrap 平衡标题。

尽管 balance 似乎是 text-wrap 的最受欢迎的值,但它并不是唯一的值。我们还可以使用 "pretty",它会将额外的单词移到最后一行(如果需要)而不是平衡所有内容。不幸的是,pretty 还没有得到广泛支持。

平衡的换行可以提高可见性和可读性


表单控件颜色与页面样式匹配

body {
  accent-color: #080; /* 使用您喜欢的颜色 */
}

另一个小改变,对页面没有显著影响,但使事物看起来更好。直到最近,我们无法用 CSS 样式化原生表单控件,而是被困在浏览器显示中。但事情已经改变了。

开发整个组件可能很麻烦,但使用这一行代码将颜色设置为更接近站点和设计系统的颜色是可能且简单的。

细节(和颜色)将页面融合在一起


易于跟随的表格行

:is(tbody, table) > tr:nth-child(odd) {
  background: #0001; /* 或 #fff1 适用于暗色主题 */
}

我们必须使用表格来显示数据,而不是用于布局。但默认情况下,表格看起来很丑,我们不希望数据看起来丑陋。特别是,有助于组织数据并使其更易读的一点是具有交替的深色/浅色行的斑马表格。

上面显示的一行代码使实现这种样式变得容易。它可以简化为仅为 tr 而不考虑 tbodytable 父级,但这也会应用于表头,这可能不是我们想要的。这是一个品味问题。

水平跟随数据更容易(按行)


表格单元格和标题中的间距

td, th {
  padding: 0.5em; /* 或 0.5em 1em... 或任何与 0 不同的值 */
}

使表格更易访问和阅读的最后一个更改是通过向表格单元格和标题添加填充来略微间隔内容。默认情况下,大多数浏览器没有任何填充,不同单元格的文本会接触在一起,使得区分一个单元格的开始和另一个单元格的结束变得困惑。

我们可以更改填充值以调整到我们喜欢的大小。但是,避免过度调整以避免不必要的滚动或过多的空白空间。

水平和垂直跟随数据更容易


减少动画和移动

@media (prefers-reduced-motion) {
  *, *::before, *::after {
    animation-duration: 0s !important;
    /* 额外建议 */
    transition: none !important;
    scroll-behavior: auto !important;
  }
}

好吧,好吧。这段代码远不止一行。它有一个一行版本(通过将动画持续时间设置为零秒来移除动画),但网页上的其他元素会使元素移动。

通过在 prefers-reduced-motion 媒体查询内设置这些声明,我们将尊重用户选择减少运动。这种方法有点激进,因为它会移除所有运动,这可能并不一定是用户的意图——它是“减少运动”而不是“无运动”。 如果合适,我们仍然可以根据具体情况保留运动。

没有动画?没问题!

免责声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

相关文章

探索多种软件架构模式及其实用应用
2024年11月22日19:06
本文深入探讨了多种软件架构模式,包括有界上下文、边车模式、发布-订阅模式、应用网关、微服务、命令职责分离(CQRS)等,介绍了它们的优点、使用场景以及具体应用实例。文章强调根据具体项目需求和团队能力选择最合适的架构,以构建高效和可维护的解决方案,同时展示了各架构模式间的综合应用,提供了丰富的案例和技术细节。
15个高级Python快捷键助您更快编程
2024年11月21日07:02
本文分享了 15 个高级的 Python 编程快捷键,包括上下文管理器、行内字典合并、函数参数解包、链式比较、dataclasses、海象运算符、反转列表、备忘录缓存、splitlines、enumerate、字典推导、zip 用于并行迭代、itertools.chain 扁平化列表、functools.partial 部分函数和 os.path 文件路径管理等,帮助开发者提高编程效率和代码简洁性。
揭示网页开发的 11 个迷思:停止相信这些误区
2024年11月19日22:05
网页开发充满误解,这篇博文针对11个常见迷思进行揭秘。包括网站开发后不需更新、需掌握所有技术、AI会取代开发者等。强调持续学习、专业化、用户体验的重要性,澄清误区如多任务处理的必要性和最新技术的必需性。文章提醒开发者注重实用而非追求完美代码,以务实态度面对开发工作。
你知道 CSS 的四种 Focus 样式吗?
2024年11月18日21:41
本文介绍了四种 CSS focus 样式::focus、:focus-visible、:focus-within 以及自定义的 :focus-visible-within,帮助提升网站用户体验。:focus 样式应用于被选中元素;:focus-visible 仅在键盘导航时显示;:focus-within 用于父元素;自定义 :focus-visible-within 结合两者效果。合理运用这些样式能使网站更方便键盘用户导航。
利用 Python 实现自动化图像裁剪:简单高效的工作流程
2024年11月11日20:49
使用 Python 和 OpenCV 自动裁剪图像,轻松实现 16:9 的完美构图。这个指南介绍了如何通过代码进行灰度化、模糊处理和边缘检测,最终识别出最重要的部分进行裁剪。特别适合需要批量处理图像的情况,节省大量时间。
每位资深前端开发人员都应了解的 TypeScript 高级概念
2024年11月11日02:07
资深前端开发者应了解 TypeScript 的高级概念,如联合类型、交叉类型、类型保护、条件类型、映射类型、模板字面量类型和递归类型。这些特性可提升代码的可维护性和可扩展性,确保在开发复杂应用时实现更高的类型安全性和效率。