다음과 같은 랜딩페이지 제작을 목적으로 한다.
해당 페이지는 반으로 영역이 나뉘어져 있으나,
영역에 마우스를 올릴 경우 이벤트가 활성화 되어
활성화 된 영역이 확대 되며, 활성화 되지 못한 부분은 축소된다.
또한 BUY NOW를 누를 경우 버튼의 배경이 Transperent 속성을 잃게 된다.
<body>
<div class="container">
<div class="split left">
<h1>PlayStation 5</h1>
<a href="#" class="btn">Buy Now</a>
</div>
<div class="split right">
<h1>XBox Series X</h1>
<a href="#" class="btn">Buy Now</a>
</div>
</div>
<script src="script.js"></script>
</body>
뼈대는 매우 간단하다.
CSS 가 조금 헤비한데 간단하게 살펴보면 다음과 같다.
:root {
--left-bg-color : rgba(87,84,236,0.7);
--right-bg-color : rgba(43,43,43,0.8);
--left-btn-hover-color : rgba(87,84,236,1);
--right-btn-hover-color : rgba(28,122,28,1);
--hover-width : 75%;
--other-width : 25%;
--speed : 1000ms;
}
.split.left .btn:hover {
background-color: var(--left-btn-hover-color);
border-color: var(--left-btn-hover-color);
}
.split.right .btn:hover {
background-color: var(--right-btn-hover-color);
border-color: var(--right-btn-hover-color);
}
.split.left {
left :0;
background:url('https://cdn.mos.cms.futurecdn.net/Vh6eSp4siwggK7RUys72nP-1920-80.jpg.webp');
background-size: cover;
background-repeat: no-repeat;
}
.split.left::before {
content: '';
position: absolute;
width: 100%;
height: 100%;
background: var(--left-bg-color);
}
.split.right {
right: 0;
background : url('https://assets-prd.ignimgs.com/2022/07/18/xboxseriesx-1-blogroll-1-1658125596470.jpeg');
background-repeat: no-repeat;
background-size: cover;
}
.split.right::before {
content: '';
position: absolute;
width: 100%;
height: 100%;
background: var(--right-bg-color);
}
.split.right, .split.left, .split.left::before, .split.right::before {
transition: all var(--speed) ease-in-out;
}
.hover-left .left {
width : var(--hover-width);
}
.hover-left .right {
width : var(--other-width);
}
.hover-right .right {
width : var(--hover-width);
}
.hover-right .left {
width : var(--other-width);
}
또한 영역크기가 명확한 페이지인 만큼
화면이 작아질 경우 예상치 않은 모양새가 되어버리는 점을
감안하여 미디어쿼리를 통해 max-width를 설정해주었다.
@media (max-width: 800px) {
h1 {
font-size : 2rem;
top: 30%
}
.btn {
width: 12rem;
padding:1.2rem;
}
}