前段笔记
(一)安装vscode
安装:插件
chinese 汉化
open-in-browser ---> 启用
设置自动保存:文件 —> 自动保存
(二)认识页面结构:
Emmet:?
直接出结构: !
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>页面标题-Hello</title>
</head>
<body>
</body>
</html>
(三)常用标签
1.标题
<h1>一级标题</h1>
<h2>二级标题</h2>
<h3>二级标题</h3>
<h4>四级标题</h4>
<h5>五级标题</h5>
<h6>六级标题</h6>
2.段落
<p>段落</p>
3.图片
src=“” 属性
scr 属性名
“” 中的是属性值
scr 指定图片路径 : 本地 or 网页
alt 当图片无法正常显示时 显示出来
" ./ " 根目录
<img src="./1.webp" alt="本地图片描述">
<img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic15.nipic.com%2F20110612%2F7573962_131346185125_2.jpg&refer=http%3A%2F%2Fpic15.nipic.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1637809590&t=ade1057264d767700dc55683dbb5dbcf?" alt="网页图片描述">
4.超链接
a标签
href 跳转地址
<a href="http://www.baidu.com">百度一下、你就知道</a>
5.块 div
<div>
用于放其他标签
</div>
6.列表
1.无序
<ul>
<li>三国</li>
<li>水浒</li>
<li>红楼梦</li>
</ul>
2.有序
<ol>
<li>三国</li>
<li>水浒</li>
<li>红楼梦</li>
</ol>
7.文字
<span>span标签一般用于设置文字</span>
实践
(四)元素分类
1.块级元素 display :block
特点:独占一行
默认宽度100% 与父元素等宽
高度默认是0(由内容撑开)
可以设置宽度高度
<div>块级元素</div>
div {
width: 100px;
height: 100px;
background-color: red;
border-radius: 5px;
}
2.行元素 display :inline
不独占一行 从左到右
默认宽度内容撑开
默认高度0(由内容撑开)
设置宽度和高度无效
<span>span</span><span>span</span><span>span</span>
span {
width: 100px;
height: 100px;
background-color: yellow;
}
3.行内块元素 inline-block;
不独占一行 从左到右
默认宽度内容撑开
默认高度0(由内容撑开)
可以设置宽度和高度
<button>按钮</button>
<button>按钮</button>
<button>按钮</button>
button {
width: 100px;
height: 100px;
}
(五)文档流
文档流:
内联元素(行元素、内块元素):
默认从左到右
默认遇到阻碍 or 宽度不够 自动换行,继续按照从左到右的方式布局
块元素 :
独占一行
并按照从上到下的方式布局
–> 称为 流式布局
(六)Css简介
前端:
1.Html Hyper Text Markup Language 超文本标记语言
2.css Cascading Style Sheets 层叠样式表
3.JavaScript 交互
1.内联式
<div style="color: red;font-size: 30px;">
床前明月光,
疑是地上霜,
举头望明月,
低头思故乡
</div>
2.内嵌式
<style>
.box {
font-family: '楷体';
font-size: 30px;
color: greenyellow;
}
</style>
<div class="box">
春眠不觉晓,
处处闻啼鸟。
夜来风雨声,
花落知多少。
</div>
3.外引式
文件夹📁新建一个index.css 代码如下:
.box{
background-color: green;
}
<head>
<link href="./index.css" rel="stylesheet">
</head>
(七)选择器
1.通配符
*{
margin: 0;
padding: 0;
}
2.标签选择器
p{
font-family: "楷体";
}
3.id选择器
#first{
color: hotpink;
}
<p id="first">锄禾日当午</p>
4.class选择器
.box{
font-style: italic;
}
<h1 class="box">悯农</h1>
<h2 class="box">李绅</h2>
<p class="box">汗滴禾下土</p>
5.后代选择器
<div class="header">
<h1>咏鹅</h1>
<div><h1>咏鹅</h1></div>
<h2>罗兵王</h2>
<div>鹅鹅鹅</div>
</div>
<div class="main">
<div>
<p>曲项向天歌</p>
</div>
<div>白毛浮绿色</div>
</div>
<div class="footer">
<div>红掌拨清波</div>
</div>
.header h1{
color: red;
}
<div class="header">
<h1>咏鹅</h1>
<div><h1>咏鹅</h1></div>
<h2>罗兵王</h2>
<div>鹅鹅鹅</div>
</div>
#tips:
会先找到 所有的h1
然后向前寻找 只要能找到 class=header的 就成
无需是父元素,所以,这里会有两个红色的咏鹅
6.子代选择器
<div class="header">
<h1>咏鹅</h1>
<div><h1>咏鹅</h1></div>
<h2>罗兵王</h2>
<div>鹅鹅鹅</div>
</div>
<div class="main">
<div>
<p>曲项向天歌</p>
</div>
<div>白毛浮绿色</div>
</div>
<div class="footer">
<div>红掌拨清波</div>
</div>
.main >div> p{
color: yellowgreen;
}
<div class="main">
<div>
<p>曲项向天歌</p>
</div>
<div>白毛浮绿色</div>
</div>
#tips:
会先找到 所有的p
然后向前寻找 必须父元素是div 并且div的父元素的class = mian
所以这里 只有曲项向天歌 会变色
7.并列选择器
<div class="header">
<h1>咏鹅</h1>
<div><h1>咏鹅</h1></div>
<h2>罗兵王</h2>
<div>鹅鹅鹅</div>
</div>
<div class="main">
<div>
<p>曲项向天歌</p>
</div>
<div>白毛浮绿色</div>
</div>
<div class="footer">
<div>红掌拨清波</div>
</div>
.main,.footer{
font-size: 40px;
}
#tips:
会先找到 所有的class 为 main or footer的
然后修改字体大小
so 曲项向天歌,白毛浮绿色,红掌拨清波 字体都被设置成了40px
(八)选择优先级和权重
1.样式冲突:
- 优先级:
!important > 内联 >id >class >tag >* > 继承 无穷大∞ > 1000 > 100 > 10 > 1 > 0 > 无
<style>
div{
color: red;
font-size: 500px;
}
.box{
color: green ;
}
#box{
color: blue !important;
}
</style>
<div id="box" class="box">
11
</div>
#tips
颜色会优先选择blue 字体大小为500px
2.相同优先级
P{
color: red;
}
P{
color: blue;
}
<p>222</p>
#tips
颜色会就近选择 最终是blue
(九)权重相加
选择器使用时 权重相加
但是不会超过他的数量级(比如11个class 也不会超过100 )!
.box{
color: red;
}
div.box{
color: yellow;
}
div.box.box1.box2.box3{
color: green;
}
<div id="box" class="box box1 box2 box3">
测试权重相加
</div>
??tips:
在当前状态下颜色时green 因为权重最高
但是如果有了
#box {
color: blue;
}
那权重就是100 再叠加box的权重都不会超过100
(十)盒模型
1.标准盒模型
- 内容+padding+border+margin
- 盒子的实际宽度 = content + padding +border
style>
.box{
width: 100px;
height: 100px;
padding: 10px;
border: 10px solid black;
margin: 20px;
}
</style>
<div class="box">
内容区
</div>
2.怪异盒模型:
怪异盒模型:ie提出的方案
- 盒子的组成 : content+ padding + border + margin
- 盒子实际宽度 :content + padding + border
<style>
.box{
width: 100px;
height: 100px;
padding: 10px;
border: 20px solid black;
box-sizing: border-box;
}
</style>
</head>
<body>
<!--
怪异盒模型:ie提出的方案
盒子的组成 : content+ padding + border + margin
盒子实际宽度 :content + padding + border
-->
<div class="box"></div>
</body>
(十一)Padding
一个值: 上下左右 四个方向 两个值: 上下、左右 三个值: 上 、左右 、下 四个值: 上 右 下 左
记不住就直接上方向 padding-direction
.box{
width: 100px;
height: 100px;
border: 2px solid black;
padding: 10px;
padding-top: 10px;
padding-bottom: 10px;
padding-left: 10px;
padding-right: 10px;
}
<div class="box">
好好学习、天天向上
</div>
(十一)边框
1.边框的设置
.box{
width: 100px;
height: 100px;
background-color: rgb(82, 211, 56);
border: 10px dotted black;
}
2.边框的使用(圆形、三角形)
#圆形
.circle{
width: 100px;
height: 100px;
border: 1px solid black;
border-radius: 50%;
background-color: red;
}
#三角形
.tri{
width: 0;
height: 0;
border: 50px solid transparent;
border-top-color: black;
}
#梯形
.tx{
width: 100px;
height: 100px;
border: 5px solid transparent;
border-top: 50px solid transparent;
border-left: 50px solid transparent;
border-bottom: 50px solid yellowgreen;
border-right: 50px solid transparent;
}
#树叶🍂
.leaf{
width: 100px;
height: 100px;
border: 1px solid black;
background-color: green ;
border-top-right-radius: 50%;
border-bottom-left-radius: 50%;
}
(十二)边框
1.常规使用
margin和padding的一个、两个、三个、四个的值 是一样的
.box{
width: 100px;
height: 100px;
background-color: red;
margin-bottom: 50px;
}
.green{
margin-top: 80px;
width: 100px;
height: 100px;
background-color:yellow ;
}
<!--
外边距重合
按照大的为准 例如:
上面的元素 :margin-bottom: 50px;
下面的元素:margin-top: 80px;
那么间隔是 80px
-->
<div class="box"></div>
<div class="green"></div>
??: 外边距重合 那么按照大的为准 例如: 上面的元素 :margin-bottom: 50px; 下面的元素:margin-top: 80px; 那么间隔是 80px
2.穿透问题
<style>
*{
padding: 0;
margin:0;
}
.parent{
width: 100px;
height: 100px;
background-color: red;
}
.son{
margin-top: 50px;
width: 50px;
height: 50px;
background: yellow;
}
</style>
<div class="parent">
<div class="son"></div>
</div>
会看到 虽然设置了son但是外面那个div也跟着一起移动了
(十三)块的居中
<style>
*{
padding: 0;
margin: 0;
}
.box{
height: 200px;
background-color: red;
width: 440px;
margin: 0 auto;
}
</style>
tips:使用的方法 :
当margin是两个值的时候 设置为 0 和 auto
那么 上下是0 左右是auto
(十四)内联元素居中
内联元素居中在父元素中使用:text-align:center
<style>
div{
text-align: center;
}
</style>
<div>
<span>行元素</span>
<button>行内块</button>
</div>
(十五)伪元素
伪元素 中间使用 ::
例如:.box**:😗*before
??:伪元素 默认是 inline
.box{
width: 100px;
height: 100px;
background-color: red;
}
.box::before{
content: 'Y';
}
.box::after{
content: 'B';
}
<div class="box"></div>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X0PftaOd-1636642658373)(http://pic.mymur.cn//image-20211111225628040.png)]
(十六)伪类
伪类 用 :
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
a:hover{
color: red;
}
a:active{
color: seagreen;
}
input:focus{
color: blue;
}
</style>
</head>
<body>
<a href="https://www.baidu.com">baidu</a>
<input type="text">
</body>
(十七)背景图
.box{
width: 1000px;
height: 1000px;
background-image: url('https://img2.baidu.com/it/u=2687896763,759571384&fm=26&fmt=auto');
background-repeat: no-repeat;
background-position: 20px 50px;
}
body{
background-image: url(./1.png);
background-size: cover;
background-attachment: fixed;
}
<body>
<div class="box"></div>
<div>撑开页面</div>
<div>撑开页面</div>
<div>撑开页面</div>
<div>撑开页面</div> ...*40
</body>
效果图:
(十八)行内块布局
1.传统的用table进行布局
<table border ="1px solid black" align="center">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
2.行内块 布局
<style>
div{
display: inline;
width: 100px;
height: 100px;
background-color: yellow;
}
</style>
<body>
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
</body>
自己实践:
<head>
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
a {
color: #000;
text-decoration: none;
}
.box {
background-color: black;
text-align: center;
}
.box a{
color: rgb(176, 176, 176);
font-size: 12px;
height: 40px;
width: 48px;
line-height: 40px;
}
</style>
</head>
<body>
<div class="box">
<a href="#">xiaomi01</a>
<a href="#">xiaomi01</a>
<a href="#">xiaomi01</a>
<a href="#">xiaomi01</a>
<a href="#">xiaomi01</a>
<a href="#">xiaomi01</a>
<a href="#">xiaomi01</a>
<a href="#">xiaomi01</a>
<a href="#">xiaomi01</a>
</div>
</body>
样式重置:reset.css
网上有大神写的
文字居中:
<u>文字行间距 = 行高 - 文字高度</u>
(十九)浮动布局
浮动布局:div + 浮动 + position
1.开启浮动元素自身:
浮动:分为 左浮动 和 右浮动
为啥使用浮动: 两个 or 多个 块元素 在同一行显示
开启浮动元素自身特点:
1.元素会脱离文档流(优先排列)
2.元素的默认层级会上调
3.不会覆盖文字
4.行元素和行内块 在开启浮动后 会变为块元素 --》blocke(宽高由内容撑开)
<style>
*{
padding: 0;
margin: 0;
}
.box{
width: 100px;
height: 100px;
border: 1px solid black;
float: left;
}
.red{
background-color: red;
}
.green{
background-color: green;
}
.blue{
background-color: blue;
}
.box1{
width: 100px;
height: 150px;
background-color: grey;
}
</style>
<div class="box red"></div>
<div class="box green"></div>
<div class="box blue"></div>
<span>文字 看看你能覆盖1?</span>
<div class="box1">文字 看看你能覆盖2?</div>
2.对兄弟元素的影响:
<style>
*{
padding: 0;
margin: 0;
}
.box{
width: 100px;
height: 100px;
border: 1px solid black;
}
.red{
background-color: red;
float: left;
}
.green{
background-color: green;
clear:left;
}
</style>
<div class="box red"></div>
<div class="box green"></div>
3.对父亲元素的影响:
<style>
*{
padding: 0;
margin: 0;
}
.box{
border: 10px solid #000;
}
.item{
width: 1000px;
height: 100px;
float: left;
}
.red{
background-color: red;
}
.green{
background-color: green;
}
.blue{
background-color: blue;
}
.son{
clear: both;
}
</style>
<!--
由于子元素开启浮动后 脱离文档流 无法支撑父元素高度
1.给父元素设置高度(不推荐)
2.让父元素也浮动(不推荐)
3.给一个空元素 cleaer
4.世界统一写法 使用伪元素
-->
<div class="box">
<div class="item red"></div>
<div class="item green"></div>
<div class="item blue"></div>
<!-- <div class="son"></div> -->
</div>
4.高度塌陷终极解决方案
??! !!用伪元素 清除浮动!!! cleaerFix::after
<style>
*{
padding: 0;
margin: 0;
}
.box{
border: 10px solid #000;
}
.item{
width: 1000px;
height: 100px;
float: left;
}
.red{
background-color: red;
}
.green{
background-color: green;
}
.blue{
background-color: blue;
}
.cleaerFix::after{
content: "";
display: block;
clear: both;
}
</style>
<body>
<div class="cleaerFix box">
<div class="item red"></div>
<div class="item green"></div>
<div class="item blue"></div>
</div>
</body>
(二十)小米官网浮动简易案例
www.mi.com
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
padding: 0;
margin: 0;
}
.clearfix::after{
content:"";
display: block;
clear: both;
}
ul{
list-style:none;
}
a {
color: #000;
text-decoration: none;
}
.left{
float: left;
}
.right{
float: right;
}
.w{
width: 1226px;
margin: 0 auto;
}
body{
background-color: #f5f5f5;
}
.header i{
font-style: normal;
display: inline-block;
width: 20px;
height: 20px;
border-radius: 50%;
background-color: #b0b0b0;
text-align: center;
line-height: 20px;
color: #fff;
padding-bottom: 5px;
}
.header-right{
cursor: pointer;
}
.header-right:hover{
color: #ff6700;
}
.header-right:hover i{
background-color: #ff6700;
}
.main-left{
width: 234px;
}
.main-left img{
width: 234px;
height: 618px;
}
.main-right{
width: 992px;
}
.main-item{
text-align: center;
width: 234px;
height: 300px;
background-color: white;
margin-left: 14px;
margin-bottom: 14px;
}
.main-item img{
width: 160px;
height: 160px;
}
.title{
margin: 0 10px 2px;
}
.price{
color: #ff6700;
}
.des{
margin: 0 10px 10px;
height: 18px;
font-size: 12px;
color: #b0b0b0;
}
</style>
</head>
<body>
<div class="box ">
<div class="header w clearfix">
<div class="header-left left">
手机
</div>
<div class="header-right right">
查看更多 <i>></i>
</div>
</div>
<div class="main w clearfix">
<div class="main-left left">
<img src="./r.webp" alt="">
</div>
<div class="main-right right clearfix">
<div class="main-item left">
<img src="./l.webp" alt="">
<h3 class="title">黑鲨4S</h3>
<p class="des">磁动力生....</p>
<span class="price">2699起</span>
</div>
<div class="main-item left">
<img src="./l.webp" alt="">
<h3 class="title">黑鲨4S</h3>
<p class="des">磁动力生....</p>
<span class="price">2699起</span>
</div>
<div class="main-item left">
<img src="./l.webp" alt="">
<h3 class="title">黑鲨4S</h3>
<p class="des">磁动力生....</p>
<span class="price">2699起</span>
</div>
<div class="main-item left">
<img src="./l.webp" alt="">
<h3 class="title">黑鲨4S</h3>
<p class="des">磁动力生....</p>
<span class="price">2699起</span>
</div>
<div class="main-item left">
<img src="./l.webp" alt="">
<h3 class="title">黑鲨4S</h3>
<p class="des">磁动力生....</p>
<span class="price">2699起</span>
</div>
<div class="main-item left">
<img src="./l.webp" alt="">
<h3 class="title">黑鲨4S</h3>
<p class="des">磁动力生....</p>
<span class="price">2699起</span>
</div>
<div class="main-item left">
<img src="./l.webp" alt="">
<h3 class="title">黑鲨4S</h3>
<p class="des">磁动力生....</p>
<span class="price">2699起</span>
</div>
<div class="main-item left">
<img src="./l.webp" alt="">
<h3 class="title">黑鲨4S</h3>
<p class="des">磁动力生....</p>
<span class="price">2699起</span>
</div>
</div>
</div>
</div>
</body>
</html>
其他可学习
Sass、Less、BFC
(二十一)定位简介
.box{
position: static;
}
其中静态定位 就是默认的文档流
(二十二)相对定位
相对定位:
<style>
*{
padding: 0;
margin: 0;
}
.red{
width: 100px;
height: 100px;
background-color: red;
position: relative;
z-index: -1;
top: 30px;
left: 40px;
}
.green{
width: 100px;
height: 100px;
background-color: green;
}
</style>
<body>
<div class="red"></div>
<div class="green"></div>
</body>
(二十三) 固定定位 fixed
固定定位:
- 1.参考点:浏览器窗口的可视区域
- 2.是否脱离文档流: 会脱离文档流
- 3.层级: 默认会上调 可以用z-index 调整
- 4.位置: 默认在原来的位置
可以用 left top bottom right调整位置 - 5.使用场景:用于相对于浏览器窗口定位(eg:侧边栏)
<style>
*{
padding: 0;
margin: 0;
}
.box{
width: 200px;
height: 100px;
background-color: red;
position: fixed;
top: 50px;
right: 0px;
}
.green{
height: 100px;
background-color: green;
}
</style>
<body>
<div class="box"> </div>
<div class="green"></div>
</body>
(二十四) 绝对定位 absolute
绝对定位:
-
1.参考点:离自己最近的 非static 的上面的元素 ***<u>找不到 相对于body</u>***
**so:所以 如果父元素 不是 position:static 那就相对于父元素定位!**
-
2.是否脱离文档流: 会脱离文档流 -
3.层级: 默认会上调 可以用z-index 调整 -
4.位置: 默认在原来的位置 可以用 left top bottom right调整位置
-
5.使用场景:一般 子绝(绝对)父相 (相对)
<style>
*{
padding: 0;
margin: 0;
}
.box{
width: 100px;
height: 100px;
background-color: red;
position:absolute;
top: 50px;
left: 50px;
}
.green{
width: 100px;
height: 150px;
background-color: yellow;
}
.parent{
width: 300px;
height: 300px;
background-color: pink;
}
.son{
width: 100px;
height: 100px;
position: absolute;
top: 50px;
left: 50px;
background-color: blue;
}
</style>
<body>
<div class="box"></div>
<div class="green"></div>
<hr>
<div class="parent">
<div class="son"></div>
</div>
<hr>
</body>
理解:应该是用于 有了父元素然后子元素的定位 :eg:更多按钮(父元素),鼠标放上去之后,显示一些内容。
(二十五)粘性定位
案例:企汇网 上方的导航条 但是好像是js的
<style>
*{
padding: 0;
margin: 0;
}
.nav{
width: 100%;
height: 100px;
background-color: red;
position: sticky;
top:0px
}
</style>
<p>头部内容</p>
<p>头部内容</p>
<p>头部内容</p>
<p>头部内容</p>
<p>头部内容</p>
<div class="nav"></div>
<p>撑开页面</p> *100 ....
(二十六)绝对定位居中
方法一:
margin: auto auto;
top: 0;
left: 0;
right: 0;
bottom: 0;
方法二:
left: 50%;
margin-left: -50px; //width的一半
top: 50%;
margin-top: -50px; //height的一半
width: 100px;
height: 100px;
完整代码:
<style>
.box{
width: 500px;
height: 500px;
background-color: red;
margin: 0 auto;
position: relative;
}
.son{
position: absolute;
left: 50%;
margin-left: -50px;
top: 50%;
margin-top: -50px;
width: 100px;
height: 100px;
background-color: green;
}
</style>
<body>
<div class="box">
<div class="son"></div>
</div>
</body>
(二十七)tab 切换
样例:可以参考 百度上方的更多 按钮
<style>
*{
padding: 0;
margin: 0;
}
ul{
list-style: none;
}
a{
color: black;
text-decoration: none;
}
.clearfix::after{
content: "";
display: block;
clear: both;
}
li{
float: left;
padding: 5px;
position: relative;
}
.item{
width: 100px;
height: 100px;
background-color: yellow;
position: absolute;
display: none;
}
li:hover > .item{
display: block;
}
</style>
</head>
<body>
<ul class="clearfix">
<li>
<a href="#">小米手机</a>
<div class="item">详细介绍</div>
</li>
<li><a href="#">小米洗衣机</a></li>
<li><a href="#">小米汽车</a></li>
</ul>
</body>
百度官网 利用(文档流+ 浮动+ 定位) 布局
注解:
**1.**一般网页的布局都是遵循文档流的模式
**2.**浮动 会用在 一些排列中。
比如 百度热搜1-6条
1XXX. 4XXX.
2XXX. 5XXX.
3XXX. 6XXX.
会有一个如上的结构 做法:1-6的元素设置浮动 父元素用上面统一的方法clearfix (伪元素的方法)消除浮动
**3.**定位:
这里用到了
1.固定定位(fixed)
2.绝对定位(absolute)。—> 子元素absolute 父元素用relation (子绝父相)
用到固定定位的 是整个页面的 <u>右侧边栏</u> 和 <u>底部的简介按钮</u>。因为它们都按照。按浏览器大小 固定在页面一个位置
用到绝对定位的就是 “更多”这样的按钮,将鼠标悬浮 会浮现一个菜单
如果直接将 这个菜单的div 写入到“更多”按钮的旁边,会发现影响了其他按钮的排布
所以我们利用 绝对定位(absolute) 将此元素 和 **符合要求**的 ‘父’元素 相对定位,从而不会影响其他其他按钮的位置。【具体可以看 上面的 tab切换】 这里一般将元素的直系父元素的定位方式设置为相对 position:relation。当然也可以设置为除了static的其他定位方式。这里主要是要表达,一般把 **‘直系父亲’** 设置一个定位!!!让子元素有很好的参照。
<style>
* {
padding: 0;
margin: 0;
}
body {
background-color: white;
}
.left {
float: left;
}
.right {
float: right;
}
.center {
margin: 0 auto;
}
.clearfix::after {
content: '';
display: block;
clear: both;
}
ul {
list-style: none;
}
input {
background: none;
outline: none;
border: none;
}
a {
color: black;
text-decoration: none;
}
.header-left div {
float: left;
padding: 17px;
}
.header-right div {
float: right;
padding: 8px;
}
.header a {
font-size: 13px;
}
#login {
display: inline-block;
text-align: center;
width: 34px;
padding: 0;
background-color: rgb(48, 110, 242);
border-radius: 3px;
color: white;
}
.main-box {
width: 654px;
height: 510px;
}
#logo {
margin-top: 50px;
width: 270px;
height: 129px;
}
.main-logo {
text-align: center;
}
.main-search {
margin-top: 15px;
width: 654px;
height: 44px;
border-radius: 10px;
border: 1px solid black;
}
.main-search-btn {
text-align: center;
width: 108px;
height: 44px;
line-height: 44px;
float: right;
background-color: rgb(48, 110, 242);
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
color: white;
font-size: 17px;
}
.main-search input {
width: 434px;
height: 44px;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
}
.main-hot {
margin-top: 30px;
width: 654px;
}
.hot-top {
height: 24px;
}
.hot-top h2 {
height: 24px;
line-height: 24px;
font-size: 14px;
}
#more-div {
position: relative;
}
.more-info {
display: none;
right: 0;
top: 20px;
border-radius: 10px;
position: absolute;
width: 310px;
background-color: wheat;
box-shadow: 0px 0px 10px black;
}
.more-info-box {
margin-right: 5px;
margin-top: 5px;
float: left;
width: 72px;
height: 72px;
background-color: red;
}
#more-info-btn:hover~.more-info {
display: block;
}
.circle {
margin: 4px 5px 0 10px;
width: 14px;
height: 14px;
border-radius: 50%;
border: 1px solid black;
}
.hot-top-right h2 {
float: left;
}
.hot-top-right div {
float: left;
}
.hot-item {
width: 306px;
height: 36px;
}
.hot-content li {
margin-right: 21px;
margin-bottom: 6px;
float: left;
}
.hot-content {
margin-top: 10px;
}
.hot-item .hot-item-num {
height: 36px;
line-height: 36px;
color: rgb(255, 102, 0);
font-size: 18px;
}
.hot-item .hot-item-des {
color: black;
height: 36px;
line-height: 36px;
font-size: 16px;
}
.hot-item span {
margin-left: 10px;
}
.footer {
position: fixed;
bottom: 0px;
}
.footer p {
margin-left: 30px;
margin-bottom: 12px;
float: left;
font-size: 12px;
color: rgb(187, 187, 187);
}
.side-wrapper {
width: 44px;
height: 88px;
position: fixed;
right: 0;
top: 80%;
}
.sider-wrapper-item {
width: 44px;
height: 44px;
position: relative;
}
.sider-wrapper-item:hover .side-box{
display: block;
}
.sider-wrapper-item img {
width: 44px;
height: 44px;
}
.side-box{
display: none;
position: absolute;
width: 100px;
height: 100px;
background-color: yellow;
bottom: 10px;
right:60px ;
}
</style>
<body>
<div class="header clearfix">
<div class="header-left left clearfix">
<div><a href="#">新闻</a></div>
<div><a href="#">hao123</a></div>
<div><a href="#">直播</a></div>
<div><a href="#">地图</a></div>
<div><a href="#">视频</a></div>
<div><a href="#">贴吧</a></div>
<div><a href="#">学术</a></div>
<div id="more-div">
<a id="more-info-btn" href="#">
更多
<div class="more-info clearfix">
<a href="#" class="more-info-box"></a>
<a href="#" class="more-info-box"></a>
<a href="#" class="more-info-box"></a>
<a href="#" class="more-info-box"></a>
<a href="#" class="more-info-box"></a>
<a href="#" class="more-info-box"></a>
<a href="#" class="more-info-box"></a>
<a href="#" class="more-info-box"></a>
</div>
</a>
</div>
</div>
<div class="header-right right clearfix">
<div><a id="login" href="#">登陆</a></div>
<div><a href="#">设置</a></div>
</div>
</div>
<div class="main center">
<div class="main-box center">
<div class="main-logo">
<img src="./BDLogo.png" alt="" id="logo">
</div>
<div class="main-search center clearfix">
<input type="text" />
<div class="main-search-btn">
百度一下
</div>
</div>
<div class="main-hot center">
<div class="hot-top clearfix">
<div class="left">
<h2>百度热搜 》</h2>
</div>
<div class="right hot-top-right clearfix">
<div class="circle"></div>
<h2>换一换</h2>
</div>
</div>
<div class="hot-content">
<ul class="clearfix">
<li>
<div class="hot-item">
<span class="hot-item-num">1</span>
<span class="hot-item-des">今天又是开心的一天hhhh</span>
</div>
</li>
<li>
<div class="hot-item">
<span class="hot-item-num">2</span>
<span class="hot-item-des">今天又是开心的一天hhhh</span>
</div>
</li>
<li>
<div class="hot-item">
<span class="hot-item-num">3</span>
<span class="hot-item-des">今天又是开心的一天hhhh</span>
</div>
</li>
<li>
<div class="hot-item">
<span class="hot-item-num">4</span>
<span class="hot-item-des">今天又是开心的一天hhhh</span>
</div>
</li>
<li>
<div class="hot-item">
<span class="hot-item-num">5</span>
<span class="hot-item-des">今天又是开心的一天hhhh</span>
</div>
</li>
<li>
<div class="hot-item">
<span class="hot-item-num">6</span>
<span class="hot-item-des">今天又是开心的一天hhhh</span>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="footer">
<p>关于百度</p>
<p>About Baidu</p>
<p>使用百度前必读</p>
<p>帮助中心</p>
<p>京公网安备11000002000001号</p>
<p>京ICP证030173号</p>
<p>?2021 Baidu </p>
<p>互联网药品信息服务资格证书 (京)-经营性-2017-0020</p>
<p>信息网络传播视听节目许可证 0110516</p>
</div>
<div class="side-wrapper">
<div class="sider-wrapper-item">
<img src="./r1.png" alt="">
<div class="side-box">
</div>
</div>
<div class="sider-wrapper-item">
<img src="./r2.png" alt="">
</div>
</div>
</body>
</html>
(二十八)设置字体
@font-face {
font-family:'myFont' ;
src: url("./XXXXX.ttf");
}
.box{
font-family: "myFont" ;
}
<div class="box">
Hello
我是大卫
This is Dave
这是我的学习笔记哈哈哈哈哈哈 很好看吧
</div>
(二十九)精灵图(雪碧图)
开局一张图:
可以利用下面的网页制作:
马克鳗 高效的设计稿标注、测量工具
http://www.baidu.com/link?url=AEfe03LvT9oNZc2lxFCKLhsIji_KVCc-H7FwYCoecIBuqLqn7cmai93YfDs3BkV0
网页中 利用背景图片导入:
<style>
.box{
width: 150px;
height: 150px;
background-image: url('./sprite.JPG');
background-size: 500% 400%;
background-position: -300% -200%;
}
</style>
重点: background-size: 500% 400%;
解释:
1.因为如果**设置为100% 100%** 代表着,将jpg图片按照比**例1:1的放入到box中**
2.设置**500% 400%;** 是因为 有有**5列(x的方向) 4 行(y的方向)**--》这样就会显示**第一张图**了
3.再通过 **background-position: -300% -200%**; 将图片**左移动3,上移动2**
4.就显示出 3行 4列的元素啦~
(三十)过度动画
添加过度动画 :
transition: x1 x2
X1: all 所有样式都生效 width:宽改变 X2: 动画持续时间 s
<style>
.box{
width: 100px;
height: 100px;
background-color: red;
transition: width .5s;
}
.box:hover{
width: 300px;
height: 500px;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
(三十一)关键帧动画
必要参数:
/* 自定义一个动画名称
animation-name: spin;
/* 动画时长 */ animation-duration: 1s;
@keyframes spin {
**0-100%**{}
}
<style>
.spin{
width: 100px;
height: 100px;
background-color: red;
margin: 50px auto;
animation-name: spin;
animation-duration: 1s;
animation-iteration-count: infinite;
animation-timing-function:cubic-bezier(0.38, 0.97, 0.72, 0.7);
animation-direction: reverse;
}
@keyframes spin {
0%{
transform: rotate(0);
}
100%{
transform: rotate(360deg);
}
}
</style>
<body>
<div class="spin"></div>
</body>
(三十二)Js简介
<script>
var a=1;
var b = true;
var str = 'hello world!';
console.log(str);
if(b){
console.log('if enter')
}
var sum =0;
for(var i=0;i<100;i++){
sum += 100;
}
console.log(sum)
var arr = [1,2,3,4,5];
for(var i=0;i<arr.length;i++){
console.log(arr[i])
}
arr.forEach(function(v,i){
console.log(v)
console.log(i)
})
function f1(){
console.log('f1')
}
function f2(a,b){
return a+b;
}
console.log(f2(1,2))
function f3(){
var a =1 ;
function b(){
console.log(a)
}
}
</script>
(三十三)Js对象
1.定义对象-字面量的方式
var obj = {
name:"悟空",
age:1500,
address:'花果山',
nick:'美猴王',
wife:{
name:'紫霞仙子',
address:'西方极乐世界'
},
skill:function(){
console.log('72变!!')
},
say(){
console.log('俺老孙来也!!')
},
son:{
name:'孙悟饭',
age:12,
address:'日本'
},
brother:{
name:'八戒',
wife:{
address:'address',
name:'高小姐'
}
}
}
2.遍历对象
for(key in obj){
console.log(obj[key])
}
3.调用对象中的方法
obj.say();
4.增删改查
obj.master ={
name:'三藏法师',
address:'长安'
}
obj.name = "孙行者";
console.log(obj.name)
console.log(obj['name'])
delete obj.wifi
(三十四)Dom简介
如何用dom操作 style、css、获取键盘输入?
<style>
.green{
background-color: green;
}
</style>
<div id="box">hello</div>
<button id="btn">button</button>
用dom操作 style、css、获取键盘输入:
<script>
var box = document.getElementById('box');
box.style = "color : red;width:100px;border: 1px solid black;height:100px"
box.classList.add('green');
console.log(box)
var btn = document.getElementById('btn');
btn.onclick = function(){
alert('click!')
}
document.onkeydown = function(e){
console.log(e.keyCode)
}
console.dir(document)
</script>
(三十五)jQuery模拟请求
$.get 请求web数据
//参数1请求的url路径 // 参数2 请求成功后 的回掉函数(成功后回掉)
<div id="box">
mycontent
</div>
<script src="./zepton.js"></script>
<script>
console.log($)
console.log( $('#box'))
$('#box').css({
'color':'red',
'font-size':'22px'
})
var obj ={
name:"孙悟空",
age:1500
}
var res1 = JSON.stringify(obj);
console.log(res1)
$.get(`https://autumnfish.cn/artist/list?type=1&area=96&initial=b`,function(res){
console.log(res)
})
</script>
网易云 音乐案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>网易云 音乐搜索</title>
<style>
.header{
width: 300px;
margin:0 auto;
}
img{
width: 100px;
height: 100px;
}
.item{
text-align: center;
width: 150px;
height: 150px;
padding-top: 10px;
border-radius: 10px;
box-shadow:0 0 10px black;
}
.box{
width: 1000px;
margin: 20px auto;
border: 1px solid black;
display: flex;
justify-content: space-around;
flex-wrap: wrap;
}
</style>
</head>
<body>
<div class="header">
<button type="-1">全部歌手</button>
<button type="1">男歌手</button>
<button type="2">女歌手</button>
<button type="3">组合</button>
</div>
<div class="box"></div>
</body>
<script src="./zepton.js"></script>
<script>
$('button').live('click',function(){
console.log($(this))
var type = $(this).attr("type");
console.log(type)
$.get(`https://autumnfish.cn/artist/list?type=${type}&area=96&initial=b`,function(res){
console.log(res)
var arr = res.artists
var str = '';
for(let i=0;i<arr.length;i++){
str += `<div class="item">
<img src=${arr[i].picUrl}>
<p>${arr[i].name}</p>
</div>
`;
$('.box').html(str)
}
})
})
</script>
</html>
四个实用总结
bolck类型 居中 定宽 margin:0 auto
inline类型 居中 text-align:center
水平+垂直 居中:子绝绝对 父相对
inline元素 --》需要改display 才能改width和height
杂
box-shadow:
box-shadow: 0px 0px 10px black;
span:
??: span 要改 display 才能设置宽 高 !!!!!
|