html&css简介
html:负责网页结构的
css:负责网页样式的
html:由标签组成
单标签:没有内容
双标签:开始标签和结束标签 可以放内容的
所有写在元素开始标签之中的都是该标签的属性
:用来声明文档类型 代表了整个网页,这个元素包裹了整个完整的页面,是一个根元素。 用来写网页的一些配置信息声明文档的编码格式
负责网页标题 负责网页内容格式:标签换行, 开始标签和结束标签要对齐(一条竖线)
子父级之间相差一个tab键
网页布局
给元素/标签加样式
(1)内联/行内样式:写在元素开始标签里面的方式
<div style="color:red;">你好</div>
(2)内部样式:写在head里的style标签里 需要大括号包裹
class属性:可以重名
class命名规范:不能用中文,不能用特殊符号(除了_-)不能用纯数字 不能以数字打头,不能用大写字母,不能有空格 见名知意
id属性:不能重名
(3)外部样式
href后面跟的是路径
绝对路径:不需要参照物 www.baidu.com
相对路径:有参照物的,参照的是当前文件
(4)样式的优先级
!important>内联样式>内部样式(id>class>标签名)(后>前)
内部样式=外部样式
权值计算公式:
权值 = 第一等级选择器 x 个数,第二等级选择器 x 个数,第三等级选择器 x 个数,第四等级选择器 x 个数;
注: 通用选择器 (*),组合符 (+, >, ~, ' '),和否定伪类 (:not) 不会影响优先级
改变元素位置
margin(外边距):
当只指定一个值时,该值会统一应用到全部四个边的外边距上。
指定两个值时,第一个值会应用于上边和下边的外边距,第二个值应用于左边和右边。
指定三个值时,第一个值应用于上边,第二个值应用于右边和左边,第三个则应用于下边的 外边距。
指定四个值时,依次(顺时针方向)作为上边,右边,下边,和左边的外边距。
问题:
margin塌陷:
子父级之间,顶部想隔开距离,给子集加margin-top会发生塌陷,也就是这个margin会加在父级身上,导致父级整体往下移(浮动元素除外)
margin合并:在垂直方向上,同级,临边margin会合并为一个,取较大值
padding(内边距)
问题:会自动的增宽或者增高,所以我们要主动的减去对应的宽高
position(定位)
absolute(绝对定位):想改变谁的位置,就给谁加绝对定位,需要给top left right bottom
绝对定位的元素默认参照的是已定位的父级元素,就近
realtive(相对定位):想以谁当作参照,就给谁加相对定位
fixed(固定定位):几乎等同于绝对定位,只不过参照物不同,参照物是我们的浏览器
问题:绝对定位和的固定定位的元素不占位置 (脱离文档流)
脱离文档流:该元素脱离了文档中。不再占据默认分配的空间,它下面的元素会上去补位。可以理解为脱离文档流的元素离开了它的座位,后面的同学可以坐前面,坐它的位置。
BFC(块级格式上下文)
BFC定义
BFC是Web页面的可视CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。
一个BFC区域包含创建该上下文元素的所有子元素,但是不包括创建了新的BFC的子元素的子元素(换句话说就是直接子元素),具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。
通俗一点来讲,可以把 BFC 理解为一个封闭的大箱子,箱子内部的元素无论如何翻江倒海,都不会影响到外部。
触发BFC
只要元素满足下面任一条件即可触发 BFC 特性:
body 根元素
浮动元素:float 除 none 以外的值
绝对定位元素:position (absolute、fixed)
display 为 inline-block、table-cells、flex
overflow 除了 visible 以外的值 (hidden、auto、scroll)
BFC的应用
BFC解决margin塌陷和margin合并
BFC解决浮动的元素高度无法撑开的问题。
BFC可以阻止标准流元素被浮动元素覆盖
浮动:可以让块元素在一行上显示
语法
希望哪几个元素在一行上显示,那么就给哪几个元素加浮动
float:left/right
问题
半脱离文档流,不占位置,但是如果其他盒子内有文字,文字会卡住
解决方式
方法一:clear:both
在浮动的元素元素后面添加一个元素,样式为clear:both
clear:both 需要放在所有浮动元素之后,并且是同级关系。页面中有几处浮动,那么就需要清除几次
在需要清除浮动的父级上加clear 可以清除浮动
方法二:使用css的overflow属性
给浮动元素的容器添加overflow:hidden;或overflow:auto;可以清除浮动
方法三:给浮动的元素的容器添加浮动
副作用:父级被加了浮动,会造成父级脱离文档流
当出现这种情况,自己浮动就不用清除浮动了
方法四:使用CSS的:after伪元素
通过css在页面里插入一个伪元素
注意:这不是伪类,而是伪元素,代表一个元素之后最近的元素。
.clear:after{
Display : block;
Clear :both;
Content:“”;
Height:;
}
9.元素的默认宽高
元素的默认宽高
默认宽度:父级的百分百(浮动元素除外, 脱离文档流的元素)
默认高度:由子集+padding决定
浮动元素的默认宽:由子集决定
定位元素的默认宽:由子集决定
自己超出父级的部分不占位置
css选择器
1.通用选择器
2.元素选择器
div p a
3.类选择器
.box
4.id选择器
#box
5.分组选择器
.box,span
6.组合选择器
div p
ul>li
p~span
p+span
display属性
用途:将块元素和内联元素是互相转换
block:转为块元素
inline:转为内联元素
inline-block:转为内联块
none:无
元素/标签
块元素: div h1-h6
内联元素:span a
区别:
1.块元素有宽高,内联元素没有宽高 2.块元素要独占一行,内联元素默认在一行上显示
Ps:
内联元素里不允许包含块元素,内联元素里面只能放内联元素
块元素里面可以放任意元素
插播一个li标签
去除旁边的点:list-style:none;
文字样式
某元素加了文字样式,只对它里面的文字生效
text-align:center 文本对齐方式,让文本居包含文本的这个块的中间
color:#ff6637 文字颜色
font-family:"宋体"
font-size:"16px"
font-weight:"bold"字体加粗100-700(没有单位)
line-height:100px 垂直居中:只需要把行高设置为跟外层div高度一致即可
任何文字样式都是可继承的
继承原则:就近原则另外特殊的 opacity也是可继承的
居中问题
任何情况下不要拿显示器边缘当参照
auto:自动计算剩余空间
margin:auto 给块做居中 前提必须得有宽
文本居中可以用text-align 对于块元素不能使用
伪类
元素:hover{鼠标滑过之后的样式}
如果滑过元素更改另一个元素的样式
元素:hover 要更改的元素{要更改的样式}
要更改样式的元素必须是鼠标滑过元素的子集
a标签
target="_blank" 代表在新标签页打开,默认为_self,在当前窗口刷新
href="路径" 可以是绝对路径也可以是相对路径
去除a标签下面的线:text-decoration: none;
引入图片的方式
1.img标签直接引入
Img属性:
Src图片路径
Alt图片加载不出来时的替代文本
Title 鼠标悬停时的文字提示
2.通过背景图方式引入background-image:url( );
什么时候选择用背景图方式引入:
1.如果图片可能超出显示器尺寸的时候,选择用背景图
2.如果图片里面还有内容,需要继续编辑,选择用背景图
其他情况推荐img
图片格式:
.jpg:会自带背景,图片比较小(有一些背景图用这个)
.png:不会带背景,背景是透明的,图片比较大
描边、圆角、半透明
border: chocolate(颜色) 2px(粗细) solid/dashed(直线/虚线)
border-radius 圆角
opacity:0.5 半透明 会导致元素里面的内容也变成半透明,因为opacity是可继承的
background-color:rgba(51,51,51,0.5) 不会导致里面内容也变成半透明
表单标签
<input/>
属性:
- Placeholder=‘请输入搜索内容’ 占位符,搜索框里的默认文本
- type=password密码输入框
- value = 可输入的表单不给value
- type = button 按钮标签
- type = checkbox 多选框 name属性用来给多选框分类
- type = radio 单选框 同一系列记得给name
- 下拉表单
8.selected默认选中
按钮标签
<button></button>
投影:box-shadow
box-shodow:水平偏移距离 垂直偏移距离 模糊程度 投影大小 投影颜色
百分比问题
百分比数参照物
父元素宽度:Padding margin(参考父级的宽) width
父元素高度:height (父元素为body不生效)
自身:border-radius
已定位的父级:position:
Position(left/right)参考已定位父级的宽
Position(top/bottom)参考已定位父级的高
css中的单位
px
em
rem (root em)
盒模型
Margin(外边距) - 清除边框外的区域,外边距是透明的。
Border(边框) - 围绕在内边距和内容外的边框。
Padding(内边距) - 清除内容周围的区域,内边距是透明的 。
Content(内容) - 盒子的内容,显示文本和图像。
最终元素的总宽度计算公式是这样的:
总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距
元素的总高度最终计算公式是这样的:
总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距
flex布局
优点:简单,页面不容易错乱
缺点:不适合精准布局
应用:移动端
HTML5 CSS3
1.video
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
</video>
属性:
controls 视频播放控件(进度、音量、全屏、播放)
autoplay 自动播放
loop 循环播放
<audio controls>
<source src="music.mp3" type="video/mp3">
</video>
2.html语义化
header footer nav aside
3.css3
transform(转换) 2d(可以代替margin来用,但是不常用,不建议用)
rotate:旋转(就这个有点用)
translate:偏移 针对你当前位置的基础上
skew(30deg):倾斜
scale:缩放 物理缩放 不占位置 不影响结构
transform 3d(做特效)
rotateX
rotateY
transition:过渡 让样式的变化有一个过程(动画) (有点用)
animation:动画
@keyframes 动画名{
From{}//从。。。变成。。。
To{}
}
.box{
Animation: 动画名1s}
响应式布局的媒体查询
@media screen
@media screen and (max-width: 300px) {
body {
background-color:lightblue;
}
}
Rem搭配媒体查询一起用
响应式布局
1.百分比 最简单最常用
2.@media screen 最强大最复杂的
3.rem 最适用于移动端
4.flex(弹性)布局 :粗略布局,不适用于精确计算