변수:
변수의 의미: 데이터를 나타내는 데 사용되는 코드, 즉 우리가 정의한 이름입니다.
변수 정의: var v1; var v2 = 2; var v3, v7=7, v8, v9="abc";
변수 사용:
할당: v1 = 1+2+3; v1 = v2 + "abc"; v1 = v1 + v1;
값: m1 = v1; //v1의 값을 가져와서 m1에 할당합니다m2 = v1 + 5; m2 = v1 + 5;
Alert (v1); // V1의 값을 가져와 "팝업"하도록 Alert에 제공합니다.
document.write (v1); // V1 값을 받아 document.write에 전달하여 "출력"
Alert ("v1 =" + v1); // V1의 값을 구하고 "v1 =" 문자열을 연산에 연결한 후 결과가 Alert 입니다.
document.write( “v1=" + v1);
데이터 유형:
기본 유형:
부울 유형: boolean; 이 유형에는 true, false 두 가지 값만 사용할 수 있습니다
문자열 유형: 문자열; 같은 의미로 작은따옴표나 큰따옴표로 표현할 수 있습니다.
숫자 유형: 숫자복합 유형:
배열: 배열,
개체: 개체
특수 유형:
NULL: 빈 유형 - 단지 "의미"를 나타내기 위해 빈 값과 빈 유형인 "null"에 대한 명확한 할당을 변수에 제공할 수 있습니다. 변수는 효과적인 값을 제공하지 않습니다.
정의되지 않음: 정의되지 않음: 이 유형은 일반적으로 "값이 전혀 제공되지 않음" 상태에 해당합니다.
산술 연산자: + - * / %
참고:
1. 나눗셈(/)은 C언어에서의 나눗셈이 아닌 수학에서의 자연스러운 나눗셈입니다.
2, ++ 및 --는 단항 연산자라고 하며 하나의 변수에만 작동합니다
3, 그러나 ++ 및 –는 표현식(대입문 등)에 사용될 수 있는데 이는 자기 증가(또는 자기 감소)와 표현식 자체 계산이라는 두 가지 작업을 동시에 수행하는 것과 같습니다. 이때 변수는 앞과 뒤의 의미가 다릅니다.
a) var i = 1; var s1 = i++; var s1 = i++; //결과: s1은 1, i는 2
b) var i = 1; var s2 = ++i; //결과: s2는 2, i는 2
비교 연산자: > >= <= == != === !==
비교 연산자는 데이터의 크기(일반적으로 숫자)를 비교하는 데 사용됩니다. 주목할만한 것은 다음과 같습니다:
==를 "퍼지 동등성"이라고 합니다. 즉, 데이터의 내용이나 변환된 내용이 동일하면 동일한 것으로 간주됩니다.
===는 데이터 유형과 데이터 내용이 동일한 경우에만 동일한 것으로 간주됩니다.
——컴퓨터 관점에서 데이터는 데이터 유형과 데이터 값(데이터 내용)이라는 두 가지 측면을 갖습니다.
논리 연산자: 부울 값에만 사용됩니다.
논리 AND( && ): 두 데이터가 모두 참인 경우에만 결과가 참이 됩니다.
논리 OR( || ): 두 데이터 중 하나가 true이면 결과는 true입니다.
논리 NOT( ! ): 부울 값의 "반대 값"을 가져옵니다.
문자열 연산자:
연결 연산자( + )는 하나만 있습니다. 이는 "두 문자열을 연결합니다"를 의미합니다.
산술 연산자( + )의 추가 구별:
더하기 기호( + )가 있는 두 데이터 중 하나가 문자열이면 다른 하나가 문자열이 아닌 경우 자동으로 변환됩니다. 조인 작업을 진행하기 전에 문자열에 추가하세요.
비트 연산자:
비트 연산자는 이진수 형식의 숫자에서만 수행됩니다.
var v1 = 5; //이진법은 실제로 101입니다. 컴퓨터 내부에서는 00000101과 유사합니다.
var v2 = 6; //이진법은 실제로 110입니다. 컴퓨터 내부에서는 실제로 00000110과 유사합니다.
비트 AND:
기호: &
의미: 두 이진수의 해당 비트에 대해 "AND 연산"을 수행하면 결과는 여전히 이러한 비트 연산의 결과로 구성된 이진수로 표시되는 값입니다.
설명: 이진수의 "AND 연산" 규칙은 다음과 같습니다.
1 & 1 è 1
1 & 0 è 0
0 & 1 è 0
0 & 0 è 0
예:
var v1 = 5, v2 = 6, 동작 다이어그램은 다음과 같습니다.
v1=5 |
|
<🎜>0<🎜> | <🎜>0<🎜> | <🎜>0<🎜> | <🎜>0<🎜> | <🎜>1<🎜> | <🎜>0<🎜> | <🎜>1<🎜> | |||||||||||||||||||||||||||
<🎜>v2=6<🎜> | <🎜>0<🎜> | <🎜>0<🎜> | <🎜>0<🎜> | <🎜>0<🎜> | <🎜>0<🎜> | <🎜>1<🎜> | <🎜>1<🎜> | <🎜>0<🎜> | |||||||||||||||||||||||||||
<🎜>v1 및 v2<🎜> | <🎜>0<🎜> | <🎜>0<🎜> | <🎜>0<🎜> | <🎜>0<🎜> | <🎜>0<🎜> | <🎜>1<🎜> | <🎜>0<🎜> | <🎜>0<🎜> |
var v3 = v1 & v2 = 00000100(2) = 4(10)
비트 OR:
기호: |
의미: 두 이진수의 해당 비트에 대해 "OR 연산"을 수행하고 결과는 이러한 비트 연산의 결과로 구성된 이진수로 표시되는 값입니다.
설명: 이진수에 대해 "OR 연산"을 수행하는 규칙은 다음과 같습니다.
1 è 1
1 | 0 è 1
0 | 1 è 1
0 | 0 è 0
비트별 NOT:
기호: ~ //"단항 연산자"입니다.
의미: 이진수의 해당 비트에 있는 숫자에 대해 "연산하지 않음"을 수행하면 결과는 이 이진수로 표시되는 값이 됩니다.
설명: 이진수에 대한 "연산 안 함" 규칙은 다음과 같습니다.
비트 왼쪽 시프트 연산:
기호: <<
의미: 이진수의 각 비트에 있는 숫자를 지정된 자릿수만큼 왼쪽으로 이동하고 왼쪽의 "이스케이프된" 비트를 무시하고(계산하지 않음) 비트의 빈 비트를 채웁니다. 오른쪽에 "0"”이 있으면 얻은 결과는 이진수로 표시되는 값입니다.
예:
var v1 = 5; var v2 = 5 << 2;
v1=5
|
0
|
0 |
0 |
0 |
0 |
1 |
0 |
var v2 = 5 >> 2 = 00000001(2) = 1(10) 그 외 운영자 내용: 할당 연산자: 사실 기본적인 할당 연산자인 =는 등호 오른쪽에 있는 데이터를 등호 왼쪽의 변수에 넣는다는 뜻입니다. 잘못된 구문: var v1 = 1, v2 = 2, v3 = 5, v4 = -2; v1 + v2 = v3 + v4; //틀렸어, 큰 실수, 큰 실수 복합 대입 연산자: += -= *= /= %= 연산자 우선 순위 - 너무 많고 기억하기 너무 복잡하지만 몇 가지 규칙을 기억하세요. 1. 주의: 연산자에는 우선순위(순서) 문제가 있습니다. 2, 괄호가 가장 높은 우선순위를 가지며, 등호(할당)이 마지막입니다. 3, 먼저 곱하고 나눈 다음 더하고 빼세요 4. 잘 이해되지 않거나 대괄호를 사용하는 경우에는 대괄호를 사용하세요 5, 괄호는 괄호일 뿐이며, 레이어별로 중첩될 수 있습니다. 예: var 연도 = 2013; // 윤년 결정: 연도가 4로 나누어지고 100으로 나누어지지 않으면 윤년이고, 400으로 나누어지면 역시 윤년입니다. if ( ( (연도 % 4 == 0) && (연도 % 100 != 0) ) || (연도 % 400 == 0) ) { document.write( year + "윤년입니다") ;} 데이터 값 전송 방법: var v1 = 10; var v2 = v1; //v1의 중간 값을 복사하여 변수 v2에 넣습니다. 이는 "v1의 값을 v2에 전달"이라고도 할 수 있습니다. var v1 = v1 + v1; //v1의 값은 변경되지만 v2에는 영향을 미치지 않습니다. v2 자체도 독립 변수이기 때문입니다. document.write(" document.write(" 위의 "v2 = v1"을 "값별 복사"라고 합니다. v1의 값을 가져와서 복사한 다음 v2에 할당합니다. var v3 = {name:"작은꽃", age:18, edu:"University"}; //이것은 소위 "객체" 유형입니다. 여기에는 3개의 데이터가 포함됩니다. //데이터 조작은 다음과 유사합니다. document.write(" v3.age = 19; //v3 객체의 age 데이터 값에 이전 v1 = 20과 유사하게 새로운 값이 반복적으로 할당됩니다. var v4 = v3; //이때 v3 변수의 "메모리 주소"가 v4 변수에 전달되는데, 실제로는 이 주소에서만 v3 객체 자체의 데이터를 가져옵니다. ——이를 pass-by-reference-by-value라고 합니다. 이때 두 변수는 실제로는 실명, 예명, 닉네임 등 여러 사람의 이름과 유사하게 동일한 데이터 내용을 갖습니다. document.write(" v3.age = 20 // document.write(" 요약: js에서 기본 데이터 유형은 "값별 복사"를 사용합니다. 값이 전달되면 새 데이터가 직접 나타납니다(물론 다른 변수로도 표시됩니다) 복합 데이터 유형(배열 및 객체)은 "참조에 의한 전달"을 사용합니다. 값을 전달할 때 가리키는 주소를 만들면 여전히 데이터 복사본이 하나만 있고 두 변수는 동일한 것을 가리킵니다. 데이터. 분기 구조인 경우: 제어 구조: 특정 구문을 사용하여 프로그램 실행 흐름을 제어하는 것입니다. "프로세스 제어 구조"라고도 합니다. 분기는 "여러 경로, 하나를 선택"입니다. 가장 간단한 형식: //이 조건이 만족되면(즉, 조건부 판단의 결과가 참이면) 스테이트먼트 블록이 실행되고, 그렇지 않으면 아무 일도 일어나지 않습니다. if( 조건부 판단문 ) {//실행할 명령문 블록 - 명령문 블록은 실제로 "n개의 명령문"을 가리키는 일반적인 용어입니다. } 가지 형태 중 하나 선택: 길이 두 개 있고 하나를 택해야 한다는 의미입니다. if( 조건부 판단문 ) {//실행할 문장 블록 1 - 이전 조건이 참일 때 실행 } 그밖에 { //실행할 문장 블록 2 - 이전 조건이 참이 아닐 때 실행 } 객관식 분기 구조: 조건 만족에 따라 여러 경로 중 하나를 선택하지만, 아무것도 선택하지 않을 수도 있습니다. if(조건부 판단 1) //이 조건이 만족되면 문장 블록 1이 실행되고 if가 종료됩니다 { //문 블록 1 } else if (조건 판단 2) //조건 1이 만족되지 않으면 조건 2 판단: 만족하면 문장 블록 2를 실행하고 if 종료 { //문 블록 2 } else if (조건부 판단 3) //조건 2가 만족하지 않으면 조건 3을 판단: 만족하면 문장 블록 3을 실행하고 if를 종료합니다 { //문 블록 3 } ……………… . . . . . 조건 중 어느 것도 충족되지 않으면 마지막에 아무것도 실행되지 않고 if가 종료됩니다. 종합 유형: if(조건부 판단 1) //이 조건이 만족되면 문장 블록 1이 실행되고 if가 종료됩니다 { //문 블록 1 } else if (조건 판단 2) //조건 1이 만족되지 않으면 조건 2 판단: 만족하면 문장 블록 2를 실행하고 if 종료 { //문 블록 2 } else if (조건부 판단 3) //조건 2가 만족하지 않으면 조건 3을 판단: 만족하면 문장 블록 3을 실행하고 if를 종료합니다 { //문 블록 3 } ……………… . . . . . 그밖에 { //마지막 else 문 블록입니다. //이 명령문 블록은 이전 조건 중 어느 것도 충족되지 않을 때 실행됩니다. } 참고: 포괄적인 형식에서는 실행될 분기(문 블록)가 하나 있어야 합니다. 분기 구조 전환: switch 분기 구조의 전체적인 의미는 "여러 경로 중 하나를 선택하다"를 의미하는 if와 유사합니다. 스위치(변수 또는 표현식) //변수이든 표현식이든 궁극적으로 "값"을 나타냅니다. v1을 사용하여 말합니다 { case 고정값 1: //v1이 값 1과 같으면 명령문 블록 1이 실행됩니다. // 명령문 블록 1; break; //이 스위치 구조를 종료합니다 사례 고정값 2: v1이 이전 값 1과 같지 않으면 여기서 값 2와 같은지 계속 판단합니다. 같으면 명령문 2를 실행합니다. // 명령문 블록 2; break; //이 스위치 구조를 종료합니다사례 .......................................................... . . . . . . . . . . . . . . . . . default: // 앞의 판단이 성립하지 않는 경우(즉, 같지 않은 경우) 이 문장이 실행됩니다. > //기본 문 블록 }특별 참고 사항: if 문은 실제로 > >= <= == != ===와 같은 매우 유연한 조건부 판단을 사용할 수 있지만 스위치의 경우에는 하나의 판단만 있을 수 있습니다. 심판. while 루프 구조: 순환의 기본 개념: 1, 루프는 특정 프로그램(문 블록)을 반복적으로 실행하는 것입니다. 2. 루프를 멈추는 방법이 있을 것입니다. 컴퓨터에는 "피곤해서 더 이상 하지 않겠습니다"라고 판단하는 자체 판단 능력이 없습니다. while 루프의 기본 구문 형식: while(조건부 판단) //조건부 판단이 만족되면 문장 블록이 실행되고, 그렇지 않으면 while이 종료됩니다. { //실행할 문장 블록 } //이 문장 블록이 실행되면 즉시 이전 while 위치로 돌아가서 계속해서 판단합니다. 위 형식은 문법의 기본 요구 사항일 뿐이지만 "실제" 연습에서는 일반적으로 다음 패턴을 따라야 합니다. 【루프 변수 초기화】 while ( [조건 판단을 위한 루프 변수] ) { //루프 본문은 반복적으로 실행되는 명령문 블록입니다. 【루프변수 값 변경】 } while 루프 구조 수행: do while 루프는 처음 한 번 실행된 후 판단 조건에 따라 실행 및 루프를 계속할지 여부를 결정하는 루프 구조입니다. do while의 실제 형태는 다음과 같습니다. 【루프 변수 초기화】 하세요 { //루프 본문은 반복적으로 실행되는 명령문 블록입니다. 【루프변수 값 변경】 } while ( [조건 판단을 위한 루프 변수] ) ; 설명: do 뒤 괄호 안의 명령문 블록을 먼저 실행한 후 while 문에서 조건부 판단을 수행하고, 판단이 true(true)이면 계속해서 위의 do로 돌아가서 중괄호 안의 명령문 블록을 실행합니다. , 그렇지 않으면 완료합니다. for 루프 구조-권장 사용: for 루프의 기본 형태: for( [루프 변수 A의 초기화]; [조건 판단 B로서의 루프 변수]; [루프 변수 값 C의 변경] ) { //반복적으로 실행될 구문 블록인 루프 본문 D } for 루프의 실행 논리(순서): A è Bètrue è D è C è Bètrue è D è C è Bè ┗èfalseèfor 루프 종료 ┗èfalseèfor 루프 종료 기능 함수는 숫자가 아닙니다. 함수는 단지 문법적 구조일 뿐입니다. 함수는 여러 줄의 코드를 "패키지"하여 전체적으로 사용하는 문법 구조입니다. 함수는 정의하고 사용해야 하는 구문이라고 할 수 있습니다. 변수와 마찬가지로 정의하고 사용해야 합니다. 함수는 특정 기능을 수행하도록 설계되었으며 일반적으로 "반복적으로 실행되어야 하는 함수"입니다. 함수의 목적은 해당 함수에 포함된 코드 블록(문 블록)을 실행하는 것입니다. 함수는 독립적인 실행 공간입니다. 즉, 함수 내부의 코드는 함수 외부의 코드와 "분리"된 것으로 간주할 수 있습니다. 함수의 정의 형태: 함수 함수 이름(형식 매개변수 1, 형식 매개변수 2, ... ) { //실행할 명령문 블록 - 함수 본문 } var s1 = parsInt(3.5) //3 var s2 =parseInt(3.8); //3 var s3 = parsInt(3.1) //3 var s4 =parseInt(3.0); //3 var s5 = parsInt(3) //3 ——parseInt는 실제로 함수, 즉 시스템 내부 함수입니다. 이 함수는 주어진 숫자를 주어진 숫자보다 크지 않은 가장 큰 정수인 해당 정수로 변환하는 "마법의 능력"을 가지고 있습니다. 요청하기: 직각인 두 변 3과 4에 해당하는 빗변을 찾고 싶습니다. 또한 공 5와 6, 7과 8 등에 해당하는 빗변도 원합니다. . . . . . . . 함수란 정확히 무엇인가요? 함수는 모듈식 프로그래밍 아이디어의 문법적 구현일 뿐입니다. 소위 모듈식 프로그래밍 아이디어는 다양한 "반복 작업"을 독립적인 "모듈"로 만들고 사용할 때 "직접 호출"하여 반복 작업의 필요성을 줄이는 것입니다. 쓰기 위해. 함수 호출 형식: 함수 이름(실제 매개변수 1, 실제 매개변수 2, ….. ); 함수 호출 과정: 1, 먼저 호출 함수의 실제 매개변수 값이 함수 정의의 형식 매개변수에 일대일 대응으로 전달됩니다. a) 형식 매개변수는 함수 기능에 따라 특정 실제 의미를 나타내는 "변수 이름"이어야 합니다. b) 실제 매개변수는 하나의 "데이터"여야 합니다(직접 데이터 또는 가변 데이터일 수 있음) c) 참고: 형식 매개변수의 변수 이름은 var를 사용할 수 없으며 다른 곳에서 정의할 수도 없습니다. 2, 그러면 프로그램의 실행 흐름이 함수에 들어가고, 함수 안의 "모든 명령문"이 해당 흐름에 따라 실행됩니다. 3. 함수의 내부 프로그램 실행이 완료되면 프로그램의 실행 흐름은 함수 호출 위치로 돌아갑니다. a) 함수가 수행하는 작업에 반환 값이 필요한 경우 return 문을 사용하여 값을 반환해야 합니다. 이 시점에서 함수는 자연스럽게 종료됩니다. b) 함수가 값을 반환할 필요가 없으면 return 문을 사용할 수도 있습니다. 이때 함수가 여기서 즉시 종료된다는 것을 나타냅니다. (모든 문이 완전히 실행되지 않을 수 있습니다.) 함수 반환 값에는 두 가지 경우가 있습니다. 반환 값이 있습니다. 이는 함수가 특정 "계산"(실행) 후에 데이터를 얻고 데이터가 호출 위치(발신자)로 반환된다는 의미입니다. 이때 이를 달성하려면 "특정 값을 반환합니다."를 사용해야 합니다. ——예를 들어, 상사가 일정 금액을 받고 직원에게 기차표를 사라고 하면 직원은 구매한 기차표를 상사에게 반납해야 합니다. 특별한 주의: 반환 값이 있는 경우 함수 호출은 값으로 처리되어야 합니다. 함수가 값을 반환하는지 여부는 구문에 의해 결정되는 것이 아니라 실제 요구 사항에 따라 결정됩니다. 구문은 실제 요구 사항에 따라 변경됩니다. 반환 값 없음: 함수가 단순히 내부 코드를 실행함을 나타냅니다. 실행 후 종료되며 "호출자"에게 데이터를 반환할 필요가 없습니다. 함수의 매개변수: 문법적인 규정은 전혀 없습니다. 대신 매개변수가 있는지, 매개변수가 몇 개인지, 즉 어떤 필수 데이터를 제공해야 하는지 애플리케이션 자체의 필요에 따라 결정됩니다. 이 데이터는 함수의 형식적 매개변수로도 반영되며, 각 형식적 매개변수는 특정 의미(데이터)를 나타냅니다. 변수의 범위 소위 범위란 "유효하고 사용 가능한 범위"를 말합니다 스코프에는 두 가지 유형이 있습니다. 글로벌 범위: 모든 프로그램 범위에서 사용 가능한(유효한) 범위입니다. 로컬 범위: 특정 범위(보통 함수 내부) 내에서만 사용할 수 있는(유효한) 범위입니다. 변수는 범위의 관점에서 두 가지 유형으로 나뉩니다. 글로벌변수 : 글로벌 스코프에서 사용할 수 있는(유효한) 변수를 말합니다. 함수 외부에서 정의된 변수는 전역 변수입니다. 전역 변수는 함수 외부와 내부 모두에서 사용할 수 있습니다. 지역 변수: 특정 범위(보통 함수) 내에서만 유효할 수 있는 변수를 말하며, 일반적으로 변수가 정의된 함수 내에서 사용됩니다. 시스템 내부 기능 parseInt(xxx): 매개변수 xxx를 정수 반올림 작업으로 변환합니다. parInt( 3 ) parInt( 3.8 ) è 3 parseInt( 3.1 ) parseInt( “3” ) parseInt( “3.8” ) è 3 parseInt( “3.1” ) parseInt( “3abc” ) è 3 parsInt( “3.8abc” );è 3 parseInt( “3.1abc” );è 3 parseInt( “abc3” ) è NaN parseInt( “abc 3.8” );è NaN parseInt( “abc3.1” );è NaN parseInt( “abc” ) è NaN NaN - 특수 숫자(유형 숫자)이며 의미는 다음과 같습니다. 숫자가 아님 - 이 상황은 일반적으로 숫자가 필요하지만 제공된 데이터가 숫자가 아니거나 숫자로 변환할 수 없음을 의미합니다. ——NaN이라는 숫자는 자신을 포함하여 어떤 숫자와도 같지 않습니다. parseFloat(xxx): 매개변수 xxx를 10진수로 변환합니다. parseFloat(3) parseFloat(3.8) è 3.8 parseFloat(3.1); è 3.1 parseFloat ( “3” ); è 3 parseFloat(“3.8”) è 3.8 parseFloat(“3.1”); parseFloat( “3abc” è 3parseFloat(“3.8abc”) è 3.8 parseFloat(“3.1abc”) è 3.1 parseFloat( “abc3” ) è NaN parseFloat(“abc 3.8”) è NaN parseFloat( “abc3.1” ) è NaN parseFloat(“abc”) è NaN Number(xxx): 매개변수 xxx를 "숫자"로 변환합니다. ParseFloat와 비교하는 데 주의하세요. 숫자( 3 ) è 3 숫자( 3.8 ) è 3.8 숫자( 3.1 ) è 3.1 숫자(“3”) è 3 숫자( “3.8” ) è 3.8 숫자(“3.1”); è 3.1 숫자( “3abc” ) è NaN 숫자( “3.8abc” ) è NaN 숫자( “3.1abc” ) è NaN 숫자( “abc3” ) è NaN 숫자( “abc 3.8” ) è NaN 숫자( “abc3.1” ) è NaN 숫자( “abc” ), è NaN isNaN(xxx): 매개변수 xxx가 "숫자가 아님"인지 확인합니다. 숫자가 아닌 경우 결과는 true이고, 그렇지 않은 경우 숫자인 경우 결과는 false입니다. isNaN (3) è false isNaN(3.8) è false isNaN( 3.1 ); è false isNaN (“3”); è false isNaN (“3.8”) è false isNaN(“3.1”); 거짓 isNaN(“3abc” ); è è true isNaN (“3.8abc” ) è true isNaN(“3.1abc” ); è è true isNaN (“abc3”); è true isNaN (“abc 3.8”) è true isNaN(“abc3.1”); isNaN(“abc”) è true위 내용은 PHP 기본 학습 노트(3)와 관련 내용을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
최신 이슈
상위 창에 출력이 없습니다.
document.onclick = function(){ window.opener.document.write('나는 자식 창의 출력입니다.');
에서 2024-04-18 23:52:34
0
1
1284
PX가 REM 오류로 자동 변환
<style>html { 글꼴 크기: calc(100vw / 3.75); }body { 글꼴 크기: 0.16rem; }&l...
에서 2024-04-16 09:34:16
0
0
4687
관련 주제
더>
|