본문 바로가기
프론트엔드/프론트엔드

프론트엔드-7

by study_yeon 2023. 4. 19.

2023.4.19.

1교시

레이아웃 만들기(언어 버전)

언어를 클릭하면 나오는 페이지 만들기

*align-items: center; 세로 가운데
*opacity: 0~1; 투명도
-> 마우스 호버하면 투명도가 1이 된다 등 활용 가능 

*transform : 눈에 보이는 요소의 크기 / 기울기 / 위치 / 회전 을 변경해주는 속성

*a태그 속성 지우기(파란색:color, 밑줄:text-decorate 등)

-> a태그는 인라인요소(크기 지정하고 싶으면 display: block)

 

● 박스 정중앙에 위치하게 하는 법

position: fixed; top: 50%; left: 50%;   > 도형(박스)의 좌측 상단이 기준이 되어 화면의 정중앙에 위치하지 않는다.
transform: translate(-50%, -50%);  > 도형(박스) 크기의 -50% 씩 이동한다 .


2교시
(참고) 메뉴(카테고리)가 자주 바뀌면 데이터를 바꿔줌 - 백엔드에서 배울 것 

 

● 한국어 화면 디자인


● 카테고리 입력(자바스크립트)

* forEach 반복문 
- 실무에서 자주 사용
- 배열안에 데이터가 정리 되어있음('맨 위의 요소 만큼 돌아라'라는 기능 포함, 반복할 숫자 지정할 필요가 없음)

ex)-----
const menuA= [
    "로고", "제품안내", "주문안내", " 갤러리",
    "배송조회", "로그인", "English"
]
1. menuA.forEach(function(item, ind) {
       // console.log(item, ind);  //작동 확인
       menu[ind].innerHTML=menuA[ind];       // ind번째 배열 값[menuA] 을 html의 ind번째 menu에 넣겠다.
 })
*item, ind 
정보   번호      -> item: "로고" , ind: 0

2. menuA.forEach((item, ind) => {
       menu[ind].innerHTML=menuA[ind];
   })
** 화살표함수
     => : 함수역할(function)을 하기 때문에 function 생략

○(참고)

nav는 1개이기 때문에 TagName으로 불러올 수 없다.  
* menu=document.getElementsByTagName("nav").getElementsByTagName("nav"); -> 불가
- getElementsByTagName("nav") nav[0]                 //0에서 끝나기 때문에
- getElementsByTagName("nav") div[0] div[1] div[2]~~

●배송조회 (회원명단) 

배송조회를 누르면 회원정보가 뜨게 디자인

● 데이터가 여러개면 table 을 사용한다.

* html

<tr> : table row
<td> : table data
<th> : table header 

* 자바스크립트 

1. 상단에 배열로 table data에 들어갈 내용 작성  - const [] 활용
2. 변수선언하여 데이터 읽어오기 - getElementsByClassName 활용 

3. 화살표함수(funtion기능) 또는 for문으로 html table data값에 배열 순서(index)대로 데이터 넣기

 

** let i; 는 자주 사용되니 상단에 고정 값으로 줘도 됨!


3교시
● for, forEach를 통해 데이터 입력 (2교시 이어서)

1. for : length의 길이(데이터 수)가 같으면 동시에 작성 가능
for(i=0; i<telA.length; i++) {
    tel[i].innerHTML=telA[i];
    mag[i].innerHTML=magA[i];
}
2. forEach(화살표 함수)
codeA.forEach((item, ind) => {
    code[ind].innerHTML=codeA[ind];
 })
3. forin  - object 활용
for(n in obj.data) {
   --      -----
  변수 in     객체
   space[n].innerHTML=obj.data[n];
}

● 배송조회(메뉴) 누르고 닫기

▶ 메뉴 누르면 화면 변경

1. css 작업

at0, at1 등 display: none; 설정 // 또는 각 at(n)에 at 라는 공통의 클래스를 주어 display: none; 
2. 제이쿼리 (클릭 함수 실행)

- $(".at").hide();    // 모든 at 클래스 안보이게 설정 

- no=$(this).index();  // 이것(클릭한 것)의 번호를 no에 대입하겠다

- 보이고자 하는 화면 show() 설정

    1) if(no==1) {                  //만약 1번째 화면을 누르면 .at1을 보여주갰다.
             $(".at1").show();
        }

    2) $(".at" + no).show();    // .at + no 번째 화면을 보여주겠다.

 

▶ 닫기 버튼 만들기

1. html과 css에서 원하는 디자인으로 작업

-클래스 또는 아이디 주기

2. 제이쿼리

- $(".close").on("click", function(){
      $(".at1").hide();                        // 클릭 함수 실행 시 at1 화면 숨기기
  })

 

**(참고) 화면 어디를 눌러도 닫기 기능이 작동하게 하고싶다면

- $(".big").on("click", function(){       // width: 100%; height: 100%; 설정이 된 클래스
      $(".at1").hide();                        // 클릭 함수 실행 시 at1 화면 숨기기
  })   


4교시

*변수 : 데이터를 일시적으로 기억하는 기억장소(하나), let 활용 
*Array(배열) : 데이터를 순서대로 저장시킨 기억장소(여러개), [대괄호]로 표시
* Object : 모든 데이터형의 집합 (숫자, 문자, 함수, 배열)
          JSON데이터 형식으로 저장
                - key 값과 value 로 구성
                - key:value
                - 모든 언어에서 호환
                - 데이터 통신용으로 사용되는 형식

*Object {중괄호} 로 표시
key 값과 value 로 구성{key:value}

예시

● 개별적으로 출력하기
space[0].innerHTML=obj.name;
space[1].innerHTML=obj.age;

 

*space 클래스 이름을 변수로 지정

 

 반복문을 사용해서 출력하기(오브젝트 안의 배열)
1. for

for(i=0; i<obj.data.length; i++) {
    space[i].innerHTML=obj.data[i];
}         
2. forEach

obj.data.forEach((n,i)=>{
    space[i].innerHTML=obj.data[i];
})
3. for in

for(n in obj.data) {
    space[n].innerHTML=obj.data[n];

 

*obj.data.forEach(( n , i )=>{실행})
                              --- ---
          value(데이터)    index(색인번호)   


5교시

● 복습 
1.  " > " (자식선택자) : 자식태그에게만 적용 

클래스를 주면 안됨 (태그 이름에서만 가능)

 

2. 스타일

* html

인라인스타일 : 태그 안에 쓰는 스타일
내부스타일: <head></head> 사이에 스타일 지정

* css, javascript
외부스타일: 독립된 파일에 스타일을 지정해서 <link>로 연결


-우선순위 - 인라인 > 내부 > 외부

 

3. p태그 안에 p태그 사용 불가  // 단순한 문자나 이미지 등에 활용

    div태그안에 p태그, div태그 사용 가능  // 다양한 이미지와 문자가 들어갈때 활용

*p태그는 인라인요소임!

● 제품안내 화면 만들기

제품 안내 클릭 시 나오는 화면
디자인 하기 (html, css)

* position: absolute;
- 요소들을 겹쳐서 만들고 싶을 때 적용 
- 가장 가까운 포지션된 조상을 기준으로 움직인다

* position: relative;

- 원래의 위치를 기준으로 움직이는 값(꼭지점 기준)

 

▶ 관계성 

.at1_imgBox li  (부모)  relative;

.at1_imgBox li div (자식)  absolute;   // 부모의 위치에서 top과 left 만큼 움직인다.

이미지 넣기(자바스크립트)

1. 변수 선언

2. 변수에 html 태그 대입

3. 반복문을 통해 백그라운드 스타일로 이미지 설정 

 


6교시 

● 자세히 보기 클릭 시 뜨는 화면 디자인

자세히 보기 누르면 상세화면
디자인 html css

1. html css로 디자인 해주기

-클래스 또는 아이디를 줘야함(제이쿼리 활용 위해)

 

 


7교시

● 자세히 보기 화면에 이미지와 글자 나오게 
1. object{} 데이터 [배열]로 작성   

javascript(제이쿼리, 오브젝트 등)

▶이미지 나오게

$(".at1_imgBox li").on("click", function(){        // 클릭함수(li를 클릭하면 함수 실행)
    $(".big").show();                                          // big 클래스를 보여준다(사진 들어있음)
    n=$(this).index();                                        // 클릭한것(this)의 번호를 n에 대입
    $("#pic").attr("src", "img/" + pumA.img[n]); // id=pic의 경로를 변경하여 대입하겠다. / object에 들어있는 배열[img] 활용


▶글자 나오게   
    $(".big_text li:eq(0)").text(pumA.titleA[n]); 

     // pumA obj에 들어있는 titleA[배열]의 n(this:클릭한 것)번째 데이터를

        0번째 big_text li 태그요소에 변경하여 대입하겠다
    $(".big_text li:eq(1)").text(pumA.sizeA[n]); 

    //  sizeA의 n(this:클릭한 것)번째 데이터를 1번째 big_text li 태그요소에 변경하여 대입하겠다
    $(".big_text li:eq(2)").text(pumA.colorA[n]);
    $(".big_text li:eq(3)").text(pumA.priceA[n]);
})

* eq(index) 는 index번째 태그요소 선택

eq() 는 해당 배열의 index 에 해당하는 객체를 제이쿼리 객체로 얻어온다.

*(참고)

$(".big_close").css("cursor", "pointer"); 마우스 효과
-> 제이쿼리에서 css의 기능을 모두 수행 가능 


8교시

● (참고)

display : 화면에 보이게
none; -> 안보이게
block; -> 보이게
flex; -> 옆으로 정렬해서 보이게

 

* 여러개의 아티클이 생겨 작업 시 원하는 아티클을 하단에 고정하여 작업할때 발생하는 오류

어떠한 클래스에 display: flex; 를 설정하고 하단에 display: block; 처리를 통해 해당 클래스를 고정하여 보이게 할 경우

하단의 display: block; 가 최종적으로 적용되어 display: flex; 가 풀리게 된다.








오늘의 후기
- 이해가 안된 부분이 너무 많아서 어떤 오류가 발생했는지 못적겠다.







html(0419).zip
5.62MB
















 

 

 

 


 

'프론트엔드 > 프론트엔드' 카테고리의 다른 글

프론트엔드-9  (0) 2023.05.31
프론트엔드-8  (2) 2023.04.20
프론트엔드-6  (0) 2023.04.18
프론트엔드5  (0) 2023.04.17
프론트엔드4  (0) 2023.04.16