- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565747 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174947
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
HTML 知识点(未完)% c$ b# H2 | v
0 [ R a( s* @3 \5 `$ l! K
HTML 知识点
3 C+ q5 N5 n2 ?7 O$ B z1 a2 h+ I. |2 r4 ^
三列布局- (高度已知,左右宽度固定,中间自适应)0 O! {4 L' |9 a1 o1 T5 q9 K
; n1 W4 U# C1 A$ M& v2 N) J
布局方案 优点 缺点& j7 {! e% ?/ ]; q3 a
浮动 兼容性好 脱离文档流,需清除浮动
( V* M( Q% E x; s* A0 F( r& s9 }绝对定位 比较快捷。 因为其本身脱离了文档流,导致了其子元素都脱离了文档流,使用性较差。
. Q; @2 d* c# k. W8 O8 w& dflex布局 目前是比较完美的方案。 只兼容到ie9。
$ j( w4 x. c m. f: n表格布局 兼容性好,当需要兼容ie8时可以用表格布局。 多栏布局时,某栏高度增加,会使其他栏高度一起增加。
8 y4 ~6 I% `5 K8 g! G网格布局 新技术,代码量少 6 m, w3 U! l, N( z1 D. I
<!-- 网格布局 -->
' F6 T: N3 `8 w' z! A<body>
2 N. p( b" P6 Y& n8 t7 g7 S <section class="layout grid">
* L* O0 ?& m( Q+ H5 n <style media="screen">
: z9 W" u! b) @6 C8 Z& | .layout.grid .left-right-center{
4 b _7 x( }; ~8 E7 A display: grid;! X6 M L& c& r) o0 u: _
width: 100%;3 n! P' P) A; ^2 d. y2 p
grid-template-rows: 100px; // 设置行高" Y d, q0 z! v7 l- e$ E
grid-template-columns: 300px auto 300px; // 设置每列的宽度
: U* B1 g, q$ z G
, _0 U1 H1 J4 f0 R7 d+ s6 y" G </style>
& x7 l4 V$ T, B <article class="left-right-center">1 j- h" ^2 C2 q1 U% D4 s! e* l
<div class="left"></div>
- @/ Q8 Y% ]( V <div class="center"></div>0 ]/ X3 A( w( v
<div class="right"></div>
- h+ B* F" i+ a8 f3 ^4 i) l </article>3 e+ [5 ^/ z# y% \' F
</section>. K0 B8 {/ R# ]& s1 l1 y! a
</body>
3 W. h# Q& d; n
# G: [3 c% t4 M- e) gcss盒模型2 ]6 A0 |1 n% S
; V+ E7 F9 ^% M* P, `CSS盒模型的认识# Z/ X3 c7 d" c+ \' X9 a, D
0 t9 W& J( K4 Q- Ecss属性: content padding border margin: t! \. G9 X' u6 z
7 P. x2 A, N2 I/ y; ?两种模型:IE盒模型(怪异盒模型)和 标准盒模型" U$ a {2 v) A7 c
2 ?) d1 c. i1 M两种模型的区别:计算高度和宽度的不同6 D8 `; q9 r* N Q) V: M' R
7 D, b4 j1 O7 a
两种模型如何设置:box-sizing: content-box(标准盒模型); box-sizing: border-box(IE盒模型), T" B4 L7 h8 G! H2 g, x9 h3 g0 B- e9 B
( w. X& {3 R/ F- R. H9 yJS如何设置获取盒模型对应的宽和高8 ^+ x7 N; y9 ]! g; ~
4 k6 x* ]) b' w5 D
获取方式 优缺点
6 G- D9 `! \9 ?6 e) cdom.style.width/height 只能获取内联样式设置的宽和高
6 R) L- e4 [/ c" X {3 |. Kdom.current style.width 获取浏览器渲染后的宽和高,只支持ie
1 b3 F/ Y. @7 C; [: b$ I# ?( j. Kwindow.getcomputedstyle(dom).width 兼容性更好9 j% n- k% t4 i# ]
dom.getboundingclentreact().width 适用于取元素的绝对位置。能取到 left top width height 四个属性 。// 获取浏览器渲染后的宽和高一般用于获取元素绝对位置0 g5 q E8 k7 S, [
实例题 (根据盒模型解释边距重叠)子元素边距成了父元素边距+ z0 d3 b7 E( i! G. g# m0 Z8 V3 i
% F5 ~. N( `3 H% }6 m4 w块级元素包含了子块级元素,子元素是100像素
. n; [/ g9 ?4 o6 ?. i1 T子元素与父元素上边距是10像素' k' V1 O7 Q+ M6 q$ D0 ]& A
父元素是110px还是100px (100px, 设置了overflow:hidden就成了110px)
0 \' e/ l$ F- T7 t( ?/ K另一种兄弟块级元素-1 d9 J0 V6 N% h
; N, H! P J9 J* B0 T& y; q/ X
挨着每个都有上边距或每个都有下边距。-3 D- ?; u" P9 o, Q' h
该重叠的原则就是取最大值" c$ _6 i" x3 i5 O9 G
空元素的边距-取margin-top和margin-bottom的最大值# o/ i) @5 Y4 L2 q0 Q
解决方案:
! `, o3 E J0 m0 ^3 K+ |- p7 o# Y( h) L& f' a1 i* Z
父元素创建成一个BFC (无论父子,兄弟情况)
3 _5 x( y4 D8 C0 K
9 [% S' @. T7 V9 U: n* h4 F4. BFC (边距重叠解决方案)
0 L# v) E9 { L9 H$ i
; e( `. B# {( j/ b, |BFC(边距重叠解决方案)
5 s. `/ h D+ g- e
+ W: `! l; N1 O6 z9 s( n% I1、BFC的基本概念: 块级格式化上下文;
( P2 \) z: B* I; x. r
! o, w+ ?# o6 N2、BFC的原理:BFC的渲染规则。
5 G9 D% Z; q2 {4 l* p6 B
% D9 p) |6 n0 Q6 `7 S①:在BFC这个元素的垂直方向的边距会发生重叠。(同一个BFC下外边距会发生重叠)
: Z- G! [7 Z B( s: v; S& K+ c& L- p5 g) s* a$ v
②:BFC的区域不会与浮动元素的box重叠。(清除浮动)$ o" j. ]7 Z! ?& j& A
- d1 z b Z- U2 A; d③:BFC在页面上是一个独立的容器,外面的元素不会影响里面的元素,里面的元素也不会影响外面的元素。3 } O" V" W% T$ \- q }, W( N
6 t+ D8 u* I# |- P3 Z
④:计算BFC高度时,浮动元素也会参与计算- [: W! X8 g) l; w* o
, [) W' G k: T6 q
3、如何创建BFC
4 L8 z: P Q& O1 n0 a
! T" V# v9 k0 p* C! ?" N, a①:float不为none。3 r8 x8 v4 H3 m7 Q
* d* d* q! L8 z7 I
②:position不为static或者relative。
: T& J" _* B0 ~ I( s6 v# T& B, R7 O
③:display为inline-block或者是table相关的。
+ U, U1 \: g; O* Q. f4 G. @
2 |; `7 P/ C6 L④:overflow不为visible。
- u2 f5 f* P1 M% D! C5 l4 z! l1 {$ q" O" ]2 M
⑤ : body 根元素
% d9 \! t; b+ S4 `% y2 L! s
/ [' E! o% Z/ n w) d, Y应用场景:
- p( e' [ v% w. D左右布局时,float % \7 R# [! z, u3 e7 q4 w0 _
相邻div使用margin产生边距重叠# ~; D0 y0 ^, I6 B
dom事件
; G8 y+ a8 c# r0 m( b5 p! l5 r# d
$ k+ q( c, ^9 S+ @基本概念: DOM事件的级别) b, f+ y" c) z& Q6 \! E) h8 |
7 b; x/ f; V0 I5 s6 J0 o4 e
DOM0: element.οnclick=function()
1 P8 p4 A& g. w, i1 Z1 Y
) `+ y( j7 f! H: v& U, L" s' d% ^DOM2: element.addEventListener(‘click’, function(){}, false)
$ I5 ^ S% J9 X ^: V8 H/ t( X( E: k' h/ {! s4 i
DOM3: element.addEventListener(‘keyup’, function(){}, false)) `& @: T' s) y, p
7 H1 p1 {4 O' K- e' C5 _% h& ]
DOM事件模型, a+ Y* C8 ~4 d/ k' x
" q: q# ]3 u" L8 u k3 Aevent.target 2. event.currentTarget5 K7 R0 [9 D2 Z/ {: w6 @ I( Q
event.target指向引起触发事件的元素,而event.currentTarget则是事件绑定的元素3 [- Y! k' w% c' P& y
DOM事件流
& B, c' D8 d& t1 S' W8 i3 I5 y! Y7 g& V5 ^& w
事件流 -->《捕获》 2. 目标阶段 3. 冒泡. b3 o& | B3 d! J+ \
描述DOM事件捕获的具体流程2 ]) _3 A" }% F' [- l
$ ?: G- B ]* Q/ @- r* p0 V
window 2. document 3. html 4. body 5. 按html结构 6. 目标元素
. p w* ?* u& a1 \' \8 I0 k$ NEvent对象的常见应用
/ c, H( I! U* @* D- I8 d$ o' I+ B+ Q# a
e.preventDefault() 2. e.stopPropagation() 3. e.stopImmediatePropagation() 4. e.currentTarget() 5. e.target()+ e& K- y) I/ l, V. x
自定义事件3 y' I6 L/ r6 Q6 P- z0 W$ @! u5 B
U. X7 ?/ d$ X. q$ c( f
var eve = new Event('custome');
1 ^! U4 \5 q. Qev.addEventListener('custome', function() {9 d) L: Q8 C6 M& G: Z
console.log('custome');2 \. C; c/ C b, A+ X
});
0 ^& c9 [# [0 V2 L' K- rev.dispatchEvent(eve);5 {' `3 s# K; v- C5 c! N
1
7 ^2 @0 {. e8 ?- P# r U* i2
. |: j' C* z& B# G* U; X3
& ]0 P5 B+ }" N! H" Y& K- {4/ H O& i1 l; c- }& U
5, ^2 i5 {/ B3 s% ] j
http协议
: W' F' R4 q4 O# f. N: {+ b- L( h
+ ~# \! H) ]& n) B3 H# J. cHTTP协议的主要特点" v* a' f6 o" H% t2 L
3 R" Q1 J* i7 b! _6 O* g! O简单快速(资源的URI是固定的,输入URI)、灵活(头部分有不同数据类型,一个http协议不同传输)、" j9 \1 U' h! x8 L3 N" g' t
! P$ v/ A* ?: ]1 S无连接(连接一次就断掉)
4 G5 L9 M5 F% n ]% T无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。3 Z2 J( e+ K5 {$ ]% [# \7 B6 _
无状态(两次连接身份). f* s. |& H3 i$ K
是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传
3 i0 g$ Z& x- X1 n7 YHTTP报文的组成部分8 [% I6 m m0 x( d2 C7 O
( w2 E: B5 {2 }. r请求报文1 Q4 B* N( o" O& K( ?: B a) x
) Z6 h! p" |) N8 V4 Q2 r( B; p) \, L
请求行 请求头 空行 请求体
1 @+ {: I- I' J- O% j* F2 M1 P: v7 }$ g* F. D4 d0 S
响应报文
- y( g3 m6 G6 h
, K- J- [! z$ |& K' ^4 E" k状态行 响应头 空行 响应体
; c1 }6 j! Z$ N+ _+ W4 U1 w9 ?& \ G
HTTP方法8 d0 l3 D4 o" J2 d$ m1 x0 y
7 C% ?: k8 e. \9 D" I8 C
方法名 方法作用 注意1 q& Q+ |- E; p! F- S6 h
GET 获取资源 + s+ x9 _* I& G+ A: }
POST 传输资源 ; A+ M* X) d% s7 B- `- \ C
PUT 更新资源
& k' L9 p* v2 }3 Q) w: IDELETE 删除资源 7 k7 y D& _4 E& g( {4 W
HEAD 获得报文首部 ; y2 T1 U- H# r% @
POST和GET的区别
# B- N. J- S/ q. j. T8 `* L, s# h" }6 F( f
get post, |% |2 N" `' D! T2 L0 A" E3 @& s
在浏览器回退时是无害的 会再次提交请求
% f1 Z ~9 W% P7 Z' m, K V$ i/ d产生的URL地址可以被收藏 post不可以& o5 ^( m: K$ M
请求会被浏览器主动缓存 不会,除非手动设置! Z( U, N- V5 S9 x2 c+ Z+ S% d: D
只能进行url编码 支持多种编码方式
$ r5 z8 ?. H) h; G7 `- L$ o请求参数会被完整保留在浏览器历史记录里 参数不会被保留( _/ h8 f7 Q- p1 q4 Z; X1 u6 Z. K+ A
请求在URL中传送的参数是有长度限制的 没有限制
7 h( u2 N6 o. D% a: O% H0 o. X对参数的数据类型,get只接受ASCII字符 没有限制
; m1 p' P! B9 G8 D) G) B更不安全,因为参数直接暴露在URL上,所以不能咏柳传递敏感信息 没暴露
& H& s, E; `& u5 L( E$ a' F参数通过URL传递 放在Request body中
3 B* }" T$ U2 h. s( mHTTP状态码! d1 w$ V3 e! e" \7 l; @
5 y: P+ p* F, O" \! g+ \状态码 意义! ]1 I0 {9 C0 v8 Z2 L; A
1xx 指示信息 - 表示请求已接收,继续处理。
) G: f6 V! z6 w" C# ^' ?: Z2xx 成功 - 表示请求已被成功接收。
: d# s/ k" B _4 M3xx 重定向 - 要完成请求必须进行更进一步的操作。5 S8 F* T3 b5 R% o$ E: y
4xx 客户端错误 - 请求有语法错误或请求无法实现。
3 D2 ]) j: K* w+ b V5 q. m' P& N5xx 服务器错误 - 服务器未能实现合法的请求。
" c& ?. X$ Y# P& U3 G状态码 意义
4 ^4 F6 M* O# I, ~200 OK 客户端请求成功# U" S U8 J: R
206 Parital Content 客户发送了一个带有Range头的GET请求,服务器完成了它6 R( @$ j2 I9 p" a' C- z
301 Moved Permanently 所请求的页面已经转移至新的url
! k5 _5 i6 H: r! ]5 R$ g3 W302 Found 所请求的也么已经临时转移至新的url- v2 f2 Y& F% l0 G
304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求, 服务器告诉客户,原来缓冲的文档还可以继续使用
6 L9 P' Z/ r% A6 Q: m6 ^: S/ g400 Bad Request 客户端请求有语法错误,不能被服务器所理解! o2 U( b1 W9 b+ D& d- I6 H$ l- F
401 Unanthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
3 m/ s8 | B7 P# l4 Y: D) X" d403 Forbidden 对被请求页面的访问被禁止. [7 W6 k( l# T6 [
404 Not Found 请求资源不存在
# y1 E7 m$ ^4 C0 m M# c- G500 Internal Server Error 服务器发生不可预期的错误原来缓冲的文档还可以继续使用
5 F' p8 u- Q: g; p$ R2 }; Y4 b8 O503 Server Unavaliable 请求未完成, 服务器临时过载或当机,一段时间后可能恢复正常/ a, ?. t- L' n# I4 r
什么是持久连接
& h! I0 `% x [% j) T
& P9 n2 e6 S- i* A a UHTTP协议采用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时, 每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议)
3 P7 D" |' e, T% J7 v9 D6 x# ]0 E. v
当使用Keep-Alive模式(又称持久连接、连接重用)时, Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
+ a$ W; u" }) t* J: |" k0 `6 U3 J% W! D9 [& X9 d! k% z( K o8 c* v
使用了持久连接
( E. ~6 I" I% X3 ]7 l# K- X X U& u; V& {& F H8 X+ P8 ~1 j7 s2 ]
请求1->响应1->请求2->响应2->请求3->响应3
3 t1 U" r& U2 @' A' A Z e) X; W0 x
变成了! T4 b* B% t5 ~ ]* A8 W! L
, J- |' s( l% k, @
请求1->请求2->请求3->响应1->响应2->响应3
@3 E* x3 C8 Y
3 p4 c) U5 j: N/ B9 m% k什么是管线化1 ]4 I* `. L; r; D3 W
0 J2 e6 z) t1 D管线化通过持久连接完成,仅http/1.1 支持此技术
! S+ A8 E1 I5 s A3 `. N2 j% w& Y9 O' C只有get和head请求可以进行管线化,而post则有所限制' S5 S) [+ ~ d! t1 s: Z' w$ i- `4 M
初次创建连接不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议! `5 f" \6 }5 V, V; N! C. Z
…7 M/ i- K8 @* b+ s2 `
安全
/ U6 ?8 x+ q1 T J/ `
^" z; m7 B0 M! ~" BCSRF
% f( ^% F2 |. d' e基本概念和缩写7 Y( J& g, F; V
CSRF, 通常称为跨站请求伪造,英文名Cross-site request forgery 缩写CSRF。( n" P9 T' X0 ]% h
攻击原理1 o& b6 W6 p: v) M& Y8 x+ ^: I
访问网站B时,网站B引诱点击链接,用户浏览器携带的cookie就被网站B的某些代码访问了。- F9 l. \. S: t/ Z
这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
: U6 M/ S+ k& F6 W" `6 hXSS* D: O8 F& {8 A$ \
基本概念和缩写; U' x$ M3 h( {
XSS, 跨站脚本攻击, 英文名Cross Site Scripting 缩写XSS。0 Q, w- u: T% R" [8 G6 _: G. F
攻击原理6 B& f9 O q! b
输出脚本code
! `' `- D2 v$ d跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。- ^. V3 [8 I* `5 b& p& ^( J$ s. {
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
9 E; E0 c$ U+ g4 [渲染机制类
! @ ]$ z( j+ [1 _( N$ d, I+ z( o7 U, M; K- T1 t. p) q6 P" ^% Z
什么是DOCTYPE及作用
; [: e. @- F) K% V6 E9 _: \. E7 a" S$ g* `, B
DTD (document type definition, 文档类型定义)是一系列的语法规则,用来定义XML或HTML的文件类型。
* U0 s3 F, m% q t9 B% m作用:浏览器会使用它来判断文档类型, 决定使用何种协议来解析,以及切换浏览器模式。
8 E, y1 Z3 @" b+ [' _5 G5 ?3 CDOCTYPE是用来声明文档类型和DTD规范的,
% _% M: J0 N1 D$ O; v作用:一个主要的用途便是文件的合法性验证。如果文件代码不合法, 那么浏览器解析时便会出一些差错。
; h: J0 l' Q) `" [, THTML5的DOCTYPE:
. Y8 I, s9 S' W, H% e5 N) g) A
HTML4有严格模式和传统模式
8 T6 W7 D+ B& [0 p4 \( {) Z2 w
' l+ q7 X L2 O2 n' t9 g浏览器渲染过程
$ t# y7 S. D8 t; F8 @& P' s! G4 \5 o$ ~/ [% U) |9 V8 @6 s: d- d
一些概念 t) f' g6 K. d8 {) m6 {
2 |5 v5 B- _( t" {1 M0 O3 ^9 ~
名称 概念7 ?4 E/ s8 |6 v& E4 W& i
DOM Tree 浏览器将HTML解析成树形的数据结构。
1 l4 S* h$ _; kCSS Rule Tree 浏览器将CSS解析成树形的数据结构。
. W5 t$ U, X p; o! P/ ORender Tree DOM和CSSOM合并后生成Render Tree。6 @9 N+ N) r" T( H6 Z
layout 有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系,从而去计算出每个节点在屏幕中的位置。
" s4 ~) ~8 V* L9 u3 r2 hpainting 按照算出来的规则,通过显卡,把内容画到屏幕上。) z1 s7 m( [/ E P$ r, I' M% E
1。当用户输入一个URL,浏览器就会发送一个请求,请求URL对应的资源
7 ^% \. Q+ o) s7 Z- ~" v; s2。HTML解析器会将这个文件解析,构建成一棵DOM树
f& T) \5 m. f$ A3。构建DOM树时,遇到JS和CSS元素,HTML解析器就将控制权转让给JS或者CSS解析器2 r p) {! @% c8 ~8 n
4。JS或者CSS解析器解析完这个元素时候,HTML又继续解析下个元素,直到整棵DOM树构建完成% |$ m6 Q/ g, o3 M$ ?
5。DOM树构建完之后,浏览器把DOM树中的一些不可视元素去掉,然后与CSSOM合成一棵render树
2 d8 b* {3 e' Z3 o/ i& [: [6。接着浏览器根据这棵render树,计算出各个节点(元素)在屏幕的位置。这个过程叫做layout,输出的是一棵layout树- n& p2 l( I/ `) }: V) A
7。最后浏览器根据这棵layout树,将页面渲染到屏幕上去/ D7 M/ c% Y- g# n1 {3 |
1* H" U p/ \+ i
2
6 v- a) E+ Y& Z( v3
; A/ }& R% X; y( u4
. C+ L8 q/ g2 _, S% x" V- m/ _5! @" o1 `( I& T( M% ^
68 a) {- e% ~0 ]
7
% v, S; F' v9 K% l Q0 A/ @重排Reflow
$ @3 j& \1 k! B# \) p0 m# S9 K0 I6 S; R7 {
定义:当浏览器发现某个部分发生了变化影响了布局,需要倒回去重新渲染,内行称这个回退的过程叫 reflow。
( F# z2 h. t5 v9 D& ^* M触发Reflow:
+ V7 W# _+ p6 H D+ l2 B9 F. ^# z当你增加、删除、修改dom节点时,会导致Reflow或Repaint
$ q) ?$ t/ v7 s# `& a当你移动DOM的位置,或是搞个动画的时候. E* f/ b7 _( Y$ `# c3 S
当你修改CSS样式的时候
2 Z: w. Y3 d* M2 T8 F& ?, y5 z4 j当你Resize窗口的时候(移动端没有这个问题),或是滚动的时候* H$ A6 y) h8 E! ]
当你修改网页的默认字体时+ o+ q8 S- y6 k e2 q* T3 @
重绘Repaint
( O! e G6 Y) F- G; i1 j! V5 K1 J' E
定义: 改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,屏幕的一部分要重画,但是元素的几何尺寸没有变。/ I# G5 q" Q: p5 V; U0 @9 }4 D" G
. @: E G. H3 t$ @ M5 P% x" x! J. \触发Repaint:) \ z# a$ m9 B+ z( A/ [1 _9 A
. d- [. j; L6 m5 xDOM改动
4 z1 [9 H5 Z, T! O0 Q% x7 {- ^( c0 nCSS改动3 ?, [/ r: W* H9 U- Y r3 y
————————————————
$ n5 p: \* m% g- L0 R5 E& S" b版权声明:本文为CSDN博主「ton365」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。% P6 {+ V$ d- l' ?& s/ [7 {" V+ b
原文链接:https://blog.csdn.net/u012015672/article/details/105931291: c3 u1 F/ }3 m
, E1 Y- d( V2 [& y$ P
9 ]1 [+ k0 ^; [0 ? |
zan
|