前端——前端入门
前端:
前端是做什么的?
前端的内容:HTML(展示内容), CSS(外观),javaScript(动画)
学习的重点:HTML(标签), CSS(选择器,属性),javaScript(基础语法,BOM&DOM)
WEB开发本质:
浏览器输入网址回车发生了什么?
- 浏览器给服务端发送了消息
- 服务端拿到消息
- 服务端返回信息
- 浏览器展示页面
C/S架构——>B/S架构:
C/S架构:客户端和服务端,connect和sever。比如想听音乐就要下载一个音乐播放器,
B/S架构: Broswer和sever。那么想听音乐,直接在浏览器的网页上听就可以了。客户端和服务端的消息格式是约定好的
那么浏览器和服务器之间的协议就是HTML.
HTTP协议:浏览器和服务器之间约定好的消息格式.
我们一般写的sockt的sever端通信格式是这样的
import socket sk=socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen() while 1: conn,addr=sk.accept() conn.recv(1024) conn.send(b'hello') conn.close()
但是,我们现在需要和浏览器之间的通信,这就需要加上HTTP协议
import socket sk=socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen() while 1: conn,addr=sk.accept() conn.recv(1024) conn.send(b'HTTP/1.1 200 OK\n\r\n\r')#也可以和下面要发的内容合并起来写成conn.send(b'HTTP/1.1 200 OK\n\r\n\rhello') conn.send(b'hello') conn.close()
此时在浏览器搜索页面输入127.0.0.1:8080 即可输出hello,即实现了sever端和浏览器之间的通信
进阶
import socket sk=socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen() while 1: conn,addr=sk.accept() conn.recv(1024) conn.send(b'HTTP/1.1 200 OK\n\r\n\r')#也可以和下面要发的内容合并起来写成conn.send(b'HTTP/1.1 200 OK\n\r\n\rhello') conn.send(b'<h1>hello</h1>')#前后加上<h1>后文字加粗加大 conn.close()
进阶:
可以将要发送的内容写在txt文件上,然后通过代码读出txt文件,然后输出在网页上
txt文件上的内容是
<h1>hello s99!</h1>
<img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1555937712&di=dbd1cb7c4e061c6261a746f1f946b370&src=http://img.haote.com/upload/news/image/20180316/20180316170729_86383.jpg">
<a href="http://www.sogo.com">sougou</a>
代码
import socket sk=socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen() while 1: conn,addr=sk.accept() conn.recv(1024) conn.send(b'HTTP/1.1 200 OK\r\n\r\n')#注意这里一定是\r\n\r\n,顺序不能错 with open('1.txt','rb')as f: msg=f.read() conn.send(msg)#前后加上<h1>后文字加粗加大 conn.close()
这样就能在浏览器中实现:文字、图片和连接的输出了
web的本质:
服务端
浏览器
html文件
那么在正式一些;这个txt实质上就是平时看到的html
那么代码也可以改成这样
import socket sk=socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen() while 1: conn,addr=sk.accept() conn.recv(1024) conn.send(b'HTTP/1.1 200 OK\r\n\r\n')#注意这里一定是\r\n\r\n,顺序不能错 with open('1.html','rb')as f: msg=f.read() conn.send(msg)#前后加上<h1>后文字加粗加大 conn.close()
目前web是通过写html来实现网页的内容,未来django就是通过网页来实现html。
HTML标签
HTML是一个标准,规定了大家怎么写网页
HTML————标签
<标签名>:标记语言(HTML, XML)
标记语言和编程语言的区别:标记语言没有逻辑,通俗易懂
常见的标签名:
分类:双标签、单标签
双标签
<h1></h1>
<a></a>
单标签,又称为自闭标签
<img>
虽然上面的txt或者html文件能够被浏览器读出来,但是不合乎规范,那么具体的规范格式如下:
HTML文件的结构:
<!DOCTYPE html>#首先声明这是一个html5文件,但是
<html>
<head>
#这里面的内容是写给浏览器说的,不会出现在页面上
</head>
<body>
#这里面的才是真正要出现在网页上显示的内容
</body>
</html>
那么重新写上面的html例子
<!DOCTYPE html> <html> <head> </head> <body> <h1>hello s99!</h1> <img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1555937712&di=dbd1cb7c4e061c6261a746f1f946b370&src=http://img.haote.com/upload/news/image/20180316/20180316170729_86383.jpg"> <a href="http://www.sogo.com">sougou</a> </body> </html>
当然也可以不要缩进,但是如果不要缩进,没有层次感,显得凌乱,所以最好加上缩进
HTML的注释格式
<!--注释的内容-->
快捷键:直接ctrl+/即可
head内常用标签
标签 | 意义 |
---|---|
<title></title> | 定义网页标题 |
<style></style> | 定义内部样式表 |
<script></script> | 定义JS代码或引入外部JS文件 |
<link/> | 引入外部样式表文件 |
<meta/> | 定义网页原信息,比如定义网页的编码格式等 |
标签详细内容
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <!--h表示几级标题,根据pacharm的提示最多可以有6级标题--> <h1>标题</h1> <!--插入图片--> <img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1555937712&di=dbd1cb7c4e061c6261a746f1f946b370&src=http://img.haote.com/upload/news/image/20180316/20180316170729_86383.jpg"> <!--如果和代码是同一个文件夹,那么直接写文件名字加上扩展名即可--> <img src="timg.jpg"> <!--因为本地没有timgs.jpg,这个问价,那么可以在alt中写上提示符,当文件不存在的时候,直接显示出提示的字符--> <img src="timgs.jpg" alt="53"> <!--title的作用是当鼠标在图片上的时候,给出提示的内容--> <img src="timg.jpg" title="老婆"> <!--a标签跳转到其他连接--> <a href="https://www.baidu.com/">百度一下</a> <!--但是执行这个操作以后是关闭了当前网页,那么如何执行新开一个网页打开呢,设置target参数,target参数默认是_self,也就是说打开当前页面,那么如果设置为_blank就表示打开一个新的网页--> <a href="https://www.baidu.com/" target="_blank">百度一下</a> </body> </html>
标签的属性
一个标签的重要属性:
id 就像人的身份证号一样在一个html页面中唯一
class:CSS渲染
style:可以对当前的颜色的属性进行定义
范例
<!--id、class style都是自己定义的属性,写在前面,然后用空格隔开即可--> <img id="li" class="xx" style="oo" src="timg.jpg">
当然这些自定义属性也可以不用同时出现
body内常用标签
<b>加粗</b> <i>斜体</i> <u>下划线</u> <s>删除</s> <p>段落标签</p> <!--换行--> <br> <!--水平线--><hr>
特殊字符
内容 | 对应代码 |
---|---|
空格 | |
> | > |
< | < |
& | & |
¥ | ¥ |
版权 | © |
注册 | ® |
div标签和span标签
div标签和span标签没有前面所介绍的其他标签那样那么多的属性,这反而是它的优点,因为可以使用CSS进行直接装饰,而不用首先先要去掉其他标签的默认属性
块级标签:就是一行长度默认占用浏览器的整个长度,能设置长度和宽度
常用:<h> <div> <p>
内联标签:根据内容决定长度,不能设置长度和宽度
常用:<a> <img> <h> <u> <s> <i> <b> <span>
列表
无序的列表
<!--无序的列表--> <ul> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ul>
无序列表的属性
type属性:
- disc(实心圆点,默认值)
- circle(空心圆圈)
- square(实心方块)
- none(无样式)
有序的列表
<!--有序的列表--> <ol> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ol>
type属性:
- 1 数字列表,默认值
- A 大写字母
- a 小写字母
- Ⅰ大写罗马
- ⅰ小写罗马
标题列表
<dl> <dt>标题1</dt> <dd>内容1</dd> <dt>标题2</dt> <dd>内容1</dd> <dd>内容2</dd> </dl>
表格
<body> <table BORDER="1"> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>爱好</th> </tr> </thead> <tbody> <tr> <th>tom</th> <th>18</th> <th>开车</th> </tr> <tr> <th>Jom</th> <th>18</th> <th>开车</th> </tr> </tbody> </table> </body>
技巧
在html中输入
h1*4>a.c1[id=a{$}]{a标签$}
然后Tab键就可以生成
<h1><a href="" class="c1" id="a{1}">a标签1</a></h1> <h1><a href="" class="c1" id="a{2}">a标签2</a></h1> <h1><a href="" class="c1" id="a{3}">a标签3</a></h1> <h1><a href="" class="c1" id="a{4}">a标签4</a></h1>
非常方便
标签的嵌套规则
行内标签不能嵌套块级标签
p标签不能嵌套块级标签,尤其是p标签不能嵌套div标签