元素增加了white-space: pre;
css属性,使显示代码中的空格样式
<img usemap="#myMap" src="https://img2.baidu.com/it/u=717842475,4220375066&fm=253&fmt=auto&app=138&f=JPEG?w=739&h=500" alt="">
<map name="myMap">
<area shape="circle" coords="250,250,100" href="#">
map>
以前,块元素可以包含行级元素,行级元素不能包含块级元素(a元素除外)
现在,元素的包含关系由元素的内容类别决定
相对于父元素的字体大小,每个元素必须有字体大小,如果没有声明,则直接使用父元素的字体大小,如果没有父元素,则使用基准字号
ID选择器(#)
元素选择器(元素名)
类选择器(.)
通配符选择器(*)
属性选择器([href]或[href=“”],包含某个属性或某个属性值等于多少)
伪类选择器(a:link{},a:visited{},a:hover{},a:active{})
伪元素选择器(::before,::after)
在某个元素前后添加内容
span::before{
content:"要添加的内容"
}
并且— 紧挨着
后代元素— 空格
子元素— >
相邻兄弟元素— +
后面所有兄弟元素— ~
解决声明冲突的过程(权重计算)
比较重要性
重要性从高到低
比较特殊性
看选择器,选择器中选择的范围越窄,越特殊
通过选择器计算得到4位数(4位数并不是锋十进一)
比较源次序
代码书写靠后的优先起作用
子元素继承父元素的某些css属性,并不是所有都继承
通常跟文字内容相关的属性可以被继承
浏览器渲染元素是从父节点依次渲染,渲染的前提是该元素的所有CSS属性都有值
计算过程:
确定声明值
参考样式表中没有冲突的声明,作为CSS的属性值
层叠冲突
对样式表中有冲突的声明使用层叠规则,确定CSS属性值
使用继承
对仍然没有值的属性,若可继承,则继承父元素的值
使用默认值
对仍然没有值的属性,使用默认值
对于a元素没有继承父元素的color属性的解释
因为a元素有浏览器默认的声明样式,所以不能使用继承,可以使用强制继承color:inherit;
color:ininial;
强制使用默认值
从内到外
内容 content
width,height,设置的是盒子内容的宽高
通常称作内容盒
填充(内边距) padding
边框到内容的距离
padding:上 右 下 左
填充区+内容区 = 填充盒
边框 border
边框+填充区+内容区 = 边框盒
外边距 margin
边框到其他盒子的距离
默认情况下,width和height设置的是内容盒的宽高,但是如果添加内边距和边框后,导致盒子总大小变化,这时可以使用box-sizing
box-sizing:border-box;设置为边框盒,该盒子的width和height设置的就是边框盒的宽高
默认背景覆盖边框盒
更改背景覆盖范围使用background-clip属性,值为content-box(内容盒),padding-box(填充盒),border-box(边框盒)
使用属性overflow来设置溢出后的处理
word-break,会影响每行文字在行尾如何截断换行
不换行的处理white-space:nowrap;
文本溢出显示不全显示方式text-overflow:ellipsis;
white-space: pre;
css属性,使显示代码中的空格样式
object-fit, CSS 属性指定可替换元素(例如: 或 )的内容应该如何适应到其使用高度和宽度确定的框
盒模型:规定单个盒子的规则
视觉格式化模型:页面中的多个盒子的排列规则
视觉格式化模型分为三种:常规流,浮动,定位
常规流,文档流,普通文档流,常规文档流
所有元素默认情况下都属于常规流布局
总体规则:块盒独占一行,行盒水平依次排列
绝大多数情况下,盒子的包含块为其父元素的内容盒
每个块盒的总宽度,必须刚好等于包含块的宽度
宽度默认值是auto,margin默认为0
auto的意思是将剩余空间吸收掉
width和margin都设置为auto时,width吸收能力强于margin
若宽度,边框,内边距,外边计算后仍有剩余空间,则该空间全部被margin-right吸收
在常规流中,块盒在包含块中居中,使用定宽,左右margin设置auto来实现
在垂直方向上,高度auto,表示适应内容高度
在垂直方向上,外边距auto,表示0
内边距,宽度,外边距 可以取值百分比,百分比是相对于包含块的宽度百分比
包含块的高度未设置,取决于子元素高度,这时子元素设置百分比无效
包含块的高度固定,子元素设置百分比起作用
两个常规流块盒,上下外边距相邻,会进行合并,两个外边距取最大值
float默认值未none(不浮动),取值left,right
高度坍塌的根源:常规流盒子的自动高度,在计算时,不会考虑浮动盒子
清除浮动clear属性:
解决坍塌:
/*
方式一:
1.浮动元素手动底下添加一个元素
2.该元素设置clear:both清除浮动,则该元素会出现在浮动元素的下方(不是下层)
*/
.clearfix{
clear:both;
}
/*
方式二:
1.给坍塌的元素添加一个class为clearfix
2.使用伪元素在末尾添加元素
*/
.clearfix::after{
content:"";
display:block;
clear:both;
}
手动控制元素在包含块中的精确位置
CSS属性:position
不会导致元素脱离文档流,只让元素在原来的位置上进行偏移
使用left,right,top,bottom来设置偏移
盒子的便宜不会对其他盒子造成影响
和绝对定位一样,只有包含块不一样
固定定位的包含块为视口(浏览器的可视窗口)
绝对定位和固定定位下,margin为auto,会自动吸收剩余空间
某方向的居中:
:first-child,第一个子元素,必须出现在第一位置
:first-of-type,第一个子元素,不一定出现在第一位置
:last-child,最后一个子元素,必须出现最后位置
:last-of-type,最后一个子元素,不一定出现最后位置
:nth-child,指定位置子元素(考虑其他元素位置)
a:nth-child(2){}/*选定a元素,并且a元素是第二个子元素的*/
a:nth-child(2n){}/*选定a元素,并且a元素是偶数行子元素的,参数也可以是even*/
a:nth-child(2n+1){}/*选定a元素,并且a元素是奇数行子元素的,参数也可以是odd*/
:nth-of-type,指定位置子元素,忽略其他兄弟元素(不考虑其他元素位置)
a:nth-of-type(2){}/*选定a元素,并且是第二个a元素*/
使用cursor来设置鼠标样式
还可以定义图片为鼠标样式:
cursor:url("图片地址"), auto; /*在图片找不到时,使用auto*/
常用于在网页中嵌入另一个网页
iframe是可替换元素
通常为行盒
通常显示的内容取决于元素的属性
CSS不能控制其中的样式
具有行块盒特点
百度不能正常显示,因为限制使用iframe框架加载
<a target="myiframe" href="https://www.taobao.com">淘宝a>
<a target="myiframe" href="https://www.bilibili.com">B站a>
<a target="myiframe" href="https://www.sina.com">新浪a>
<a target="myiframe" href="https://www.baidu.com">百度a>
<iframe name="myiframe" src="https://www.bilibili.com">iframe>
下拉列表
配合option使用
optgroup用来分组
多行文本框
type属性
:focus,元素聚焦时的样式,outline设置外边框,使用outline-offset设置偏移
:checked单选或多选框被选中的样式
实际选框的属性基本无法控制,主要用来控制label标签中的样式
input:checked+label{}
<body>
<label class="radio-item">
<input name="gender" type="radio">
<span class="radio">span>
<span>男span>
label>
<label class="radio-item">
<input name="gender" type="radio">
<span class="radio">span>
<span>女span>
label>
body>
表格标签
import,表示导入另一个CSS文件。语法:@import “路径”;
charset ,告诉浏览器该CSS文件使用的文件编码集(该指令必须写到首行)。语法:@charset “utf-8”;
font-face,创建一个字体
@font-face{
font-family:"字体名(自定义)";
src:url("字体文件地址")
}
它是一块独立的渲染区域,它规定了该区域中,常规流块盒的布局
创建BFC元素,隔绝了它内部和外部的联系,内部的渲染不会影响到外部
两栏布局
侧边栏左或右浮动
主区域若定宽直接使用浮动,若不定宽使用overflow:hiden(创建了BFC,避开了浮动盒子,并非层叠关系)
三栏布局
这种html书写时浮动元素写在前面
html中主区域要书写在前,需要使用定位,主区域左右magin留出空间,使用定位把侧边栏放在左右
侧边和主内容等高度的问题(CSS3中使用其他方式)
.container{
border: 2px solid;
width: 80%;
margin: 0 auto;
/* 溢出隐藏,避免多出的左边框显示 */
overflow: hidden;
}
.left{
background-color: cornflowerblue;
float: left;
width: 300px;
margin-right: 50px;
/* 设置非常大,可以容纳预知的高度内容 */
height: 10000px;
/* 设置为负值的原因是,不让非常高的侧边栏把容器container撑的太高,container的高度由主区域决定 */
margin-bottom: -9999px;
}
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
head>
<style>
body,
h1 {
margin: 0;
}
.app {
position: fixed;
width: 100%;
height: 100%;
background-color: aqua;
}
.header {
height: 80px;
background-color: black;
color: #ffffff;
/* 此处定位是为了让container从app开始,而不是紧挨着header */
position: absolute;
left: 0;
top: 0;
width: 100%;
}
.container{
width: 100%;
height: 100%;
/* header遮挡内容,使用padding改变内容区 */
padding-top: 80px;
background-color: burlywood;
box-sizing: border-box;
}
.container .left{
float: left;
width: 300px;
background-color: blueviolet;
color: #fff;
height: 100%;
padding: 20px;
box-sizing: border-box;
overflow: auto;
}
.container .main{
overflow: auto;
height: 100%;
background-color: blue;
color: #fff;
padding: 20px;
box-sizing: border-box;
}
style>
<body>
<div class="app">
<header class="header">
<h1>后台系统布局h1>
header>
<div class="container">
<aside class="left">aside>
<div class="main">div>
div>
div>
body>
html>
px,像素
具体的像素值,但是在字体大小变化时,行高不会变化,导致显示问题
无单位的数字
设置为字体大小的倍数,先继承,再计算(子元素先继承倍数,然后根据子元素自己字体大小来设置行高倍数)
em单位
设置为字体大小的倍数,先计算,再继承(父元素按倍数计算后,子元素再继承)
百分比
和em类似
多个行盒在垂直方向上对齐
使用vertical-align属性来设置行盒垂直对齐,取值右预设值和数值
图片的底部白边
图片父元素是一个块盒,块盒高度自动,图片底部和父元素底边之间往往会出现白边
解决方法:
水平居中:
text-align:center
垂直居中:
它是一块区域,这块区域由某个元素创建,它规定了该区域中的内容在z轴上排列的先后顺序
将目标文件的数据直接书写到路径位置
语法:data:MIME;数据编码,数据
应用场景:
1、请求单个图片体积小,不适合做雪碧图,可以使用数据链接
2、图片由其他代码动态生成,并且图片较小,可以使用数据链接
设置该属性值的盒子,仍然是块盒(主盒子),同时附带了另一个盒子(次盒子)
有序和无序列表就是这样
行盒的高度与它内部的行块盒或可替换元素的高度无关
a元素中的img元素就是例子
writing-mode的css属性来设置