- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564681 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174627
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
HTML 知识点(未完)! T* x2 W g5 d# I& U
) r5 ~- {0 ~6 @' @; I. h+ f
HTML 知识点& y& N, Y" t. U% b, o" k
0 C) S/ S& {7 B; x+ W三列布局- (高度已知,左右宽度固定,中间自适应)( J2 n. H- } e1 ~* k
% M0 K4 B+ t4 }. M布局方案 优点 缺点( @" m# W; n4 S1 g% c5 s
浮动 兼容性好 脱离文档流,需清除浮动# R* b7 X5 Z1 g7 q5 a+ k
绝对定位 比较快捷。 因为其本身脱离了文档流,导致了其子元素都脱离了文档流,使用性较差。- ~# j& E$ ?3 g0 J4 r. ` J; J
flex布局 目前是比较完美的方案。 只兼容到ie9。" c$ |* k* ?+ y! N6 L
表格布局 兼容性好,当需要兼容ie8时可以用表格布局。 多栏布局时,某栏高度增加,会使其他栏高度一起增加。. K4 x9 O/ P# O4 `
网格布局 新技术,代码量少
' `+ v' \+ k" n. J<!-- 网格布局 -->4 L3 t5 s9 ^; c/ f
<body>
8 j m# s6 C( p: Q1 q" |% z6 C <section class="layout grid"> $ g2 g. ?5 ]: o J& {/ R% e7 y& M
<style media="screen">
/ C5 [* c; b5 w1 O .layout.grid .left-right-center{7 l' n3 j7 j, e1 M* D
display: grid;) l" ~" u, E1 w8 [8 K* J
width: 100%;# f6 r0 R* J! R9 X2 g" C E
grid-template-rows: 100px; // 设置行高0 X8 d- f4 N ~1 }- a5 _
grid-template-columns: 300px auto 300px; // 设置每列的宽度
0 j/ [: x( ~- u0 C1 W$ f
. Z, e( m3 p+ D2 m' u </style>
8 p! T. r O5 j$ j <article class="left-right-center">
$ W+ `/ }# o2 P( X. i+ M <div class="left"></div>
/ _- l- }" _# Z' Y) W3 G <div class="center"></div>
( H5 n+ k6 S- a2 z! { <div class="right"></div>
4 ]6 `4 p8 f9 k9 ^! S, ^ </article>1 X; w+ E9 {! t6 L/ {
</section>
5 }: V" Y/ z X+ Q</body>3 c3 w1 h2 x8 H
3 P, b) ^3 @( d& H# O
css盒模型' J5 i( j% M- A, K: c: `
9 n" }- M" `- z! g4 WCSS盒模型的认识
$ A5 j0 r3 `/ G; Q
% {2 Q- I, g2 g: ~; Wcss属性: content padding border margin
! f. g( E* J1 U/ N. j# a
1 [2 {% R$ P" M) u1 |! H" D3 L两种模型:IE盒模型(怪异盒模型)和 标准盒模型
1 i1 _; t/ L& z+ |: h
, p2 i! U6 W2 ~两种模型的区别:计算高度和宽度的不同
$ |: h- C7 _3 H' T1 r9 `. |3 p& m! f
& k. u. c6 O' N5 Y两种模型如何设置:box-sizing: content-box(标准盒模型); box-sizing: border-box(IE盒模型)& M/ q0 Y6 g; n7 a8 b- Q4 Y/ l
' _0 E2 ~4 X& l8 ^6 ?, g
JS如何设置获取盒模型对应的宽和高
% Y6 r% j" s% F" ]0 U2 c( }9 C
获取方式 优缺点
( k2 S& C- b, mdom.style.width/height 只能获取内联样式设置的宽和高5 k S- v- T% P5 ]& i' u1 r
dom.current style.width 获取浏览器渲染后的宽和高,只支持ie
& c5 f/ N8 t x( E. awindow.getcomputedstyle(dom).width 兼容性更好9 l8 h9 C, C: |; ]. ]8 S, c
dom.getboundingclentreact().width 适用于取元素的绝对位置。能取到 left top width height 四个属性 。// 获取浏览器渲染后的宽和高一般用于获取元素绝对位置6 ^ R" o# Z$ B) R! b. ?7 g' L7 `
实例题 (根据盒模型解释边距重叠)子元素边距成了父元素边距# M* C4 n$ d( Q& Q" o/ A
1 i6 N# \- |: B& g
块级元素包含了子块级元素,子元素是100像素
4 R& H& a2 `' H子元素与父元素上边距是10像素( a- f) q7 t! H, j) F$ H1 B1 G
父元素是110px还是100px (100px, 设置了overflow:hidden就成了110px)
/ |8 U- U" x R7 u另一种兄弟块级元素-
5 l/ |' }" a3 Y. G& v5 ?3 l3 x* h5 t
9 n0 B0 X" Q& p( N挨着每个都有上边距或每个都有下边距。-5 K' C7 M: g$ @& E U8 p& M
该重叠的原则就是取最大值
2 z! ]7 J! C+ A% S空元素的边距-取margin-top和margin-bottom的最大值
* e& X, x& h( a: V! c! l解决方案:
, G* S2 l7 S6 U/ G
# b8 l& j: T% u7 @2 Y: r0 G' M父元素创建成一个BFC (无论父子,兄弟情况)
9 L$ T H* _+ K. A: N
+ I9 _6 V3 A/ B ^, G4. BFC (边距重叠解决方案)
]1 G3 _3 N7 P: N, M
+ C% i: m. ^& C3 E3 R, h0 C, FBFC(边距重叠解决方案)! A: g: l1 W9 Z& x; M
4 J" I* K) F8 s
1、BFC的基本概念: 块级格式化上下文;- j+ C O* \ {+ W# _
Z" h0 F2 U6 Y2、BFC的原理:BFC的渲染规则。0 a; }. s5 h) d% [) i
* r3 I M8 f0 A①:在BFC这个元素的垂直方向的边距会发生重叠。(同一个BFC下外边距会发生重叠)
9 m1 m5 j% N; O% x: {6 P; t8 Y1 N0 H7 q& @
②:BFC的区域不会与浮动元素的box重叠。(清除浮动)
. d) [2 Q8 r& e3 V1 Z# n
% [+ y- c+ I5 I$ u2 F6 G, |2 |; o③:BFC在页面上是一个独立的容器,外面的元素不会影响里面的元素,里面的元素也不会影响外面的元素。9 i2 ?+ i5 [1 m+ F* U
% V/ H1 v" d, p( H, a) Y, v: w④:计算BFC高度时,浮动元素也会参与计算
0 y: R9 `: D6 O1 Z' P, X& H9 z" Q
' N2 z6 E& R J, b$ K( ^3、如何创建BFC. Z9 G. J& H8 A, k! D2 I j* \$ a
( l' T7 D. Q" D% I/ B①:float不为none。, i. h0 P/ M3 y! T. G9 z+ K- F0 m
( [! {) h' G& X
②:position不为static或者relative。
- O) C+ R2 m4 T( q( m0 {
6 B H9 x- A1 Y Q3 T- D Y# w9 e③:display为inline-block或者是table相关的。- s+ F4 c; Y! E" l) m9 l4 e
" m1 h) |2 K. h3 q5 g2 m% u④:overflow不为visible。
Q6 {( d: K, {
4 {7 ? h$ `+ P& @⑤ : body 根元素
! o% L: G# _' T" h9 }5 k! F0 I1 K2 f4 Y8 G* ?) E+ u) S* C
应用场景:
0 a2 m6 X: G. k5 k& C! M/ u左右布局时,float 9 m& G& A1 `7 G5 h& [2 ^: f
相邻div使用margin产生边距重叠/ l, g" J1 `2 K' [, J Y
dom事件
2 {/ X1 @, l; g4 m* ?. j6 J/ _4 r$ w! I$ ~7 ^+ V
基本概念: DOM事件的级别; ]+ r0 ^% i7 v- O! \& ?
# k: C2 }1 w/ \/ ?5 W* ]
DOM0: element.οnclick=function()
, }, m, Z5 }+ T2 B" I- J
) o7 P8 n G1 [: t/ j$ sDOM2: element.addEventListener(‘click’, function(){}, false)
' u$ n/ F' b9 O5 D" s& [ E% s: L3 M" {* M; Y2 H$ X% S
DOM3: element.addEventListener(‘keyup’, function(){}, false)
4 C) D6 S8 [0 z/ u3 ^
3 S0 b B- [$ H: V( s2 K; n4 W# gDOM事件模型
2 D2 R' r: u( a6 R6 K0 ?
) G z' ~+ D4 P2 }) S0 x6 m1 bevent.target 2. event.currentTarget
: I j; B+ R7 z4 t: [: |event.target指向引起触发事件的元素,而event.currentTarget则是事件绑定的元素
. x6 B. e0 [* EDOM事件流5 t9 C# ~3 \* A% b
6 E. U: i; {7 E6 U+ [9 \, w
事件流 -->《捕获》 2. 目标阶段 3. 冒泡
# [4 D3 x5 R( Z2 U+ Z9 N描述DOM事件捕获的具体流程3 [. k- o# N5 b
) A* {! P! X U% q' jwindow 2. document 3. html 4. body 5. 按html结构 6. 目标元素
$ n5 M6 A @6 \" x/ N" A0 q+ Q$ @* KEvent对象的常见应用
, M: @9 ]- Y& z2 W9 K: L
& [# ~' w8 a& `+ o2 V2 w) ze.preventDefault() 2. e.stopPropagation() 3. e.stopImmediatePropagation() 4. e.currentTarget() 5. e.target()
v# ?, }# h* l+ z ?+ v自定义事件' R. S9 F1 H( K* _' F
+ X2 g O+ B$ Q
var eve = new Event('custome');
% }/ C+ y' W Y4 A/ Sev.addEventListener('custome', function() {
" Z8 X( V; S* h console.log('custome');
* w5 a6 D9 @- [1 d; c});* x6 {! t; H' i& Y! O3 l8 E0 V
ev.dispatchEvent(eve);! m3 ~) Q F1 C" v
1, l$ \9 B0 F, [, ?+ B8 D+ Z
2. U1 ^+ `! o3 @' i
3
) v# x5 {1 Q3 H& ?; Y4 \4 `4
7 g# F4 _/ z0 x! u; O/ b+ S8 a7 q. h3 Y5! Z) l' T) ^5 i# p4 d3 C( \, J0 b
http协议( M- u4 P( y' c* |
, p3 x0 t- h+ u }; M6 THTTP协议的主要特点4 n/ s, Q* b5 c* H% m
$ `% N2 Z6 M8 ?2 D! O# B. {简单快速(资源的URI是固定的,输入URI)、灵活(头部分有不同数据类型,一个http协议不同传输)、" a( O" E& q' j; q1 w
7 a- f" f) C$ Q8 a无连接(连接一次就断掉)4 z+ y* a9 F8 a9 \- \( ~+ {
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。" l4 @. b" l: q
无状态(两次连接身份)
! s* F8 F/ n5 y I$ r8 W j是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传 C% l: s. L0 R
HTTP报文的组成部分
8 N, b) W, Y2 n x# Q" h. g
2 m& O2 \7 r3 T. z" `0 ]请求报文( ]5 ]% ?4 d- v, d6 R
; \( ^; f$ E) m2 q- S9 n+ S请求行 请求头 空行 请求体
3 M& S6 P$ i1 e* ?9 X6 v9 J- k- W' _
响应报文
" ~$ p) |" p7 Z# l1 x7 Q/ _; q* x2 O/ U }/ q5 @
状态行 响应头 空行 响应体
8 f) y# a1 d& i
3 L7 K! V5 d U' P' @, r" d8 l* x; rHTTP方法
, h8 T* z- @# W2 g) Q
: w8 L' q. ~, J y9 A! P$ c1 G方法名 方法作用 注意
) K* O3 K% `- |9 A- @5 }" c5 _GET 获取资源
1 B# j; e) Z" ^& y) ^POST 传输资源 " Y# F" a( K; Y/ g1 c
PUT 更新资源 # j/ }1 k8 m, [7 e9 g
DELETE 删除资源
% }; \$ D2 j- H d2 c5 dHEAD 获得报文首部
) }& z) h/ Q# c4 N2 e& V ?! |POST和GET的区别
( j. v6 {$ ~( n" v6 N3 G1 D- f% A; { u( x" T1 H$ e3 G
get post7 K- u, S1 R( d! @. a3 o
在浏览器回退时是无害的 会再次提交请求) B/ n7 K- B! Y) P
产生的URL地址可以被收藏 post不可以6 W# A9 |( c, b( y) m; Y! l9 Y) e
请求会被浏览器主动缓存 不会,除非手动设置
, ~6 O4 [6 W5 b' }* l只能进行url编码 支持多种编码方式
) G2 O, S, [9 G2 B请求参数会被完整保留在浏览器历史记录里 参数不会被保留" d% L6 E0 A z& w( \
请求在URL中传送的参数是有长度限制的 没有限制# c; m' [3 ^5 L% q) u9 Y5 t) t- @
对参数的数据类型,get只接受ASCII字符 没有限制
' @! F) Y6 a( l8 k8 B: H9 S更不安全,因为参数直接暴露在URL上,所以不能咏柳传递敏感信息 没暴露. I. U& s: F$ D0 e3 u
参数通过URL传递 放在Request body中
& r0 P9 z: o- F" _HTTP状态码, X0 e4 W! x# x
: G; r2 U, a, D$ ~状态码 意义* Q3 p( C5 d1 M
1xx 指示信息 - 表示请求已接收,继续处理。
" g6 a) o- J- U2xx 成功 - 表示请求已被成功接收。6 v: f v, a+ ?' n3 b) ?
3xx 重定向 - 要完成请求必须进行更进一步的操作。
% H3 s5 [6 M( o" r$ _, j+ S: C: }4xx 客户端错误 - 请求有语法错误或请求无法实现。2 H/ P2 t$ l4 X$ q+ i- t/ p
5xx 服务器错误 - 服务器未能实现合法的请求。* S% i4 j0 c& Z8 c* l% @
状态码 意义
: P& S) x& |) V- H* R* d; i6 S0 Q& [200 OK 客户端请求成功
) w0 v! g& P7 `* E206 Parital Content 客户发送了一个带有Range头的GET请求,服务器完成了它4 X0 A! X6 f5 U3 n2 m9 z
301 Moved Permanently 所请求的页面已经转移至新的url
- B4 Q/ x8 Y0 Y! w1 ^7 L. `302 Found 所请求的也么已经临时转移至新的url# h2 b, l8 g: U5 ?2 D
304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求, 服务器告诉客户,原来缓冲的文档还可以继续使用+ ?: l, D6 U$ |7 G9 _" O
400 Bad Request 客户端请求有语法错误,不能被服务器所理解2 l: G5 q0 W7 q# s: Q4 J
401 Unanthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
+ M' k1 E) N% j4 a403 Forbidden 对被请求页面的访问被禁止
9 h2 i2 _5 q: `3 F K404 Not Found 请求资源不存在
f; Q4 e4 Z/ j, S" z* t9 _- ~' [" |500 Internal Server Error 服务器发生不可预期的错误原来缓冲的文档还可以继续使用0 u ^0 B$ p& B- i4 O
503 Server Unavaliable 请求未完成, 服务器临时过载或当机,一段时间后可能恢复正常
4 A, y8 w& D. Y, y5 ^* s( X/ ?什么是持久连接
: S9 b8 Y' E( O1 w6 y6 Y$ F4 J4 o+ d& u C z3 u
HTTP协议采用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时, 每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议)
! |# t v% Q1 Z+ X8 D6 [/ j, \7 G: _ V( g
当使用Keep-Alive模式(又称持久连接、连接重用)时, Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
( K( M* I/ C& M+ r
% ~4 h8 F1 \ A; p7 q使用了持久连接) s" X0 |$ Z2 Z. Y
5 M) p6 \( c: Q1 }8 ~
请求1->响应1->请求2->响应2->请求3->响应30 y& P/ ]* T5 ^9 B
, n2 Z$ D* E4 |) ^- C变成了 I3 H7 k9 Z5 p3 X1 [" w3 F i) S
5 K6 d, h6 x1 d1 e/ y请求1->请求2->请求3->响应1->响应2->响应3) c# I$ R& `" b( A
# [; l& a9 Z- }# ~" _
什么是管线化* g0 g" M9 m5 I$ O' z: p
3 `% H, a3 k! y8 r8 J) W管线化通过持久连接完成,仅http/1.1 支持此技术
! q% o' B+ Q& ]3 ^ O只有get和head请求可以进行管线化,而post则有所限制
& J4 G' x8 x- d, N3 X5 E( _. c初次创建连接不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议
2 N0 w; V0 `1 {- M3 ?# w8 T ]…
) \* g; @, ^5 x- S% @, i安全9 m9 ~" D, K9 C( q; |% L
' j6 h- M- R. g9 V+ ]& N n5 i9 [
CSRF
3 V6 l: n" `, \( T; l基本概念和缩写
- [1 X. t; V& N. o' W% g" z& ]1 ZCSRF, 通常称为跨站请求伪造,英文名Cross-site request forgery 缩写CSRF。
4 r& C" m( ~+ i" `- _* s攻击原理
8 x4 q5 e: w0 S' j4 _# E+ v5 O, @访问网站B时,网站B引诱点击链接,用户浏览器携带的cookie就被网站B的某些代码访问了。
; G6 Z1 s- C, V) P1 Z9 \这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。2 O3 P4 q' M# v0 f$ ^
XSS
& `0 I( [) a/ @" h基本概念和缩写
- `! H3 `) o+ h" c& J5 b% P( UXSS, 跨站脚本攻击, 英文名Cross Site Scripting 缩写XSS。
6 U$ ?& x7 ?$ o7 s) x$ G攻击原理* n B: x+ }9 l9 N4 j
输出脚本code
! Z4 l6 z! Y) J0 o跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。9 A+ v" V& d9 w8 v
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
, ~- t; [, ? m U) Q) `+ U$ G) ?渲染机制类
/ k: T( @/ X# J' _$ K4 s4 [" `0 R/ f# R: r* r8 j
什么是DOCTYPE及作用
2 r0 C6 g% Q% `* r$ d1 \* R8 m9 D
( c% \. ]* z5 R9 iDTD (document type definition, 文档类型定义)是一系列的语法规则,用来定义XML或HTML的文件类型。$ ^* Q% a. x7 i" R0 N D4 N1 ]
作用:浏览器会使用它来判断文档类型, 决定使用何种协议来解析,以及切换浏览器模式。3 _! ~5 i- T V" L7 b* G
DOCTYPE是用来声明文档类型和DTD规范的,
- e; K9 j) W% d3 b4 F* Y2 C作用:一个主要的用途便是文件的合法性验证。如果文件代码不合法, 那么浏览器解析时便会出一些差错。 n" m! `, k& |
HTML5的DOCTYPE:
/ g- [6 a8 l; B* { l
- S5 s0 P5 z7 h/ W8 _0 H4 BHTML4有严格模式和传统模式/ W) n4 v9 m2 r" p, S- V2 v! w
- j5 L/ u4 o$ u9 J! I
浏览器渲染过程
0 C: { Z% I4 y A9 q6 D
# f* d+ b+ l- r3 M8 Y! {一些概念% B9 i5 G. z6 o
L9 A( o" W; ] D
名称 概念
4 d/ C0 g) T) K4 f- EDOM Tree 浏览器将HTML解析成树形的数据结构。
% j9 q6 y) b! m, FCSS Rule Tree 浏览器将CSS解析成树形的数据结构。
# B5 v- F. @; C* }Render Tree DOM和CSSOM合并后生成Render Tree。8 R% j( V; t* R$ w) l9 E* |: q \# q
layout 有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系,从而去计算出每个节点在屏幕中的位置。 x' o% l, \4 f' O4 e3 W; z# p2 B" A% Z
painting 按照算出来的规则,通过显卡,把内容画到屏幕上。5 y' C( \5 X2 a u) A9 V( \5 z
1。当用户输入一个URL,浏览器就会发送一个请求,请求URL对应的资源
8 @6 \4 b8 n+ K* p7 u# ~2。HTML解析器会将这个文件解析,构建成一棵DOM树9 `7 C) W3 _4 G9 W* u8 y
3。构建DOM树时,遇到JS和CSS元素,HTML解析器就将控制权转让给JS或者CSS解析器" {; a- x( R( C
4。JS或者CSS解析器解析完这个元素时候,HTML又继续解析下个元素,直到整棵DOM树构建完成$ ^( E s2 L! r" o4 a
5。DOM树构建完之后,浏览器把DOM树中的一些不可视元素去掉,然后与CSSOM合成一棵render树5 e, I. L7 i3 y1 M s. E& ^
6。接着浏览器根据这棵render树,计算出各个节点(元素)在屏幕的位置。这个过程叫做layout,输出的是一棵layout树
4 L. ]0 W6 }& v7。最后浏览器根据这棵layout树,将页面渲染到屏幕上去
2 t$ k! h D5 u0 h1' j, g8 U: a& t8 @" y9 i! w
2
( V- @+ x) q. B& v* A" w& L3
3 u5 g/ b' h/ h2 O% F7 o41 c& Y/ L/ Z- j
5; }1 z b% F. W: M% N. K
6
4 I3 J- Y2 \4 I$ r2 i! f0 n79 [/ [7 n2 D S+ K
重排Reflow( N2 a" L- W" b* {, M% P
4 K- J& E* ?* o定义:当浏览器发现某个部分发生了变化影响了布局,需要倒回去重新渲染,内行称这个回退的过程叫 reflow。
8 ]% ~0 h* T6 J v% R触发Reflow:
% F2 |, a/ A7 s; q2 L当你增加、删除、修改dom节点时,会导致Reflow或Repaint
- p" X$ [! ?, @" o( O, U当你移动DOM的位置,或是搞个动画的时候' j# O) A# M* E+ ^- ~* T
当你修改CSS样式的时候
4 a( z- P# l( f+ c当你Resize窗口的时候(移动端没有这个问题),或是滚动的时候$ L9 K' a% n- U: P3 `, R- `) h/ c
当你修改网页的默认字体时
0 V9 Q) m8 {6 r7 @ n. v$ t重绘Repaint; } V1 ]- e; ^
0 I- K. u8 e! k: @' Q
定义: 改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,屏幕的一部分要重画,但是元素的几何尺寸没有变。; `9 m+ ^6 I% A c& Y
5 B, g2 S \, _/ O触发Repaint:' W4 q# k6 O* _$ H
7 R4 e% R/ R& w/ c9 ]& R& ]DOM改动5 z: d7 B9 t; p( }4 f0 {6 x* s5 o1 b
CSS改动
* a. ~, g! p' }————————————————* w5 L+ E2 p' x1 P
版权声明:本文为CSDN博主「ton365」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。8 i8 q0 a, D$ o/ \( {4 V
原文链接:https://blog.csdn.net/u012015672/article/details/105931291
4 W" P% P9 i) ]9 ~4 s9 g
7 b& D; p' `3 Q3 C/ f
8 b; L; G( j9 ?( J2 @ |
zan
|