- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565732 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174942
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
HTML 知识点(未完)& w+ H* W2 n* r# b2 i6 t3 ]: p
. a" v9 X2 p) s6 I- N
HTML 知识点
% J. l1 d+ s( V) v5 W9 {$ s; V8 t- x" }
三列布局- (高度已知,左右宽度固定,中间自适应)
# K: y; v1 R! Q' o) ?, s% B% C* t6 g6 T" o. C D1 N
布局方案 优点 缺点. L+ ?, y! o: H- W
浮动 兼容性好 脱离文档流,需清除浮动" M$ L" n. H# f1 a! S
绝对定位 比较快捷。 因为其本身脱离了文档流,导致了其子元素都脱离了文档流,使用性较差。1 D% T2 B' e. L5 U3 W! c( f
flex布局 目前是比较完美的方案。 只兼容到ie9。, X$ J2 `* T6 H( @: N" x
表格布局 兼容性好,当需要兼容ie8时可以用表格布局。 多栏布局时,某栏高度增加,会使其他栏高度一起增加。
9 o1 `% x4 G* {9 t6 l9 r" Q网格布局 新技术,代码量少 5 ]& T2 c+ L5 P& E; k4 O( W
<!-- 网格布局 -->- @$ ~' v1 [/ V$ B
<body>
" Z+ m# C, q8 N# f! V1 E$ f <section class="layout grid">
; n$ ^7 @; _2 N0 e <style media="screen">- ~$ e) v; {$ z& g
.layout.grid .left-right-center{
+ o% k, R5 b8 E0 I/ v+ U display: grid;
! e: [7 x! c1 m- H1 n5 s width: 100%;) F) }% u P8 m
grid-template-rows: 100px; // 设置行高
3 E, f# m2 V% ]' ^# b grid-template-columns: 300px auto 300px; // 设置每列的宽度
5 G; @7 ?8 T7 ~! H( X: U. J
; T# p; ^' X9 G& Z U1 J9 j9 U </style>
$ L1 D/ B6 U: ?" |. N7 q H$ q. f <article class="left-right-center">) G- ]4 ^) H" m. W9 u H+ a
<div class="left"></div>0 s! p8 B, S+ X+ A) X
<div class="center"></div>
. `9 ^& L. Q( Y+ @$ H2 v <div class="right"></div>
# L+ ~* k7 D: ~- E </article>
# |0 s; o7 G7 v9 K* Q4 v9 m$ A </section>5 p8 n2 k/ i( a
</body>
, |' b4 A6 W% r& j
, w9 e. z) u( t+ R/ Z' g, Vcss盒模型, U4 {% d: Z" a: \" M" s
: U' w8 f$ e/ Q/ FCSS盒模型的认识4 e% \& M+ d+ U( z l
# P6 E1 @ @* k0 R2 x4 Z% ccss属性: content padding border margin- X- C/ [7 `6 c4 N3 l. F6 G
& @9 k4 L" D, o" `% q
两种模型:IE盒模型(怪异盒模型)和 标准盒模型7 A* j7 F2 i p7 l' ?
3 G3 K( W8 v( u5 J+ |
两种模型的区别:计算高度和宽度的不同
( D! Y K O* h. u1 P
* ^$ I B4 ^) G* n% y/ \0 I. j两种模型如何设置:box-sizing: content-box(标准盒模型); box-sizing: border-box(IE盒模型)
. g2 i- m+ _, k3 C1 H9 c- S& @; {# I9 S+ \) d
JS如何设置获取盒模型对应的宽和高
9 |3 ^8 J1 [9 `# X7 ?4 K0 j3 n% @4 O _, _4 A5 |7 O- Y, N
获取方式 优缺点
3 g# V* {4 T' D1 g/ p) Cdom.style.width/height 只能获取内联样式设置的宽和高$ O* Z j. x. O6 e% d5 n$ ?! r6 R
dom.current style.width 获取浏览器渲染后的宽和高,只支持ie
* ~: j7 z+ |: k _( cwindow.getcomputedstyle(dom).width 兼容性更好5 a% \" z( j0 r
dom.getboundingclentreact().width 适用于取元素的绝对位置。能取到 left top width height 四个属性 。// 获取浏览器渲染后的宽和高一般用于获取元素绝对位置: P1 D( e3 u8 E$ H
实例题 (根据盒模型解释边距重叠)子元素边距成了父元素边距
' ?/ G" ~2 g2 a: Y0 ]
; z4 d5 I1 R# Q& D* I块级元素包含了子块级元素,子元素是100像素
5 B" i! @2 d5 A7 D子元素与父元素上边距是10像素
9 c+ I+ |& A0 A父元素是110px还是100px (100px, 设置了overflow:hidden就成了110px)
6 i; A \% ]8 R4 E$ s( B另一种兄弟块级元素-
# [% P" O" R7 O. g1 m& D: N3 Q0 h. E; R
挨着每个都有上边距或每个都有下边距。-/ U' e: [ C* d5 U: P' j
该重叠的原则就是取最大值
4 v# B3 H' p/ A0 U- M空元素的边距-取margin-top和margin-bottom的最大值
$ g. x/ G* Z3 j) a5 n5 V解决方案:
6 c q; N- g+ j% i0 m5 [4 F* H( Y. C
! f- T/ X [/ K; |+ h父元素创建成一个BFC (无论父子,兄弟情况)
6 K! y0 O) y" H: D$ n8 Y8 I8 a& B) K: S: ^' \+ w3 j/ r. k
4. BFC (边距重叠解决方案)
& E' c4 J7 @4 l: m& p: ~5 H2 V: ~* k, X& ]: I) d2 A$ h
BFC(边距重叠解决方案)% W0 K' m& |% m
3 z9 u8 k. ?1 r5 w& u7 [
1、BFC的基本概念: 块级格式化上下文;
" y" h7 @# ~7 V) }# e) r
e" }4 W: B$ f9 A u1 _: A2、BFC的原理:BFC的渲染规则。0 ?6 K! G+ X5 n$ d/ g/ Z+ E, a
^. Z w" |) K$ ~' _①:在BFC这个元素的垂直方向的边距会发生重叠。(同一个BFC下外边距会发生重叠)
3 o% w/ h; [" i7 Q+ y0 N
! z' E% A5 j6 ^8 U②:BFC的区域不会与浮动元素的box重叠。(清除浮动)( G5 _' w+ q2 t* y; k R7 S% }9 C0 l
) p3 |5 P) N+ n! G0 b& u③:BFC在页面上是一个独立的容器,外面的元素不会影响里面的元素,里面的元素也不会影响外面的元素。
2 J7 N2 M# ~ c9 {9 v. k1 x" C4 W) D# e
④:计算BFC高度时,浮动元素也会参与计算1 F9 X* ]; g g" [7 x" j
& M$ a8 z* d3 X$ L- P3、如何创建BFC
* [9 b5 j3 s. ~/ R" U6 d! d' k8 |" j# Y
①:float不为none。3 ^* W* e5 E/ [& V6 s$ a
& V* e4 ^$ m) y& y# L②:position不为static或者relative。
" Z2 {0 Z; c, e7 Z
( W2 p4 q/ i, q③:display为inline-block或者是table相关的。
/ d. _ `# ]% d/ j: F8 T) A1 ^3 t7 i4 u0 d4 P* H
④:overflow不为visible。& Q: k$ Y$ @! d9 J# d$ {" }2 K+ ?0 f
2 J( j7 \: F5 `; D k1 D3 r⑤ : body 根元素
9 r) N" P3 q- d: U( i0 r R' {7 V& [+ q
应用场景: % k) }% r+ W. e0 H( y0 C
左右布局时,float
% }0 _5 ~ \# _7 u) W) d, R' n相邻div使用margin产生边距重叠
) e! r; M. B6 t8 p' y- v) W6 _; vdom事件: k& q3 X1 k3 j+ w, c9 [
- m* `3 E; d7 @+ M+ ~基本概念: DOM事件的级别
' n) R" e+ e0 v2 @% m! O* Q/ ^! P) J2 A' j9 e
DOM0: element.οnclick=function(), @8 B* b) i; l) _
! Y2 v+ l7 c' E6 UDOM2: element.addEventListener(‘click’, function(){}, false)( v& N/ j& }; e7 Z+ q! f% {+ f4 ^
0 v6 g: _7 b/ J5 R! Q' B8 _4 X3 k. [/ `DOM3: element.addEventListener(‘keyup’, function(){}, false)
7 e, s3 @* ^0 h! a4 h' v
! n2 P3 q7 ^' W6 O, v/ u- SDOM事件模型
; h3 Y1 _3 g& _0 Z, V+ |/ b7 N1 K9 g6 s
event.target 2. event.currentTarget
% D0 z7 V$ U9 x% C T" oevent.target指向引起触发事件的元素,而event.currentTarget则是事件绑定的元素
* p& b' b" ]8 h8 |0 r" CDOM事件流+ ?6 S0 y- O8 h7 G) n$ c
3 E" e4 \: F5 s
事件流 -->《捕获》 2. 目标阶段 3. 冒泡
$ R, Z R' _. X) f& n. T' ]描述DOM事件捕获的具体流程
" x3 `/ y7 |. x# P4 P2 J7 c
* e( M7 P D" D; ^2 ywindow 2. document 3. html 4. body 5. 按html结构 6. 目标元素/ |* v$ B, t N5 `3 f
Event对象的常见应用8 f$ E% W8 }- q4 v
0 K: T+ Z: c! ae.preventDefault() 2. e.stopPropagation() 3. e.stopImmediatePropagation() 4. e.currentTarget() 5. e.target()
, C/ O+ r2 d2 e7 W+ Q7 O6 c自定义事件8 E- x3 Q) h/ c3 s
$ P1 p9 G h E' [* Uvar eve = new Event('custome');
; D, d7 B. |$ rev.addEventListener('custome', function() {6 B. Q2 z! `* M
console.log('custome');
2 c& p4 m$ L w/ h+ u/ C7 \0 r% h1 h});$ Q' g7 Y1 a$ c
ev.dispatchEvent(eve);
7 x9 a7 Q5 @. f- j2 X9 y: Z+ Z: P1
3 P( y1 t0 ^; i& t7 ]' Y0 S2
& u2 b0 L0 Z( ~3/ E1 Z& h& s @4 T `* K
4
2 N' z6 v" }# F' W" ?5, h3 n9 W2 n; n
http协议3 f" |6 k" I% v
; _- ]+ l S" G5 ?3 k, ?HTTP协议的主要特点/ K7 N% s: x6 F3 W
( n u, D9 n4 _, T! e) r
简单快速(资源的URI是固定的,输入URI)、灵活(头部分有不同数据类型,一个http协议不同传输)、
1 P9 u' U/ c2 Q, V& N( n5 q/ ?' B. n [! g
无连接(连接一次就断掉)
' B) O7 o# P4 y$ h& d7 H无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。' y! n- n" H7 M: H8 F q
无状态(两次连接身份), C# u9 h1 K! n# o
是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传
- ^5 v& ^ X& C3 z9 XHTTP报文的组成部分 {0 l! S1 Y, N+ d
' M$ ~. C1 l9 t+ X, O% @4 C
请求报文
9 m* A6 [2 \; n0 ~. A
8 F6 E# |+ ~3 s7 j请求行 请求头 空行 请求体
, L2 O* h U7 s; c8 G1 O/ x+ G) s
响应报文- G, }; _* Q, p! J& u/ {8 ]. E& Z
6 t7 J6 [# x9 W状态行 响应头 空行 响应体
' s w6 Y9 ]* g. {. k5 I
+ |9 Y7 ~% T3 n: Q0 WHTTP方法
) O( u, V D. g1 Z) @ u
# C" m1 V, g1 h) B方法名 方法作用 注意
) I6 u" W: S5 m" A! X/ c! zGET 获取资源 $ B, B6 x: v4 w5 }. o5 X
POST 传输资源
$ t# @( p! H- f! p7 T+ u# j$ `PUT 更新资源
' [4 i1 H Y% {DELETE 删除资源
% |, _9 a) n8 ^! x( KHEAD 获得报文首部
8 x; i& I3 u6 u, m1 U" }6 ^POST和GET的区别
4 W6 A" z' ?0 ?: W6 R
J9 t: f9 M( u( Lget post
`1 F0 `1 S9 S6 p+ [! b在浏览器回退时是无害的 会再次提交请求
6 R, W) B2 |" h7 V' W& T产生的URL地址可以被收藏 post不可以0 T/ ^- G+ F' A- I# Y$ {( y2 d
请求会被浏览器主动缓存 不会,除非手动设置
0 g8 o: v1 _5 c9 Q只能进行url编码 支持多种编码方式
- h" {" |/ y7 B6 V d$ @请求参数会被完整保留在浏览器历史记录里 参数不会被保留6 O# G' ]& [! P
请求在URL中传送的参数是有长度限制的 没有限制$ `1 J9 C/ t+ J3 G
对参数的数据类型,get只接受ASCII字符 没有限制
" ~! S) K& D5 g$ ]5 G: z, V# ~2 \更不安全,因为参数直接暴露在URL上,所以不能咏柳传递敏感信息 没暴露& p% N+ `" v! @5 U8 f# P
参数通过URL传递 放在Request body中
5 j1 e1 j$ T1 i0 e. \/ y" fHTTP状态码- v, T4 e, Q8 Y) D1 M' {5 F4 N% G
: D# G9 n* D; l2 [8 j6 w8 @; ?
状态码 意义
' F+ r+ x" a$ |8 v4 E1 I1xx 指示信息 - 表示请求已接收,继续处理。4 W# b# i. P( t6 \0 n/ v6 l
2xx 成功 - 表示请求已被成功接收。
7 F+ v: ^1 M+ Y0 D, J) {2 t3 G7 a3xx 重定向 - 要完成请求必须进行更进一步的操作。
9 X( a b6 m& q/ D* w0 h6 T: D4 g4xx 客户端错误 - 请求有语法错误或请求无法实现。
2 U% d* H" }) z/ G% T5 Q4 g5xx 服务器错误 - 服务器未能实现合法的请求。( y# k( J7 a3 c
状态码 意义
' Y" n4 g2 t/ b$ N/ T200 OK 客户端请求成功/ q: W* }' k" u
206 Parital Content 客户发送了一个带有Range头的GET请求,服务器完成了它3 u& e) {" c" g+ @0 ]
301 Moved Permanently 所请求的页面已经转移至新的url; r( x, p4 m6 ^; g# V8 ?( K! A
302 Found 所请求的也么已经临时转移至新的url" b8 s. @0 ~: r$ h" v9 Q. ]
304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求, 服务器告诉客户,原来缓冲的文档还可以继续使用. D$ k O4 l1 _5 n) d/ H
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
; `1 B, C/ X3 A% b401 Unanthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
* d. p- U+ X" v; c! T$ r9 ~403 Forbidden 对被请求页面的访问被禁止3 h& N. Y! B/ u% s2 H+ a2 T
404 Not Found 请求资源不存在& D2 w- I/ f2 T0 K4 L: m) M
500 Internal Server Error 服务器发生不可预期的错误原来缓冲的文档还可以继续使用; J) ?" w& q; c j0 e1 r- ~/ Z
503 Server Unavaliable 请求未完成, 服务器临时过载或当机,一段时间后可能恢复正常2 j+ M7 m- `3 B
什么是持久连接
) W. P6 N0 d9 _ G& F) w$ W, M
) q8 ^9 |0 c# t0 T- x7 g) eHTTP协议采用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时, 每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议): U" Q( w# Y+ T2 R7 t5 `! d* \
+ O5 B- u' \5 w: w' ~( ]( T当使用Keep-Alive模式(又称持久连接、连接重用)时, Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。+ ~! x* @/ f7 d- Z- \
/ a7 O6 M4 V, i8 @ `9 i
使用了持久连接
g! x- Q3 e5 e7 s- r- g0 d- X0 G
3 D s% f1 ^- B2 `: M& r请求1->响应1->请求2->响应2->请求3->响应32 Z8 d& u4 J9 |8 x U- ?
- v k1 B) n0 C+ q8 R+ I
变成了
2 _2 }: P `4 w$ m0 u; g& t R7 j8 q/ q9 t4 f' @! T+ q' x
请求1->请求2->请求3->响应1->响应2->响应3
/ h4 R/ T: |5 Z8 ?& _8 O0 ?3 e9 {, }8 c) ]& |% ^; Q
什么是管线化" x" J- B; E! u
! M2 k- j. M1 B$ q6 Z9 h. S# @
管线化通过持久连接完成,仅http/1.1 支持此技术' {/ i8 U' m& I' |( l, S0 W% C
只有get和head请求可以进行管线化,而post则有所限制
2 p7 u; A# P8 m! S# [3 g4 D w$ r初次创建连接不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议
$ I& a; v3 e8 m S4 I…% v' d8 O3 C2 r) h
安全
3 C O; Z0 K! a* k' f1 U1 o {- j
CSRF1 K3 r2 D. ?; r' L& W
基本概念和缩写
! h7 q0 }+ A' v. C) j, TCSRF, 通常称为跨站请求伪造,英文名Cross-site request forgery 缩写CSRF。
- k8 f* G: k! v& A3 u9 o6 @) T2 h攻击原理
# j* D9 \ T3 k1 ^访问网站B时,网站B引诱点击链接,用户浏览器携带的cookie就被网站B的某些代码访问了。
% S4 y4 V, {7 q0 l! V% w5 O4 V& c这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。; F6 V* u, D; @$ k% ~% u: q
XSS
6 A8 Y- k" P) f$ j; Z* A8 k( G6 z/ g& f基本概念和缩写 R+ }1 [+ D9 i
XSS, 跨站脚本攻击, 英文名Cross Site Scripting 缩写XSS。
, ^5 P% [5 k+ y( K+ U攻击原理5 O% u1 x+ z" O4 w/ |7 x, T
输出脚本code) ~$ }5 W* B1 r7 q
跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
2 b, ^+ j+ s! ~: g6 Sxss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
+ y Z0 @3 E6 C6 w) Y渲染机制类
+ D' ]6 d1 N" C1 A4 c6 f. W3 F$ N( i8 l
什么是DOCTYPE及作用8 C3 J2 e4 u% t7 [" h
! B; ~3 w3 L' k! YDTD (document type definition, 文档类型定义)是一系列的语法规则,用来定义XML或HTML的文件类型。0 C! X( M1 n( t4 |' X6 I
作用:浏览器会使用它来判断文档类型, 决定使用何种协议来解析,以及切换浏览器模式。
0 ^1 ]. M) L1 W( i: }DOCTYPE是用来声明文档类型和DTD规范的,
/ d- m# j; D2 o8 i# S作用:一个主要的用途便是文件的合法性验证。如果文件代码不合法, 那么浏览器解析时便会出一些差错。- n! S8 s! J9 [
HTML5的DOCTYPE:
$ l. J7 U$ \' I. j$ F! A
& K5 S( D9 J4 D3 `) P, wHTML4有严格模式和传统模式( h; q. K* u. u, y+ p/ V6 Y
" _2 I- b; I# m( p4 M% e |浏览器渲染过程
3 w j; [" W* z: G& g
# \; D/ [8 t& J& T9 J; k. ~3 J0 d一些概念
6 J6 d) _9 N1 ~7 R) A
( E. o/ {- c% R( Y名称 概念
* W: n2 H- j/ Z0 eDOM Tree 浏览器将HTML解析成树形的数据结构。
" g o' S$ S8 VCSS Rule Tree 浏览器将CSS解析成树形的数据结构。
3 @4 o" W7 p) \( uRender Tree DOM和CSSOM合并后生成Render Tree。, i4 J2 D5 [8 w5 u7 g
layout 有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系,从而去计算出每个节点在屏幕中的位置。
! u. I5 I* p% R, o) ^6 p6 apainting 按照算出来的规则,通过显卡,把内容画到屏幕上。4 N. u( t* ^/ G' u) g' X% n
1。当用户输入一个URL,浏览器就会发送一个请求,请求URL对应的资源 I |& k- i3 w6 n0 F/ g$ a* m& I
2。HTML解析器会将这个文件解析,构建成一棵DOM树
9 n0 p, R) x/ u- ^" |6 A3。构建DOM树时,遇到JS和CSS元素,HTML解析器就将控制权转让给JS或者CSS解析器
* f( b1 d. X% Y; E/ s- i. h+ k4。JS或者CSS解析器解析完这个元素时候,HTML又继续解析下个元素,直到整棵DOM树构建完成
3 l) Q% H% z, s: G- u0 G2 b5。DOM树构建完之后,浏览器把DOM树中的一些不可视元素去掉,然后与CSSOM合成一棵render树* K9 m% U9 C- q0 Y
6。接着浏览器根据这棵render树,计算出各个节点(元素)在屏幕的位置。这个过程叫做layout,输出的是一棵layout树
3 [7 L% J l: ]" @7。最后浏览器根据这棵layout树,将页面渲染到屏幕上去0 d ~+ n) @) l: e Z$ x9 |5 a
1
' S- t7 d- O$ P- l% u6 I. e+ k2
9 L+ }2 O* C1 C, E$ n8 @: d8 D; s3
$ u3 S; D$ E6 e4
% W; R# h% ?7 I5
- C4 n( J8 S. ]7 H. l60 p, h# B; \2 K1 ?& _
7
l$ [; T8 J& T' T/ g/ x h0 r4 X/ [重排Reflow
1 m1 Q$ |( f$ N9 _: y( K
$ n% [0 L8 e9 k定义:当浏览器发现某个部分发生了变化影响了布局,需要倒回去重新渲染,内行称这个回退的过程叫 reflow。: l3 o/ B, A8 o: E1 [) T# `
触发Reflow:
# u1 A. [" m, O; U( b9 K当你增加、删除、修改dom节点时,会导致Reflow或Repaint
( ]2 u3 W: v7 J. O! O/ l& z当你移动DOM的位置,或是搞个动画的时候
) {: S3 [# J# D/ Z$ P当你修改CSS样式的时候. |- c5 c. X8 n3 N. V7 B( N ^
当你Resize窗口的时候(移动端没有这个问题),或是滚动的时候
) y4 P5 Q( Q# b; d' y当你修改网页的默认字体时
: e$ z3 s9 p3 g: a+ J+ S重绘Repaint* U5 a! G/ @& U" r1 L I
, D* `: |2 e8 j
定义: 改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,屏幕的一部分要重画,但是元素的几何尺寸没有变。
0 n9 u3 j6 _* f' K
$ ?' E3 E- ]) q触发Repaint:
$ Z6 t5 Y* g+ W1 `* v
( y4 X% I0 ~1 k- v' N+ [, Q gDOM改动+ k! H: {. c* A% l
CSS改动6 x4 K. u* {- o& b; w- q
————————————————
' F1 P; Z2 q& r& F版权声明:本文为CSDN博主「ton365」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
9 J# h- }0 d) U2 _- G7 S9 V原文链接:https://blog.csdn.net/u012015672/article/details/1059312917 m v' G/ J4 |1 Q) d
' j9 Q/ l: A' W! f, `% y
$ b! ^& t6 p: M* ~ |
zan
|