<script class="bg" src="js/background.js"></script>
const images = ["0.jpg", "1.jpg", "2.jpg"];
const chosenImage = images[Math.floor(Math.random() * images.length)];
const bgImage = document.createElement("img");
bgImage.src = `img/${chosenImage}`;
document.body.appendChild(bgImage)
.bg {
height: 100%;
background-position: center;
background-size:cover;
}
height
, background-*
태그 등 배경화면 조정하는 태그들이 적용이 안됨backgroundImage
지정해야 사용 가능z-index
, position
을 사용하면 배경화면이 요소들을 덮음z-index
: 배경화면에 더 낮은 숫자 지정position
: 배경화면은 absolute
, 다른 요소들은 relative
지정여러 방법을 시도하다가 두가지 방법 발견
1. 배경화면으로 사용하려는 이미지의 CSS 속성에서top:0;
지정
2.appendChild
를 사용하지 않고 바로 배경 이미지로 지정
html, body, h1, p, #clock, #login-form, #greeting, #todo-form, #todo-list, #quote, #weather {
margin: 0 auto;
padding: 0;
position: relative;
z-index: 2;
}
.bg {
position:absolute;
left:0;
top:0;
width: 100vw;
height: 100vh;
z-index:1;
}
장점
- 강의에서 작성한 코드 사용 가능
단점
z-index
사용해서 요소들이 배경화면 위로 올라오게 지정 해야함- 코드가 더 많다.
const images = ["0.jpg", "1.jpg", "2.jpg"]; // 사진과 이름 같아야 함
const chosenImage = images[Math.floor(Math.random() * images.length)];
document.body.style.backgroundImage = `url(img/${chosenImage}`;
html, body {
margin: 0 auto;
padding: 0;
position: absolute;
z-index: 1;
width: 100vw;
height: 100vh;
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
}
장점
- CSS에서 배경화면 크기 등 속성만 수정하면 된다
- 첫번째 방법보다 간단하고 코드가 더 깔끔한 느낌
단점
- 현재는 없음
처음에 생각났던 해결 방법은 이미지를 바로 배경화면으로 지정하는 것이었다.
그렇게 배경화면으로 지정하고 CSS를 손보고 글을 쓰던 중 갑자기 생각나서 기존 코드를 유지하고 top
과 z-index
를 다시 설정해 보니 해결됐다.
해결 방법을 찾을 때에는 top
을 설정할 생각을 못 했고 z-index
를 반대로 지정해서 해결이 되지 않았다.
개인적으로 두번째 방법이 더 좋은 것 같지만 일단 강의시간에 만든 코드를 사용할 예정이고 다른 부분들도 수정하다가 더 깔끔한 방법으로 바꿀 예정이다.
배경화면을 조정하면서 코드들과 더 친해졌다.