因为之前学过html和css,css学得比较浅,所以对于html来说,html的篇幅可能比较少
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<title>页面标题</title>
</head>
<body>
填写页面代码
</body>
<html>
1.`<title>页面标题</title>`里面写标签页的标题
2.在body标签中写自己的代码
区块元素有`<h1>,<pre>,<ul>,<ol>,<table>,<div>,<form>`等
区块元素的特点是总是在一行显示,一行只能有1个区块元素;
在css中,可以用`display:inline`使区块元素变成内联元素
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>页面标题</title>
<style>
div{
display: inline;
}
</style>
</head>
<body>
<div>
adad
<div>
jdadan
</div>
</div>
</body>
<html>
内联元素有`<img>,<input>,<label>,<br>,<span>`等
内联元素的特点是可以有多个内联元素在一行内显示;
在css中,可以用`display:block`使内联元素变成区块元素
比如说,对于div标签,可以在里面写文字,也可以嵌套元素,但是img标签不能:
<body>
<div>
adad
<div>
jdadan
</div>
</div>
<img src="https://img1.baidu.com/it/u=413643897,2296924942&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1686934800&t=3cf1d5d69f19ab91a330f6a29f78daf2" alt="">
</body>
绝对路径:就是文件从盘开始的路径
比如`:C:/Users/19081/Desktop/Course/Web/homework/html.md`
绝对路径:文件相对当前文件的路径
`./html.md`和`html.md`都是当前目录下的文件
`../html.md`是上一个目录下的文件
`../../html.md`是上上个目录下的文件
在`<a>`和`<img>`标签内的路径除了本地的路径,还可以填写网上的路径;
虽然html中也能设置样式,但是不推荐,应该采用css对页面进行美化
引入css有3种方式,最常用的就是在head里面加上link元素,通过href引入,其他2种方式分别
是在head里面用style元素或者直接在需要css样式的元素里加上style;
<head>
<meta charset="utf-8">
<title>页面标题</title>
<link rel="stylesheet" href="myCss.css">
</head>
选择器分为简单选择器:全局选择器,类型选择器,class选择器,id选择器等
和组合选择器:后代选择器和子代选择器等
/* 全局选择器 */
*{
color: rgb(184, 27, 71);
}
/* 类型选择器(元素选择器) */
h1{
color: red;
}
/*class选择器 */
.title{
color: blue;
}
/* id选择器 */
#title{
color: green;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>页面标题</title>
<link rel="stylesheet" href="myCss.css">
</head>
<body>
<h1 id="title" class="title">
标题
</h1>
<div>
文本
</div>
</body>
<html>
上面的代码同时对标题使用3个选择器,最后生效的是id选择器;
标题的颜色是绿色;这是因为id的specificity优先级是最大的;
*{
color: rgb(184, 27, 71);
text-align: center;
margin: 0 auto;
}
.title{
display: inline;
}
/* 伪类选择器 */
.title:hover{
color: green ;
}
div:nth-child(2n){
color: green;
}
/* 伪元素选择器 */
/* 对于自闭合元素来说 伪元素选择器无法生效 */
input::after{
content: "元"
}
span::after{
content: "元"
}
/* 属性选择器 */
[type="text"]{
color: blue;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>页面标题</title>
<link rel="stylesheet" href="myCss.css">
</head>
<body>
<div class="contain">
<h1 id="title" class="title">
标题,靠近我变绿
</h1>
<div>
<div>文本1</div>
<div>文本2</div>
<div>文本3</div>
<div>文本4</div>
<div>文本5</div>
<div>文本6</div>
</div>
<input type="text" value="text">
<span></span>
<input type="password" style="display: block;" >
</div>
</body>
<html>
*{
text-align: center;
margin: 0;
}
.container{
min-height: 100vh;
}
/* 子代选择器 */
.container > *{
margin: 2rem;
color: blue;
}
/* 后代选择器 */
.container span{
color: red;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>页面标题</title>
<link rel="stylesheet" href="myCss.css">
</head>
<body>
<div class="container">
<h1>
container的子代
<span>container的后代</span>
</h1>
<h2>
container的子代
</h2>
<h3>
container的子代
</h3>
<h4>
container的子代
</h4>
<span>
container的子代
</span>
</div>
</body>
<html>
除了以上2种组合选择器外,还有相邻兄弟选择器 通用兄弟选择器 和 直接后继选择器,但是不常用
在vscode中鼠标移动到选择器上可以看到优先级的值;
specificity:
id选择器 > 类选择器,属性选择器和伪类选择器 > 元素选择器和伪元素选择器 > 全局选择器
除了上面的选择器,内联样式即在元素内直接写style优先级是最高的,会覆盖上面的所有选择器;
定位分为static,relative,fixed,absolute,sticky,
使用position来分辨类型(默认是static),
relative是相对于默认(static)来定位,
使用top,left,button,right来指明位置,
还可以用z-index来标明显示的优先级,值越大就可以覆盖值小的,
.navbar {
position: fixed;
top: 0;
width: 100%;
background-color: rgb(109, 207, 18);
padding: 10px;
/* 其他样式 */
}
.container {
height: 500px;
text-align: center;
overflow-y: scroll;
}
/* 固定定位 */
[type="button"]{
position: fixed;
bottom: 2rem;
right: 2rem;
width: 5rem;
height: 2.5rem;
}
/* 相对定位 */
.item{
position: relative;
top: 3rem;
height: 150vh;
background-color: red;
}
/*
绝对定位
一个相对于item定位,一个相对于body,都是居中(大概)
*/
.child{
position: absolute;
top:50%;
left: 50%;
background-color: blue;
}
/* 粘性定位 */
.title {
position: sticky;
top: 0;
background-color: rgb(151, 213, 6);
padding: 10px;
z-index: 1;
}
.container2{
height: 200vh;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>页面标题</title>
<link rel="stylesheet" href="myCss.css">
</head>
<body>
<div class="container">
<div class="navbar">navbar</div>
<div class="title">title</div>
<div class="item">
item 相对于自己以前的位置
<div class="child">
item's child 相对于非static父类元素定位
</div>
</div>
<a href="#"><input type="button" value="Button"></a>
<div class="child">
body's child 相对于body定位
</div>
</div>
<div class="container2"></div>
</body>
<html>
关于fixed和sticky的区别,我也不是很清楚,大概是fixed是相对于视口,sticky是相对于父类;
要使用弹性盒子,我们需要对其父类使用display: flex;
使用后便会出现以下属性: 他们都是默认值;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-start;
align-items: stretch;
align-content: stretch;
flex-direction
flex-direction是指定弹性盒子中子元素排列的方向,默认是行,除此之外还有
row-reverse: 表示方向从右到左。
column:子元素垂直排列,从上到下。
column-reverse:子元素垂直排列,从下到上。
这个方向在弹性盒子里面就叫主轴,当主轴改变时,后面的属性也会相关联;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>页面标题</title>
<link rel="stylesheet" href="myCss.css">
</head>
<body>
<div class="container">
<div class="item">
div1
</div>
<div class="item">
div2
</div>
<div class="item">
div3
</div>
<br>
<span class="item">span1</span>
<span class="item">span2</span>
<span class="item">span3</span>
</div>
</body>
<html>
.container{
/* display: flex; */
/* flex-direction: column; */
}
.item{
background-color: yellow;
}
在上面的代码中,如果不加弹性盒子,div就是区块元素,一行一个div,
span是内联元素,一行3个span;
但是如果我们取消注释,加上`display: flex;`,
就会发现div跟span一样全部跑到一行显示了,甚至把`<br>`换行给吞了
如果我们再加`flex-direction: column;`,
就会使弹性盒子垂直排列元素,
这样子span就像div一样,一行一个span元素;
flex-wrap
flex-wrap是弹性盒子中用来设置换行的属性;
我们来看下面的代码
.container{
display: flex;
/* flex-wrap: wrap; */
}
.item{
margin: 3rem;
width: 300px;
height: 200px;
background-color: red;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>页面标题</title>
<link rel="stylesheet" href="myCss.css">
</head>
<body>
<div class="container">
<div class="item">
item
</div>
<div class="item">
item
</div>
<div class="item">
item
</div>
<div class="item">
item
</div>
<div class="item">
item
</div>
</div>
</body>
<html>
上面的代码中,我们写出了每个item的宽度为300px,但是因为弹性盒子把所有的item都放在一行了,
所以item的宽度已经变小了,没有到达300px;
为了让item的宽度不受影响,我们可以加上`flex-wrap:wrap`;
这样就可以让item不用全部挤在一行,从而使item变回300px;
justify-content
, align-items
, align-content
前面的`flex-direction`是设置排列的方向,
这3个属性是排列的方式;
justify-content
:设置弹性容器内主轴的排列方式(默认主轴就是行,除非使用flex-direction改变主轴)
在下面的代码中,我们使用center就能居中,除此之外,还有其他排列方式;
.container{
display: flex;
justify-content: center;
/* justify-content: start;
justify-content: end;
justify-content: space-between;
justify-content: space-around;
justify-content: space-evenly; */
}
.item{
margin: 1rem;
background-color: yellow;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>页面标题</title>
<link rel="stylesheet" href="myCss.css">
</head>
<body>
<div class="container">
<div class="item">
div1
</div>
<div class="item">
div2
</div>
<div class="item">
div3
</div>
<br>
<span class="item">span1</span>
<span class="item">span2</span>
<span class="item">span3</span>
</div>
</body>
<html>
align-items
和 align-content
: 这2个属性也是设置排列的方式,不过是设置交叉轴的,(默认交叉轴是column,
如果设置了主轴flex-direction
为column,那么交叉轴就是row)
.container{
height: 100vh;
display: flex;
flex-wrap: wrap;
align-items: center;
align-content: center;
}
.pic{
max-width: 500px;
max-height: 500px;
margin: 1rem;
background-color: yellow;
}
.text{
width:200px;
height: 200px;
margin: 1rem;
background-color: red;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>页面标题</title>
<link rel="stylesheet" href="myCss.css">
</head>
<body>
<div class="container">
<img class="pic" src="https://img.3dmgame.com/uploads/images/news/20220317/1647502475_454758.png" alt="">
<span class="text">Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。</span>
<img class="pic" src="https://img.3dmgame.com/uploads/images/news/20220317/1647502475_454758.png" alt="">
<span class="text">Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。</span>
<img class="pic" src="https://img.3dmgame.com/uploads/images/news/20220317/1647502475_454758.png" alt="">
<span class="text">Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。</span>
</div>
</body>
<html>
评论区