CSS 笔记

https://www.w3schools.com/css/default.asp


1. CSS Margin

  • margin: auto

有自动居中的效果,但是似乎只对左右有效。

div {
  width: 300px;
  margin: auto;
  border: 1px solid red;
}
  • margin 叠加(margin collapse)

对于上下俩元素,如果一个 margin-bottom: 50px,一个 margin-top: 20px:
则发生 margin 叠加,俩元素间距为 50px。

只有 margin 叠加,没有 padding 叠加。


2. CSS 高度与宽度

  • 宽高的 Value 取值
    • auto - 默认。浏览器计算宽高;
    • length - 设定宽高,单位是 px,cm,等;
    • % - 百分比;
    • initial - Sets the height/width to its default value
    • inherit - 继承父元素的值。

3. CSS 盒模型

  • 盒模型的 4 个部分
    • Content - 盒模型本体,包括详细内容(文本或者图片);
    • Padding - Content 周边的一圈空白;
    • Border - 边框;
    • Margin - 边框外周边的一圈空白。

盒模型 Border 外边还可以加一圈 Outline。


4. CSS Text

  • Text 对齐
    • text-align: 文字水平对齐,center | left | right | justify
    • text-align-last: 文字最后一行对齐:center | left | right | justify
    • direction: ltr | rtl
    • unicode-bidi:
    • vertical-align: 文字垂直对齐。
  • Text 字间距
    • text-indent: 文本块中第一行的缩进。
    • letter-spacing: 字符左右的间距。
    • line-height: 行间距。
    • word-spacing: 单词之间的间距。
    • white-space: 决定是否换行。

5. CSS Display

  • display: block

尽全力拉伸至左右边,占满一整行。

  • display: inline

不会占满一行,而是仅占宽度。

  • display: none

不显示。


6. CSS Position

  • position: static

默认位置。不受top,bottom,left,right影响。

  • position: relative

从默认位置偏移指定量。

  • position: fixed

无论页面是否滚动,均固定位置不变。

  • position: absolute

相对固定于最近的父元素。

  • position: sticky

sticky 滚动时在 relative 和 fixed 之间切换。效果类似于,可以在滚动时吸附在某个边缘上。


7. CSS Overflow

  • overflow: visible

内容可以溢出到盒子外。

  • overflow: hidden

内容不能溢出。

  • overflow: scroll

内容不溢出,但会在水平和垂直方向加上滚动条。

  • overflow: auto

类似于scroll,但只在需要的时候才会加滚动条。

  • overflow-x 和 overflow-y

规定仅限于水平和垂直。


7. CSS 浮动与清除

float 主要是让图片相对于文字浮动于左或者右。
clear 主要是让 float 的下一个元素显示在 float 的下面,而不是左或右。

  • The clearfix Hack

如果 float 元素比容器高,就会溢出容器。
包含 float 的容器,加上 overflow: auto,即可解决问题。

.clearfix {
  overflow: auto;
}

更安全的用法如下:

.clearfix::after {
  content: "";
  clear: both;
  display: table;
}
  • Float 例子 - 等宽 box

可以利用 float: left,绘制等宽的 box

* {
  box-sizing: border-box;
}

.box {
  float: left;
  width: 33.33%; /* three boxes (use 25% for four, and 50% for two, etc) */
  padding: 50px; /* if you want space between the images */
}
  • Float 例子 - Navigation Menu

8. display: inline-block

  • 对比 display: inline

主要区别在于 inline-block 允许设置元素的宽高。
inline-block 不会忽略 top 与 bottom 的 margins/paddings,而 inline 会。

  • 对比 display: block

inline-block 不会换行,所以允许元素接着 inline-block 排布。


9. CSS 伪类

  • 链接伪类
/* unvisited link */
a:link {
  color: #FF0000;
}

/* visited link */
a:visited {
  color: #00FF00;
}

/* mouse over link */
a:hover {
  color: #FF00FF;
}

/* selected link */
a:active {
  color: #0000FF;
}
  • first-child 伪类
p:first-child {
  color: blue;
}
  • :lang 伪类

:lang 伪类允许为不同的语言定义不同的规则。

<html>
<head>
<style>
q:lang(no) {
  quotes: "~" "~";
}
</style>
</head>
<body>

<p>Some text <q lang="no">A quote in a paragraph</q> Some text.</p>

</body>
</html>
  • 其他常用的伪类:
    • :checked
    • :disabled / :enabled
    • :focus
    • :not(selector)
    • 等等。

10. CSS 伪元素

区别于伪类,伪元素通常带俩冒号。

  • ::first-line 伪元素

选中第一行。

  • ::first-letter 伪元素

选中第一个字符。

  • ::before 伪元素

用于在元素前插入一些其他内容。
例如下面这个,在每个<h1>元素前插入一张图片:

h1::before {
  content: url(smiley.gif);
}
  • ::after 伪元素

类似 ::before伪元素,在元素后插入一些内容。

  • ::marker 伪元素

选中<li>元素开头的 marker。

  • ::selection 伪元素

选中被用户鼠标选中的文本。


11. CSS 单位

css 的 单位 分为 绝对单位 和 相对单位。
绝对单位包括:cm、mm、in、px、pt、pc。

单位 描述
cm centimeters
mm millimeters
in inches (1in = 96px = 2.54cm)
px * pixels (1px = 1/96th of 1in)
pt points (1pt = 1/72 of 1in)
pc picas (1pc = 12 pt)

相对单位包括:

单位 描述
em Relative to the font-size of the element (2em means 2 times the size of the current font)
ex Relative to the x-height of the current font (rarely used)
ch Relative to width of the "0" (zero)
rem Relative to font-size of the root element
vw Relative to 1% of the width of the viewport*
vh Relative to 1% of the height of the viewport*
vmin Relative to 1% of viewport's* smaller dimension
vmax Relative to 1% of viewport's* larger dimension
% Relative to the parent element

通常使用 em / rem,来创建可扩展式的布局。


11. CSS Math 函数

  • calc() 函数
#div1 {
  position: absolute;
  left: 50px;
  width: calc(100% - 100px);
  border: 1px solid black;
  background-color: yellow;
  padding: 5px;
}
  • max() 函数 / min() 函数
#div1 {
  background-color: yellow;
  height: 100px;
  width: max(50%, 300px);
}

12. CSS 阴影

  • text-shadow

基本效果:

h1 {
  text-shadow: 2px 2px;
}

改变阴影颜色:

h1 {
  text-shadow: 2px 2px red;
}

增加模糊:

h1 {
  text-shadow: 2px 2px 5px red;
}

多重阴影:

h1 {
  text-shadow: 0 0 3px #FF0000, 0 0 5px #0000FF;
}
  • box-shadow

基础用法:

div {
  box-shadow: 10px 10px;
}

改变阴影颜色:

h1 {
  box-shadow: 10px 10px lightblue;
}

模糊效果:

div {
  box-shadow: 10px 10px 5px lightblue;
}

阴影大小:

div {
  box-shadow: 10px 10px 5px 12px lightblue;
}

内部阴影:

div {
  box-shadow: 10px 10px 5px lightblue inset;
}

多重阴影:

div {
  box-shadow: 5px 5px blue, 10px 10px red, 15px 15px green;
}

13. CSS 2D 变形

  • translate()

平移 x 和 y 轴方向指定 px。

div {
  transform: translate(50px, 100px);
}
  • rotate()

旋转指定的角度,顺时针或者逆时针。

div {
  transform: rotate(20deg); /* .25turn 可以旋转90° */
}
  • scale()

按 水平/垂直 放大或者缩小元素。

div {
  transform: scale(2, 3);
}
  • scaleX()

按 水平 放大或者缩小元素。

  • scaleY()

按 垂直 放大或者缩小元素。

  • skew()

按 水平/垂直 倾斜元素。

  • skewX()

按 水平 倾斜元素。

  • skewY()

按 垂直 倾斜元素。

  • matrix()

matrix() 函数把上面的都 All in one 了。

matrix(scaleX, skewY, skewX, scaleY, translateX, translateY)


13. CSS 3D 变形

Function Description
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) Defines a 3D transformation, using a 4x4 matrix of 16 values
translate3d(x,y,z) Defines a 3D translation
translateX(x) Defines a 3D translation, using only the value for the X-axis
translateY(y) Defines a 3D translation, using only the value for the Y-axis
translateZ(z) Defines a 3D translation, using only the value for the Z-axis
scale3d(x,y,z) Defines a 3D scale transformation
scaleX(x) Defines a 3D scale transformation by giving a value for the X-axis
scaleY(y) Defines a 3D scale transformation by giving a value for the Y-axis
scaleZ(z) Defines a 3D scale transformation by giving a value for the Z-axis
rotate3d(x,y,z,angle) Defines a 3D rotation
rotateX(angle) Defines a 3D rotation along the X-axis
rotateY(angle) Defines a 3D rotation along the Y-axis
rotateZ(angle) Defines a 3D rotation along the Z-axis
perspective(n) Defines a perspective view for a 3D transformed element

14. CSS Transitions 过渡

  • 普通过渡

要创建一个 transition 过渡,你要指定两件事:

  • 想要使用过渡效果的 CSS 属性
  • 过渡效果的时长

如果不指定时长,那么过渡就没有任何效果,因为时长是 0。

div {
  width: 100px;
  height: 100px;
  background: red;
  transition: width 2s;
}
div:hover {
  width: 300px;
}
  • 同时指定多个属性值
div {
  transition: width 2s, height 4s;
}
  • 指定速度曲线
    • ease - 过渡缓慢开始,再快,再缓慢结束(默认值)
    • linear - 从头至尾都是一个速度
    • ease-in - 过渡缓慢开始
    • ease-out - 过渡缓慢结束
    • ease-in-out - 缓慢开始和缓慢结束
    • cubic-bezier(n,n,n,n) - 使用 cubic-bezier 函数,自定义一个过渡
  • 延迟过渡效果时间 transition-delay
div {
  transition-delay: 1s;
}
  • 过渡+变形 Transition + Transformation
div {
  width: 100px;
  height: 100px;
  background: red;
  transition: width 2s, height 2s, transform 2s;
}

div:hover {
  width: 300px;
  height: 300px;
  transform: rotate(180deg);
}

14. CSS Animations 动画

(待更)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • CSS 什么是CSSCSS的作用是:可以给网页中的每一个元素设置样式("化妆"、排版布局),让网页更加精美。完全没...
    z_z阅读 318评论 0 0
  • 1. CSS初识 用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)...
    Scincyc阅读 293评论 0 0
  • 前端 VScode 自动换行(word wrap) ctrl + s 保存 ctrl + a 全选 ctrl + ...
    东方寂明阅读 963评论 0 1
  • !DOCTYPE (文档声明) 加入该语法(标准模式), 让浏览器以 标准模式(HTML 5) 识别代码 不加入,...
    coderlion阅读 305评论 0 0
  • 盒子模型: padding为1个值代表上下左右四个值相同; padding为2个值:第一个代表上下内边距,第二...
    前端森林阅读 179评论 0 0