目录
一.CSS3三种关联方式
行内样式表
<a href="#" style="color:red;font-size:10px;">日用百货</a>
内部样式表
内部样式表也称为内嵌样式表,是指 CSS 代码内嵌到 HTML 代码中
二者处于同一个文件中,通常 CSS 代码放置在 HTML 代码的标签内部。
<head>
<meta charset="UTF-8">
<title>内部样式</title>
<style>
div {
width: 100px;
height: 100px;
background-color: red;
}
</style>
</head>
<body>
<div>
</div>
</body>
外部样式表
外部样式表是指 CSS 代码完全独立出来,单独放置在扩展名为.css 的文件中,在 HTML文件中,将 CSS 文件引入进来,形成关联
<head> <title>Document</title> <link rel="stylesheet" href="./he.css"></head>
CSS优先级
CSS优先级是指当CSS声明发生冲突时,即将在两个不同位置,对同一HTML标签进行同样的CSS属性定义,
优先采用的属性值通常是按就近原则来进行取值,即行级样式表>内部样式表>外部样式表
扩展
<head>
<meta charset="UTF-8">
<style>
@import url(./he.css);
</style>
</head>
<body>
<div>
</div>
</body>
-
<link>是HTML标签,import不是 -
<link>可以链接各种形式的文件,import只能导入CSS -
<link>使用的是链接的方式,相当于桥梁,import使用的导入,导入到HTML文档中 -
<link>边加载网页边链接,import在加载网页完毕后才导入
二.CSS选择器
通用选择器
* { }
标签选择器
HTML标签名 { }
类选择器
.类 { }
在需要改变的样式的标签上,使用class=”选择器名称”调用对应选择器
ID选择器
#id名称{ }
在需要改变样式的标签上,使用id=”选择器名称”调用对应选择器
后代选择器
选择器1 选择器2 选择器3 .... { }div .li { }
子代选择器
选择器1>选择器2>选择器3....{ }div>ul { }
交集选择器
选择器1选择器2....{ }
并集选择器
选择器1,选择器2,....{ }
伪类选择器
选择器名称:伪类状态{ }
link—->visited—->hover—-> active
选择器的优先级
-
第一原则“近者优先”,最内层选择器永远比外层优先 -
当作用于同一层时,可以根据选择器优先级权重进行计算 -
当优先级权重完全相同时,写在后面的选择器覆盖前面的选择器 -
!important 将当前CSS语句提升至最高权重,不推荐使用
三.CSS常用文本属性
字体
font-style、font-weight、font-size/line-height、font-family
-
使用时必须严格按照上述顺序 -
多个样式之间用空格分隔,且font-size/line-height 必须作为一对,用/分隔 -
font-size 和font-family 必须指定,其他样式不指定将采用默认样式
font: italic bold 75%/1.8 'Microsoft Yahei', sans-serif;
字号
bold加粗,lighter细体,或者填写100~900 (400为正常,700为加粗)
字体颜色
而使用rgba调整时,只会使当前元素透明,不会改变子元素透明度
文本属性
height:100px line-height:100px
控制超出范围文本的显示方式
text-overflow
white-space
white-space:nowrap; 如果是中文,需设置行末不断行 overflow:hidden; 设置控件超出范围text-overflow:ellipsis; 设置多余文本省略号显示
text-indent
text-indent:32px; // 首行缩进 32px,默认字体大小 16px 的情况下,将首行缩进两个字
text-stroke
四.其他常用属性
列表常用属性
html部分
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>5</li>
<li>6</li>
</ul>
css部分
ul li {
list-style-image : url(./03男性角色.png);
}
超链接样式属性
a:link {color:#FF0000;} /* 未被访问的链接 */
a:visited {color:#00FF00;} /* 已被访问的链接 */
a:hover {color:#FF00FF;} /* 鼠标指针移动到链接上 */
a:active {color:#0000FF;} /* 正在被单击的链接 */
五.CSS过渡与变换
transition:过渡属性
property、duration、timing-function、delay
transform:变化属性
transform-origin 设置旋转元素的基点位置,2D 转换元素可以改变元素的 X 轴和 Y 轴
-
x-axis,可以使用的值有:left、right、center、**px、百分比 -
y-axis,可以使用的值有:left、right、center、**px、百分比 -
z-axis,可以使用的值有:**px
六.CSS动画
@keyframes创建关键帧动画
@keyframes 动画名称{ 阶段 1{CSS 样式} 阶段 2{CSS 样式} 阶段 3{CSS 样式}}
使用animation调用关键帧动画
div{
/* 让 div 调用这个关键帧动画,5s 完成所有动画效果*/ animation: 动画名称 5s;
}
-
animation 简写属性 -
animation-name 规定动画名称 -
animation-duration 规定完成动画的时间 -
animation-timing-function 规定动画的速度曲线 -
animation-delay 规定动画何时开始 -
animation-iteration-count 规定动画播放次数 -
animation-direction 规定动画算法反向播放 -
animation-play-state 规定动画算法是否运行 -
animation-fill-mode 规定对象动画时间之外的状态
七.盒子
content 内容
标准盒模型
一个元素所占据的总宽度= width + padding(左右)+ border(左右)+ margin(左右)
IE盒模型
一个块元素的总宽度= width + margin(左右)(即 width 已经包含了 padding 和 border)
切换盒模型
八.盒属性
margin外边距
写两个数值:第一个数等于上下外边距,第二个数等于左右外边距。
当设置 margin: 0 auto; 时,代表块级盒子在父容器中水平居中。
块级盒子垂直排放的外边距
父子盒子的垂直外边距合并
未设置子盒子的上外边距时
设置子盒子的上外边距时
解决方法:
border边框
padding内边距
overflow内容溢出控制
-
Visible(默认值):内容不会被修剪,会呈现在元素框之外 -
auto: 根据内容多少选择显示滚动条,文字多的时候显示滚动条。 -
scroll: 无论文字多少,都会显示垂直和水平两个滚动条。 -
hidden: 超出区域的文字直接隐藏,无法看到
outline外围线
box-shadow盒子阴影
-
X 轴阴影距离:必写,可正可负,正值右移,负值左移。 -
Y 轴阴影距离:必写,可正可负,正值下移,负值上移。 -
阴影模糊半径:可写,只能为正,默认值为 0。数值越大,阴影越模糊。 -
阴影扩展半径:可写,可正可负,默认值为 0。数值增大,阴影扩大;数值减小,阴影缩小。 -
阴影颜色:可写,默认为黑色。 -
内外阴影:可写,可选值:inset(内阴影),不选默认为外阴影。
border-radius边框圆角
border-radius: 40px 30px 20px 10px/40px 30px 20px 10px
“/”前后各有四个值,依次对应的是左上角、右上角、右下角、左下角。
而“/”前表示四顶点沿 X 轴移动的距离,“/”后表示四顶点沿 Y 轴移动的距离。
border-image图片边框
-
图片路径(border-image-source) -
图片切片宽度(border-image-slice) -
边框宽度(border-image-width) -
图片重复方式(border-image-repeat) -
简写方式(border-image)
九.浮动
float 属性使元素脱离了常规文档流而表现为向右或向左浮动,由于浮动的元素不在文档流中,所以在文档流中浮动的元素就像不存在一样,其周围的元素也会重新排列。
clear清楚浮动
子盒子浮动造成父盒子高度塌陷
十.定位
以上三种定位方式均使用 top、left、bottom、right 调整位置。
当 left 和 right 同时存在,left 生效;当 top 和 bottom 同时存在,top 生效。
relative相对定位
absolute绝对定位
-
相对于第一个非 static 的祖先元素(即使用了 relative、absolute、fixed 定位的祖先元素)进行定位。 -
如果所有祖先元素均未定位,则相对于浏览器左上角定位。 -
使用 absolute 的元素会从文档流中完全删除,原有空间释放不再占据。
fixed固定定位
固定定位是一种特殊的绝对定位,它与普通绝对定位的区别是无论父元素是否定位,子元素如果采用固定定位,都将相对于浏览器左上角定位,且固定在指定位置,不随浏览器滚动条的滚动而滚动。
使用定位实现元素的绝对居中
十一.z-index
作用
使用要求
如果父容器没有设置z-index或者设置为 z-index:auto,则子容器不受约束
如果父容器设置了z-index,则子容器层叠顺序以父容器z-index为准
(此时子元素的z-index只能调整自己与其他子元素之间的层叠顺序)
z-index:auto与z-index:0的异同
z-index相同(处于同一平面的定位元素)的层叠关系
十二.网页布局
网页布局方式
响应式的实现方式
响应式布局没有固定的要求,只要能实现计算机站与手机站的不同效果显示,都可以称为响应式网站。
固定布局概念
固定像素
假定使用1024px*768px分辨率
流体布局概念
固定百分比宽度
弹性布局详细
基本概念
-
给父容器添加 display: flex/inline-flex;属性,即可使容器内容采用弹性布局显示,而不遵循常规文档流的显示方式 -
容器添加弹性布局后,仅仅是容器中的项目采用弹性布局,而容器本身在文档流中的定位方式依然遵循常规文档流 -
display:flex; 容器添加弹性布局后,显示为块级元素。 -
display:inline-flex; 容器添加弹性布局后,显示为行级元素。 -
将父容器设为弹性布局后,子项目的 float、clear 和 vertical-align 属性将失效,但position 属性依然生效。
<body>
<div id="box">
<div class="item1">1</div>
<div class="item2">2</div>
<div class="item3">3</div>
<div class="item4">4</div>
</div>
</body>
<style>
#box{
width: 200px;
height: 200px;
background-color: yellow;
display: flex;
}
#box div{
width: 50px;
height: 50px;
background-color: blue;
color: white;
font-size: 20px;
}
未添加弹性布局将采用常规文档流
添加弹性布局将打破常规文档流,不再按照常规文档流的上下排列,默认成了一行显示
作用于容器的属性
该属性是 flex-direction 属性和 flex-wrap 属性的简写形式,默认值为 row nowrap
-
flex-start(默认值):项目位于主轴起点。 -
flex-end:项目位于主轴终点。 -
center:居中。 -
space-between:两端对齐,项目之间的间隔都相等(开头和最后的项目,与父容器边缘没有间隔)。 -
space-around:每个项目两侧的间隔相等。同时项目之间的间隔比项目与边框的间隔大一倍(开头和最后的项目,与父容器边缘有一定的间隔)
-
flex-start:与交叉轴的起点对齐。 -
flex-end:与交叉轴的终点对齐。 -
center:与交叉轴的中点对齐。 -
baseline:根据项目的第一行文字的基线对齐(文字的行高、字体大小会影响每行的基线)。 -
stretch(默认值):如果项目未设置高度或设为 auto,则将占满整个容器的高度。
该属性规定每一行或每一列在另一方向上的对齐方式,即主轴在交叉轴的对齐方式。只有一行或一列时,该属性无效
-
flex-start:与交叉轴的起点对齐。 -
flex-end:与交叉轴的终点对齐。 -
center:与交叉轴的中点对齐。 -
space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。 -
space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。 -
stretch(默认值):如果项目未设置高度或设为 auto,则将占满整个容器的高度(占满整个交叉轴)。
作用于项目的属性
该属性规定项目的排列顺序,使用整数设置,数值越小越靠前,可以为负值。
该属性规定项目的放大比例,默认为 0,即如果存在剩余空间,也不放大。
第一个子项目设置flex-grow:1,其他为0,则第一个子项目占据剩余空间
属性规定项目的缩小比例,默认为 1,即父容器宽度不足,子项目将缩小
第一个子项目设置flex-shrink:0,其他为2,则第一个子项目不被压缩,其他子项目压缩更严重
如果主轴为水平,则设置这个属性后,相当于设置了项目的宽度,原宽度将失效。
该属性是 flex-grow、flex-shrink 和 flex-basis 的简写,默认值为 flex:0 1 auto。
后两个属性可选,除默认值外,还有 none(0 0 auto)和 auto(1 1 auto)两个快捷设置值。
属性定义单个项目自身在交叉轴上的排列方式,可以覆盖掉容器上的 align-items 属性
补选择器大全
.intro |
选择 class=”intro” 的所有元素。 |
|
.class1 , .class2 |
.name1 , .name2 |
选择 class 属性中同时有 name1 和 name2 的所有元素。 |
.class1 .class2 |
.name1 .name2 |
选择作为类名 name1 元素后代的所有类名 name2 元素。 |
#firstname |
选择 id=”firstname” 的元素。 |
|
* |
选择所有元素。 |
|
p |
选择所有
元素。 |
|
p.intro |
选择 class=”intro” 的所有
元素。 |
|
div, p |
选择所有 元素和所有
元素。 |
|
div p |
选择 元素内的所有
元素。 |
|
div > p |
选择父元素是 的所有
元素。 |
|
div + p |
选择紧跟 元素的首个
元素。 |
|
p ~ ul |
选择前面有
元素的每个
|
|
[target] |
选择带有 target 属性的所有元素。 |
|
[target=_blank] |
选择带有 target=”_blank” 属性的所有元素。 |
|
[title~=flower] |
选择 title 属性包含单词 “flower” 的所有元素。 |
|
[lang|=en] |
选择 lang 属性值以 “en” 开头的所有元素。 |
|
a[href^=”https”] |
选择其 src 属性值以 “https” 开头的每个 元素。 |
|
a[href$=”.pdf”] |
选择其 src 属性以 “.pdf” 结尾的所有 元素。 |
|
a[href*=”w3schools”] |
选择其 href 属性值中包含 “abc” 子串的每个 元素。 |
|
a:active |
选择活动链接。 |
|
p::after |
在每个
的内容之后插入内容。 |
|
p::before |
在每个
的内容之前插入内容。 |
|
input:checked |
选择每个被选中的 元素。 |
|
input:default |
选择默认的 元素。 |
|
input:disabled |
选择每个被禁用的 元素。 |
|
p:empty |
选择没有子元素的每个
元素(包括文本节点)。 |
|
input:enabled |
选择每个启用的 元素。 |
|
p:first-child |
选择属于父元素的第一个子元素的每个
元素。 |
|
p::first-letter |
选择每个
元素的首字母。 |
|
p::first-line |
选择每个
元素的首行。 |
|
p:first-of-type |
选择属于其父元素的首个
元素的每个 元素。 |
|
input:focus |
选择获得焦点的 input 元素。 |
|
:fullscreen |
选择处于全屏模式的元素。 |
|
a:hover |
选择鼠标指针位于其上的链接。 |
|
input:in-range |
选择其值在指定范围内的 input 元素。 |
|
input:indeterminate |
选择处于不确定状态的 input 元素。 |
|
input:invalid |
选择具有无效值的所有 input 元素。 |
|
p:lang(it) |
选择 lang 属性等于 “it”(意大利)的每个
元素。 |
|
p:last-child |
选择属于其父元素最后一个子元素每个
元素。 |
|
p:last-of-type |
选择属于其父元素的最后
元素的每个 元素。 |
|
a:link |
选择所有未访问过的链接。 |
|
:not(p) |
选择非
元素的每个元素。 |
|
p:nth-child(2) |
选择属于其父元素的第二个子元素的每个
元素。 |
|
p:nth-last-child(2) |
同上,从最后一个子元素开始计数。 |
|
p:nth-of-type(2) |
选择属于其父元素第二个
元素的每个 元素。 |
|
p:nth-last-of-type(2) |
同上,但是从最后一个子元素开始计数。 |
|
p:only-of-type |
选择属于其父元素唯一的
元素的每个 元素。 |
|
p:only-child |
选择属于其父元素的唯一子元素的每个
元素。 |
|
input:optional |
选择不带 “required” 属性的 input 元素。 |
|
input:out-of-range |
选择值超出指定范围的 input 元素。 |
|
input::placeholder |
选择已规定 “placeholder” 属性的 input 元素。 |
|
input:read-only |
选择已规定 “readonly” 属性的 input 元素。 |
|
input:read-write |
选择未规定 “readonly” 属性的 input 元素。 |
|
input:required |
选择已规定 “required” 属性的 input 元素。 |
|
:root |
选择文档的根元素。 |
|
::selection |
选择用户已选取的元素部分。 |
|
#news:target |
选择当前活动的 #news 元素。 |
|
input:valid |
选择带有有效值的所有 input 元素。 |
|
a:visited |
选择所有已访问的链接。 |