제작환경) 광고 중이라서
쇼핑몰은 거진 적응형. 근데 쇼핑몰을 반응형으로 만드는 이유? 개발자 포폴용
모바일에서 <더보기> 존재 이유 : 로딩 시간 벌려고 (빨리 나갈 애들 빨리 응대나가!)
부트스트랩 붙이고 시작
배열/객체, 아무것도 없을 땐 for문으로! ( for-in 안됨 )
for 하는 수만큼 '< li >< /li >' 를 proArr에 삽입해 → 화면노출
이미지 목록이 이렇게 뜬다
위치 고정! 절대 옮기면 안됨!
proArr 이 화면에 뿌려진 다음, 이미지를 배경처리 해야 하니까!
ex) "클릭됨" 창이 뜨도록
클릭 이벤트) 초기값 12
더보기 버튼 클릭 시, 상품이 24개 보임
더보기 버튼 클릭 시, 상품이 36개 보임
더보기 버튼 클릭 시, 상품이 48개 보임
.
.
.
'#pro_list li' 를 영역으로 가지는 liArr 배열 선언
그 liArr 배열 안의 목록을 forEach해서 꺼내는 식 작성
뭐가 무슨 값인지 화면에 콘솔로그 해보기
<style>
*{ padding:0; margin: 0;}
li{ list-style: none;}
#pro_list li{
background-color: #ccc;
background-repeat: no-repeat;
background-position: center;
background-size: cover;
border:1px solid #000;
}
#pro_list li:after{ content: ""; display: block; height: 0; padding-bottom: 100%; }
#pro_list li img{ opacity: 0; width: 0; height: 0;}
</style>
<body>
<div class="list" id="pro_list">
<ul class="row">
</ul>
<button class="bg-dark text-white p-2 ">더보기</button>
</div>
<script>
var proArr = '';
var liCount = 12; // 처음 노출개수
var litotal = 30; // 상품전체개수
for(var i = 0; i < liCount; i++ ){
proArr +=`<li class='col-md-3 col-sm-6'>
<img src="img${i}.jpg">
</li>`;
}
document.querySelector("#pro_list > ul").innerHTML = proArr;
document.querySelector('#pro_list button').addEventListener('click', function(){
document.querySelector("#pro_list > ul").innerHTML += proArr;
})
////////////////////////////위치절대 옮기면 안돼
var liArr = document.querySelectorAll("#pro_list li");
liArr.forEach(function(el, index){
//console.log(el.children, el.childNodes, el.children[0])
var bgData = el.children[0].getAttribute('src');
console.log(bgData)
el.style.backgroundImage = 'url('+bgData+')';
})
</script>
</body>
방법 1 "#pro_list a"
방법 2 el.children[0].children[0]
CSS 수정
<script>
// 선생님 식 ------------------------------------------
freelayout53();
function freelayout53(){
var pro_list_freelayoutli = document.querySelectorAll('#pro_list li');
var countno = 4; // 초기값 (5가 아니라) 4
var transnum = true;
var litargetNum = []; // 0, 4, 7, 12, 15, 20
pro_list_freelayoutli.forEach( function( el, index){
if( index == countno ){ // index = 4이면
litargetNum.push(countno) // 빈배열 litargetNum 뒤에 밀어넣기
if( transnum ){ // 만약 transnum 참이면!!!!!!!!!
countno += 3; // 초가값 countno 4에 += 3 (3씩 더하라) // 7 15(12+3) ...
transnum = false; // transnum은 false로 전환
}else{ // 만약 transnum 거짓이면????????
countno +=5; // 초가값 countno 4에 +=5 (5씩 더하라) // 12 20(15+5) ...
transnum = true; // false였던 transnum은 다시 true로 전환
}
}
})
console.log(litargetNum) // 이제 배열들이 추가추가된 litargetNum을 콘솔로그 해보자 // 0, 4, 7, 12, 15, 20
litargetNum.forEach( function(value, index){ // litargetNum 배열 값을 하나하나 pro_list_freelayoutli에 삽입하라
pro_list_freelayoutli[value].classList.remove('col-6') // 더보기 할때는 6개씩 노출하다가?
pro_list_freelayoutli[value].classList.add('col-12') // 5번째, 8번째, 13번째, 16번째... 전체개수를 다 노출하면 버튼 없애기?
})
}
</script>
<body>
<input type="text"name="gugu"><button class="btn">click</button>
<ul id="gugudan">
<!-- input 넣은 숫자를 단으로 ul에 뿌리기 -->
</ul>
<script>
$(".btn").click(function(){
if( $('[name="gugu"]').val() != '' ){
$('#gugudan').html($('[name="gugu"]').val())
}
})
</script>
</body>
<body>
<input type="text"name="gugu"><button class="btn">click</button>
<ul id="gugudan">
<!-- input 넣은 숫자를 단으로 ul에 뿌리기 -->
</ul>
<script>
$(".btn").click(function(){
if( $('[name="gugu"]').val() != '' ){
var guguNum = $('[name="gugu"]').val() // 사용자가 입력한 숫자 ex) 3
var guguArr = '';
var liCount = 10; // li 개수 초기값
for( let i=1; i<10; i++ ){
guguArr += `<li>${guguNum} x ${i} = ${guguNum*i}</li>`
}
$('#gugudan').html(guguArr)
}else{
alert('숫자를 입력하세요');
}
})
</script>
</body>