数学建模社区-数学中国
标题:
HTML 知识点(未完)
[打印本页]
作者:
杨利霞
时间:
2020-5-5 14:53
标题:
HTML 知识点(未完)
HTML 知识点(未完)
, p0 D" X, A9 d. N, C
( \5 D5 P6 ]* c' T) |0 `0 ^
HTML 知识点
2 Q _$ ?! j# k5 k
( `4 d# w& d0 C, J: J" P9 H
三列布局- (高度已知,左右宽度固定,中间自适应)
$ y* W; g, |) [6 f+ o
8 u7 [* i, g: r( D& a8 ]( M
布局方案 优点 缺点
) O) h# F, ]+ @4 O0 ?
浮动 兼容性好 脱离文档流,需清除浮动
7 A3 W1 h$ x4 s. N9 d
绝对定位 比较快捷。 因为其本身脱离了文档流,导致了其子元素都脱离了文档流,使用性较差。
, n& H9 x" N- `# v
flex布局 目前是比较完美的方案。 只兼容到ie9。
9 u' K: B- A/ c" ?! \% h+ S
表格布局 兼容性好,当需要兼容ie8时可以用表格布局。 多栏布局时,某栏高度增加,会使其他栏高度一起增加。
8 _. S3 V4 B$ F
网格布局 新技术,代码量少
( x3 L* r! |+ t0 f% w
<!-- 网格布局 -->
) {! b5 D6 H( ^& p1 b; G
<body>
2 H3 J+ o4 S. r$ z* Z2 \ M$ T
<section class="layout grid">
# `) I6 K0 x' {
<style media="screen">
) i' ?6 ], c6 M
.layout.grid .left-right-center{
1 r1 A! \, g. m+ e' q- T' K) I
display: grid;
* F5 [' Z, }7 @3 L$ a
width: 100%;
" r/ ]( }) n, ~' Z5 h- O6 ]" ?0 P
grid-template-rows: 100px; // 设置行高
, S* _' K2 n9 k" m
grid-template-columns: 300px auto 300px; // 设置每列的宽度
# t9 m7 \4 c M1 s
) {' @4 w7 C5 _3 h" \
</style>
( @ w3 N, U3 P1 D
<article class="left-right-center">
h* Y y) l |# V8 h3 O# ~
<div class="left"></div>
( ~1 a: i, \+ E/ j% F3 w- T, n
<div class="center"></div>
+ _, s# ^* U7 u: X
<div class="right"></div>
8 G) ], d- B, j
</article>
; a* n0 f X! u7 i( q/ N
</section>
; h' O8 H1 @* o2 p: q l- Z7 k6 H& b
</body>
, y# B' n$ e% A# |2 n8 _7 h
$ p% W3 X7 V. N) z9 Q5 U. s
css盒模型
7 i* l& K! O$ B- ?7 R
9 S6 }6 A% I2 v" u1 p% v
CSS盒模型的认识
0 I* z' u' b* v H \
9 A" g3 U: K+ G" Z: ^
css属性: content padding border margin
( _; e0 t, L) } _0 R0 c$ O- f2 g1 `. g$ |
& v8 V9 |( t8 Q. R$ a1 H
两种模型:IE盒模型(怪异盒模型)和 标准盒模型
2 q/ M2 l" E* x% p. f0 z$ O
% q" n. Z5 W3 l$ v5 |# x
两种模型的区别:计算高度和宽度的不同
+ E* Y4 h/ z8 ]8 `( M
% {. q( ?% \7 o) U5 N6 }! d7 y
两种模型如何设置:box-sizing: content-box(标准盒模型); box-sizing: border-box(IE盒模型)
* |& @- u0 b0 |% K. e
" N. k) |( V( O- ~$ p8 _4 t9 B! o
JS如何设置获取盒模型对应的宽和高
: {& d3 n& y. Q6 B3 H+ }! _
6 Z( ^! y. r; v1 C2 R8 x
获取方式 优缺点
2 q6 r( I; C. F* z# q3 Z
dom.style.width/height 只能获取内联样式设置的宽和高
) e; K( [! o1 @+ K3 t
dom.current style.width 获取浏览器渲染后的宽和高,只支持ie
2 e3 N) T$ {& e1 r. ~
window.getcomputedstyle(dom).width 兼容性更好
& P& @; k, k/ ]# \/ V, t% ?
dom.getboundingclentreact().width 适用于取元素的绝对位置。能取到 left top width height 四个属性 。// 获取浏览器渲染后的宽和高一般用于获取元素绝对位置
( T; @. y! @2 I. R& {
实例题 (根据盒模型解释边距重叠)子元素边距成了父元素边距
3 e* h; m! R9 U# P$ S) m
1 ~/ e: G, _ L0 l
块级元素包含了子块级元素,子元素是100像素
! @, a# M0 b9 U' S; ^$ j! I
子元素与父元素上边距是10像素
4 o, E7 r) r8 u/ `" a& w
父元素是110px还是100px (100px, 设置了overflow:hidden就成了110px)
2 Y. h+ w( @* m$ V* O" D* \, y9 ~8 z- D
另一种兄弟块级元素-
6 i5 [# a+ U8 a8 @6 Z
' |. p' W# h6 F, z/ s6 i
挨着每个都有上边距或每个都有下边距。-
+ g! b" S6 a+ l M+ `8 l
该重叠的原则就是取最大值
9 D( j; J4 Z5 B* }
空元素的边距-取margin-top和margin-bottom的最大值
% ]! C7 x5 J, q# q' C
解决方案:
; O& S7 f, D" v2 _+ _4 a8 e' `3 |( {+ d
) J1 _2 x0 y5 k# o) {" ?) Q; M
父元素创建成一个BFC (无论父子,兄弟情况)
" F! s0 W, l. A. ^8 o8 o4 m0 I
1 f1 t4 c- c1 `4 L8 v
4. BFC (边距重叠解决方案)
. u, O2 O* x4 O2 x+ E
! I7 k+ M, r# p) [) J. d* Z3 t; V1 n
BFC(边距重叠解决方案)
! P6 i# J" v9 j+ m9 F1 y% E% b
) [4 Q# R$ R; U) H! ], j2 D
1、BFC的基本概念: 块级格式化上下文;
9 F2 U) V( o% X0 i4 n
- p3 G% B+ I+ D* d% F! A
2、BFC的原理:BFC的渲染规则。
: h, W3 i4 B6 X* w% f
+ f7 B J9 E& E+ O6 P( z" b
①:在BFC这个元素的垂直方向的边距会发生重叠。(同一个BFC下外边距会发生重叠)
- F4 p/ h& p" @* @
9 b) r$ g/ E% b" F3 K! \1 }
②:BFC的区域不会与浮动元素的box重叠。(清除浮动)
( G Q. A4 `' _) m: ^( K7 ^" ~9 j# f
4 o& d" L; z, q7 v. C- f
③:BFC在页面上是一个独立的容器,外面的元素不会影响里面的元素,里面的元素也不会影响外面的元素。
9 z! H& |" c& {6 h2 e' E7 Y5 w1 q6 l
: o, \* V" @+ q: z! x$ H0 R
④:计算BFC高度时,浮动元素也会参与计算
. n$ L5 m. p, S* m
+ D6 g( c1 Y& L7 R3 t
3、如何创建BFC
6 h M. [; s0 {% W2 L5 K
" w: f9 ~: H" v+ e/ E4 O2 d
①:float不为none。
7 [! p# x1 m! N3 `! }
& U I3 \6 c4 D& U- @: g& b4 r
②:position不为static或者relative。
% b! v; e/ w/ \
1 b1 o8 z! u& L' B9 i: E3 ~
③:display为inline-block或者是table相关的。
7 N9 f& r! e9 \, M8 X7 }
% M' `. Y) L& ]0 X* D) U! D
④:overflow不为visible。
7 @- M6 L5 F4 [8 z: z2 Z% N
0 h9 R$ H6 U+ r, k v. n" m' o) c
⑤ : body 根元素
0 T: ^/ w: m' C/ a: t( `
( ?8 W9 @ ]: U3 h D; Z$ h& I
应用场景:
' ?* ^/ K5 ~, ?1 v% F1 O% Y6 B, c1 N* }
左右布局时,float
% C$ f4 u8 x8 g
相邻div使用margin产生边距重叠
* Y) L4 u- J) g. P* T' n
dom事件
! }0 z d* c3 N1 D/ n5 b5 D
5 G6 U! A8 n9 N4 q% i/ t
基本概念: DOM事件的级别
3 R$ K3 o2 K& H( |1 R; {3 `
$ F' |# D" y- J0 Y7 ?4 }+ m2 b
DOM0: element.οnclick=function()
: z! l& j* k9 |1 X& ?7 w9 M1 L
- a! ]1 {) s, @1 j, b3 i
DOM2: element.addEventListener(‘click’, function(){}, false)
8 z( E1 e3 ^" {
/ N! I3 }3 @% S; ?, p
DOM3: element.addEventListener(‘keyup’, function(){}, false)
4 g9 B m" V4 F& P; z8 J- A
M. p4 P( ?9 L6 t
DOM事件模型
7 m9 f' M9 @& l$ E
/ N/ j% G$ l1 Z1 s
event.target 2. event.currentTarget
+ D5 O$ g/ F/ c# z! L+ e8 ?( d
event.target指向引起触发事件的元素,而event.currentTarget则是事件绑定的元素
: _. r' }6 l5 y4 X" P* s
DOM事件流
1 W0 Q! Q' w' b5 M
. k8 ], {$ ]# R, S$ s. j6 ]
事件流 -->《捕获》 2. 目标阶段 3. 冒泡
r' z( _# \2 {: w
描述DOM事件捕获的具体流程
* c" e a$ d. [
7 z0 l4 D3 A4 P& M. S
window 2. document 3. html 4. body 5. 按html结构 6. 目标元素
7 }' g3 m# Y+ ]: `
Event对象的常见应用
7 y* p# _6 U8 d% p. a& S/ N) K
8 P* t2 h2 @9 J7 { m1 |2 |
e.preventDefault() 2. e.stopPropagation() 3. e.stopImmediatePropagation() 4. e.currentTarget() 5. e.target()
7 h! L9 ?# l/ Q+ o g
自定义事件
! h, A2 f$ y$ q$ p8 A9 U- Z5 x
; b8 X$ c( H7 _4 c- U7 p
var eve = new Event('custome');
}4 e7 f' I1 {- z
ev.addEventListener('custome', function() {
# R2 @ r: Y5 x5 @
console.log('custome');
4 [% w! T2 z% ~. I9 u7 W) S
});
9 _& U) J7 C1 X& M( y
ev.dispatchEvent(eve);
( s( w8 b: y; P
1
; H. T) C: v: i; X- _
2
2 D( @" a/ t; \
3
8 w7 Q+ {; W+ N8 b
4
3 i& T$ U* z; o p3 ^$ \
5
: W# T, O* Y: ~$ L0 e4 E
http协议
$ k. _* ]3 h& |/ H
1 g$ B6 O d k% y7 D
HTTP协议的主要特点
! ^* M$ O, e3 G, G( _ p
, K" n/ ]8 ~3 z5 F/ n/ V V, j$ M
简单快速(资源的URI是固定的,输入URI)、灵活(头部分有不同数据类型,一个http协议不同传输)、
8 T5 @$ ]; `: T# c1 k0 h3 @
% t4 @1 p3 \% C8 X/ Y9 h9 m3 Q
无连接(连接一次就断掉)
9 z5 g8 _5 n+ s3 ]- O, `
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。
B* M; G3 w( i6 n' p3 B; e+ f4 G
无状态(两次连接身份)
6 v% k3 ?& s7 k7 x) L& i+ B B7 U
是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传
' F2 f; Y' [! l* F @
HTTP报文的组成部分
, w4 E( \6 y8 W. Y' r E9 u2 c
) X" r0 u! c: s9 i8 M* g, W
请求报文
! G/ X7 c( t' n
! F# D3 z7 h; b
请求行 请求头 空行 请求体
' H5 ]3 Z- g5 u/ U" t' y/ [* M
$ t* Y% g! z# l( {- K: U0 g
响应报文
/ s; d* _* @8 H# b+ k$ b( U
1 ^: g" ^, H6 b7 f3 k! M& h9 z
状态行 响应头 空行 响应体
- Y( h. V& h/ ]# e! ]
' C& t- [) a7 Z% h+ ^' d7 P4 S p
HTTP方法
8 l0 O, f" l; U" b5 o
) U2 K+ ~3 Z/ L, @0 t7 Y
方法名 方法作用 注意
3 z2 J, j7 T7 s; [
GET 获取资源
1 X% q# O9 Y% g' D+ H' h
POST 传输资源
, a. I- ?# `: S0 g
PUT 更新资源
2 u, e/ P! o0 u
DELETE 删除资源
/ \7 {9 L/ ~% K( ^8 q. g3 |
HEAD 获得报文首部
A( }* O6 J3 f2 k: h% q$ M& [& h' E
POST和GET的区别
* A }1 I: `" t* w" g/ v
) E6 s6 K' G# h9 e& t
get post
8 R, P P) _) A: L2 ?. N2 ?
在浏览器回退时是无害的 会再次提交请求
. l) s( B m% z4 h5 W) h N
产生的URL地址可以被收藏 post不可以
4 X) B5 j' f+ z+ P) b
请求会被浏览器主动缓存 不会,除非手动设置
1 t; |+ @) a7 d+ a7 ?
只能进行url编码 支持多种编码方式
, V3 x4 P& D# G
请求参数会被完整保留在浏览器历史记录里 参数不会被保留
* H3 J. ?) O0 a# f0 [
请求在URL中传送的参数是有长度限制的 没有限制
2 j' {& w" H. }8 `4 ~' s& n
对参数的数据类型,get只接受ASCII字符 没有限制
8 r7 C, T# J; d
更不安全,因为参数直接暴露在URL上,所以不能咏柳传递敏感信息 没暴露
2 q* w9 K0 }2 G7 L2 v% X
参数通过URL传递 放在Request body中
* t! l: ?, B# O0 u* v4 x
HTTP状态码
/ S6 r& r$ S" G
- O9 ~! @: g5 L/ U* l, A+ O# D5 Y
状态码 意义
: ]; O% k# d7 a8 M6 \8 ]
1xx 指示信息 - 表示请求已接收,继续处理。
6 U4 j0 f9 d. b" C/ v
2xx 成功 - 表示请求已被成功接收。
: [1 ?. C t, Y* I) T4 }* Y
3xx 重定向 - 要完成请求必须进行更进一步的操作。
7 O) {: a1 Z, }1 A% |
4xx 客户端错误 - 请求有语法错误或请求无法实现。
, R/ D6 D- r6 a8 [( r$ A; _0 y
5xx 服务器错误 - 服务器未能实现合法的请求。
+ |* |( |, o5 e T w
状态码 意义
/ s7 u# V- _0 U6 `2 {6 K) n, c5 p
200 OK 客户端请求成功
5 A0 _1 g1 E# K/ g" Z/ Q, x
206 Parital Content 客户发送了一个带有Range头的GET请求,服务器完成了它
: \! h6 b2 N& V1 N8 k" Y
301 Moved Permanently 所请求的页面已经转移至新的url
; N* ?" g+ }( B; W. ^3 c3 x+ e
302 Found 所请求的也么已经临时转移至新的url
W( t' l5 x( S$ ~+ L2 @3 P
304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求, 服务器告诉客户,原来缓冲的文档还可以继续使用
S5 [1 _5 n9 m
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
8 U' Q& Y, }& U0 K
401 Unanthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
: }" G; M" ] R. \# q
403 Forbidden 对被请求页面的访问被禁止
. n$ U7 S, P- d! J# i+ {, `
404 Not Found 请求资源不存在
Q) v( w9 i1 k# c) _
500 Internal Server Error 服务器发生不可预期的错误原来缓冲的文档还可以继续使用
b/ u: g& `% r) V8 s
503 Server Unavaliable 请求未完成, 服务器临时过载或当机,一段时间后可能恢复正常
2 `& ~% Z# n% b( X
什么是持久连接
7 N0 q+ }7 R/ T) Y! q
( v$ Z; g2 H. h/ s, x/ t
HTTP协议采用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时, 每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议)
; J$ E/ ?4 z3 o( c
% Q; S; T3 f B
当使用Keep-Alive模式(又称持久连接、连接重用)时, Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
( i% [% h- z+ {3 G+ P4 `
/ `- \: K5 M. d( [# K
使用了持久连接
- M# a" J3 d% B% @
1 X, o) d) T; Z8 G
请求1->响应1->请求2->响应2->请求3->响应3
! J1 j! x7 U; z/ n1 b8 x5 R
J. z' w1 l. {$ n! Y( w: j) A6 u
变成了
0 {4 d/ o( t F5 y3 R7 S1 c' I4 i9 D
- ^5 w$ F% n0 u
请求1->请求2->请求3->响应1->响应2->响应3
$ k4 T. ~: h5 K5 ?$ {, }- S) K
/ _3 k; D6 L$ w4 x
什么是管线化
& H8 \' G1 {5 H. V( f: x
" w, a: b1 C0 \4 _ Q
管线化通过持久连接完成,仅http/1.1 支持此技术
- Y/ G; A8 M0 G3 H. u( D( y
只有get和head请求可以进行管线化,而post则有所限制
' J% ?2 x r$ j) ^: M, ^
初次创建连接不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议
) Q% N! |6 [+ ], x+ e: ]. y
…
4 W, `2 R. T: K7 D
安全
. H2 w9 i2 t+ g! a8 Y
6 N9 I9 |7 p/ o/ u+ q7 v. n4 d. P
CSRF
2 K: b& [, O: f1 g2 ^
基本概念和缩写
4 o; N# X' C0 k( Q, m6 x
CSRF, 通常称为跨站请求伪造,英文名Cross-site request forgery 缩写CSRF。
2 @8 L2 _) W9 F0 O( z+ p
攻击原理
. b- C7 _$ |- B. v( V
访问网站B时,网站B引诱点击链接,用户浏览器携带的cookie就被网站B的某些代码访问了。
' u/ i V- V1 U, d7 W: p
这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
* R: J/ g0 t; K! N( w
XSS
* b, v0 `2 e: t1 y$ K- o K
基本概念和缩写
6 A$ W W) l5 u
XSS, 跨站脚本攻击, 英文名Cross Site Scripting 缩写XSS。
/ X6 |* D7 I# _0 J+ M
攻击原理
0 y& x1 t( h6 M: }9 ?
输出脚本code
/ X3 ]" F2 ~8 B
跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
% _9 N+ v Y& m& n
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
7 C2 N4 [' a* b# F
渲染机制类
4 u K" Y. v$ B% B
4 R0 [* T3 a+ ~0 g; I- P; x
什么是DOCTYPE及作用
" T; k% f& a V0 N, M$ {) F; w
; z# a, E4 x1 K
DTD (document type definition, 文档类型定义)是一系列的语法规则,用来定义XML或HTML的文件类型。
+ s |4 E, j9 M; j8 ~: A, D0 r
作用:浏览器会使用它来判断文档类型, 决定使用何种协议来解析,以及切换浏览器模式。
@! w' e/ ?3 `/ y
DOCTYPE是用来声明文档类型和DTD规范的,
" `2 ~6 N' Y% m9 S/ h
作用:一个主要的用途便是文件的合法性验证。如果文件代码不合法, 那么浏览器解析时便会出一些差错。
; `4 ]* k: q: U: w
HTML5的DOCTYPE:
0 A' c3 n0 a0 s9 _! K9 l; {" [
3 D& D# n7 y1 |& b- ]
HTML4有严格模式和传统模式
6 c9 E* Q7 b6 K! \
- S( T* F/ c) K5 C) b
浏览器渲染过程
/ n) ^; O7 V( S( Q6 Z0 x: J. d2 y
7 L. e8 N6 E4 \7 R: z4 W
一些概念
; E& `; E! g: `, n& O
( A# w: s9 H+ N0 V7 @% H- e% R; J' p
名称 概念
C3 n5 P5 r1 o, \
DOM Tree 浏览器将HTML解析成树形的数据结构。
) a* M5 [5 R0 V- } C
CSS Rule Tree 浏览器将CSS解析成树形的数据结构。
6 ^2 b6 z8 e: q; E7 |
Render Tree DOM和CSSOM合并后生成Render Tree。
4 y5 G) ~+ v' U6 l5 g+ m0 F
layout 有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系,从而去计算出每个节点在屏幕中的位置。
. u2 a* ], z; ?$ e% C
painting 按照算出来的规则,通过显卡,把内容画到屏幕上。
4 ?: L7 O* |. C1 ?& s+ w6 i" j( I
1。当用户输入一个URL,浏览器就会发送一个请求,请求URL对应的资源
0 _* Z" |! E/ |, y, V
2。HTML解析器会将这个文件解析,构建成一棵DOM树
) K. p/ p7 `( K9 D& [9 u0 |
3。构建DOM树时,遇到JS和CSS元素,HTML解析器就将控制权转让给JS或者CSS解析器
! ]' I" P9 G5 A& Z1 Z
4。JS或者CSS解析器解析完这个元素时候,HTML又继续解析下个元素,直到整棵DOM树构建完成
% \$ Q7 l7 u, N8 J" Z; b
5。DOM树构建完之后,浏览器把DOM树中的一些不可视元素去掉,然后与CSSOM合成一棵render树
( b0 [ I6 M) ^6 h
6。接着浏览器根据这棵render树,计算出各个节点(元素)在屏幕的位置。这个过程叫做layout,输出的是一棵layout树
' y+ ?2 F" M0 s/ N e% h. S4 }+ `
7。最后浏览器根据这棵layout树,将页面渲染到屏幕上去
8 H. a% z9 Z2 [& i
1
$ o& ], c7 U5 X4 `) T
2
: R) t7 V. s0 x8 o
3
3 ~. l0 d% q8 N* B3 H. Q
4
: Y$ F/ o C G+ g/ V; L
5
3 J( c- ^2 _' k8 f
6
2 T; O1 u. A+ P6 m0 Z9 ?1 ?
7
1 R; l! ~; c( ?8 n5 T
重排Reflow
7 K+ w$ J, F b$ }; i
+ d1 j3 l8 x. U# l2 L" P
定义:当浏览器发现某个部分发生了变化影响了布局,需要倒回去重新渲染,内行称这个回退的过程叫 reflow。
& E) Q0 \/ t$ z$ Q7 G
触发Reflow:
, k! [3 H8 X& c! s6 n8 G# v
当你增加、删除、修改dom节点时,会导致Reflow或Repaint
7 a7 T& i y: D1 c
当你移动DOM的位置,或是搞个动画的时候
' X @; l5 a( R" Z
当你修改CSS样式的时候
) b a- _, I. ^: a6 r
当你Resize窗口的时候(移动端没有这个问题),或是滚动的时候
# C8 a7 b9 ]. J0 q( E
当你修改网页的默认字体时
# ]0 @$ q+ b6 j/ {( y$ |
重绘Repaint
1 T1 @7 @ f; Y8 f# R" e' ^; K
- u& d$ `/ T$ \0 W1 l3 b
定义: 改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,屏幕的一部分要重画,但是元素的几何尺寸没有变。
# T; P Y1 [- O! ~
" \$ q8 R& i! k% k$ F
触发Repaint:
( K$ B9 {4 [7 ^0 y) u) `5 v
" K, m* l3 V: ^6 s9 _* g
DOM改动
" x7 g! D8 ^& q1 m1 ?! T
CSS改动
: q4 p' i( \7 T9 {$ y; c! i" u
————————————————
, Z& w, k3 I' y" \- t; F
版权声明:本文为CSDN博主「ton365」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
) i+ q' \$ S( `0 J* o" @+ c6 C5 y
原文链接:https://blog.csdn.net/u012015672/article/details/105931291
) b# o$ H" J$ P$ x
8 _! Q: Y4 I/ g0 \# T
& T6 ^/ g9 z* n) ]+ M& ?; r) R
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5