CSS笔记
CSS
CSS 和 HTML的结合方式有3 种:
- 行内样式:在某个特定的标签里采用 style属性。范围只针对此标签。
- 内嵌样式表:在页面的 head 里采用
<style>
标签。范围针对此页面。 - 引入外部样式表 css 文件的方式。这种引入方式又分为两种:
- 采用
<link>
标签。例如:<link rel = "stylesheet/alternate stylesheet" type = "text/css" href = "a.css"></link>
- 采用 import,必须写在
<style>
标签中,并且必须是第一句。例如:@import url(a.css) ;
- 采用
两种引入样式方式的区别:外部样式表中不能写标签,但是可以写 import 语句。
字体属性
- line-height:行高
- font-size:字号
- font-family:字体
- Microsoft YaHei
- SimSun(宋体)
- font-weight:加粗(bold)/正常(nomal)
- 取值100-900整百
简写—>font: 加粗 字号/行高/ 字体;
举例—>font: 400(700) 14px/24px “宋体”;
简写—>font:12px/30px “Times New Roman”,”Microsoft YaHei”,”SimSun”;
文本属性
- letter-spacing: 单个字母之间的间距
- word-spacing: 单词之间的间距
- text-decoration: 字体修饰
- none 去掉下划线
- underline下划线
- line-through 中划线
- overline 上划线
- text-transform: 单词字体大小写
- uppercase 大写
- lowercase 小写
- capitalize 每个单词的首字母大写
- color: 字体颜色
- text-align: 在当前容器中的对齐方式
- left、right、center、justify
鼠标的属性 cursor
用的时候再查
auto
:默认值。浏览器根据当前情况自动确定鼠标光标类型。pointer
:IE6.0,竖起一只手指的手形光标。就像通常用户将光标移到超链接上时那样。hand
:和pointer
的作用一样:竖起一只手指的手形光标。就像通常用户将光标移到超链接上时那样。
背景属性
background-color
background-image:url(img/1.jpg);
background-repeat 默认平铺满
- no-repeat
- repeat-x横向平铺
- repeat-y纵向平铺
background-position:向右偏移量(x) 向下偏移量(y);
- 描述左右的词:left、center、right
- 描述上下的词:top 、center、bottom
background-attachment: 设置背景图片是否跟着滚动条一起移动
- scroll 随着移动
- fixed 固定
background-clip 背景裁切
设置元素的背景(背景图片或颜色)是否延伸到边框下面
border-box
超出 border-box 的部分,将裁剪掉padding-box
超出 padding-box 的部分,将裁剪掉content-box
超出 content-box 的部分,将裁剪掉
background-origin 背景原点
- 控制背景从什么地方开始显示
- padding-box 内边距开始
- border-box 边框区开始
- content-box 内容区开始
background-size 背景尺寸
- (宽 高)具体数值/百分比
- cover 图片始终填充满容器,且保证长宽比不变。图片如果有超出部分,则超出部分会被隐藏
- contain 图片完整地显示在容器中,且保证长宽比不变。可能会导致容器的部分区域为空白
background-image 渐变
线性渐变:沿着某条直线朝一个方向产生渐变效果
```css
background-image: linear-gradient(方向(默认是从上往下), 起始颜色, 终止颜色); background-image: linear-gradient(to right, yellow, green); linear-gradient(to right, yellow 0%, red 40%, green 70%, blue 100%);
1
2
3
4
5
6
7
8
9
10
- 方向可以是:`to left`、`to right`、`to top`、`to bottom`、角度`30deg`(指的是顺时针方向30°)。
- 径向渐变:从一个中心点开始沿着四周产生渐变效果
- ```css
background-image: radial-gradient(辐射的半径大小, 中心的位置, 起始颜色, 终止颜色);
background-image: radial-gradient(100px at center,yellow ,green);
重复渐变
设置多个背景
- 用以逗号隔开,可用于自适应局。
1 | background: url(images/bg1.png) no-repeat left top, |
clip-path:裁剪出元素的部分区域做展示(不是背景属性)
综合属性
background
,它的作用是:将上面的多个属性写在一个声明中。
举例:
1 | background:red url(1.jpg) no-repeat 100px 100px fixed; |
等价于:
1 | background-color:red; |
色彩的表示方法
RGBA 表示法
1 | background-color: rgba(0, 0, 255, 0.3); |
代码解释:
RGBA 即:Red 红、Green 绿、Blue 蓝、Alpha 透明度。
R、G、B 的取值范围是:0
255;透明度的取值范围是 01。
十六进制表示法
所有#aabbcc的形式,能够简化为**#abc**。举例如下:
比如:
1 | background-color:#ff0000; |
等价于:
1 | background-color:#f00; |
比如:
1 | background-color:#112233; |
等价于:
1 | background-color:#123; |
但是,比如下面这个是无法简化的:
1 | background-color:#222333; |
再比如,下面这个也是无法简化的:
1 | background-color:#123123; |
几种常见的颜色简写可以记住。如下:
1 | #000 黑 |
HSLA 表示法
举例:
1 | background-color: hsla(240,50%,50%,0.4); |
解释:
H
色调,取值范围 0~360。0或360表示红色、120表示绿色、240表示蓝色。S
饱和度,取值范围 0%~100%。值越大,越鲜艳。L
亮度,取值范围 0%~100%。亮度最大时为白色,最小时为黑色。A
透明度,取值范围 0~1。
推荐链接:配色宝典
高级选择器
- 后代选择器:用空格隔开
- 交集选择器:选择器之间紧密相连
- 并集选择器(分组选择器):用逗号隔开
- 伪类选择器
- 静态伪类:只能用于超链接的样式。
-
:link
超链接点击之前 -
:visited
链接被访问过之后
-
- 动态伪类:针对所有标签都适用的样式。
-
:hover
“悬停”:鼠标放到标签上的时候 -
:active
“激活”: 鼠标点击标签,但是不松手时。 -
:focus
是某个标签获得焦点时的样式(比如某个输入框获得焦点)
-
- 在css中,这四种状态必须按照固定的顺序写:==a:link 、a:visited 、a:hover 、a:active==
- 静态伪类:只能用于超链接的样式。
了解:
- 子代选择器,用符号
>
表示- 序选择器
- 下一个兄弟选择器
CSS的层叠性
CSS像艺术家一样优雅,像工程师一样严谨。 太难了,又抽象,又现实
当多个选择器,选择上了某个元素的时候,要按照如下顺序统计权重:
- id 选择器
- 类选择器、属性选择器、伪类选择器
- 标签选择器、伪元素选择器
ID选择器 > 类选择器 > 标签选择器
!important标记(属性):优先级最高
1 属性名: 属性值 !important;
盒子模型
- width和height:内容的宽度、高度(不是盒子的宽度、高度)。
- padding:内边距。
- border:边框。
- margin:外边距。
1 | border:1px solid red; |
1 | border-width:10px 20px; |
标准文档流
行内元素和块级元素
- 行内元素
- 与其他行内元素并排;
- 不能设置宽、高。默认的宽度,就是文字的宽度。
- 块级元素
- 霸占一行,不能与其他任何元素并列;
- 能接受宽、高。如果不设置宽度,那么宽度将默认变为父亲的100%。
复习以下HTML
- 文本级标签:p、span、a、b、i、u、em。
- 容器级标签:div、h系列、li、dt、dd。
在css的角度中容器标签为块级元素,p也为块级元素
块级元素转换为行内元素
1 | display(显示): inline(内联元素); |
那么,这个标签将立即变为行内元素,此时它和一个span无异。也就是说:
- 此时这个div不能设置宽度、高度;
- 此时这个div可以和别人并排了。
行内元素转换为块级元素
1 | display: block(块); |
那么,这个标签将立即变为块级元素,此时它和一个div无异。
- 此时这个span能够设置宽度、高度
- 此时这个span必须霸占一行了,别人无法和他并排
- 如果不设置宽度,将撑满父亲
浮动的性质
浮动是css里面布局用的最多的属性。
性质1:浮动的元素脱标
脱标即脱离标准流
一旦一个元素浮动了,那么,将能够并排了,并且能够设置宽高了。无论它原来是个div还是个span。所有标签,浮动之后,已经不区分行内、块级了。
性质2:浮动的元素互相贴靠
性质3:浮动的元素有“字围”效果
初期一定要遵循一个原则:永远不是一个东西单独浮动,浮动都是一起浮动,要浮动,大家都浮动。
性质4:收缩
收缩:一个浮动的元素,如果没有设置width,那么将自动收缩为内容的宽度(这点非常像行内元素)
浮动的清除
clear:both;属性
clear:both
的意思就是:不允许左侧和右侧有浮动对象。
这种方法有一个非常大的、致命的问题,它所在的标签,margin属性失效了。
margin失效的本质原因是:上图中的box1和box2,高度为零。
隔墙法
两个div中间用一个新的div隔开,然后给这个新的div设置clear: both;
属性;同时,既然这个新的div无法设置margin属性,我们可以给它设置height,以达到margin的效果(曲线救国)。
内墙法:
1 | <div> |
父亲添加overflow
将其属性值设置为hidden、auto或scroll
- 优点:代码整洁
- 缺点:无法显示溢出部分
:after 伪元素法
1 | .clearfix:after{ |
双伪元素
1 | .clearfix:before,.clearfix:after { |
定位属性
以盒子为参考点
定位 = 定位模式 + 边偏移
一个绝对定位的元素,如果父辈元素中也出现了已定位(无论是绝对定位、相对定位,还是固定定位)的元素,那么将以父辈这个元素,为参考点。
1 | static//静态定位 relative//相对定位 absolute//绝对定位 fixed//固定定位 =>定位模式 |
相对定位
1 | position: relative; |
相对定位不脱标,继续保留原来的位置
让元素相对于自己原来的位置,进行位置调整(可用于盒子的位置微调)
相对定位的定位值
left:盒子右移
right:盒子左移
top:盒子下移
bottom:盒子上移
PS:负数表示相反的方向。
绝对定位
1 | position: absolute; |
绝对定位脱标,绝对定位之后,标签就不区分所谓的行内元素、块级元素了,不需要display:block
就可以设置宽、高了。
- 如果没有祖先元素或祖先元素没有定位,则以浏览器为准定位
- 如果祖先元素定位(行对/绝对/固定),则以最近一级的有定位祖先元素为参考点移动位置
- 绝对定位不再占有位置
绝对定位的参考点
(1)如果用top描述,那么参考点就是页面的左上角,而不是浏览器的左上角:
(2)如果用bottom描述,那么参考点就是浏览器首屏窗口尺寸
“子绝父相”有意义:这样可以保证父亲没有脱标,儿子脱标在父亲的范围里面移动。于是,工程上经常这样做:
父亲浮动,设置相对定位(零偏移),然后让儿子绝对定位一定的距离。
固定定位
固定定位:就是相对浏览器窗口进行定位。无论页面如何滚动,这个盒子显示的位置不变。
用途1:网页右下角的“返回到顶部”
用途2:顶部导航条
z-index属性:
z-index属性:表示谁压着谁。数值大的压盖住数值小的。
有如下特性:
(1)属性值大的位于上层,属性值小的位于下层。
(2)z-index值没有单位,就是一个正整数。默认的z-index值是0。
(3)如果大家都没有z-index值,或者z-index值一样,那么在HTML代码里写在后面,谁就在上面能压住别人。定位了的元素,永远能够压住没有定位的元素。
(4)只有定位了的元素,才能有z-index值。也就是说,不管相对定位、绝对定位、固定定位,都可以使用z-index值。而浮动的元素不能用。
(5)从父现象:父亲怂了,儿子再牛逼也没用。意思是,如果父亲1比父亲2大,那么,即使儿子1比儿子2小,儿子1也能在最上层。