HTML/CSS 备忘录 - 15. CSS 媒体查询与其他

boyanx6个月前技术教程17

一、媒体查询

多媒体查询由多种媒体组成,可以包含一个或多个表达式,表达式根据条件是否成立返回 true 或 false。

@media not|only mediatype and (expressions) {
    CSS 代码...;
}

也可以在不同的媒体上使用不同的样式文件:

<link rel="stylesheet" 
  media="mediatype and|not|only (expressions)" 
  href="print.css" />

媒体类型:

  • all:检测所有设备。
  • screen:检测电子屏幕,包括:电脑屏幕、平板屏幕、手机屏幕等。
  • print:检测打印机。

媒体特征:

  • width:检测视口宽度。
  • max-width:检测视口最大宽度。
  • min-width:检测视口最小宽度。
  • height:检测视口高度。
  • max-height:检测视口最大高度。
  • min-height:检测视口最小高度。
  • device-width:检测设备屏幕的宽度。
  • max-device-width:检测设备屏幕的最大宽度。
  • min-device-width:检测设备屏幕的最小宽度。
  • orientation:检测视口的旋转方向 (是否横屏),portrait(竖屏)landscape(横屏)

运算符符:

  • and:并且。
  • , 或 or:或者。
  • not:用于否定媒体查询。如果出现在以逗号分隔的查询列表中,它将仅否定应用了该查询的特定查询。如果使用 not 运算符,则还必须指定媒体类型。
  • only:仅在整个查询匹配时才应用样式。这对于防止较老的浏览器应用所选样式很有用。当不使用 only 时,较老的浏览器会将 screen and (max-width: 500px) 简单地解释为 screen,忽略查询的其余部分,并将其样式应用于所有屏幕。如果使用 only 运算符,则还必须指定媒体类型。

媒体查询示例

/* 屏幕可视窗口小于 480px 的设备上应用样式 */
@media screen and (max-width: 480px) {
  /* CSS-Code */
}

/* 屏幕可视窗口小于 1200px 且 大于768px 时应用样式 */
@media screen and (min-width:768px) and (max-width:1200px) {
  /* CSS-Code */
}

二、BFC

块格式化上下文(Block Formatting Context,BFC)是 Web 页面的可视 CSS 渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。

BFC 可以理解为元素的一些特殊特性,在默认的情况下处于关闭状态;当元素满足了某些条件后将会开启。

开启了 BFC 能解决什么问题:

  • 元素开启 BFC 后,其子元素不会再产生 margin 塌陷问题。
  • 元素开启 BFC 后,自己不会被其他浮动元素所覆盖。
  • 元素开启 BFC 后,就算其子元素浮动,元素自身高度也不会塌陷。

如何开启 BFC:

  • 根元素。
  • 浮动元素。
  • 绝对定位、固定定位的元素。
  • 行内块元素。
  • 表格单元格:table、thead、tbody、tfoot、th、td、tr、caption。
  • overflow 的值不为 visible 的块元素。
  • 伸缩项目。
  • 多列容器。
  • column-span 为 all 的元素(即使该元素没有包裹在多列容器中)。
  • display 为 flow-root 的元素。

三、默认样式

很多元素都有默认样式,而且这些默认样式,在不同的浏览器 上呈现出来的效果也不一样,所以我们需要重置这些默认样式。

重置默认样式的方案有很多,我们也可以自己构建一套自己的默认样式,但更简单的是使用现有的一些成熟方案,例如 Normalize.css 就是一款重置默认样式的方案,它在清除默认样式的基础上,保留了一些有价值的默认样式。

官网:
https://necolas.github.io/normalize.css/

标签: css 格式化

相关文章

C#语言学习笔记18 —— 字符串格式化要点

C# 字符串格式化要点字符串格式化(formatting,姑且这么翻译)是把数据(类实例、结构体实例或枚举值等)转化为一个代表字符串(string representation)的过程。这个字符串一般...

MFC转QT - Qt界面开发 - 常用控件

基础控件 (QPushButton, QLabel, QLineEdit等)按钮控件族Qt提供了丰富的按钮控件,比MFC的按钮控件更加细分和功能丰富。QPushButton(标准按钮) // 创建按钮...

太强了!字节大佬总结——《你不知道得css原理》!

BFC、IFC、FFC、GFC粗解flex容易忽略的属性flex-grow:等比分配剩余空间flex-shrink:等比压缩多余空间flex-basis: 基本格的大小,可以是百分比min/max-w...

笔记革命!Obsidian 1.9.0带来结构化管理新体验

IT之家 5 月 22 日消息,科技媒体 NeoWin 昨日(5 月 21 日)发布博文,报道称桌面版笔记软件 Obsidian 开启 1.9.0 版本早期预览,新增 Bases 和 Footnote...

Dify「模板转换」节点终极指南:动态文本生成进阶技巧(附代码)Jinja2引擎解析

这篇文章是关于Dify「模板转换」节点的终极指南,解析了基于Jinja2模板引擎的动态文本生成技巧,涵盖多源文本整合、知识检索结构化、动态API构建及个性化内容生成等六大应用场景,助力开发者高效利用模...

双色球开奖结果的大数据分析与统计

正好手上有2003年-2024年所有双色球中奖的记录,用这20几年的数据分析,然后来预测,应该有一定的参考性。声明:本文主要目的为编程学习,数据仅用来作为统计之用,且数据来源公开合法。本文无任何导向。...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。