DAY7-分割展示页面

前言

这个项目来源于GitHub上的一个开源项目https://github.com/bradtraversy/50projects50days,总共有50个用来练手的前端项目,我学习然后复现效果,并记录学习笔记和心得。

效果展示

split-landing-page (点击查看)

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>split-landing-page</title>
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0">
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        html, body {
            height: 100%;
        }

        main {
            height: 100%;
            display: flex;
        }

        section {
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            z-index: 2;
            position: relative;
            transition: all 1s ease-in-out;
            overflow: hidden;
        }


        .left {
            flex: 1;
            background: url("../../images/ps.jpg") no-repeat;
            background-size: cover;
        }

        .left:hover{
            flex: 3;
        }

        .left:after {
            content: ' ';
            width: 100%;
            height: 100%;
            position: absolute;
            top: 0;
            left: 0;
            background-color: rgba(87, 84, 236, 0.7);
            z-index: 1;
        }

        .right {
            flex: 1;
            background: url("../../images/xbox.jpg") no-repeat;
            background-size: cover;
        }

        .right:hover{
            flex: 3;
        }

        .right:after {
            content: ' ';
            width: 100%;
            height: 100%;
            position: absolute;
            top: 0;
            left: 0;
            background-color: rgba(38, 37, 42, 0.8);
            z-index: 1;
        }

        .buy {
            color: #fff;
            width: 240px;
            height: 75px;
            border: 4px solid #fff;
            display: flex;
            justify-content: center;
            align-items: center;
            font-weight: bold;
            z-index: 3;
            position: absolute;
            left: 50%;
            top: 40%;
            transform: translateX(-50%);
        }

        .left .buy:hover {
            background-color: #5754ec;
            border-color: #5754ec;
        }

        .right .buy:hover {
            background-color: #1c7a1c;
            border-color: #1c7a1c;
        }


        h1 {
            font-weight: bold;
            font-size: 3rem;
            color: #fff;
            z-index: 3;
            position: absolute;
            left: 50%;
            top: 20%;
            transform: translateX(-50%);
            white-space: nowrap;
        }
    </style>
</head>
<body>
<main>
    <section class="left">
        <h1>Playstation 5</h1>
        <div class="buy">BUY NOW</div>
    </section>
    <section class="right">
        <h1>XBox Series X</h1>
        <div class="buy">BUY NOW</div>
    </section>
</main>
</body>
</html>

总结

  1. 这个这个效果并不难,其中宽度变化我用的是之前第一天的例子中,利用flex来做的。我实现该效果没有用到JS,作者是利用的宽度变化。
  2. 让元素居中,我们可以使用绝对定位,top,left都是50%,然后利用transform: translate(-50%,-50%);来实现居中,这也是一个技巧。
  3. 作者的响应式做的更好一些,大家可以看看原作者的代码学习一下。

DAY7-分割展示页面
https://www.zhaojun.inkhttps://www.zhaojun.ink/archives/day7-split-landing-page
作者
卑微幻想家
发布于
2022-11-14
许可协议