CSS 单行代码可以改进(几乎)每个项目
大多数单行代码都是 CSS 规则中的一个声明。在某些情况下,选择器不仅仅是一个简单的元素;在其他情况下,我会添加额外的声明作为建议,以获得更好的体验,从而使它们不仅仅是一行代码——对于这些情况,我提前致歉。
其中一些小技巧更多是个人选择,并不适用于所有网站(并非每个人都使用表格或表单)。我将简要介绍每一种技巧,它们的功能(附示例图片),以及我喜欢使用它们的原因。请注意,示例图片可能基于之前的示例构建。
以下是单行代码的作用的总结:
- 限制视口内的内容宽度
- 增加正文文本大小
- 增加文本行之间的行距
- 限制图像的宽度
- 限制内容中的文本宽度
- 以更平衡的方式包装标题
- 表单控件颜色与页面样式相匹配
- 易于遵循的表格行
- 表格单元格和标题的间距
- 减少动画和动作
限制视口中的内容宽度
body {
max-width: clamp(320px, 90%, 1000px);
/* additional recommendation */
margin: auto;
}
添加此一行代码将减少内容大小以占据视口的 90%,将其宽度限制在 320 到 1000 像素之间(请随意更新最小值和最大值)。
这项更改会自动让您的内容看起来更加美观。它不再是巨大的文本块,而是看起来更加结构化和有序。如果您同时添加margin: auto;
,body
内容将在页面居中显示。两行代码就能让内容看起来更加美观。
对齐且包含的文本比长篇大论的文本看起来更好
增加文本大小
body {
font-size: 1.25rem;
}
面对现实吧:浏览器默认的 16px 字体太小了。不过这可能是我年纪大了才有的个人看法 😅
一个快速的解决方案是增加正文中的字体大小。由于em
浏览器的级联和单位设置,网页上的所有文本都会自动增大。
较大的文本使内容更易于阅读。
增加行间距
body {
line-height: 1.5;
}
另一个提高可读性、打破冗长冗长的文本的方法是增加段落和正文之间的行距。我们可以使用line-height
属性轻松实现这一点。
行与行之间的空格打破了文本的墙壁和白色的河流。
这个选择(与前两个选择一起)将大大增加我们页面的垂直尺寸,但我向你保证,文本对于所有用户来说都将更具可读性和更友好。
限制图像大小
img {
max-width: 100%;
}
图像的大小应与它们所占据的空间大致相同,但有时,我们最终会得到很长的图片,这会导致内容移动并产生水平滚动。
避免这种情况的一种方法是将最大宽度设置为 100%。虽然这不是一个万无一失的解决方案(边距和填充可能会影响宽度),但在大多数情况下都能奏效。
防止水平滚动,使图像与文本更好地融合
限制内容中的文本宽度
p {
max-width: 65ch;
}
避免可怕的文字墙和空间“河流”的另一个策略是,即使正文宽度达到最大,也要应用这种样式。虽然它可能看起来不必要,有时甚至很奇怪,因为段落会比其他元素更窄。但我喜欢这种对比和更短的行距。
以前我用 60ch 或 65ch 的值就成功了,但你可以使用其他值并调整最大宽度以满足你的需求。试玩一下,看看它在你的网页上看起来会是什么样子。
将较大的文本块分成较小的块以提高可读性
以更平衡的方式包装标题
h1, h2, h3, h4, h5, h6 {
text-wrap: balance;
}
标题是网站结构的重要组成部分,但由于其尺寸较大且内容较短,看起来可能会很奇怪,尤其是在占用多行内容的情况下。一个有效的解决方案是使用 来平衡标题text-wrap
。
虽然 balance 似乎是 text-wrap 最常用的值,但它并非唯一。我们也可以使用pretty
,它会根据需要将多余的单词移到最后一行,而不是平衡所有内容。可惜的是,pretty 尚未获得广泛支持。
平衡包装可以提高可见性和可读性
表单控件颜色与页面样式相匹配
body {
accent-color: #080; /* use your favorite color */
}
另一个小改动虽然影响不大,但确实让界面看起来更好了。直到最近,我们还无法使用 CSS 来设置原生表单控件的样式,只能使用浏览器显示。但现在情况已经改变了。
开发整个组件可能很麻烦,但使用这一行代码就可以直接设置与网站其余部分和设计系统更相似的颜色。
正是这些小细节(和颜色)让页面变得完整
易于遵循的表格行
:is(tbody, table) > tr:nth-child(odd) {
background: #0001; /* or #fff1 for dark themes */
}
我们必须使用表格来显示数据,而不是布局。但表格默认很丑,我们不希望数据看起来丑陋。特别地,有助于组织数据并使其更具可读性的一个方法是使用深色/浅色行交替的斑马线表格。
上面显示的一行代码可以轻松实现该样式。它可以简化为 only ,tr
而不考虑tbody
或table
父级,但这也会影响表格标题,而这或许是我们不希望看到的。这只是个人喜好问题。
更容易水平跟踪数据(按行)
表格单元格和标题的间距
td, th {
padding: 0.5em; /* or 0.5em 1em... or any value different from 0 */
}
最后一个改进是,通过在表格单元格和标题中添加内边距 (padding) 来稍微增加内容的间距,使表格更易于访问和阅读。默认情况下,大多数浏览器都没有内边距,不同单元格的文本会相互重叠,让人难以区分一个单元格的起始位置和另一个单元格的结束位置。
我们可以更改填充值以将其调整到我们喜欢的大小。但是,请避免过度调整,以免造成不必要的滚动或过多的空白。
更容易水平和垂直跟踪数据
减少动画和动作
@media (prefers-reduced-motion) {
*, *::before, *::after {
animation-duration: 0s !important;
/* additional recommendation */
transition: none !important;
scroll-behavior: auto !important;
}
}
好的,好的。这段代码远不止一行代码。它有一个单行版本(通过将动画持续时间设置为零秒来删除动画),但网页上的其他内容会使元素移动。
通过在 prefers-reduced-motion 媒体查询中设置这些声明,我们将尊重用户减少运动的选择。这种方法有些激进,因为它会移除所有运动,而这可能并非用户的本意——这是“减少运动”,而不是“无运动”。如果适用,我们仍然可以根据具体情况保留运动。
没有动画?没问题!
文章来源:https://dev.to/alvaromontoro/css-one-liners-to-improve-almost-every-project-18m