- 질문 게시판입니다.
Date 18/02/22 13:05:12
Name   nickyoPD
Subject   자바스크립트 관련 질문입니다 ㅠㅠ
코딩 목적: 배열로 들어있는 정보를 C:forEach 를 통해 div 안에 뿌리는데 img 크기가 div보다 클 경우 자동으로 조정해주는 자바스크립트 window.onload를 처리,
클래스 네임 :  .logo => <img src 태그 클래스 네임>, .img <div 태그 클레스 네임>

<----자바스크립트 부분------->

<script>
window.onload = function() {
var divs = document.querySelectorAll('.logo > .img');
for(var i=0; i<=4; i++){
var div = divs[i];
var divAspect = div.offsetHeight / div.offsetWidth;
div.style.overflow = 'hidden';

var img = div.querySelector('.logo');
var imgAspect = img.height / img.width;

if (imgAspect <= divAspect) {
// 이미지가 div보다 납작한 경우 세로를 div에 맞추고 가로는 잘라낸다
var imgWidthActual = div.offsetHeight / imgAspect;
var imgWidthToBe = div.offsetHeight / divAspect;
var marginLeft = -Math
.round((imgWidthActual - imgWidthToBe) / 2)
img.style.cssText = 'width: auto; max-height: 100%; margin-left: '
+ marginLeft + 'px;'
} else {
// 이미지가 div보다 길쭉한 경우 가로를 div에 맞추고 세로를 잘라낸다
img.style.cssText = 'max-width: 100%; height: auto; margin-left: 0;';
}
}
};
</script>

<------데이터 표시 부분 -------->

<c:forEach items="${JobPost_Main }" var="JobList">
<div class="four wide column" style="border: 1px solid black; text-color: black;">
<div class="ui centered fluid card">
<div class="img">
      <a href="${conPath }/JobPostContentView.do?postNo=${JobList.postNo}">
                                     <img src="${conPath }/CompanyLogoImage/${JobList.postCompanyLogo}" class="logo" /></a>
        </div>
</div>
</div>
</c:forEach>


입니다. 자바스크립트에서 for문이랑 divs 선언을 빼고 document.queryselector 로 클래스 네임을 받아서 돌리면 첫번째 이미지까지는 해결이 되는데 배열로 정보를 받아오는거라 4번째까지 해결하려면 자바스크립트에서 받은 클래스 정보를 배열에 넣고 해야하는데 ㅠㅠ 아무리 이리저리해봐도 해결이 안됩니다.. 도와주세요..



0


이거 jQuery 쓰시는 거에요?
혹시 CodePen 같은 걸 통해서 다시 올려주실 수 있나요?
nickyoPD
쌩자바스크립트긴한데ㅜㅜ코드펜 이따 찾아보겠습니다 포 이치안에 이엘랭귀지 들어가는건 디비에서 받은거 백엔드서 세션에넣고굴리는거라 ㅜ
April_fool
정말 간단하게 쌩 자바스크립트를 사용하는 예제 코드를 보여드리겠습니다. 이 코드는 logo라는 클래스를 가진 모든 DOM 요소(여기서는 이미지들)의 기본 width값을 웹브라우저 콘솔창에 출력하고, width값을 100으로 바꾸고, 다시 바뀐 width값을 콘솔창에 출력하는 예제입니다. 이 예제를 응용하면 되겠죠?

window.onload = function() {
var logos = document.querySelectorAll(".logo");
logos.forEach(function(image) {
console.log(image.width);
image.width = 100;
console.log(image.width);
});
};
1
호라타래
컴린이들의 구원자시여... 복 받으실 겁니다.
April_fool
헤헷 감사합니다.
nickyoPD
으음 ㅠㅠ 이렇게 하면 뷰 페이지에 style로 width 100% 넣는거랑 차이가 있는건가요? 페이지가 그림크기보다 줄어들때 div는 반응형으로 줄어드는데 img가 안줄어드는 경우에 줄여줘야 하는거라서요 ㅠㅠ
그런 거면 이렇게 어렵게 할 게 아니라 img style에 [object-fit: contain;] 요 CSS 속성만 넣어주면 되지 않을까요?

https://stackoverflow.com/a/30794589/6704601
https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit
nickyoPD
으음 예시대로면 되어야하는데 잘 안되네요 ㅠㅠ 감사합니다 더 시도해보겠습니다
object-fit은 IE11에서도 지원하지 않아서 실무에서는 거의 사용하지 않는 속성이네요 ㅎㅎ
일단 이미지 좌우나 상하를 잘라내는 것은 반응형 철학(?)에는 맞지 않습니다.
화면 사이즈와 무관하게 컨텐츠의 100%를 볼 수 있어야 한다는게 원칙이라...

하지만 뭐 그런 의미를 담는다기 보다는 그냥 제일 적절한 느낌으로 보이게 한다라는 의미로 쓰이는 '소위 반응형'의 의미로 작업하고 계시는 것일테니...

좌우 잘라내는 처리는 <a><img></a> 의 구조보다는 <a style="background-image:url('/img.jpg');"></a> 의 구조가 ... 더 보기
일단 이미지 좌우나 상하를 잘라내는 것은 반응형 철학(?)에는 맞지 않습니다.
화면 사이즈와 무관하게 컨텐츠의 100%를 볼 수 있어야 한다는게 원칙이라...

하지만 뭐 그런 의미를 담는다기 보다는 그냥 제일 적절한 느낌으로 보이게 한다라는 의미로 쓰이는 '소위 반응형'의 의미로 작업하고 계시는 것일테니...

좌우 잘라내는 처리는 <a><img></a> 의 구조보다는 <a style="background-image:url('/img.jpg');"></a> 의 구조가 처리하기 수월하긴 합니다.
CSS의 background-size에는 cover란 속성 값이 있거든요.

img 태그를 사용해서 처리하려면... 스크립트로 번거로운 계산을 피하기 어렵죠.
일단 요게 좀 이상한데요.
var divs = document.querySelectorAll('.logo > .img');

.logo가 .img 보다 상위에 없기 때문에 실제로 저 안에 담기는 내용이 없을겁니다.
쿼리셀렉터에서 사용되는 > 는 부등호가 아니라서 어느쪽이 크냐의 방향이 아니고 자식선택자라 직계 자식만 고르게됩니다.
손자나 증손자에게는 적용이 안되고 자식만 해당이 된다는 뜻이지요.
근데 코드를 보면 .logo는 무자식이거든요.

var divs = document.querySelectorAll... 더 보기
일단 요게 좀 이상한데요.
var divs = document.querySelectorAll('.logo > .img');

.logo가 .img 보다 상위에 없기 때문에 실제로 저 안에 담기는 내용이 없을겁니다.
쿼리셀렉터에서 사용되는 > 는 부등호가 아니라서 어느쪽이 크냐의 방향이 아니고 자식선택자라 직계 자식만 고르게됩니다.
손자나 증손자에게는 적용이 안되고 자식만 해당이 된다는 뜻이지요.
근데 코드를 보면 .logo는 무자식이거든요.

var divs = document.querySelectorAll('.img'); 그냥 이렇게 되어야 할 것 같은데요.
아니면
var divs = document.querySelectorAll('.card > .img'); 요렇게...
1
nickyoPD
오오 ..그 부등호가 그게아니군요ㅜㅜㅜㅜㅜ이러니 암것도안들어오지..감사..압도적감사..
음... 그리고 작성하신 코드가 너무 기네요.
어쩌면 5줄 이내로도 가능할거 같은데...
프론트-엔드 프로그래밍이 이렇게 어렵습니다. 여러분
목록
번호 제목 이름 날짜 조회 추천
4187 기타컴퓨터 견적 이거 어떤가요??(사진有) 15 김치찌개 18/02/21 4569 0
4188 경제경전철 새로 생기는 역의 정확한 위치를 알 수 있나요? 3 별빛 18/02/21 4719 0
4189 여행혼자 여행가기 좋은 곳을 찾고 있습니다. 11 recamier 18/02/21 4682 0
4190 IT/컴퓨터초3 되는 아들 노트북 질문입니다. 9 Darwin4078 18/02/21 4052 0
4191 IT/컴퓨터스마트폰 짐벌 질문입니다. 2 Erzenico 18/02/21 3071 0
4192 기타4대 보험 질문 3 사람사람 18/02/21 4184 0
4193 IT/컴퓨터오라클 DB 쿼리문 작성 질문입니다 10 nickyoPD 18/02/21 4559 0
4194 여행도쿄 여행 조언 구합니다. 9 naru 18/02/21 3498 0
4195 진로친구가 자기 일하는회사 오라는데 갈등됩니다. 16 [익명] 18/02/22 2780 0
4196 기타의무교육 가짜광고 엿먹이는 방법이 있을까요? 헬리제의우울 18/02/22 3229 0
4197 IT/컴퓨터자바스크립트 관련 질문입니다 ㅠㅠ 14 nickyoPD 18/02/22 4677 0
4198 연애여성분들 그날에 입맛이 없을 때 그래도 땅기는 음식 있으신가요?? 17 [익명] 18/02/22 8313 0
4199 기타컴퓨터 최종견적입니다(사진 有) 6 김치찌개 18/02/22 4449 0
4200 IT/컴퓨터pc 업글 문의입니다 9 쿠바왕 18/02/23 3752 0
4201 여행혼자 일본여행 도쿄 VS 중소도시 어디가 좋을까요? 8 알프 18/02/23 4136 0
4202 기타종로에 귀금속상가 가격 괜찮나요? 9 까꿍이아빠 18/02/24 4802 0
4203 가정/육아유아 동화책 중고시장도 활성화 되어 있을까요? 11 rehema 18/02/24 3446 0
4204 게임안녕하세요. 모르가나 서포터 템 추천 부탁드립니다. 16 [익명] 18/02/24 2336 0
4205 기타고등어 조기 어느게 비리신가요? 7 Euphoria 18/02/25 3629 0
4206 여행베이징 어떤가요? 3 별빛 18/02/25 2835 0
4207 기타윤서인 만화 내용은 제외하고 순수하게 그림만 보면 어떤건가요? 14 라밤바바밤바 18/02/26 4237 0
4208 홍차넷홍차넷인데 왜 redtea.kr이죠? 10 papaGom 18/02/26 6007 0
4209 경제상가 무상임대 질문합니다 5 [익명] 18/02/27 2407 0
4211 기타직장에서의 태도 14 침묵의공처가 18/02/27 3596 0
4212 게임ogn 롤챔스 직관가보신분들 계신가용? 4 얼그레이 18/02/27 3545 0
목록

+ : 최근 2시간내에 달린 댓글
+ : 최근 4시간내에 달린 댓글

댓글
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기