CSS
2020-04-16 11:10:12 1 举报
AI智能生成
前端 CSS 重要概念
作者其他创作
大纲/内容
一些 CSS 实现的特殊效果
大扩符
html
<div class="quote"><br> <div></div><br> </div><br>
css
.quote {<br> position: relative;<br> width: 100%;<br> height: 40px;<br> background-color: azure;<br> }<br><br> .quote::before,<br> .quote::after,<br> .quote ::before,<br> .quote ::after {<br> content: '';<br> display: block;<br> position: absolute;<br><b><font color="#0076b3"> width: calc(50% - 20px);</font></b><br> height: 20px;<br> border-style: solid;<br> border-color: #000;<br> border-width: 0;<br> }<br><br> .quote ::before,<br> .quote ::after {<br> top: 0;<br> border-bottom-width: 1px;<br> }<br> .quote ::before {<br> left: 0;<br><b><font color="#0076b3"> border-bottom-left-radius</font></b>: 20px;<br> }<br><br> .quote ::after {<br> right: 0;<br> border-bottom-right-radius: 20px;<br> }<br><br> .quote::before,<br> .quote::after {<br> top: 20px;<br> border-top-width: 1px;<br> }<br><br> .quote::before {<br> left: 20px;<br> border-top-right-radius: 20px;<br> }<br><br> .quote::after {<br> right: 20px;<br> border-top-left-radius: 20px;<br> }<br>
思路
每个圆角的实现:一个 伪元素 有一条 border ,此 border 一头的圆角为 50% ;<br>伪元素 宽度的计算:利用 calc() 函数;<br>四个伪元素的产生:给内外 div 都加上俩伪元素。
https://www.cnblogs.com/arealy/p/7736856.html
特异性/权重计算
[a,b,c,d]
a
行内样式
b
id选择器
c
类名、<font color="#924517">伪类和属性</font><font color="#381e11">选择器</font>
d
标签和<font color="#924517">伪元素</font>选择器
@规则
条件规则组
这些语句使用相同的语法. 它们都可以包含嵌套语句,或者是 css 规则或者是@规则。<br><br>它们都表达: 它们所指的条件被评估为 true 或者 false,如果为 true 那么它们里面的语句生效。<br>
@media
@media screen and (min-width: 900px) {<br> article {<br> padding: 1rem 3rem;<br> }<br>}<br>
@supports
<font color="#c41230">@supports (display: flex)</font> {<br> @media screen and (min-width: 900px) {<br> article {<br> display: flex;<br> }<br> }<br>}<br>
媒体查询
Media queries are<br> used for the following<br>
<span style="font-size: inherit;">To conditionally apply styles with the CSS @media and @import at-rules.</span><br>
<b style="font-size: inherit;">To target specific media for the <style>, <link>, <source>, <br>and other </b><b style="font-size: inherit;">HTML elements with the media= attribute.</b><br>
You can also provide a media type or query inside a media attribute; <br><b>this resource will then only be loaded if the media condition is true.</b><br> For example:<br><br><link href="print.css" rel="stylesheet" media="print"><br><link href="mobile.css" rel="stylesheet" media="screen and (max-width: 600px)"<br>
<span style="font-size: inherit;">To test and monitor media states using the</span><b style="font-size: inherit;"> Window.matchMedia()</b><span style="font-size: inherit;"> and <br></span><b style="font-size: inherit;">MediaQueryList.addListener() </b><span style="font-size: inherit;">JavaScript methods.</span><br>
块格式化上下文 <br>Block Formatting Context<br>BFC<br>
块格式化上下文 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。
创建 BFC
常见
<ol><li>根元素(<html>)<br></li><li>浮动元素(元素的 float 不是 none)<br></li><li>绝对定位元素(元素的 position 为 absolute 或 fixed)<br></li><li>行内块元素(元素的 display 为 inline-block)<br></li><li><b>overflow 值不为 visible 的块元素</b><br></li><li>弹性元素(display为 flex 或 inline-flex元素的直接子元素)<br></li></ol>
网格与多列布局
<ol><li>网格元素(display为 grid 或 inline-grid 元素的直接子元素)<br></li><li>多列容器(元素的 column-count 或 column-width 不为 auto,包括 column-count 为 1)<br></li><li>column-span 为 all 的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中<br></li></ol>
表格
<ol><li>表格单元格(元素的 display为 table-cell,HTML表格单元格默认为该值)<br></li><li>表格标题(元素的 display 为 table-caption,HTML表格标题默认为该值)<br></li><li>匿名表格单元格元素(元素的 display为 table、table-row、 table-row-group、table-header-group、table-footer-group(分别是HTML table、row、tbody、thead、tfoot的默认属性)或 inline-table)<br></li></ol>
其他
<ol><li>display 值为 flow-root 的元素<br></li><li>contain 值为 layout、content或 paint 的元素<br></li></ol>
块格式化上下文包含创建它的元素内部的所有内容.<br>
意义
1. 浮动定位与清除浮动<br><b>浮动定位和清除浮动时只会应用于同一个BFC内的元素</b>。浮动不会影响其它BFC中元素的布局,而清除浮动只能清除同一BFC中在它前面的元素的浮动。<br><br>2. 外边距折叠问题<br><b>外边距折叠</b>(Margin collapsing)<b>也只会发生在属于同一BFC的块级元素之间</b>。<br>
应用
让父元素包含浮动的子元素
创建一个会包含这个浮动的BFC,通常的做法是<b><font color="#0076b3">设置父元素 overflow: auto/hidden</font></b> 等<b>其他的非默认的 overflow: visible 的值</b>。<br><br>当你使用这个属性只是为了创建BFC的时候,你可能会发现一些不想要的问题,比如滚动条或者一些剪切的阴影,需要注意。<br>另外,对于后续的开发,可能不是很清楚当时为什么使用overflow。所以你最好<b>添加一些注释来解释</b>为什么这样做。<br>
避免两个相邻 <div> 之间的 外边距合并 问题
子主题
CSS 基础框盒模型
<b>当对一个文档进行布局(lay out)的时候,浏览器的渲染引擎会根据标准的 CSS 基础框盒模型(CSS basic box model),将所有元素表示为一个个矩形的盒子(box)</b>。CSS 决定这些盒子的大小、位置以及属性(例如颜色、背景、边框尺寸…)。<br>
每个盒子由四个部分(或称区域)组成,<br>由它们各自的边界(Edge)所定义<br>
内容区域 content area
由内容边界限制,<b><font color="#16884a">容纳着元素的“真实”内容</font></b>,<b>例如文本、图像,或是一个视频播放器</b>。它的尺寸为 content width (或称 content-box 宽度)和 content height(或称 content-box 高度)。<br><br><font color="#924517">如果元素是块元素且box-sizing 为 content-box(默认),</font><font color="#5c5c5c">则内容区域的大小可明确地通过</font><font color="#924517"> width、min-width、max-width、height、min-height,和 max-height 控制。</font><br>
内边距区域 padding area
由内边距边界限制,扩展自内容区域。它的尺寸是 padding-box 宽度 和 padding-box 高度。<br><br>内边距的粗细可以由 padding-top、padding-right、padding-bottom、padding-left,和简写属性 padding 控制。<br>
边框区域 border area
由边框边界限制,扩展自内边距区域来容纳边框的区域。其尺寸为 border-box 宽度 和 border-box 高度。<br><br>边框的粗细由 border-width 和简写的 border 属性控制。<br><font color="#924517">如果 box-sizing 属性被设为 border-box</font>,那么边框区域的大小可明确地通过 width、min-width, max-width、height、min-height,和 max-height 属性控制。<br><font color="#924517">假如框盒上设有背景(background-color 或 background-image),背景将会一直延伸至边框的外沿(在边框下层延伸,边框会盖在背景上)</font>。此默认表现可通过 CSS 属性 <font color="#924517">background-clip </font>来改变。<br>
外边距区域 margin area
由外边距边界限制,用空白区域扩展边框区域,以分开相邻的元素。它的尺寸为 margin-box 宽度 和 margin-box 高度。<br><br>外边距区域的大小由 margin-top、margin-right、margin-bottom、margin-left,和简写属性 margin 控制。在发生外边距合并的情况下,由于盒之间共享外边距,外边距不容易弄清楚。<br><br>最后,对于<b>不可替代的行内元素</b>来说,<b><font color="#16884a">其占用空间(每一行的高度)则由 line-height 属性决定</font></b>,即使边框和内边距仍会显示在内容周围。<br>
外边距合并
<b>块之间的 上下边距 有时会合并成 边距中最大的单个边距,</b>这种行为称为边界折叠(margin collapsing)。<br><br>浮动和绝对定位的元素永远不会产生外边距重叠行为。
形成外边距重叠的三种情况
同一层相邻元素之间
相邻的两个元素之间的外边距重叠,除非后一个元素加上clear-fix清除浮动。
没有内容将父元素和后代元素分开
如果没有 <b>border,padding,行内内容</b>,也没有创建 <b>块级格式上下文</b> 或 <b>清除浮动</b> 来分开一个块级元素的上边界 margin-top 与其内一个或多个后代块级元素的上边界 margin-top;<br><br>或没有 <b>边框,内边距,行内内容,高度height,最小高度min-height</b> 或 <b>最大高度max-height</b> 来分开一个块级元素的下边界 margin-bottom 与其内的一个或多个后代后代块元素的下边界 margin-bottom,则就会出现父块元素和其内后代块元素外边界重叠。<br><br>重叠的边距会溢出到父级块元素外面。<br>
空的块级元素
If there is no <b>border, padding, inline content, height, or min-height</b> to separate a block's margin-top from its margin-bottom, then its top and bottom margins collapse.
可替换元素
在 CSS 中<b>可替换元素是一种外部对象,它们外观的渲染是独立于 CSS 的</b>。<br><br>简单来说,它们的内容不受当前文档的样式的影响。<b><font color="#16884a">CSS 可以影响可替换元素的位置,但不会影响到可替换元素自身的内容</font></b>。<br><b>某些可替换元素,例如</b> <b><iframe> 元素,可能具有自己的样式表,但它们不会继承父文档的样式</b>。<br><br>CSS 能对可替换元素产生的其他影响在于,<b><font color="#5c5c5c">部分属性可以控制</font><font color="#924517">元素内容在其框中的位置或定位方式(</font></b>见下面的控制内容框中的对象位置)。<br>
可替换元素
典型的可替换元素
<ul><li><iframe><br></li><li><video><br></li><li><embed><br></li><li><img><br></li></ul>
仅在特定情况下<br>被作为可替换元素处理<br>的元素
<ul><li><option><br></li><li><audio><br></li><li><canvas><br></li><li><object></li></ul>
HTML 规范也说了 <input> 元素可替换,因为 "image" 类型的 <input> 元素就像<img>一样被替换。<br>但是<b>其他形式的控制元素,包括其他类型的 <input> 元素,被明确地列为非可替换元素</b>(non-replaced elements)。<br>该规范用术语小挂件(Widgets)来描述它们默认的限定平台的渲染行为。<br><br>用 CSS content 属性插入的对象是<b>匿名的可替换元素</b>。<b>它们并不存在于 HTML 标记中</b>,因此是“匿名的”。<br>
CSS 与可替换元素
CSS 在某些情况下会对可替换元素做一些特殊处理,比如计算外边距(margin)和一些 auto 的具体值。<br><br>需要注意的是,一部分(并非全部)可替换元素,有固有的尺寸或基线(baseline)会被一些 CSS 属性如 vertical-align 用到。<br><b><font color="#924517">只有可替换元素才有固有尺寸</font></b>。<br>
<font color="#16884a">控制内容框中的对象位置</font>
某些CSS属性可用于指定 可替换元素中包含的内容对象 在该元素的盒区域内的位置或定位方式。
<font color="#924517">object-fit</font>
指定可替换元素的内容对象如何适应于元素盒
<font color="#924517">object-position</font>
指定可替换元素的内容对象在元素盒区域中的位置<br>
padding
The padding CSS property sets the padding area on all four sides of an element. <br>It is a shorthand for padding-top, padding-right, padding-bottom, and padding-left.<br>
语法
取值
<长度>
固定值
<百分比>
<font color="#f1753f">相对于包含块的宽度</font>
background-size
background-size 设置背景图片大小
语法
规定背景的方法
<font color="#924517">关键词</font>
contain
cover
<font color="#924517">提供一个宽度值</font>
高度默认为 auto
<font color="#924517">提供宽度与高度值</font>
第一个设置宽度,第二个设置高度。<br>每个值可以是 长度、百分比 或者 auto
值
contain
缩放背景图片以完全装入背景区,可能背景区部分空白。
cover
缩放背景图片以完全覆盖背景区,可能背景图片部分看不见。
auto
以背景图片的比例缩放背景图片。
<length>
指定背景图片大小,不能为负值。
<percentage>
<percentage> 值,指定<b><font color="#16884a">背景图片相对背景区(background positioning area)的百分比</font><font color="#5c5c5c">,</font></b>不能为负值。<br><br><b><font color="#5c5c5c">背景区由 </font><font color="#924517">background-origin </font></b><font color="#5c5c5c"><b>设置</b>,<b>默认为盒模型的内容区与内边距,也可设置为只有内容区,或者还包括边框</b>。</font><br>如果<b><font color="#924517"> background-attachment 为 fixed</font></b>,<b>背景区为浏览器可视区(即视口),不包括滚动条</b>。<br>
0 条评论
下一页