Open qiwihui opened 2 years ago
《前端小课──用好HTML》的读书笔记。
外部引入:通过 link 的方式引用 CSS 样式
<head> <link rel="stylesheet" href="style.css"> </head>
内部引入,在 HTML 中的 head 位置添加 style 标签
<head> <style> .title { color: red; font-size: 18px; } </style> </head>
内联样式
<p style="color: red; font-size: 18px;">内容</p>
white-space
normal
nowrap
overflow
overflow-x
overflow-y
/* 默认值。内容不会被修剪,会呈现在元素框之外 */ overflow: visible; /* 内容会被修剪,并且其余内容不可见 */ overflow: hidden; /* 内容会被修剪,浏览器会显示滚动条以便查看其余内容 */ overflow: scroll; /* 由浏览器定夺,如果内容被修剪,就会显示滚动条(默认值) */ overflow: auto; /* 规定从父元素继承overflow属性的值 */ overflow: inherit;
/*清除标签默认边距*/ * { margin: 0; padding: 0; }
注意:写 CSS 代码的时候,即使某个属性写错,浏览器也不会报错,只会忽略无法识别的 CSS 样式。
标签选择器: 如 p , li 等
p
li
class 选择器:如 .first
.first
ID 选择器: #firstid
#firstid
通用选择器: * ,作用于所有的标签
*
属性选择器:根据属性来匹配HTML元素
/* 匹配所有使用属性 "lefe" 的元素 */ [lefe] { color: green; } /*匹配所有使用属性为 "lefe",且值为 liquid 的元素*/ [lefe="liquid"] { background-color: goldenrod; } /*匹配所有使用属性为 "lefe",且值包含 spicy 的元素*/ [lefe~="spicy"] { color: red; }
类似于“正则表达式”的属性选择器,比如: [attr^=val] 匹配以 val 开头的元素, [attr$=val] ,匹配以 val 结尾的元素, [attr*=val] 匹配包含 val 的字符串的元素
[attr^=val]
[attr$=val]
[attr*=val]
伪选择器(pseudo-selectors):它包含伪类(pseudo-classes)和伪元素(pseudo-elements)。这类选择器不是真正意义上的选择器,它作为选择器的一部分,起到选择器匹配元素的限定条件。
/* 匹配超链接样式 */ a { color: blue; font-weight: bold; } /* 访问后的状态 */ a:visited { color: yellow; } /* 鼠标悬停、点击、聚焦时的样式 */ a:hover, a:active, a:focus { color: darkred; text-decoration: none; }
伪元素(pseudo-elements)选择器,它以“ :: ” 为标识符
p::first-letter{ font-weight: bold; } p::first-line{ font-size: 3em; }
/* Selects any <p> that is the first element among its siblings p:first-child 选择的是孩子节点中第一个元素是 p 的元素 */ p:first-child { color: lime; }
组合选择器(Combinators): 这种选择器可以作用于多个 HTML 元素,有多种组合方式
A B {}
A > B {}
A + B {}
A ~ B {}
A, B {}
伪类选择器:作用是选中某个元素中符合某些条件的元素。作用于现有元素,相当于给现有元素添加某些属性。使用单个冒号 :
:
:first-child :not :nth-child() :only-child() :root() :disabled
伪元素选择器:作用就是给现有元素添加某些新的内容,就好比给某个元素添加了一个新的标签,使用2个冒号 ::
::
::first-letter 表示对首字母进行操作 ::first-line 对首行内容进行操作 ::before 给已知元素的前面拼接新的内容 ::after 给已知元素的后面拼接新的内容
@规则在CSS中用于传递元数据、条件信息或其他描述性信息。它们以at符号(@)开头,后跟一个标识符来说明它是什么类型的规则,然后是某种类型的语法块,以分号(;)结尾。由标识符定义的每种类型的 at 规则都有其自己的内部语法和语义。
@charset and @import (metadata) @media or @document (条件,嵌套申明) @font-face (描述信息)
下面这个 CSS 只适用于屏幕超过 800px 的设备:
@media (min-width: 801px) { body { margin: 0 auto; width: 800px; } }
@media 语法
@media
@media mediaType and|not|only (media feture) { // css }
border-width
border-style
border-color
font-size: 文字大小;
font-weight:字重,字体粗细,可以这样理解吧;
color:字体颜色;
text-align:字体对齐方式;
text-decoration: 文字修饰,比如下划线,删除线;
letter-spacing: 文字间距;
line-height: 行高;
font-style: 文字样式,比如斜体;
两种盒子类型
通过 display 修改盒子的显示方式
display
.title { display: inline; }
盒模型
模式
标准的盒子模型
对于这种盒子模式,给它设置的 width 和 height 是 content 的宽高,当给盒子添加 padding 和 border 的时候,会增加盒子的整体大小。「外边距不会计入盒子的大小,它只是表示外部的边距」。
诡异盒子模型(The alternative CSS box model)
对于这种盒子模式,给它设置的 width 和 height 是盒子的宽高,也就是说内容 content 的宽需要减去 border 和 padding 的宽。
谷歌浏览器默认的是标准的盒模型,可以通过:
box-sizing: border-box;
来修改盒模型为诡异盒模型。
display:inline
display:block
display:inline-block
这种布局方式结合了 inline 和 block 这两种元素的特性,它与块级元素不同的是:元素不会单独占用一行;相同的是:可以使用 width 和 height,可以通过 padding、margin 和 border 来控制元素的显示位置。
说白了就是除了不会单独占一行,其余的与块级元素一致。
display:none 隐藏元素
display:none
display:flex 一维
display:flex
display:grid 二维
display:grid
设置背景图
background-color: antiquewhite; background-image: url('./logo_suyan.png'); background-repeat: no-repeat; background-position: center; background-size: cover;
top | left | bottom | right
no-repat
repeat
repat-x
img 标签
img
行内(inline)元素
<img class="logo" src="./images/1.png" alt="图片">
.logo { /* 表示设置图片的宽度,如果只设置宽度,那么 img 标签的高度会根据图片的大小进行等比缩放。 只设置高度也是同样的道理。 如果即设置了高度又设置了宽度,那么图片的高度和宽度即为设置的宽高。 */ width: 30px; /* 指定行内元素的垂直对齐方式 */ vertical-align: middle; }
text-overflow 和 -webkit-line-clamp
.singal-line { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.two-line { display: -webkit-box; overflow: hidden; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
text-overflow:只对块级元素起作用,表示对超出指定区域的内容该如何显示
-webkit-box:webkit 的 CSS 扩展属性
.myClass, [type=chekbox], :only-of-type
#myDiv
style
!important
g
z
y
x
主要有两种方式
@keyframes
.move-box-animation { /* animation: name duration timing-function delay iteration-count direction fill-mode; */ /* 名字,为 @keyframes 的名字 */ animation-name: move; /* 动画的时间 */ animation-duration: 5s; /* 动画执行函数 */ animation-timing-function: ease-in-out; /* 动画延迟时间 */ animation-delay: 1s; /* 动画重复次数 */ animation-iteration-count: 10; /* 动画的方向,先正向后逆向 */ animation-direction: alternate; /* 动画执行后的填充模式 */ animation-fill-mode: backwards; /* 动画的运行状态 */ animation-play-state: running; } @keyframes move { 0% { left: 0; top: 0; } 25% { left: 100px; top: 0; } 50% { left: 100px; top: 100px; } 75% { left: 0; top: 100px; } 100% { left: 0; top: 0; } }
.move-transition { /* transition-property: all; */ transition-property: background-color, height, width; transition-duration: 1.8s, 1.0s, 1.0s; transition-delay: 0.1s; transition-timing-function: linear; }
less,sass
GitHub repo: qiwihui/blog Follow me: @qiwihui Site: QIWIHUI
GitHub repo: qiwihui/blog
Follow me: @qiwihui
Site: QIWIHUI
《前端小课──用好HTML》的读书笔记。
使用css三种方式
外部引入:通过 link 的方式引用 CSS 样式
内部引入,在 HTML 中的 head 位置添加 style 标签
内联样式
块级标签和 inline 标签
white-space
属性作用就是告诉浏览器遇到「空格」该如何处理,这里的空格不是单纯意义上的空格。normal
nowrap
overflow
属性overflow-x
,overflow-y
清除标签默认边距
CSS中的选择器
注意:写 CSS 代码的时候,即使某个属性写错,浏览器也不会报错,只会忽略无法识别的 CSS 样式。
标签选择器: 如
p
,li
等class 选择器:如
.first
ID 选择器:
#firstid
通用选择器:
*
,作用于所有的标签属性选择器:根据属性来匹配HTML元素
类似于“正则表达式”的属性选择器,比如:
[attr^=val]
匹配以 val 开头的元素,[attr$=val]
,匹配以 val 结尾的元素,[attr*=val]
匹配包含 val 的字符串的元素伪选择器(pseudo-selectors):它包含伪类(pseudo-classes)和伪元素(pseudo-elements)。这类选择器不是真正意义上的选择器,它作为选择器的一部分,起到选择器匹配元素的限定条件。
伪元素(pseudo-elements)选择器,它以“ :: ” 为标识符
组合选择器(Combinators): 这种选择器可以作用于多个 HTML 元素,有多种组合方式
A B {}
: A 元素的所有后代元素 B 都会起作用。A > B {}
: A 元素的直接子节点会起作用,也就是只适用于 A 节点的第一层所有的子节点。A + B {}
: 匹配 A 的下一个兄弟节点,AB具有相同的父节点,并且 B 紧跟在 A 的后面;A ~ B {}
: B是 A 之后的任意一个(所有)兄弟节点。A, B {}
:A 和 B 元素具有同一规则的 CSS 样式,不同元素使用逗号隔开。伪选择器
伪类选择器:作用是选中某个元素中符合某些条件的元素。作用于现有元素,相当于给现有元素添加某些属性。使用单个冒号
:
伪元素选择器:作用就是给现有元素添加某些新的内容,就好比给某个元素添加了一个新的标签,使用2个冒号
::
@规则
@规则在CSS中用于传递元数据、条件信息或其他描述性信息。它们以at符号(@)开头,后跟一个标识符来说明它是什么类型的规则,然后是某种类型的语法块,以分号(;)结尾。由标识符定义的每种类型的 at 规则都有其自己的内部语法和语义。
下面这个 CSS 只适用于屏幕超过 800px 的设备:
@media
语法border
border-width
:表示边框的宽度,可以分别设置上下左右边框为不同的宽度,比如 border-bottom-width;border-style
: 表示边框的样式,可以分别设置上下左右边框为不同的样式,比如 border-bottom-style,可以取下面几种值:node、hidden、dotted、dashed、solid 等;border-color
:表示边框的颜色,可以分别设置上下左右边框为不同的颜色。一些文字属性
font-size: 文字大小;
font-weight:字重,字体粗细,可以这样理解吧;
color:字体颜色;
text-align:字体对齐方式;
text-decoration: 文字修饰,比如下划线,删除线;
letter-spacing: 文字间距;
line-height: 行高;
font-style: 文字样式,比如斜体;
盒子模型
两种盒子类型
通过
display
修改盒子的显示方式盒模型
模式
标准的盒子模型
对于这种盒子模式,给它设置的 width 和 height 是 content 的宽高,当给盒子添加 padding 和 border 的时候,会增加盒子的整体大小。「外边距不会计入盒子的大小,它只是表示外部的边距」。
诡异盒子模型(The alternative CSS box model)
对于这种盒子模式,给它设置的 width 和 height 是盒子的宽高,也就是说内容 content 的宽需要减去 border 和 padding 的宽。
谷歌浏览器默认的是标准的盒模型,可以通过:
来修改盒模型为诡异盒模型。
display
display:inline
display:block
display:inline-block
这种布局方式结合了 inline 和 block 这两种元素的特性,它与块级元素不同的是:元素不会单独占用一行;相同的是:可以使用 width 和 height,可以通过 padding、margin 和 border 来控制元素的显示位置。
说白了就是除了不会单独占一行,其余的与块级元素一致。
display:none
隐藏元素display:flex
一维display:grid
二维使用图片
设置背景图
top | left | bottom | right
,在某个边缘的位置,另一个维度为 50%。比如 top,背景图的起始位置为顶部,在X轴方向为 50%,居中显示;no-repat
不重复,repeat
重复,repat-x
X轴上重复,还有其它关键字。img
标签行内(inline)元素
显示多行文字
text-overflow 和 -webkit-line-clamp
text-overflow:只对块级元素起作用,表示对超出指定区域的内容该如何显示
-webkit-box:webkit 的 CSS 扩展属性
CSS权重
*
:通用选择器,权重最低,就是 0,第 1 张图就是此意;.myClass, [type=chekbox], :only-of-type
: 类、属性、伪类选择器。第 5 张图,一个类选择器,权重值表示为 0-1-0;5-15张图能看懂了吧;#myDiv
:id选择器,一条鲨鱼,权重比较高,权重值为 1-0-0;`style
:权重值更高,权重值为 1-0-0-0;!important
: 无敌,我是老大,告诉浏览器必须使用我定义的属性;g
:直接在元素中使用属性,权重最高,可以看做 1-0-0-0;z
:id选择器,权重次子,可以看做 0-1-0-0;y
:类、伪类、属性选择器,权重低,可以看做 0-0-1-0;x
:元素、伪元素选择器,权重最低,可以看做 0-0-0-1;动画
主要有两种方式
@keyframes
定义的名字。@keyframes
指定某一帧的动画如何变化,可通过 % 来控制各个阶段的属性值长度单位
易复用、易维护、结构清晰的 CSS
less,sass