블로그

코딩웍스(Coding Works)

이미지에 생기는 아래쪽 여백 없애는 방법 4가지

안녕하세요. 코딩웍스입니다~!! 이미지는 display 속성이 인라인 블록(inline-block)이라서 아래쪽에 폰트관련 마진이 생깁니다. 그래서 정확히 맞췄다고 생각하지만 아래쪽에 뭔가 잘 안맞는 경우가 있습니다. 이런 경우 여러가지 방법으로 이미지 아래쪽 마진을 없앨 수 있습니다.▲ 위의 예시처럼 좌측 이미지와 우측 이미지는 같은 이미지인데 왼쪽은 div로 감싸지 않아서 아래쪽 마진이 있지만 투명이라 인식하지 못하는 것입니다. 하지만 div로 감싸고 div에 보더 색상을 주면 우측처럼 아래쪽 마진이 4픽셀 정도 생기는 것을 확인할 수 있습니다. 🚩 방법1 - 이미지 display 속성을 block으로 만들기▲ display: block으로 이미지의 인라인블록 성질을 없애버려서 아래쪽 마진을 만들지 않게 합니다. 이런 경우 이미지가 1개라면 상관 없지만 이미지가 2개 이상 나열된 경우 줄이 바뀌게 됩니다. 🚩 방법2 - 이미지를 감싸고 있는 부모요소에 font-size: 0 주기▲ 원래 이미지에 생기는 아래쪽 마진은 이미지가 인라인 블록이라서 폰트 관련 마진입니다. 그래서 폰트사이즈를 없애면 마진도 사라집니다. 🚩 방법3 - 이미지에 마진 아래쪽 음수로 주기 🚩 방법4 - 이미지에 vertical-align 속성 주기실험 결과 vertical-align 속성이 왜 이렇게 작동하는지는 모르겠습니다. 음... 하여튼 되더라구요.middle 말고 top, bottom도 이미지 아래쪽 마진을 없애줍니다. 

htmlcss

하늘소녀

Do it! HTML + CSS 웹 표준의 정석 - 겨울 방학 맞이 기초 언어 스터디(1)

겨울 방학을 맞아 Do it! 기초 언어 스터디에 참여하게 되었다.6주 동안 한 권의 책을 정해, 매주 진도에 맞춰 학습하고 내용을 정리해 공유하는 스터디다.내가 선택한 책은「HTML + CSS 웹 표준의 정석」웹 개발을 기본부터 정리하기에 딱 좋은 책이라 이번 스터디 도서로 골랐다.스터디는 단순히 읽고 끝나는 게 아니라정해진 진도표에 맞춰 학습매주 개인 SNS에 공부 내용 정리기록을 통해 흐름을 정리하는 방식으로 진행된다.이번 글에서는 1주차 진도(01~04장)를 간단히 정리해보려고 한다.# 1주차 진도 요약 (01~04)01. 웹은 어떻게 움직일까웹 개발에 들어가기 전, 웹의 동작 원리를 이해하는 장이다.정적 웹과 동적 웹의 차이클라이언트와 서버의 역할요청(Request)과 응답(Response)의 흐름웹 접근성의 기본 개념* 웹은 단순히 화면을 띄우는 것이 아니라브라우저와 서버가 계속 데이터를 주고받는 구조라는 점을 다시 정리할 수 있었다.초반부터 웹 접근성을 다루는 점도 인상적이었다.02. 웹 개발 시작하기본격적인 코딩 전에, 웹 개발을 어떻게 시작하면 좋은지 방향을 잡아주는 장이다.웹 개발 학습 흐름개발 환경 설정에디터와 브라우저의 역할파일과 폴더 구조 개념* “무엇부터 해야 할지 막막한 사람”에게학습 순서를 정리해주는 챕터라는 느낌이었다.툴 설명보다는 개발을 바라보는 관점 위주라 부담이 적었다.03. HTML 기본 문서 만들기이제 실제 HTML 문서를 만들어보는 단계다.HTML의 역할HTML 기본 문서 구조<html>, <head>, <body>의 의미시맨틱 태그의 개념* HTML은 단순히 화면을 꾸미는 언어가 아니라문서의 구조와 의미를 표현하는 언어라는 점이 핵심이었다.왜 시맨틱 태그를 써야 하는지도 자연스럽게 이해할 수 있었다.04. 웹 문서에 다양한 내용 입력하기웹 문서에 실제 콘텐츠를 채워 넣는 방법을 다룬다.텍스트 입력목록 만들기표 만들기이미지 삽입오디오·비디오 삽입하이퍼링크 연결* 우리가 매일 보는 웹 페이지가어떤 HTML 요소들로 구성되는지 하나씩 뜯어보는 파트였다.특히 표와 이미지, 링크 부분은 실습하면서 구조가 확실히 잡혔다.# 1주차를 마치며01~04장은웹의 개념 → 개발 준비 → HTML 문서 구조 → 콘텐츠 구성으로 이어지는, 웹의 기초를 다지는 구간이었다.이 단계가 단단해야 이후 내용도 자연스럽게 이어질 것 같다는 느낌이 들었다.

웹 개발HTMLcss자바스크립트웹표준스터디DOIT

Edun

[1주차] 인프런 워밍업 클럽 스터디 FE 1기 발자국

1주차 회고록 작성.<강의>- 따라하며 배우는 자바스크립트 A-Z (Section0~1)<과제>- 음식 메뉴 App 만들기 [버거킹 메뉴 앱]: Javascript의 html 속성을 통해 각 노드의 요소마다 Button별로 Filtering된 Data를 넣어주기.<느낀점>1) 내게는 너무 낯선 Javascript2) 자유분방-예측불가-코드리뷰가 막막한 녀석. . .3) 어떻게든 돌아가도록 프로그램을 만들기 위해 탄생한 JavaScript라니. . .4) 이 녀석을 재밌게 만들어준 동료들(뀨님,꼉님, 쏘님) 사랑합니다 핫투.[JavaScript 기초]Console 객체IDE 설치VS codeWebStormVS code - Live Server 설치웹 프로젝트를 미리 볼 수 있도록 로컬 서버를 호스팅하는 확장 프로그램script.js - console.log크롬 개발도구(F12) Console 창에 출력됨개발시 어떠한 식으로 진행되는지 Console로 출력해서 알아보면 용이함어디서, 어떻게 에러가 났는지 출력을 할때 log사용함console.log('Hello,World'); console.log('1243'); console.log(true); var greeting = 'hello!'; console.log(greeting); console.log({a: "a", b: "b"}); console.table({a: "a", b: "b"}); console.error('Error!'); console.warn('Warning!!'); console.time('Hello'); console.time(1); console.time(2); console.time(3); console.time(4); console.time(5); console.time(6); console.time(7); console.timeEnd('Hello'); 변수 선언 : var, let, const자바스크립트 코드 작성브라우저 - 개발도구에서 바로 사용 가능IDE - VSCode 활용변수 선언 방식 / 참조범위 / 호이스팅호이스팅 : 인터프리터 언어 특성상, 호이스팅이 제공됨 (변수 끌어올려서 사용하는 것)| 변수 | 중복 | 재할당 | 유효한 참조 범위 (Scope) | 호이스팅 (변수 끌어올림) | | --- | --- | --- | --- | --- | | var | O | O | 함수 레벨 | 선언 : undefined 자동 할당 (초기화 전) 할당 : 값 할당 | | let(ES6) | X | O | 블록 레벨 | 선언 : undefined 할당 X (TDZ : Temporal Dead Zone) | | const(ES6) | X | X | 블록 레벨 | 선언 : undefined 할당 X (TDZ : Temporal Dead Zone) |// var type : 선언 및 할당 여러번 가능 (자유도 높음) // : 유지보수 하기 힘듦. var A = 1; console.log(A); var greeting = 'hello'; console.log(greeting); var greeting = 'hi'; console.log(greeting); greeting = 'how are you?'; console.log(greeting); // let type : 중복선언 X, 할당 가능 let ttt = 'hi, halo'; console.log(ttt); //let ttt 'haha'; // error. ttt = 'papapapa'; console.log(ttt); // const type : 중복 && 할당 X // : constant (상수) 약자 const damn = 'yess'; console.log(damn); //const damn = 'ttt'; //error. //damn = 'yesfds'; //console.log(damn); //error. //------------- 02. Scope //------------- 01) var 함수 레벨 스코프 function func() { if(true) { var a = 'a'; console.log(a); } console.log(a); } func(); //------------- 02) let,const 블록 레벨 스코프 function func2() { if(true) { let a = 'a_let'; console.log(a); } } func2(); //------------- 03. 호이스팅 //------------- 01) var 호이스팅 : undefined //------------- 02) let, const 호이스팅 : error. console.log(seelping); var seelping = '자고싶다'; // undefined let seelping = '자고싶다'; //error. //------------- 03) 함수 호이스팅 : 정상출력. func3(); function func3() { console.log('hosting test'); } 자바스크립트 타입원시타입 : Boolean, String, Numeric, Null, undefined, Symbol불변성에 저장됨고정 크기로 Call Stack에 저장됨실제 데이터가 변수에 할당됨참조타입 : Object, Array, Class, Functions실제 데이터는 Heep에 저장됨데이터 크기가 정해지지 않고 주소값이 Call Stack에 저장됨자바스크립트 = 동적 타입느슨한 타입동적 언어변수는 타입과 연결되지 않음모든 타입의 값으로 할당(및 재할당) 가능string → boolean → numeric 가능한 것//------------------------ 원시 타입 // 문자열 String const name = 'Edun'; // Number const age = 38; // Boolean const hasJob = true; // null const car = null; // undefined let anything; // Symbol const sym = Symbol(); //------------------------ 참조 타입 // Array 배열 : 객체의 하나의 형태 const hobbies = ['wailing', 'books']; // Object 객체 const addr = { province : '부산광역시', city : '남구' } console.log(typeof hobbies); console.log(Array.isArray(hobbies)); 자바스크립트 타입변환자바스크립트 함수 사용 변환let val; // Nuber to String val = String(111); val = String(8 + 4); // Boolean to String val = String(false); // Date to String val = String(new Date()); // Array to String val = String([1,2,3,4,5]); // toString() val = (5).toString(); // String to number val = Number('1'); val = Number(true); val = Number(false); val = Number(null); val = Number([1,2,3]); // NaN = Not a Number val = parseInt('111.40'); val = parseFloat('111.40'); console.log(val); console.log(typeof val); console.log(val.length); 자바스크립트 자체에 의해 자동 변환const val1 = 2; const val2 = String(3); const sum = val1 + val2; console.log(sum); // string으로 자동변환. console.log(typeof sum); 자바스크립트 연산 및 Math Objectconst num1 = 20; const num2 = 10; let val; // 산수 연산 val = num1 + num2; val = num1 * num2; val = num1 - num2; val = num1 / num2; val = num1 % num2; // 나머지 연산자 // Math Object //--------------------------------- 속성 val = Math.E; // 속성 val = Math.PI; // 속성 //--------------------------------- 메서드 val = Math.round(2.4); // 가까운 정수로 리턴 val = Math.ceil(2.4); // 무조건 올림 val = Math.floor(2.8); // 무조건 내림 val = Math.abs(-2); // 절댓값 val = Math.min(2,3,4,5,6,7,8,-1); val = Math.max(2,3,4,5,6,7,8,-1); val = Math.random(); // 0~1 사이에서 return. // 1~20 사이 랜덤 숫자 val = Math.floor(Math.random() * 20 + 1); //+1 필수. console.log(val); Template LiteralsTemlate Literals : javascript에서 backtick() 문자를 사용하여 문자열을 표현한 템플릿쉬운 줄바꿈‘\n’ → 실제 Enter 적용문자열 내부에 표현식을 포함할 수 있음‘+{a+b}+’ → 보간법 ${a+b}백틱(backtick) ⇒ ‘ ` '로 사용Loopsfor 코드 블록을 여러 번 반복 for/in 객체의 속성을 따라 반복 while 지정된 조건이 true 인 동안 코드 블록을 반복 do/while while 루프의 변형 조건이 true인지 검사하기 전에, 코드 블록 한 번 실행 후 조건이 true인 동안 루프 반복for vs forEachfor forEach 원래 사용되었던 접근 방식 배열 요소를 반복하는 새로운 접근 방식 breack 사용 가능 breack 사용 불가능 빠름 for보다 느림 비동기 await 작동 비동기 await 작동 애매함// for문 for(let i=0; i < 10; i++){ if(i === 3){ console.log('It is 3'); continue; } if(i === 5){ console.log('5 Stop the loop.'); break; } console.log('Number ' + i); } // for/in 문 const user = { name: 'Edun', province: '부산광역시', city: '남구' } for(let x in user){ console.log(`${x} : ${user[x]}`); } // while 문 let i = 0; while(i < 10){ console.log('Numer ' + i); i++; } // do/while 문 let i = 0; do { console.log('Number ' + i); i++; } while(i < 10); //배열을 Loop로 이용해서 컨트롤 해주기 const locations = ['서울', '부산', '경기도', '대구']; for(let i = 0; i < locations.length; i++){ console.log(locations[i]); } locations.forEach(function (location, index, array){ console.log(`${index} : ${location}`); console.log(array); }); // console.log(locations);   

프론트엔드JavaScripthtmlcssinflearn인프런워밍업스터디

채널톡 아이콘