当前位置: 首页 > news >正文

前端(HTML + CSS + JS)

文章目录

  • 一、HTML
    • 1. 概念
      • (1)HTML 文件基本结构
      • (2)HTML代码框架
    • 2. 、HTML常见标签
  • 二、CSS
    • 1. CSS基本语法规范
    • 2. 用法
    • (1) 引用方式
    • (2)选择器
    • (3)常用元素属性
    • (4)元素的显示方式
    • 3. 盒模型
  • 三、JavaScript
    • 1. 概念
    • 2. 使用

一、HTML

1. 概念

HTML是超文本标记语言,超文本是指文本、声音、图片、视频、表格、链接等等。标记表示由许许多多的标签组成。HTML页面是运行到浏览器上的。

(1)HTML 文件基本结构

<html><head><title></title></head><body></body>
</html>
    • html 标签是整个 html 文件的根标签(最顶层标签)
    • head 标签中写页面的属性
    • body 标签中写的是页面上显示的内容
    • title 标签中写的是页面的标题
  1. 标签是有层次关系的 ------ 父子关系 / 兄弟关系。比如head和body是html的子标签,head和body是兄弟关系。这种关系构成了一个DOM树

  2. 每一个标签都相当于是一个对象,可以对对象进行增删查改操作

(2)HTML代码框架

可以通过!+ 回车的方式快速生成代码框架

<!DOCTYPE html>    <!-- DTD (文档类型定义), 描述当前的文件是一个 HTML5 的文件 --> 
<html lang="en">   <!-- lang 属性表示当前页面是一个 "英语页面",(有些浏览器会根据此处的声明提示是否进行自动翻译)-->
<head><meta charset="UTF-8"> <!--页面的字符编码方式是utf-8--><meta http-equiv="X-UA-Compatible" content="IE=edge">  <!--content="IE=edge" 表示IE浏览器渲染效果按照IE浏览器最高版本展示--><meta name="viewport" content="width=device-width, initial-scale=1.0"><!--name="viewport" 表示移动端适配--><title>Document</title>
</head>
<body><!-- 这是内容 -->
</body>
</html>

2. 、HTML常见标签

(1) 注释标签

ctrl + / 快捷键可以快速进行注释/取消注释

<!-- 我是注释 -->

(2)标题标签: h1-h6

有六个,从h1到h6,数字越大,字体越小,也越细。会换行且每个标题之间是有空格,这两个样式是自带的。

<h1>hello</h1>
<h2>hello</h2>
<h3>hello</h3>
<h4>hello</h4>
<h5>hello</h5>
<h6>hello</h6>

(3)段落标签: p

<p>这是一个段落</p>
  • p 标签之间存在一个空隙
  • 当前的 p 标签描述的段落, 前面还没有缩进. (未来 CSS 会学)
  • 自动根据浏览器宽度来决定排版.
  • html 内容首尾处的换行, 空格均无效.
  • 在 html 中文字之间输入的多个空格只相当于一个空格.
  • html 中直接输入换行不会真的换行, 而是相当于一个空格

(4)换行标签: br

br 是一个单标签(不需要结束标签)
br 标签不像 p 标签那样带有一个很大的空隙. 
<br/> 是规范写法. 不建议写成 <br>

(5)格式化标签

  1. 加粗: strong 标签 和 b 标签
  2. 倾斜: em 标签 和 i 标签
  3. 删除线: del 标签 和 s 标签
  4. 下划线: ins 标签 和 u 标签

前者有强调的作用,可以方便爬虫的获取

<strong>strong 加粗</strong>
<b>b 加粗</b>
<em>倾斜</em>
<i>倾斜</i>
<del>删除线</del>
<s>删除线</s>
<ins>下划线</ins>
<u>下划线</u>

(6)图片标签: img

<img src="rose.jpg">      <!--img 标签必须带有 src 属性. 表示图片的路径-->
  • 路径

    • 绝对路径:图片路径(最好使⽤ / , 不要使⽤ \) 、网络上的图片资源(复制粘贴)
    • 相对路径:以 html 所在位置为基准, 找到图⽚的位置
      • ./xxx.png ----------- >在该文件夹下有该图片
      • ./img/xxx.png ----------- >在上一层目录下的文件夹下有该图片
      • …/xxx.png ----------- >在上上层目录上有该图片
  • img 标签的其他属性

    • alt: 替换文本. 当文本不能正确显示的时候, 会显示一个替换的文字
    • title: 提示文本. 鼠标放到图片上, 就会有提示
    • width/height: 控制宽度高度. 高度和宽度一般改一个就行, 另外一个会等比例缩放,否则就会图片失衡
    • border: 边框, 参数是宽度的像素. 但是一般使用 CSS 来设定
<img src="rose.jpg" alt="鲜花" title="这是一朵鲜花" width="500px" height="800px"border="5px">

注意

  1. 属性可以有多个, 不能写到标签之前
  2. 属性之间用空格分割, 可以是多个空格, 也可以是换行
  3. 属性之间不分先后顺序
  4. 属性使用 “键值对” 的格式来表示.

(7)超链接标签: a

  • href: 必须具备, 表示点击后会跳转到哪个页面.
  • target: 打开方式. 默认是 _self(在当前界面打开新的页面),如果是 _blank 则用新的标签页打开

链接的几种形式

  • 外部链接: href 引用其他网站的地址
<a href="http://www.baidu.com">百度</a>
  • 内部链接: 网站内部页面之间的链接. 写相对路径即可
<a href="1.html">点我跳转到 1.html</a>
  • 空链接: 使用 # 在 href 中占位,不作任何改动,a表示刷新
<a href="#">空链接</a>
  • 下载链接: href 对应的路径是一个文件. (可以使用 zip 文件)
<a href="test.zip">下载文件</a>
  • 网页元素链接: 可以给图片等任何元素添加链接(把元素放到 a 标签中)
<a href="http://www.sogou.com"><img src="rose.jpg" alt="">
</a>

禁止 a 标签跳转: <a href="javascript:void(0);"> 或者 <a href="javascript:;">

  • 锚点链接: 可以快速定位到页面中的某个位置
<a href="#one">第一集</a>
<a href="#two">第二集</a>
<p id="one">第一集剧情 <br>第一集剧情 <br>...
</p>
<p id="two">第二集剧情 <br>第二集剧情 <br>...
</p>

(8)表格标签

  • 1. 基本使用

    • table 标签: 表示整个表格,Chrome浏览器表格不写的话,默认是零像素
    • tr: 表示表格的一行,快速拷贝:shitf + alt + ↓
    • td: 表示一个单元格,默认单元格有间隙,间隙是2
    • th: 表示表头单元格. 会居中加粗
    • thead: 表格的头部区域(注意和 th 区分, 范围是比 th 要大的),里面的内容居中+加粗展示
    • tbody: 表格得到主体区域
  • 2. 其他属性

    • 表格标签有一些属性, 可以用于设置大小边框等,但是一般使用 CSS 方式来设置,这些属性都要放到 table 标签中
    • align 是表格相对于周围元素的对齐方式. align=“center” (不是内部元素的对齐方式)
    • border 表示边框. 1 表示有边框(数字越大, 边框越粗), “” 表示没边框
    • cellpadding: 内容距离边框的距离, 默认 1 像素
    • cellspacing: 单元格之间的距离. 默认为 2 像素
    • width / height: 设置尺寸.
<table align="center" border="1" cellpadding="20" cellspacing="0" width="500"
height="500"><tr><td>姓名</td><td>性别</td><td>年龄</td></tr><tr><td>张三</td><td></td><td>10</td></tr><tr><td>李四</td><td></td><td>11</td></tr>
</table>
  • 3. 合并单元格
    跨行合并: rowspan=“n”
    跨列合并: colspan=“n”

(9)列表标签

(1)无序列表[重要] ul li , .
(2)有序列表[用的不多] ol li
(3)自定义列表[重要] dl (总标签) dt (小标题) dd (围绕标题来说明)
(4)快速生成列表的快捷键:eg.ul>li*3

  • 无序列表:小黑点是浏览器默认展现出来的一种形式,可以通过不同的type设置形式
    • disc:实心圆
    • square:实心方格
    • circle:空心圆
  • 有序列表:默认是数字,也可以通过不同的type改变样式
    • a:表示小写英文字母编号
    • A:表示大写英文字母编号
    • i:表示小写罗马数字编号
    • I:表示大写罗马数字编号
    • 1:表示数字编号(默认)
    • 可以通过start规定从几开始

(10)表单标签

表单是让用户输入信息的重要途径

  • 分类:

    • 表单域: 包含表单元素的区域. 重点是 form 标签
      • form是用来完成与服务器的交互的,把要执行的操作提交给服务器,action表示的就是服务器的地址,默认是0
    • 表单控件: 输入框, 提交按钮等. 重点是 input 标签。input是个表单控件,需要搭配表单域来实现
  • input标签

    • type(必须有), 取值种类很多多, button, checkbox, text, file, image,password,radio 等
    • name: 给 input 起了个名字. 尤其是对于 单选按钮, 具有相同的 name 才能多选一,都写的话,浏览器自己选择默认是哪一个
    • value: 按钮里面的字
    • checked: 默认被选中. (用于单选按钮和多选按钮)
    • maxlength: 设定最大长度
<!--文本框-->
<input type="text"><!--密码框-->
<input type="password"><!--单选框,ps.单选框之间必须具备相同的 name 属性, 才能实现 多选一 效果-->
<!--radio表示是自选框-->
<input type="radio" name="sex"><input type="radio" name="sex" checked="checked"><!--复选框-->
<input type="checkbox"> 吃饭 <input type="checkbox"> 睡觉 <input type="checkbox">打游戏<!--普通按钮-->
<input type="button" value="我是个按钮"><!--提交按钮,必须放到form标签内,点击后会尝试给服务器发送-->
<!--清空按钮,必须放到form标签内,点击后会将form内所有的用户输入内容重置-->
<form action="test.html"><input type="text" name="username"><input type="submit" value="提交">
</form><!--选择文件-->
<input type="file">

(11)无语义标签: div(分割) & span(跨度)

无语义没有固定的用途,干什么都行,像是两个盒子,用于网页布局

  • div 是独占一行的, 是一个大盒子
  • span 不独占一行, 是一个小盒子

(12)textarea 标签

<!--文本域中的内容, 就是默认内容, 注意, 空格也会有影响-->
<textarea rows="3" cols="50"></textarea>

(13)select标签:下拉菜单

<!--option 中定义 selected="selected" 表示默认选中-->
<select><option>北京</option><option selected="selected">上海</option>
</select>

(14)label 标签

  • 搭配 input 使用,点击 label 也能选中对应的单选/复选框, 能够提升用户体验
    • for 属性: 指定当前 label 和哪个相同 id 的 input 标签对应. (此时点击才是有用的)

(15)HTML 特殊字符

有些特殊的字符在 html 文件中是不能直接表示的, 例如:

  1. 空格: [& nbsp;]
  2. 小于号: <
  3. 大于号: >
  4. 按位与: &

二、CSS

1. CSS基本语法规范

前言:CSS可以控制页面的展示效果,HTML决定页面结构

  • 选择器 + {一条/N条声明}
    • 选择器决定针对谁修改 (找谁)
    • 声明决定修改啥. (干啥)
    • 声明的属性是键值对. 使用 ; 区分键值对, 使用 : 区分键和值
      在这里插入图片描述

CSS 要写到 style 标签中(后面还会介绍其他写法)
style 标签可以放到页面任意位置. 一般放到 head 标签内
CSS 使用 /* */ 作为注释. (使用 ctrl + / 快速切换)

规范

  • 样式大小写
    虽然 CSS 不区分⼤⼩写, 我们开发时统⼀使⽤⼩写字⺟
  • 空格规范
    冒号后⾯带空格
    选择器和 { 之间也有⼀个空格

2. 用法

(1) 引用方式

【1】内部样式表

  1. 概念:写在 style 标签中. 嵌入到 html 内部,虽然从理论上来说,style 放到 html 的哪里都行,但是一般都是放到 head 标签中

  2. 优点: 这样做能够让样式和页面结构分离.

  3. 缺点: 分离的还不够彻底. 尤其是 css 内容多的时候

【2】行内样式表

  1. 概念:通过 style 属性, 来指定某个标签的样式,只适合于写简单样式. 只针对某个标签生效
  2. 缺点:
    • 不能写太复杂的样式.
    • 这种写法优先级较高, 会覆盖其他的样式
<style>div {color: red;    <!--被覆盖了,字是绿色的-->}
</style>
<div style="color:green">绿色</div>

【3】外部样式

实际开发中最常用的方式

  1. 创建一个 css 文件
  2. 使用 link 标签引入 css
<link rel="stylesheet" href="[CSS文件路径]">
<!--stylesheet 表示引入的是一个样式表-->

优点: 样式和结构彻底分离了.
缺点: 受到浏览器缓存影响, 修改之后 不一定 立刻生效

关于缓存:
这是计算机中一种常见的提升性能的技术手段.
网页依赖的资源(图片/CSS/JS等)通常是从服务器上获取的. 如果频繁访问该网站,那么这些外部资源就没必要反复从服务器获取. 就可以使用缓存先存起来(就是存在本地磁盘上了). 从而提高访问效率.
可以通过 ctrl + F5 强制刷新页面, 强制浏览器重新获取 css 文件

(2)选择器

【1】标签选择器

  • 特点
    (1)能快速为同一类型的标签都选择出来.
    (2)但是不能差异化选择
<style>
p {color: red;
}
div {color: green;
}
</style><p>猫猫</p>
<div>狗狗</div>

【2】类选择器

  • 特点:
    (1)差异化表示不同的标签
    (2)可以让多个标签的都使用同一个标签
<style>.blue {color: blue;}.box {width: 200px;height: 150px;}.green {background-color: green;}
</style><div class="blue">猫猫1</div>
<div>猫猫2</div、<div class="box green"></div>
  • 语法细节
    (1)类名用 . 开头的
    (2)下方的标签使用 class 属性来调用
    (3)一个类可以被多个标签使用, 一个标签也能使用多个类(多个类名要使用空格分割, 这种做法可以让代码更好复用)
    (4)如果是长的类名, 可以使用 - 分割
    (5)不要使用纯数字, 或者中文, 以及标签名来命名类名

【3】id 选择器

  • CSS 中使用 # 开头表示 id 选择器
  • id 选择器的值和 html 中某个元素的 id 值相同
  • html 的元素 id 不必带 #
  • id 是唯一的, 不能被多个标签使用 (是和 类选择器 最大的区别)
<style>#ha {color: red;}
</style>
<div id="ha">蛤蛤蛤</div>

【4】通配符选择器

使用 * 的定义, 选取所有的标签,页面的所有内容都会被改成 红色,不需要被页面结构调用,主要用来消除边距

* {color: red;
}

【5】复合选择器(选学)

(1) 后代选择器 / 包含选择器.

  • 元素 1 和 元素 2 要使用空格分割
    元素 1 是父级, 元素 2 是子级, 只选元素 2 , 不影响元素 1

元素1 元素2 {样式声明}

<!--把 ol 中的 li 修改颜色, 不影响 ul-->
<ul><li>aaa</li><li>bbb</li><li>ccc</li>
</ul>
<ol><li>ddd</li><li>eee</li><li>fff</li>
</ol>ol li {color: red;
}
<!--元素 2 不一定非是 儿子, 也可以是孙子-->
<ul><li>aaa</li><li>bbb</li><li><a href="#">ccc</a></li>
</ul>ul li a {color: yellow;
}
或者
ul a {color: yellow;
}

(3)伪类选择器

I. 链接伪类选择器

  1. a:link 选择未被访问过的链接
  2. a:visited 选择已经被访问过的链接
  3. a:hover 选择鼠标指针悬停上的链接
  4. a:active 选择活动链接(鼠标按下了但是未弹起)
<a href="#">小猫</a>a:link {color: black;/* 去掉 a 标签的下划线 */text-decoration: none;
}
a:visited {color: green;
}
a:hover {color: red;
}
a:active {color: blue;
}

注意事项
(1)按照 LVHA 的顺序书写, 例如把 active 拿到前面去, 就会导致 active 失效. 记忆规则 “绿化”
(2)浏览器的 a 标签都有默认样式, 一般实际开发都需要单独制定样式.
(3)实际开发主要给链接做一个样式, 然后给 hover 做一个样式即可. link, visited, active 用的不多

a {color: black;
}
a:hover {color: red;
}

II. :focuse 伪类选择器

(3)常用元素属性

【1】字体属性

设置字体

  • 字体名称可以用中文, 但是不建议
  • 多个字体之间使用逗号分隔. (从左到右查找字体, 如果都找不到, 会使用默认字体)
  • 如果字体名有空格, 使用引号包裹
  • 建议使用常见字体, 否则兼容性不好
<style>.font-family .one {font-family: 'Microsoft YaHei';}.font-family .two {font-family: '宋体';}
</style>
<div class="font-family"><div class="one">这是微软雅黑</div><div class="two">这是宋体</div>
</div>

大小

  • 不同的浏览器默认字号不一样, 最好给一个明确值. (chrome 默认是 16px)
  • 可以给 body 标签使用 font-size
  • 要注意单位 px 不要忘记,如果写错了,浏览器会进行容错处理,以默认的字体大小展示
  • 标题标签需要单独指定大小
<!--实际上它设置的是字体中字符框的高度;实际的字符字形可能比这些框高或矮-->
p {font-size: 20px;
}

粗细

  • 可以使用数字表示粗细.
  • 700 == bold, 400 是不变粗, == normal取值范围是 100 -> 900
p {font-weight: bold;font-weight: 700;
}

文字样式

/* 设置倾斜 */
font-style: italic;
/* 取消倾斜 */
font-style: normal;

【2】文本属性

(1) 文本颜色

设置文本颜色

color: red;
color: #ff0000; ------ 十六进制形式,全部两两相同,可以简写
color: rgb(255, 0, 0); ------ 红、绿、蓝,数值越大,饱和度越高

<style>.color {color: red;/* color: rgb(255, 0, 0); *//* color: #ff0000; */}
</style>
<div class="color">这是一段话</div>

(2) 文本对齐

控制文字水平方向的对齐,不光能控制文本对齐, 也能控制图片等元素居中或者靠右

text-align: [值];

取值

  • center: 居中对齐
  • left: 左对齐
  • right: 右对齐

(3)文本装饰

text-decoration: [值];

常用取值:

  • underline 下划线. [常用]
  • none 啥都没有. 可以给 a 标签去掉下划线.
  • overline 上划线. [不常用]
  • line-through 删除线 [不常用]

(4)文本缩进

text-indent: [值];

控制段落的 首行 缩进 (其他行不影响)

  • 单位可以使用 px 或者 em.
  • 使用 em 作为单位更好. 1 个 em 就是当前元素的文字大小
  • 缩进可以是负的, 表示往左缩进. (会导致文字就冒出去了)

(5)行高

line-height: [值];

【3】背景属性

(1)背景颜色

<!--默认是 transparent (透明) 的. 可以通过设置颜色的方式修改-->
background-color: [指定颜色]
<style>body {background-color: #f3f3f3;}.bgc .one {background-color: red;}.bgc .two {background-color: #0f0;}.bgc .three {/* 背景透明 */background-color: transparent;}
</style>
<div class="bgc"><div class="one">红色背景</div><div class="two">绿色背景</div><div class="three">透明背景</div>
</div>

(2)背景图片

比 image 更方便控制位置(图片在盒子中的位置)
background-image: url(…);

注意:

  1. url 不要遗漏.
  2. url 可以是绝对路径, 也可以是相对路径
  3. url 上可以加引号, 也可以不加
<style>.bgi .one {background-image: url(rose.jpg);height: 300px;}
</style>
<div class="bgi"><div class="one">背景图片</div>
</div>

(3)背景平铺

background-repeat: [平铺方式]

  • 默认是 repeat.
  • 背景颜色和背景图片可以同时存在. 背景图片在背景颜色的上方

重要取值:

  • repeat: 平铺
  • no-repeat: 不平铺
  • repeat-x: 水平平铺
  • repeat-y: 垂直平铺
<style>.bgr .one {background-image: url(rose.jpg);height: 300px;background-repeat: no-repeat;}.bgr .two {background-image: url(rose.jpg);height: 300px;background-repeat: repeat-x;}.bgr .three {background-image: url(rose.jpg);height: 300px;background-repeat: repeat-y;}
</style><div class="bgr"><div class="one">不平铺</div><div class="two">水平平铺</div><div class="three">垂直平铺</div>
</div>

(4)背景位置

background-position: x y;
修改图片的位置

参数有三种风格:

  1. 方位名词: (top, left, right, bottom)
  2. 精确单位: 坐标或者百分比(以左上角为原点)
  3. 混合单位: 同时包含方位名词和精确单位
<style>.bgp .one {background-image: url(rose.jpg);height: 500px;background-repeat: no-repeat;background-color: purple;background-position: center;}
</style>
<div class="bgp"><div class="one">背景居中</div>
</div>

注意:

  • 如果参数的两个值都是方位名词, 则前后顺序无关. (top left 和 left top 等效)
  • 如果只指定了一个方位名词, 则第二个默认居中. (left 则意味着水平居中, top 意味着垂直居中. )
  • 如果参数是精确值, 则的的第一个肯定是 x , 第二个肯定是 y. (100 200 意味着 x 为 100, y 为 200)
  • 如果参数是精确值, 且只给了一个数值, 则该数值一定是 x 坐标, 另一个默认垂直居中
  • 如果参数是混合单位, 则第一个值一定为 x, 第二个值为 y 坐标. (100 center 表示横坐标为 100, 垂直居中)

(5)背景大小

background-size: length|percentage|cover|contain;

  • 可以填具体的数值: 如 40px 60px 表示宽度为 40px, 高度为 60px
  • 也可以填百分比: 按照父元素的尺寸设置
  • cover: 把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。背景图像的某些部分也许无法显示在背景定位区域中
  • 把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域
<style>.bgs .one {width: 500px;height: 300px;background-image: url(rose.jpg);background-repeat: no-repeat;background-position: center;background-size: contain;}
</style>
<div class="bgs"><div class="one">背景尺寸</div>
</div>

【5】圆角矩形

通过 border-radius 使边框带圆角效果

基本用法

border-radius: length;
length 是内切圆的半径. 数值越大, 弧线越强烈

生成圆形

<!--让 border-radius 的值为正方形宽度的一半即可-->
div {width: 200px;height: 200px;border: 2px solid green;border-radius: 100px;/* 或者用 50% 表示宽度的一半 */border-radius: 50%;
}

生成圆角矩形

<!--让 border-radius 的值为矩形高度的一半即可-->
div {width: 200px;height: 100px;border: 2px solid green;border-radius: 50px;
}

展开写法
border-radius 是一个复合写法. 实际上可以针对四个角分别设置

border-radius:2em;
等价于
border-top-left-radius:2em;
border-top-right-radius:2em;
border-bottom-right-radius:2em;
border-bottom-left-radius:2em;

border-radius: 10px 20px 30px 40px;
等价于
border-top-left-radius:10px;
border-top-right-radius:20px;
border-bottom-right-radius:30px;
border-bottom-left-radius:40px;

(4)元素的显示方式

【1】块级元素

常见的元素:h1 - h6、p、div、ul、ol、li …

  1. 特点:
    • 独占一行
    • 高度, 宽度, 内外边距, 行高都可以控制.
    • 宽度默认是父级元素宽度的 100% (和父元素一样宽)
    • 是一个容器(盒子), 里面可以放行内和块级元素.
<style>.demo1 .parent {width: 500px;height: 500px;background-color: green;}.demo1 .child {/* 不写 width, 默认和父元素一样宽 *//* 不写 height, 默认为 0 (看不到了) */height: 200px;background-color: red;}
</style><div class="demo1"><div class="parent"><div class="child">child1</div><div class="child">child2</div></div>
</div>
  1. 注意:
    • 文字类的元素内不能使用块级元素
    • p 标签主要用于存放文字, 内部不能放块级元素, 尤其是 div

【2】行内元素/内联元素

常见的元素:a、strong、b、em、i、del、s、ins、u、span …

  1. 特点:

    • 不独占一行, 一行可以显示多个
    • 设置高度, 宽度, 行高无效
    • 左右外边距有效(上下无效). 内边距有效.
    • 默认宽度就是本身的内容
    • 行内元素只能容纳文本和其他行内元素, 不能放块级元素
  2. 注意:

    • a 标签中不能再放 a 标签 (虽然 chrome 不报错, 但是最好不要这么做)
    • a 标签里可以-放块级元素, 但是更建议先把 a 转换成块级元素

【3】行内元素和块级元素的区别

(1)块级元素独占一行, 行内元素不独占一行
(2)块级元素可以设置宽高, 行内元素不能设置宽高.
(3)块级元素四个方向都能设置内外边距, 行内元素垂直方向不能设置

【4】改变显示模式

使用 display 属性可以修改元素的显示模式,可以把 div 等变成行内元素, 也可以把 a , span 等变成块级元素

(1)display: block 改成块级元素 [常用]
(2)display: inline 改成行内元素 [很少用]
(3)display: inline-block 改成行内块元素

3. 盒模型

【1】概述

每一个 HTML 元素就相当于是一个矩形的 “盒子”

这个盒子由这几个部分构成:边框 border、内容 content、内边距 padding、外边距 margin

在这里插入图片描述

【2】边框

1. 基础属性

  • 粗细: border-width
  • 样式: border-style, 默认没边框. solid 实线边框 dashed 虚线边框 dotted 点线边框
  • 颜色: border-color
div {width: 500px;height: 250px;border-width: 10px;border-style: solid;border-color: green;
}border: 1px solid red;		<!--支持简写, 没有顺序要求-->border-top/bottom/left/right		<!--可以改四个方向的任意边框-->

2. 边框会撑大盒子

相当于使用面积,套用面积的区别

  • 通过 box-sizing 属性可以修改浏览器的行为, 使边框不再撑大盒子.
<!--* 为通配符选择器--> 
* {box-sizing: border-box;
}

【3】内边距

padding 设置内容和边框之间的距离

基础写法

默认内容是顶着边框来放置的. 用 padding 来控制这个距离可以给四个方向都加上边距

  • padding-top
  • padding-bottom
  • padding-left
  • padding-right

注意:

  • 整个盒子的大小从原来的 300 * 200 => 310 * 205. 说明内边距也会影响到盒子大小(撑大盒子).
  • 使用 box-sizing: border-box 属性也可以使内边距不再撑大盒子. (和上面 border 类似)

复合写法
可以把多个方向的 padding 合并到一起

padding: 5px; 表示四个方向都是 5px
padding: 5px 10px; 表示上下内边距 5px, 左右内边距为 10px
padding: 5px 10px 20px; 表示上边距 5px, 左右内边距为 10px, 下内边距为 20px
padding: 5px 10px 20px 30px; 表示 上5px, 右10px, 下20px, 左30px (顺时针)

【4】外边距

1. 基础写法

控制盒子和盒子之间的距离,可以给四个方向都加上边距

  • margin-top
  • margin-bottom
  • margin-left
  • margin-right

2. 复合写法

margin: 10px; // 四个方向都设置
margin: 10px 20px; // 上下为 10, 左右 20
margin: 10px 20px 30px; // 上 10, 左右 20, 下 30
margin: 10px 20px 30px 40px; // 上 10, 右 20, 下 30, 左 40

3. 块级元素水平居中

  • 前提:
    (1)指定宽度(如果不指定宽度, 默认和父元素一致)
    (2)把水平 margin 设为 auto

margin-left: auto; margin-right: auto;
margin: auto;
margin: 0 auto;

  • 注意
    (1)这个水平居中的方式和 text-align 不一样.
    (2)margin: auto 是给块级元素用得到.
    (3)text-align: center 是让行内元素或者行内块元素居中的
    (4)对于垂直居中, 不能使用 "上下 margin 为 auto " 的方式

【5】去除浏览器默认样式

  • 浏览器会给元素加上一些默认的样式, 尤其是内外边距. 不同浏览器的默认样式存在差别
  • 为了保证代码在不同的浏览器上都能按照统一的样式显示, 往往我们会去除浏览器默认样式
  • 使用通配符选择器即可完成这件事情.
* {marign: 0;padding: 0;
}

三、JavaScript

1. 概念

【1】JavaScript 是什么

JavaScript (简称 JS), 是⼀个脚本语言, 解释型或即时编译型的编程语言. 虽然它是作为开发Web页面的脚本语言而出名,但是它也被⽤到了很多非浏览器环境中

虽然 Java 和 JavaScript 名字很像,但其实他们之间的语法风格相差许多

【2】HTML-CSS-JS

HTML:网页的结构(骨)
CSS:网页的表现(皮)
JavaScript:网页的行为(魂)

2. 使用

【1】引入方式

引入方式语法描述示例
行内样式直接嵌入到html元素内部< input type="button" value="点我⼀下" οnclick="alert('haha')">
内部样式定义< scrip> 标签,写到scrip标签中< script> alert("haha"); < /script>
外部样式定义< scrip> 标签,通过src属性引到外部 js 文件< script src="hello.js">< /script>

对比
(1)内部样式会出现大量的代码冗余, 不方便后期的维护,所以不常用
(2)行内样式, 只适合于写简单样式. 只针对某个标签生效. 缺点是不能写太复杂的jS
(3)外部样式,html和js实现了完全的分离, 企业开发常用方式

【2】基础语法

1. 变量

变量有三种声明方式

关键词解释示例
var早期JS中声明变量的关键字, 作用域在该语句的函数内var name = 'zhangsan';
lesES6 中新增的声明变量的关键字, 作用域为该语句所在的代码块 内les name = 'zhangsan';
const声明常量的,声明后不能修改const name = 'zhangsan';

注意
(1)JavaScript 是⼀门动态弱类型语言,变量可以存放不同类型的值(动态),随着程序的运⾏, 变量的类型可能会发生改变

var name = 'zhangsan';
var age = 20;
var a = 10; // 数字
a = "hehe"; // 字符串

Java是静态强类型语⾔, 在变量声明时, 需要明确定义变量的类型. 如果不强制转换, 类型不会发生变化

变量名命名规则
(1)组成字符可以是任何字⺟、数字、下划线(_)或美元符号($)
(2)数字不能开头
(3)建议使用驼峰命名

2. 数据类型

虽然js是弱数据类型的语⾔,但是js中也存在数据类型,js中的数据类型分为 原始类型和引用类型

数据类型描述
number数字. 不区分整数和小数
string字符串字面值需要使用引号引起来, 单引号双引号均可
boolean布尔类型. true 真, false 假
undefined表示变量未初始化,只有唯⼀的值 undefined

3. 运算符

JavaScript 中的运算符和 Java ⽤法基本相同

【3】JS对象

在 JS 中, 字符串, 数值, 数组, 函数都是对象
每个对象中包含若干的属性和方法
• 属性: 事物的特征
• 方法: 事物的行为

1. 数组

注意: JS 的数组不要求元素是相同类型

创建数组

  1. 使用new 关键字创建
// Array 的 A 要⼤写
var arr = new Array();
  1. 使用字面量方式创建 [常用]
var arr = [];
var arr2 = [1, 2, 'haha', false]; // 数组中保存的内容称为“元素”

数组操作

读: 使用下标的方式访问数组元素(从 0 开始)
增: 通过下标新增, 或者使用 push 进行追加元素
改: 通过下标修改
删: 使用 splice 方法删除元素

注意
(1)如果下标超出范围读取元素, 则结果为 undefined
(2)不要给数组名直接赋值, 此时数组中的所有元素都没了,相当于本来 arr 是⼀个数组, 重新赋值后变成字符串了

2. 函数

语法格式

// 创建函数/函数声明/函数定义
function 函数名(形参列表) {
          函数体
           return 返回值;
}
// 函数调⽤
函数名(实参列表) // 不考虑返回值
返回值 = 函数名(实参列表) // 考虑返回值

  • 函数的定义和调⽤的先后顺序没有要求. (这⼀点和变量不同, 变量必须先定义再使⽤)

关于参数个数

实参和形参之间的个数可以不匹配. 但是实际开发⼀般要求形参和实参个数要匹配

  1. 如果实参个数比形参个数多, 则多出的参数不参与函数运算

sum(10, 20, 30); // 30

  1. 如果实参个数⽐形参个数少, 则此时多出来的形参值为 undefined

sum(10); // NaN, 相当于 num2 为 undefined

函数表达式

var add = function() {var sum = 0;for (var i = 0; i < arguments.length; i++) {sum += arguments[i];}return sum;
}console.log(add(10, 20)); // 30
console.log(add(1, 2, 3, 4)); // 10
console.log(typeof add); // function

3. 对象

创建对象

  1. 使用字面量 创建对象 [常用] ----- 使⽤ { } 创建对象
//属性和⽅法使⽤键值对的形式来组织
//键值对之间使⽤ , 分割. 最后⼀个属性后⾯的 , 可有可⽆
//键和值之间使⽤ : 分割
//⽅法的值是⼀个匿名函数var a = {}; // 创建了⼀个空的对象
var student = {name: '小红',height: 175,weight: 170,    sayHello: function() {console.log("hello");}
};
  1. 使用 new Object 创建对象
var student = new Object(); // 和创建数组类似
student.name = "小红";
student.height = 175;
student['weight'] = 170;
student.sayHello = function () {console.log("hello");
}console.log(student.name);
console.log(student['weight']);
student.sayHello();
  1. 使用 构造函数 创建对象
//构造函数的函数名⾸字⺟⼀般是⼤写的
//构造函数不需要 return
function 构造函数名(形参) {this.属性 =;this.⽅法 = function...
}
var obj = new 构造函数名(实参);

使用对象的属性和方法

// 1. 使⽤ . 成员访问运算符来访问属性 `.` 可以理解成 "的"
console.log(student.name);
// 2. 使⽤ [ ] 访问属性, 此时属性需要加上引号
console.log(student['height']);
// 3. 调⽤⽅法, 别忘记加上 () 
student.sayHello();

【4】JQuery

虽然原生的JavaScript提供的API可以操作页面,但是代码十分复杂,所以我们使用jQuery。
jQuery是⼀个快速、简洁且功能丰富的JavaScript框架,它封装了JavaScript常用的功能代码, 提供了简洁而强大的选择器和DOM操作方法

1. 引入依赖

使用JQuery需要先引⼊对应的库
在使用jQuery CDN时,只需要在HTML⽂档中加入如下代码

< script src=“https://code.jquery.com/jquery-3.7.1.min.js”>

这个URL是CDN(内容分发网络)服务提供商为jQuery库提供的⼀个统一资源定位符,也可以使⽤其他公司提供的CDN地址

2. JQuery 语法

jQuery 语法是选取 HTML 元素后对其操作

基础语法

$(selector).action()
  • $() 是⼀个函数, 它是 jQuery 提供的⼀个全局函数, ⽤于选择和操作 HTML 元素.
  • Selector 选择器, ⽤来"查询"和"查找" HTML 元素
  • action 操作, 执行对元素的操作

JQuery 的代码通常都写在 document ready 函数中.

document:整个文档对象, ⼀个页面就是⼀个文档对象, 使用document表示

这是为了防止文档在完全加载(就绪)之前运行jQuery 代码,即在文档加载完成后才可以对 页面进行操作。如果在文档没有完全加载之前就运⾏函数,操作可能失败

$(document).ready(function(){// jQuery functions go here
});

3. JQuery 选择器

语法描述
$("*") 选取所有元素
$(this) 选取当前 HTML 元素
$("p") 所有 < p> 元素
$("p:first") 选取第⼀个

元素

$("p:last") 最后⼀个 < p> 元素
$(".box") 所有 class="box" 的元素
$("#box") id="box" 的元素
$(".intro .demo") 所有 class="intro" 且 class="demo" 的元素
$("p.intro") 选取 class 为 intro 的 < p> 元素
$("ul li:first") 选取第⼀个 < ul> 元素的第⼀个 < li> 元素
$(":input") 所有 元素
$(":text") 所有 type="text" 的 元素
$(":checkbox") 所有 type="checkbox" 的 元素

4. JQuery 事件

概念

JS 要构建动态页面, 就需要感知到用户的行为,
用户对于页面的⼀些操作(点击, 选择, 修改等) 操作都会在浏览器中产生⼀个个事件, 被 JS 获取到, 从而进行更复杂的交互操作

事件由三部分组成

  1. 事件源: 哪个元素触发的
  2. 事件类型: 是点击, 选中, 还是修改?
  3. 事件处理程序: 进⼀步如何处理. 往往是⼀个回调函数

常见的事件

事件代码
文档就绪事件(完成加载) $(document).ready(function)
点击事件 $(selector).click(function)
$双击事件$(selector).dblclick(function)
元素的值发生改变$(selector).change(function)
鼠标悬停事件$(selector).mouseover(function)

5. 操作元素

获取/设置元素内容

有参数时, 就进⾏元素的值设置, 没有参数时, 就进行元素内容的获取

JQuery方法说明
text()设置或返回所选元素的文本内容
html()设置或返回所选元素的内容(包括 HTML 标签)
val() 设置或返回表单字段的值

获取/设置元素属性

JQuery attr() 方法用于获取属性值

获取/返回css属性

css() 方法设置或返回被选元素的⼀个或多个样式属性

添加元素

  • 添加 HTML 内容
    1. append() : 在被选元素的结尾插⼊内容
    2. prepend() : 在被选元素的开头插⼊内容
    3. after() : 在被选元素之后插⼊内容
    4. before() : 在被选元素之前插⼊内容

删除元素

删除元素和内容,⼀般使用以下两个 jQuery 方法:

  1. remove() : 删除被选元素(及其子元素)
  2. empty() : 删除被选元素的子元素

相关文章:

前端(HTML + CSS + JS)

文章目录 一、HTML1. 概念&#xff08;1&#xff09;HTML 文件基本结构&#xff08;2&#xff09;HTML代码框架 2. 、HTML常见标签 二、CSS1. CSS基本语法规范2. 用法&#xff08;1&#xff09; 引用方式&#xff08;2&#xff09;选择器&#xff08;3&#xff09;常用元素属性…...

12 要素 12 Factor

I. 基准代码 一份基准代码&#xff0c;多份部署 一个应用&#xff0c;一个基准代码git仓库&#xff0c;多个环境版本部署&#xff08;prod&#xff0c;staging&#xff0c;develop&#xff09; II. 依赖 显式声明依赖关系 docker的dockerfile&#xff0c;php的composer.jso…...

十大排序之冒泡排序与快速排序(详解)

文章目录 &#x1f412;个人主页&#x1f3c5;算法思维框架&#x1f4d6;前言&#xff1a; &#x1f380;冒泡排序 时间复杂度O(n^2)&#x1f387;1. 算法步骤思想&#x1f387;2.动画实现&#x1f387; 3.代码实现&#x1f387;4.代码优化&#xff08;添加标志量&#xff09; …...

【SpringBoot篇】阿里云OSS—存储文件的利器

文章目录 &#x1f339;什么是阿里云OSS⭐阿里云OSS的优点 &#x1f3f3;️‍&#x1f308;为什么要使用云服务OSS&#x1f384;使用步骤⭐OSS开通⭐参考官方SDK &#x1f354;编写代码⭐上传文件 &#x1f339;综合案例 &#x1f339;什么是阿里云OSS 阿里云对象存储&#xf…...

Leetcode—58.最后一个单词的长度【简单】

2023每日刷题&#xff08;四十&#xff09; Leetcode—58.最后一个单词的长度 实现代码 int lengthOfLastWord(char* s) {int len strlen(s);int left 0, right 0;if(len 1) {return 1;}while(right < len) {if(right 1 < len) {if(s[right] && s[righ…...

Apach Ozone部署

前言 最近由于工作需要&#xff0c;要部署一套ozone。我自己对hadoop这套体系不是很熟悉&#xff0c;所以过程磕磕碰碰&#xff0c;好不容易勉强搭起来&#xff0c;所以记录一下部署方式 准备 三台主机&#xff0c;主机均已安装jdk、hdfs&#xff0c;相关的安装配置就不另外写…...

【nlp】3.2 Transformer论文复现:1. 输入部分(文本嵌入层和位置编码器)

Transformer论文复现:输入部分(文本嵌入层和位置编码器) 1 输入复现1.1 文本嵌入层1.1.1 文本嵌入层的作用1.1.2 文本嵌入层的代码实现1.1.3 文本嵌入层中的注意事项1.2 位置编码器1.2.1 位置编码器的作用1.2.2 位置编码器的代码实现1.2.3 位置编码器中的注意事项1 输入复现…...

自动化部署 / 扩容openGauss —— Ansible for openGauss

前言 大家好&#xff0c;今天我们为大家推荐一套基于 Ansible 开发的&#xff0c;自动化部署及扩容 openGauss 的脚本工具&#xff1a;Ansible for openGauss&#xff08;以下简称 AFO&#xff09;。 通过AFO&#xff0c;我们只需简单修改一些配置文件&#xff0c;即可快速部署…...

Go 实现网络代理

使用 Go 语言开发网络代理服务可以通过以下步骤完成。这里&#xff0c;我们将使用 golang.org/x/net/proxy 包来创建一个简单的 SOCKS5 代理服务作为示例。 步骤 1. 安装 golang.org/x/net/proxy 包 使用以下命令安装 golang.org/x/net 包&#xff0c;该包包含 proxy 子包&am…...

Redis报错:JedisConnectionException: Could not get a resource from the pool

1、问题描述&#xff1a; redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool 2、简要分析&#xff1a; redis.clients.util.Pool.getResource会从JedisPool实例池中返回一个可用的redis连接。分析源码可知JedisPool 继承了 r…...

【广州华锐互动】Web3D云展编辑器能为展览行业带来哪些便利?

在数字时代中&#xff0c;传统的展览方式正在被全新的技术和工具所颠覆。其中&#xff0c;最具有革新意义的就是Web3D云展编辑器。这种编辑器以其强大的功能和灵活的应用&#xff0c;正在为展览设计带来革命性的变化。 广州华锐互动开发的Web3D云展编辑器是一种专门用于创建、编…...

Vue项目实战之一----实现分类弹框效果

效果图 实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script src"js/vue.js"></script><!-- 引入样式 --><link rel"stylesheet&qu…...

Vue解析器

解析器本质上是一个状态机。但我们也曾提到&#xff0c;正则表达式其实也是一个状态机。因此在编写 parser 的时候&#xff0c;利用正则表达式能够让我们少写不少代码。本章我们将更多地利用正则表达式来实现 HTML 解析器。另外&#xff0c;一个完善的 HTML 解析器远比想象的要…...

Spring Cloud 版本升级遇坑记:OpenFeignClient与Gateway的恩怨情仇

Spring Cloud 版本升级遇坑记&#xff1a;OpenFeignClient与Gateway的恩怨情仇 近日&#xff0c;在对项目中的 Spring Boot、Spring Cloud 以及 Spring Cloud Alibaba 进行版本升级时&#xff0c;遭遇了一个令人头疼的问题&#xff1a;Spring Cloud Gateway 在运行时一直卡住&a…...

面试:Docker相关问题

文章目录 请解释一下什么是 Docker&#xff0c;以及它在云环境中的应用请简述Docker和LXC的区别什么是Docker Compose&#xff1f;请简述其作用和使用场景在使用Docker时&#xff0c;如何为容器创建一个可访问的网络当一个Docker容器运行异常时&#xff0c;如何通过Docker命令查…...

移动端浏览器 jquery 获取 pdf blob文件流 预览pdf

最近遇到一个需求&#xff0c;一个古早的移动端 juery 项目要求做一个页面&#xff0c;从接口获取 pdf 文件流&#xff0c;然后预览出来 这里使用第三方工具&#xff1a;pdf.js 代码如下&#xff1a; // 引入相关文件<script src"../js/pdf.js" type"text…...

Redis并发问题解决方案

目录 前言 1.分布式锁 1.基于单个节点 2.基于多个节点 3.watch(乐观锁) 2.原子操作 1.单命令操作 2.Lua 脚本(多命令操作) 3.事务 1.执行步骤 2.错误处理 3.崩溃处理 总结 前言 在多个客户端并发访问Redis的时候&#xff0c;虽然Redis是单线程执行指令&#xff…...

读取两个文件夹里不同名的文件,处理映射不对应的文件

解决方案&#xff1a;读取两个文件夹里不同名的文件&#xff0c;处理映射不对应的文件 # -*- coding: utf-8 -*- import ospath1 r/home/ubuntu/data/yoloData/images/train2017 path2 r/home/ubuntu/data/yoloData/labels/train2017def read_all_file_name():file_path ./t…...

SpringCloud原理-OpenFeign篇(四、请求原理)

文章目录 前言正文一、书接上回&#xff0c;从代理对象入手二、ReflectiveFeign.FeignInvocationHandler#invoke()三、SynchronousMethodHandler#invoke(...) 的实现原理3.1 invoke(...)源码3.2 executeAndDecode(...) 执行请求并解码 四、如何更换client 的实现 附录附1&#…...

什么是工业物联网(IOT)?这样的IOT平台你需要吗?——青创智通

物联网(IOT)是指在互联网上为传输和共享数据而嵌入传感器和软件的互联设备的广泛性网络。这允许将从物理对象收集的信息(数据)存储在专用服务器或云中。通过分析这些积累的信息&#xff0c;通过提供最优的设备控制和方法&#xff0c;可以实现一个更安全、更方便的社会。在智能家…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

C++ 类基础:封装、继承、多态与多线程模板实现

前言 C 是一门强大的面向对象编程语言&#xff0c;而类&#xff08;Class&#xff09;作为其核心特性之一&#xff0c;是理解和使用 C 的关键。本文将深入探讨 C 类的基本特性&#xff0c;包括封装、继承和多态&#xff0c;同时讨论类中的权限控制&#xff0c;并展示如何使用类…...

Python第七周作业

Python第七周作业 文章目录 Python第七周作业 1.使用open以只读模式打开文件data.txt&#xff0c;并逐行打印内容 2.使用pathlib模块获取当前脚本的绝对路径&#xff0c;并创建logs目录&#xff08;若不存在&#xff09; 3.递归遍历目录data&#xff0c;输出所有.csv文件的路径…...