0

0

试整理:CSS中的语法与概念_html/css_WEB-ITnose

php中文网

php中文网

发布时间:2016-06-21 09:08:18

|

1327人浏览过

|

来源于php中文网

原创

发端自此。也正在筹备一个关于“css布局怎么算”的一个presentation,算是预热之一。当然我懒得写例子,就各种好了=w=

语法

本段分类方式部分参考了https://en.wikipedia.org/wiki/Comparisonoflayoutengines(CascadingStyleSheets)

选择器

元素

*, E, .class, #id, ns|E

关系

E F, E>F, E+F, E~F, E /for/ F

立即学习前端免费学习笔记(深入)”;

属性

[attr], [=], [~=], [|=], [~=], [$=], [*=]

伪类

  • 链接

:link, :visited, :active, :hover, :focus

  • 结构化伪类

:root, :first-*, :last-*, :only-*, nth-*

  • 表单(未列举完全)

:empty, :target, :disabled, :checked, :invalid, :required

  • :not(), :lang()

伪元素

::first-letter, ::first-line, ::before, ::after, ::selection

属性

排版

语法层面仅对属性作粗略分类,重点放在概念阶段(display, position, float均决定了布局基础模式)。

  • 模式

display

  • 定位

position, top, left, right, bottom, z-index

  • 盒模型

border-\, padding-\, margin-\ ,box-sizing, \-width, \*-height

  • 特定模式
  • 浮动
  • float, clear

  • 列表
  • list-style-\*

  • 表格
  • border-collapse, border-spacing, caption-side, empty-cells, table-layout

    • 视觉效果

    overflow, clip-\*, visibility

    排印

    字体排印是非常大一块,只是没有提出多少新概念,因此在这里仅整理属性。
    对排印的模式及其解析请期待《字体排印在前端》(跳票太长时间,被PIA飞……

    • 字体匹配

    font-\*

    • 断句

    white-space, line-break, hypens, word-wrap

    • 书写方向

    direction, unicode-bidi, writing-mode

    • 其它排印内容

    text-\*

    效果

    这一段没有什么好说,由于效果直观,大家可在互联网上见到极多的示例。

    • 颜色与背景

    color, opacity, background-\, \-shadow

    • 变形与动画

    transform-\, perspective-\, backface-visibility

    • 动画

    transition-\, animation-\

    • 用户界面

    cursor, outline

    本段整理自标准http://www.w3.org/TR/css3-values

    距离

    http://css-tricks.com/the-lengths-of-css/

    • 绝对

    cm, mm, in, pt, pc, px

    • 相对

    相对字体em, rem, ex, ch
    相对视口vw, vh, vmin, vmax

    颜色

    张鑫旭《CSS1-CSS3 颜色知识知多少?》
    还有鑫大大没有涉猎到的地方吗……

    • 关键词

    颜色如 red
    系统颜色如 ButtonText
    currentColor

    • 纯色色值

    RGB, #RRGGBB, rgb(), hsl()

    • 透明色值

    rgba(), hsla(), transparent

    时间

    ms, s

    频次

    Hz, kHz

    角度

    deg, grad, rad, turn

    以上介绍均可见:张鑫旭《CSS/CSS3长度、时间、频率、角度单位大全》

    分辨率

    dpi, dpcm, dppx

    数字

    • Integer:1
    • Number:1.1
    • Percentage:%

    url

    string

    functional notation

    • calc()
    • toggle()
    • attr()

    @规则

    张鑫旭《博闻强识:了解CSS中的@ AT规则》

    • @keyframes
    • @font-face
    • @media
    • @charset
    • @import
    • @namespace
    • @document
    • @page
    • @supports

    /\Comment\/

    概念

    计算

    选择器(权重)

    http://www.w3.org/TR/2011/REC-CSS2-20110607/cascade.html#cascade

    根据来源和重要程度,这样排序:

  • user agent declarations
  • author normal declarations
  • user normal declarations
  • author important declarations
  • user important declarations
  • 同级别,计算特化程度(specificity)

  • tag
  • class
  • id
  • inline style
  • user agent为浏览器默认UA;
    author即CSS中的声明;
    user即style=。
    !important可提升author / user层面的权重。

    计算阶段的各个值

  • 指定值Specified values:在样式表中指定的值
    • 将确定一个属性使用的是声明值、继承值还是初始值
  • 计算值Computed values:格式化文档之前,根据样式表计算出的值
    • 相对的URI将转化为绝对URI
  • float: left将导致计算值为display:block也发生在这一步
  • 相对单位em将转化为px或类似单位(当然,如果font-size中用到了em,则需要到下一步才能算出)
  • 使用值Used values:格式化文档之后,根据样式表及层叠关系计算出的值
    • 百分比值转化为px或类似单位
  • line-height的相应计算
  • 真实值Actual values:使用值在一些UA中可能不允许被使用,因此还可能发生针对UA的转化
    • 比如在chrome里面,px不允许有小数,因此就算使用值是33.333px,真实值将是33px。这可能导致一些subpixel bug
  • 比如在kindle的浏览器里面,UA本身不支持灰度以外的颜色,因此所有的颜色将会转化会灰色
  • 布局

    Box model

    对应CSS2.1第8章 Box model,十分基础,介绍的文章很少出问题,就不多说了。

    这几个概念很重要,会出现在标准中多次:

    • Margin Edge
    • Border Edge
    • Padding Edge
    • Content Edge

    Positioning

    布局体系,决定元素出现在哪里及相互影响的方式。

    常规布局

    CSS2.1的重心与难点。
    本部分网络非常多谬误,很容易被各路水货带进坑。
    最好参照W3Help《CSS 定位体系概述》和后面几章,对应标准CSS2.1《第9章 Visual formatting model》,《第10章 Visual formatting model details》来理解。

    常规布局又分为三大块:

    • Normal Flow

    出现inline-box、line-box、block-box的概念,同时又提出了BFC和IFC。

    • Float
    • Absolute positioning

    普通流的高度计算流程,可一窥各个box影响布局的方式:

  • 根据 'line-height' 属性计算出每个行内元素的inline-box高度;
  • 根据 'vertical-align' 属性计算出每个inline-box的垂直对齐方式;
  • line-box的高度是垂直对齐排列最上面inline-box的顶边和最下边inline-box的底边距离;
  • 如果inline-box字号设置大于行内框的 'line-height' 设置,文字将溢出当前line-box,他可能造成多行时文字相互覆盖;

  • 在没有其他块级内容的情况下,整个block-box的高度取决于多个line-box累计的高度
  • 每个计算出的行框在垂直高度上排列没有间隙

    Table

    表格布局很复杂,对外部的影响可属于Normal Flow,内部又区别于Normal Flow元素相互影响的方式。对应标准CSS2.1《第17章 Tables》

    Flex

    上下文

    在常规流中的框,都属于一个格式化的上下文中:

    • BFC:Block Formatting Context

    这个概念的细则可见Smallni的《hasLayout && Block Formatting Contexts》

    • IFC:Inline Formatting Context

    规则脱胎自文字排印,核心概念是vertical-align、line-height。

    层叠上下文Stacking Context

    决定元素在定位上有重合时的相互覆盖情况。
    CSS2.1时期的规则可参考W3Help《分层的显示( Layered presentation )》
    进入CSS3以后,Stacking Context不仅仅由z-index创建,而这导致了它的复杂性。可参考@KevinYue 的一个回答。(这么棒的回答没人赞吗

    Viewport

    • Visible Viewport
    • Layout Viewport

    参见quirksmode的《两个视口的故事【1】、【2】》。

    视口相关,还有一个平常比较难发现的扩散行为,参见我在这里的探究。

    Containing block

    不理解“包含块”的概念,永远无法完全理解width:100%、width:auto、top: 0;等究竟是相对何而言的。参考W3Help《包含块( Containing block )》:

    Containing block

    • of root
    • of fixed
    • of static/relative
    • of non-static inline
    • of non-static block

    Replaced Element

    替换元素,即内容区块超出CSS格式化模型的元素,定义见W3C《第三章:定义》。在W3C的第十章有专门针对替换元素的定位进行阐述。

    它们大多有一些固有宽/高/比例;
    浏览器或多或少支持了一些影响内部内容渲染的CSS属性(如padding、line-height等),让它们少桀骜难训了那么一点点。但这种支持并没有定义在CSS标准中,因此有各个UA之间的差异。

    相关文章

    HTML速学教程(入门课程)
    HTML速学教程(入门课程)

    HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

    下载

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    通义千问
    通义千问

    阿里巴巴推出的全能AI助手

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
    pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

    本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

    463

    2026.02.13

    微博网页版主页入口与登录指南_官方网页端快速访问方法
    微博网页版主页入口与登录指南_官方网页端快速访问方法

    本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

    135

    2026.02.13

    Flutter跨平台开发与状态管理实战
    Flutter跨平台开发与状态管理实战

    本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

    64

    2026.02.13

    TypeScript工程化开发与Vite构建优化实践
    TypeScript工程化开发与Vite构建优化实践

    本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

    20

    2026.02.13

    Redis高可用架构与分布式缓存实战
    Redis高可用架构与分布式缓存实战

    本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

    26

    2026.02.13

    c语言 数据类型
    c语言 数据类型

    本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

    29

    2026.02.12

    雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
    雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

    本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

    14

    2026.02.12

    豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
    豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

    本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

    524

    2026.02.12

    PostgreSQL性能优化与索引调优实战
    PostgreSQL性能优化与索引调优实战

    本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

    53

    2026.02.12

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Swoole系列-从0到1-新手进阶
    Swoole系列-从0到1-新手进阶

    共29课时 | 1.5万人学习

    php初学者入门课程
    php初学者入门课程

    共10课时 | 0.7万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号