PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

热图推荐

[前端框架] 一个简单的登录和注册HTML CSS开发页面

  [复制链接]

2019-11-27 15:14:40 2563 2

admin 发表于 2019-11-12 08:06:54 |阅读模式

admin 楼主

2019-11-12 08:06:54

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
一个简单的登录和注册HTML CSS开发页面
& ]( P! m# W; X4 _1 ]$ H# ^0 V3 L" @4 s* Y2 |: j9 k9 X  N
login.JPG register.JPG
7 P, `* S# D. |- |登录代码:
% _. e2 C& M9 P3 W/ E2 w# a( v3 g2 J4 J: }2 H2 U- k1 P3 e  }) q& s
[mw_shl_code=html,true]<html lang="en">' I" }  X; U- s5 v

2 v, K8 a( I5 s8 s; b3 z<head>
. Y/ Q$ ~) i  [- e) ^/ B    <meta charset="UTF-8">
7 [' L9 X' J; }- ]+ `% T    <meta name="viewport" content="width=device-width, initial-scale=1.0">
# m4 w: y/ p5 `6 N, o2 B    <meta http-equiv="X-UA-Compatible" content="ie=edge">. _% G3 W7 Z3 ]0 |6 g6 w& p
    <title>This is a login form</title>* g6 n: Y8 B* k5 R* G! v; O- b
; X7 o6 D8 h1 b; K" a, j
    <style>$ b  J9 E9 I7 z( C* B
        .modal {) r/ D/ J" f& ^0 A9 z0 L) R
            display: none;
% W8 {3 Z  f. `1 G$ h            width: 100%;+ [* D9 V* b! z* D0 t
            height: 100%;
6 ?6 ]  J/ Y2 ~            position: fixed;
6 I& }/ p$ d+ J2 _& C  }$ e4 {! I            overflow: auto;
- m4 r6 _  Z! b/ N, f5 m* g            z-index: 1;
8 }9 i* Z9 W$ w( o. k, _8 @1 l  k6 J: K            left: 0;
8 C+ m7 n7 h  O1 u3 |            top: 0;. D* s+ f1 T1 Z' t; ^# q
            background-color: rgb(0, 0, 0);- l) F1 @$ d/ ^. b9 ~
            /* Fallback color */$ ~( ]4 A- X- u" K: b+ W
            background-color: rgba(0, 0, 0, 0.4);$ A4 c  d: ?/ K/ U$ {' a$ X7 v+ w
            /* Black w/ opacity */$ a' h" R7 ]+ d8 r' r5 ]6 O
            padding-top: 60px;
; e+ _4 n" q, p+ b$ z* X
6 \6 w0 `* I; q3 o& K, b& @0 A        }4 x+ h' h/ m/ u3 \6 q

" @( v; C' N5 {" C        .modal-content {/ O4 n' r( c4 [* T5 J
            width: 60%;
( H# U" r1 x( o( T$ }1 @            background-color: #fefefe;, s* }! i0 k5 M  T1 w; W
            margin: 5% auto 15% auto;- X( P% p7 J) W
            border: 1px solid #888;
3 B+ |" v) h! J( m( p2 v! j0 X/ p- @7 W  {+ M! p
        }
1 q. ^5 l8 H% n& U. E6 Q* D# w/ {5 L  X8 A# d+ A$ @4 g
        /* The Close Button (x) */. g: Y! n1 Q0 x2 q8 l1 i3 z8 A- `
        .closeButton {, m" w9 o- b! H( t* k& g; L+ B& H
            position: absolute;
+ E2 G6 D" i8 D* m; \* a            right: 25px;8 V8 `4 d  @! J0 I, o4 @3 W6 p
            top: 0;
, b" D* V3 O: ?- m# P6 _$ x# S2 H            color: #000;; h- M! ~5 g5 K# W8 _2 q* A0 v8 }
            font-size: 35px;; G$ P) j2 z' m, I% N4 N
            font-weight: bold;
0 }' s: d3 T- H, x. c; R        }! {6 v4 @; i8 }' z
7 Q, V. k/ t2 `
        .cancelbutton {5 v6 P# F+ y+ \) \
            width: auto;
* v8 R' s: T' q: {% g            padding: 10px 18px;
6 _8 [( L  G9 u' N, Q            background-color: #f44336;. D/ |# N" K. H
        }) L8 T8 s) m2 A7 a

/ h  V# X' |) Q3 Y- q' R0 U        span.password {
5 ^$ [- u+ M+ }- z. O& K            float: right;% {8 H  l4 g+ b! e/ A3 x' U: d
            padding-top: 16px;
8 v: C8 u9 _7 w, V& T1 M, B7 [, w; C        }
5 u8 b& K% @. u- I+ x8 f6 N" w8 {5 U5 R
        .closeButton:hover,
' P( h9 x" Q% Y9 a7 j# n# x! s* H        .closeButton:focus {
3 |6 V7 ^, c* V/ C# u            color: firebrick;
3 {3 [/ U, V. l' \            cursor: pointer;
0 B( t& k0 }" |- b8 B4 O# Q4 a* Y# n" f1 k
        }
: [0 K. C* U4 @8 H, Q$ p. G/ C
2 R/ X0 K$ i" L3 D; [; `- B( W        .imgcontainer {
2 n3 _! h5 {" l) S( N1 Q            text-align: center;
+ K1 j* w( \* \% W% D; T' y2 a            margin: 24px 0 12px 0;6 K9 c1 b0 P+ P4 ^- w1 d  T. c
            position: relative;
" M2 T; v5 j- k5 S$ \# z& H/ D        }
! ?) i, m/ f" p6 J, a( _2 S+ T! x' G" I: q  ^  M7 @9 C  @
        .avtar {6 \% O- h% H0 O
            width: 40%;
1 I0 y" y8 I  G5 p) l( D. N            border-radius: 50%;
5 f% Z: T/ l0 g7 o        }
" {7 G/ N/ k+ f/ O* e
& ]! s2 m" Q0 l* ~+ ^) w2 W7 o6 v        .container {
( E0 u- ?, s" F& F, ~9 G' i            padding: 16px;4 f% f; C! a/ T" X5 G) p
        }
* i7 ], y2 g# x$ |3 q2 T2 l
" v9 k% W2 @; A( h( w0 B        /* Full-width input fields */# d6 H* C5 w. c- g; `; P
        input[type=text],; J5 c: [! f& L7 Q6 a- [! V
        input[type=password] {  L8 _0 ~/ l3 a$ n7 I# K, D
            width: 100%;
5 N) B2 M( A/ ]8 U' ]4 {( |            padding: 12px 20px;- p" J1 B% ?. W5 E0 B* y  ?5 l
            margin: 8px 0;' ?. T, i9 S% T) D5 F: A8 n3 B- Q
            display: inline-block;5 v# K7 @1 H& b8 J! r3 Y, u0 w2 K
            border: 1px solid #ccc;" r0 i4 u5 k) w! {& e
            box-sizing: border-box;- j+ R, g. I* g* m
        }
+ m9 k# a+ }$ A. }8 p- s/ O0 ]; R; w5 w
        /* Set a style for all buttons */
% D+ h, ^; R: r) I        button {
8 Y8 `% q4 I: {1 L' X4 E% v            background-color: #4CAF50;9 O1 L- Q7 @- k3 _( J
            color: white;
! i/ ]8 W0 S5 \" I6 {. r            padding: 14px 20px;
4 ^- K6 h! P1 C) }            margin: 8px 0;- ?( U  j" [* R( o6 X
            border: none;) q5 ~) x/ f8 T6 V5 g9 t! g
            cursor: pointer;' X* V/ m8 I) d! y% Y2 ^
            width: 100%;2 J1 _3 W  T# l5 m& a2 m6 _
        }
* Y( x3 i$ Y" y) S2 ^2 \& b4 W6 c
; F2 v8 M4 k  t: d# e  B. {) u- N9 k
        button:hover {
; i1 V" ~: c, c( M1 j, F8 e6 O            opacity: 0.8;0 P: M( m2 ~6 p! {4 p! L5 p, ^$ S" o+ b
        }6 I0 G5 t. `- T5 f
& o! W+ A' M! b, a& A: p
        /* Add Zoom Animation */  U" ^6 h' `  S8 Y, E8 J1 W
        .animate {3 ^# C, x  x# n" G* O6 ?1 J
            -webkit-animation: animatezoom 0.6s;8 }5 N) J) [. A' g! L. @$ @0 y
            animation: animatezoom 0.6s, }: R- E& A- l
        }" k0 b3 t) H0 h8 {# [! g
* g' ^; E$ ]5 X" `0 A
        @-webkit-keyframes animatezoom {
  ~8 a2 J& ~7 Y5 H! t& B6 D5 x8 @3 L            from {! q" b; o+ ]8 P9 w: f
                -webkit-transform: scale(0)
" [1 v/ C8 R: J& U- |& _            }$ I( ]: s' g, G. [  N4 G2 X

( w( w  w3 S) N            to {
) `7 `/ k# m+ f" u                -webkit-transform: scale(1)* h- S3 w9 x5 M. E% j% J
            }
# V0 @6 v/ q$ z) p        }
9 T. p, E" A" P5 C2 ]+ T
" S! g& l8 z' j8 q0 f        @keyframes animatezoom {
: c' s/ g" ?% e& X7 K. G+ o% x& ^            from {
" D6 ]8 e7 e& [- o                transform: scale(0)3 @1 n+ z& Z8 \) w: F! k( d+ {/ J3 B
            }( E: F5 H. M; J8 ~' z, e: B

( p4 j+ h: Y' |, [7 W            to {9 J( C% w% m- ]
                transform: scale(1)
% i4 Z% t/ z+ g9 V            }, k% p6 n4 ?3 v6 R% X
        }$ [5 _  o) \  U% i( _. g: J3 G
        /* Change styles for span and cancel button on extra small screens */
: B/ b  K1 L1 D( D9 p3 d  I! d        @media screen and (max-width: 300px) {
4 i& n" U/ o* V  O            span.password {
  {8 M5 k6 i  L! ]1 R                display: block;
$ c* _9 r  e' y                float: none;4 ^, u' I* ~+ x# N" E& \
            }
6 H5 h6 z) ]* @5 ]. X$ [: a- h$ V# S+ f9 P$ `
            .cancelbutton {  D3 B# j0 V& I, z5 y! f. A# x, t
                width: 100%;( O( y" g1 _/ i5 A% B
            }. X4 D# C6 {1 s& Z: |7 X
        }8 s$ }3 D  E3 y* q7 }' _& Q9 u
    </style>7 d; Y6 `' h9 |. x; c3 X+ l! ]
</head>
6 S" A5 Y6 g9 ?- T2 H6 J% C5 }
7 v" k) B0 f4 P( N<body>8 X) w1 b& a. e2 k

+ f* c4 ^1 o  T+ L7 }( Y    <button id="login">login</button>4 M) V% U9 a, T% S* M
    <button id="register">register</button>: A1 J- q* e9 J3 ?* S

) ]0 a' C4 ]9 q4 n, h    <div id="formPanel" class="modal">, m. D% g6 S- O0 \7 O
        <form action="./img/logo.png" class="modal-content animate">
& `5 C8 I+ M( W! |; t! B& Z+ q# V            <!-- image -->- Z8 p0 b  e2 u- [" r
            <div class="imgcontainer">
0 g3 J" L+ ~# r: l                <span id="closeButton" class="closeButton"# F* s. Q/ ]: ], ]2 x
                   8 A; T/ L9 j  o  J& v
                    title="close form">×</span>
9 p. ^, F& S- A$ a, ~0 {/ U2 Q                <img src="./img/img_avatar.png" alt="avatar" class="avtar">! S$ }* I2 {7 @. s) u8 ~& T  L+ u: \
            </div>3 F, g- Q( j" O3 L9 K2 Y
            <!-- information -->
- i5 c6 P$ ~+ y3 b+ _# y( E# b/ H            <div class="container">$ x7 k- ~$ a- N( @
                <label><b>UserName</b></label>
- p8 ?$ b+ ~9 Z) E1 V' X                <input type="text" placeholder="username" class="username" required>/ a% O. c, ~& E/ C, D$ U
                <label><b>Password</b></label>
( b. c- ]% o8 [                <input type="password" placeholder="password" class="password" required>
: x; g; l! m2 A0 I& M) S                <button class="loginButton">Login</button>( f0 b% ^: i1 D4 z$ y' ~
                <input type="checkbox" checked>Remember Me3 G) U' P1 H/ t, z. N% Z
            </div>
# W/ _; S, N1 d6 E9 ?: A
1 L) @" e& w  s+ |1 |            <div class="container">
8 B6 m% `' R/ w0 z  j8 r- Y                <button class="cancelbutton" type="button"
4 s2 W7 g" b4 ]4 O. y$ ~% s% |                   >Cancel</button>
0 j3 [6 k; v3 q8 z* l1 S0 Y1 C                <span class="password">Forgot
6 [' U( p# |& A( F' l                    <a href="#">password?</a>4 t$ X+ {9 Z* t/ q. {
                </span>
5 A  j1 e" Y( @9 h2 q) @1 K            </div>, w% \( O* i: D6 v
        </form>
# [# J5 m* h. c    </div>4 p# G) P; j5 F1 U3 k4 t9 I
2 b. I3 {# F% O8 ~8 A6 p( F7 C
& E$ C  d9 s3 S, g" x0 Y% |
    <script>, Q  P3 ?- w5 u% X, h' Q
2 U- G7 Q) L- e4 G; @* G# a
        function loginForm() {
8 S/ R/ o5 p8 j3 b; y            var formx = document.getElementById("formPanel")- |- |( ~  D( l, F
            formx.style.display = "block"
0 |  O) ~# @& d4 I9 ?$ r( O# p        }
; `/ N" \# \( H( `    </script>
% z& U$ a5 w7 h) s. d/ T
" c  i$ Z& @0 C$ g; H- k; u, q- q2 f. l. u
</body>7 t% a' Z; |1 X2 o7 N. a, g- W
4 n' ]2 b3 |' M1 l4 b# z
</html>[/mw_shl_code]0 T8 \* F; [1 @  T- B! y6 _3 k

" r( }# \! d5 `" Y! @- a& b1 ~  k% q* C+ x
注册代码8 k, A: \+ j( i: s+ l6 h

- J/ F+ s0 X9 z# G* d[mw_shl_code=html,true]<html lang="en">! P/ c  R/ G* y) S7 ]" s2 `4 e" C  B

5 D" ]5 i' j' B( }( e* _6 ~/ `<head># ?* T- o, n, a! d! v5 ^8 O9 i
    <meta charset="UTF-8">
; b3 `9 n& V+ i& h1 `    <meta name="viewport" content="width=device-width, initial-scale=1.0">' z) \' ]/ z$ R5 I1 f
    <meta http-equiv="X-UA-Compatible" content="ie=edge">8 r8 L- z& z4 C  Y5 w
    <title>register form</title># m' d& r6 e% U' ~  y8 m
' J: i6 H0 H4 c. ?
    <style>" R1 \7 ]! j% b& {* M5 }$ A7 @/ v
        .panel {% Q0 C; s# [( r6 ?' C+ A
            width: 100%;
% g& j" P+ E% f5 q            height: 100%;  j+ z0 ]6 t( t9 \' \( x' Y' M
            background-color: rgb(0, 0, 0, 0.2);, M8 `2 n9 O4 [! G0 C
            padding-top: 30px;
' j% l5 s; N; f, F9 v  U            overflow: auto;2 [% I# t, J0 N. L, D
            position: fixed;
3 ?  I; v; i" J- w; ?            left: 0;" @/ T3 i6 g3 b! O( {7 P  O
            right: 0;4 o% G6 @/ V4 I7 C
            z-index: 1;
! V, E6 \- g+ z9 p* g- D        }
" a% a9 F: c2 `. f( @1 j( E+ c( Q, _; U0 ^5 J
        .modal-content {
7 ?4 ]4 N% ^. g            background: #fefefe;, @( L! M0 k+ F7 M) k
            width: 60%;
/ {* u3 T, o$ b4 g7 w. [            border: 1px solid #888;. x: D8 I/ A0 H) x) g) Y/ o; G* B
            margin: 5% auto 25% auto;% ~6 ]; ^! h: N* T
0 a, ]* T. H# n2 C
        }& u+ Y: w3 ~4 n
, q4 f% P+ G( C4 C
        .container {
. [1 N$ J9 B7 R& M0 ^  g( W9 T            padding: 16px;/ F+ T& [" A  @4 `
        }
) ^' }! `! V0 v) O# b
* I4 ~! ^0 o) ~9 P' D- `- \        .close {
8 H0 T$ o: D: F+ M* ]! t" j            font-size: 40px;  D" V. W. i- T4 y
            position: absolute;
+ k) S. n- m/ F9 b* w: e' w% G            top: 15px;" P9 X% o: p( g0 O/ x" b
            right: 20px;3 W& E" {2 O. e2 R; c
        }0 [# j* W4 K5 q! O+ B; M
1 G4 A: o# I1 g+ K  J5 E
        .close:hover,  O* K& B; ^' C' ~# J  `/ ^
        .close:focus {( G" f) o/ _4 L& i  c0 z
            color: red;* M- F& u4 r( t* A# l/ p
            cursor: pointer;
; P) Z0 t) R7 k        }4 [8 s- t4 y. W* L

% Z- C6 {9 T$ l        input[type=text],
8 \' o% N! }2 O" z7 p1 j# f# Y+ n        input[type=password] {
$ ?% S6 z5 M& D            width: 100%;4 t) x" X% T0 Y, `$ |
            padding: 12px 20px;  n( H! d  i6 D  e  R* L
            margin: 8px auto;
5 \& ^' E' d: V0 m2 H            border: 1px solid #cccccc;
) @  t. E' k6 h; z# P            display: inline-block;: S+ p6 z; ]  T7 L& A# o8 a
        }
# a7 ?- n! p/ v8 Q2 k$ y% k
' Y# Z) \' w, X) {        button {9 f& m& Q# Y/ u2 v4 p! A
            background-color: #4CAF50;3 F# a$ S/ s' m* s
            color: white;
& s% p( @7 w* o- P) u( |7 A( R            padding: 14px 20px;
6 @9 l2 t# w) X, \! [% A2 y( e            margin: 8px 0;# |- H0 y, q1 C$ D, A$ r
            border: none;; O2 h+ i7 T" @" _
            cursor: pointer;
7 ~( {  Y7 _6 ^4 p            width: 100%;& e& N  D& x( D9 s7 o
        }
, n) O6 y" D9 ?& c, [7 G# j6 Y+ d8 e' d4 a, I7 R- Q
        .cancelbutton {
5 o$ o9 b+ M$ K            padding: 14px 20px;0 B& L& Y/ E6 w6 O
            background-color: #f44336;7 _4 d$ @9 ^; b, v3 q( E& }0 |9 W
        }
1 W5 p8 L- ^# A, p% N1 M: D, M- c9 c7 g# U' L7 ~) l
        .cancelbutton,
* Y+ {5 J8 Z6 V0 o, Z+ H/ C        .registerbutton {
8 ^. \" o; i" s* C            float: left;
$ c3 C: w9 M6 s            width: 50%' B* {/ b$ \& Y4 g/ o
        }
9 p: I# ], @/ L' ^( c
" _/ h: _/ X% V# T3 q        .clearfix::after {
3 I0 m3 P2 K; p, x( D            content: "";: T. b( m# W: n) }
            clear: both;
2 ?6 C' n% a! h& \7 ^            display: table;7 k" o8 w; \8 q9 d: {" ~/ v
        }
% I* }3 W3 z& _    </style>
6 c4 T4 g5 ^( l& P! M4 e. ~$ J* P% ~! g+ z4 ~) f) X- I9 P, r' E. [
4 _: B! V0 r3 b; S8 Q1 ]. o
( F) S7 H6 L' w0 v4 s- G
</head>$ E1 u  O+ k, f( y
' e: |' }) k5 |- t6 K; @0 k5 I
<body>
! q$ W6 w, {; E+ u6 z* ^' A
, C1 d" S/ i4 `/ f1 R2 w9 h    <div id="modal" class="panel">8 N; _' K- O5 `4 e! V) P2 w' F' V
        <span class="close">x</span>
7 x3 }# Y- ~/ d* T        <form action="#" class="modal-content">
# U; j1 |& u$ G7 W. q3 ~! e: h' N            <div class="container">
( E9 c. S; I& a7 o! H* x                <label>Email</label>
$ l" q& x- h: [! A                <input type="text" placeholder="Emmail" required>
9 g$ a: ]9 j  x4 ?                <label>Username</label>& O9 w2 S# t$ e
                <input type="text" placeholder="username" required>
. c. d5 H& r, ^; }! C                <label>password</label>
4 G3 l; t  A6 j: B                <input type="password" placeholder="password" required>7 s% S, `$ u$ g. T  o
                <input type="checkbox" checked> remember me" T6 {& P/ u! q* y/ ?' r: \. n& c  L
                <p>Follow the policy <a href="#">terms & privacy</a></p>, u* ?& h6 l$ y0 A4 S

' Z) j$ v" |0 n) G+ h- A! j0 f: c, S8 j4 Y: l5 ]
                <div class="clearfix">. j  d$ r. U( S0 \, f
                    <button class="cancelbutton">Cancel</button>
) ]4 T' F6 {. [                    <button class="registerbutton">Register</button>
. e# u4 G( R/ [! k4 y                </div>! X/ Z* s' {1 a, K
            </div>( L; R- I- C6 a- b
        </form>0 q8 G/ v- A- G4 B. V
    </div>" s7 e0 r- U5 |& }" H
$ r7 j3 b0 e+ ]

8 z7 m: G. M5 {: w- T/ r7 `$ w  m$ L$ G$ {4 T

% E- t: o: K8 R3 i( S9 u4 a4 b0 j! L5 F% X8 `
</body>
$ V2 H# I. E+ ?1 J( {
0 V8 k" T' b$ c1 ~</html>[/mw_shl_code]  S  E' ^* y' ]: [: ^: d9 f$ u8 o0 d
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

举报

全部回复2

lacconi 发表于 2019-11-27 15:11:50

lacconi 沙发

2019-11-27 15:11:50

PLM之家二次开发源码分享
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

举报

lacconi 发表于 2019-11-27 15:14:40

lacconi 板凳

2019-11-27 15:14:40

PLM之家二次开发源码分享
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了