【芝士整理】CSS基础图谱

news/2023/12/9 14:13:49

选择器注意点

属性选择器

  • [attr^=value] - 开头或全等
  • [attr$=value] - 结尾或全等
  • [attr*=value] - 包含值
  • [attr~=value] - 字符串包含

选择器组

  • A > B - 直接子节点
  • A + B - 下一个兄弟节点
  • A ~ B - 兄弟节点

优先级

!important > 内联样式 > ID选择器 > 属性选择器(类选择器,属性选择器,伪类)> 元素选择器 (类型选择器,伪元素)> 继承 > 用户代理样式

通配选择符(*), 关系选择符(+, >, ~, ' ') 和 否定伪类(:not()) 对优先级没有影响。(但是,在 :not() 内部声明的选择器是会影响优先级)。

块元素/行内元素/行内块元素

  • block box - 整块,独占一行,可指定宽高
  • inline box - 包裹内容,行内流动,文本太长会段落行中断开(设置border分行后的显示效果);无法指定宽高
  • inline-block box - 行内流动,段落行中不会断开,成块显示,可指定宽高

盒模型

当对一个文档进行布局的时候,浏览器渲染引擎会根据CSS-Box模型将所有元素表示为一个矩形盒子

盒模型由由外边距、边界、内边距、内容块组成

外边距

盒模型的最外层,常用于元素外布局,垂直方向上易出现元素外边距重叠的效果,详细介绍可见CSS深入理解之margin

边界

背景层延伸到边界,默认颜色为字体颜色,可用边界实现一些常用图形效果,详细介绍可见CSS深入理解之border

内边距

内容区和边界之间的距离,背景层渗透,不支持负值,详细可见CSS深入理解之padding

CSS-Box模型

可通过box-sizing属性设置

  • content-box ,标准盒子模型,width = 内容区宽度
  • border-box,IE盒子模型,width = 内容区宽度 + 内边框 + 边框

行内框盒模型

行内框盒模型描述内容在元素中的布局结构

行内元素都具有line-height和vertical-align属性,这两个属性影响内容在垂直方向上的分布,详细介绍可见CSS深入理解之line-height以及CSS深入理解之vertical-align

流布局

在普通流中,元素按照其在 HTML 中的先后位置至上而下布局,在这个过程中,行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为完整的一个新行,除非另外指定,否则所有元素默认都是普通流定位,也可以说,普通流中元素的位置由该元素在 HTML 文档中的位置决定。

浮动

浮动起源于实现文字环绕效果。

为了实现文字环绕效果,规范规定的措施是使父容器塌陷,元素脱离文档流浮动产生BFC,元素周围的内容转换为inline boxes围绕元素排列。

从浮动的起因和浮动的副作用来看,浮动不适合用于大范围的布局,更适合利用其特性实现一些小范围的流体布局效果。

关于浮动的具体介绍,可见CSS深入理解之float

定位

相对定位

未脱离文档流,相对于元素在文档流中的位置偏移,不会对其他元素的布局产生影响

绝对定位

脱离文档流,相对于包含块定位

绝对定位元素具有跟随性,在未手动定位时,元素根据原有位置脱离文档流放置

无固定宽/高,设定对立定位方向,产生拉伸效果

关于绝对定位的具体介绍,可以CSS深入理解之absolute

固定定位

脱离文档流,相对于视口

BFC

什么是BFC?

CSS规范的一个特性,产生BFC特性的元素可以理解为一个封闭独立的容器,能够排除一些外界因素的影响

如何产生BFC?

  • 根元素
  • 浮动
  • 绝对定位
  • display: inline-block/table-cell/table-caption/flex/inline-flex
  • overflow非visible

BFC的日常应用

  • 解决外边距重叠问题
  • 清除浮动
  • 排除兄弟元素的浮动影响

详细例子可见10 分钟理解 BFC 原理

层叠

层叠顺序规则

详细介绍可见CSS深入理解z-index

度量单位

  • 绝对单位

    • px
  • 相对单位

    • em - 相对父元素的字体大小(font-size而不是计算出的字体高度)
    • rem - 相对于基础字体大小,支持IE9及以上
    • vw, vh- 分别是视口宽度的1/100和视口高度的1/100

rem布局使用解说
大体简述

  • px太过死板,无法实现等比缩放。
  • 使用em需要严格控制各级元素关系,容易出错,不易维护
  • 使用rem的好处在于可通过修改根元素字体大小实现等比缩放,根元素字体大小需要用js计算。如果将屏幕宽度分为一百等分,一单位宽度即clientWidth/100,根元素字体大小设置为该值,50rem即代表50%的宽度。若要方便还原设计图尺寸,使用元素的rem值计算公式:元素宽度 / UE图宽度 * 100

文本

文本溢出处理

介绍几个属性

word-break

  • normal:默认断行规则,CJK文本自动换行,非CJK不会自动换行(边界遇空白符会换行)
  • break-all:非CJK文本可在任意字符间断行
  • keep-all:CJK文本不断行,非CJK保持默认断行

word-wrap

overflow-wrap的别名,当行内没有多余的空间容纳一个单词到结尾,是否允许这个单词中断换行

注:word-wrap 属性原本属于微软的一个私有属性,在 CSS3 现在的文本规范草案中已经被重名为 overflow-wrap 。 word-wrap 现在被当作 overflow-wrap 的 “别名”。 稳定的谷歌 Chrome 和 Opera 浏览器版本支持这种新语法。
  • normal
  • break-word

white-space

如何处理空白

| | 换行符 | 空格和制表符 | 文字转行 |
| ---------- | ------ | ------------ | -------- |
| normal | 合并 | 合并 | 转行 |
| nowrap | 合并 | 合并 | 不转行 |
| pre | 保留 | 保留 | 不转行 |
| pre-wrap | 保留 | 保留 | 转行 |
| pre-line | 保留 | 合并 | 转行 |

word-break控制任意字符是否换行,word-wrap控制单词是否中断换行,white-space可控制是否换行。如果无换行前提,word-space与word-wrap将失去意义。

https://codepen.io/curlywater...

常见处理

不做转换的情况下,显示多行文本,并且控制换行

.content {
    white-space: pre-wrap;
    word-wrap: break-word;
}

对溢出文本做省略字符处理

.line-text {
  overflow: hidden;
  text-overflow: ellipsis;
}

行内元素水平间隔

行内元素之间若有空白符/换行符/制表符掺入,将会产生元素间隔的渲染效果

  • 解决方式一:避免掺入,旧式开发中注意写法,现代框架和打包可以避免该问题
  • 解决方式二:容器字体大小设置为0
html{
    // 字体大小不受设备终端调整
  -webkit-text-size-adjust:none;
}
.container {
    font-size: 0;
}
.container span {
    font-size: 16px;
}

http://www.niftyadmin.cn/n/1373969.html

相关文章

Java--常见对象--Object类

Object(类)public int hashCode()public final Class getClass()public String toString()public boolean equals(Object obj)常见对象(API概述以及Object类的概述) A:API(Application Programming Interface) 应用程序编程接口 B:Java API就是Java提供给我们使用的类&#xf…

如何用 CSS 和原生 JS 创作一组 tooltip 提示框

效果预览 在线演示 按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。 https://codepen.io/comehope/pen/rqyoYY 可交互视频 此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。 请用 chrome, safari, edge 打开…

Java--常见对象--Scanne、 String

Scanner(用于接收键盘录入数据) String(字符串)常见对象(Scanner的概述和构造方法原理) A:Scanner的概述: JDK5以后用于获取用户的键盘输入 B:Scanner的构造方法原理Scanner(InputStream source)System类下有一个静态的字段:public static final InputStream in; 标…

linux开发终极指南

linux开发终极指南 (LinuxByte.net) 作者 linux天字一号 (stranger ) 首先,程序员要了解在linux下的几个之最: 最有用开发语言: C/C,Perl,Pascal. 最流行的工具集: gtk/gdk,qt,xforms 最好的可视化开发工具: glade,designer,kdeveloper…

初识react

今天学习了react,哇咔咔,激动ing下面带大家来一起认识下react吧!我们在写react的时候要先引用三个文件分别是可以通过 以下命令安装npm install react npm install react-dom npm install babel-standalone复制代码写一个react页面分为三步:1 定义一个虚拟容器存放dom<div i…

Java--常见对象--StringBuffer、 StringBuilder 、数组常见操作、 Arrays、 基本数据类型包装类

StringBuffer StringBuilder 数组常见操作 Arrays 基本数据类型包装类常见对象(StringBuffer类的概述) A:StringBuffer类概述我们如果对字符串进行拼接操作&#xff0c;每次拼接&#xff0c;都会构建一个新的String对象&#xff0c;既耗时&#xff0c;又浪费空间。而StringBuf…

看30年内软件技术的不变与变化

发信人: rufi (学学汇编吧), 信区: Programming标 题: [转载]看30年内软件技术的不变与变化发信站: 日月光华 (2003年12月20日01:15:17 星期六), 站内信件 【 以下文字转载自 Software 讨论区 】发信人: linjia(&#xffe5;&#xffe5;&#xffe5;&#xffe5;&#xffe5…

Java--Pattern和Matcher类 、Math类 、Random类 、System类 、BigDecimal类、 Date类、 SimpleDateFormat类、Calendar类

正则表达式 Pattern和Matcher类 Math类 Random类 System类 BigDecimal类 Date类 SimpleDateFormat类 Calendar类常见对象(正则表达式的概述和简单使用) A:正则表达式:正确规则的表达式 规则java给我们定的是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串…

Java行业的圣经-四本最重要的个人藏书

Java行业的圣经-四本最重要的个人藏书 作者 Thomas E. Davis 译者 msklsf263.net Java行业的圣经 四本最重要的个人藏书,他们的书名都不含Java 摘要 Thomas Davis 推荐了四本书&#xff0c;它们可以让你在java开发中受益非浅。这些书扩展了Java的基本语法和语义&#xff0c…

迭代器问题

在用迭代器做题时发现&#xff0c;当删除一个元素时&#xff0c;后面一个元素理所当然的继承了上一个元素的衣钵&#xff0c;站在了被删元素的点上。所以用迭代器时出了不少错误 for(vector<int>::iterator iA.begin();i<A.end();i) {if(*i%2!0){ a[j]*i;A.erase(i…

Docker 技巧:删除 Docker 所有镜像

删除所有未运行 Docker 容器 docker rm $(docker ps -a -q) 删除所有 Docker 镜像 删除所有未打 tag 的镜像 docker rmi $(docker images -q | awk /^<none>/ { print $3 }) 删除所有镜像 docker rmi $(docker images -q) 根据格式删除所有镜像 docker rm $(docker ps -q…

Java--集合框架--对象数组、集合、 数据结构

对象数组 集合 数据结构集合框架(集合的由来) A:集合的由来面向对象语言对事物的体现都是以对象的形式&#xff0c;所以为了方便对多个对象的操作&#xff0c;Java就提供了集合类。 B:数组和集合的区别(1): 长度区别:数组的长度是固定的而集合的长度是可变的(2): 存储数据类型…

《海上钢琴师》

导演&#xff1a;吉塞普托那托 主演&#xff1a;提姆罗斯 Pruitt Taylor Vince Melanie Thierry Bill Nunn 类型&#xff1a;剧情 奇幻 音乐 发行公司&#xff1a;Fine Line / Medusa Distribuzione 首映日期&#xff1a;1998年10月28日 海上钢琴师 “The Legend of 190…

Jenkins持续集成 之 Jenkins基本配置

一、在全局工具配置设置JAVA环境变量 二、在全局工具配置设置GIT环境变量 三、基本插件安装GitLab与Publis 0ver SSH 转载于:https://blog.51cto.com/12965094/2329597

Java--集合框架--ArrayList、 Vector、 LinkedList、 泛型(Generic) 、 可变参数 、增强for循环

ArrayList Vector LinkedList 泛型(Generic)可变参数 增强for循环集合框架(ArrayList存储字符串并遍历) ​ JDK1.8新增的一个方法也能遍历集合 ​ void forEach(Consumer<? super E> action) 执行特定动作的每一个元素的 Iterable直到所有元素都被处理或操作抛出异常 …

SpringBoot-2.1.1系列一:使用https

1.什么是https&#xff1f; HTTPS中文名称&#xff1a;超文本传输安全协议&#xff0c;是以安全为目标的HTTP通道&#xff0c;简单讲是HTTP的安全版。即HTTP下加入SSL层&#xff0c;HTTPS的安全基础是SSL&#xff0c;因此加密的详细内容就需要SSL。 httpshttpssl 2.为什么需要使…
最新文章