Desktop First开发模式实战总结与优化技巧分享

欧阳弯弯 移动 阅读 928
赞 48 收藏
二维码
手机扫码查看
反馈

先看效果,再看代码

最近在做一个桌面优先的项目,折腾了好几天,终于搞定了。今天就来分享一下我的经验,希望对大家有帮助。

Desktop First开发模式实战总结与优化技巧分享

直接上手:基础布局

首先,我们来看看最基础的布局。亲测有效,这个方法适用于大多数场景。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Desktop First</title>
    <style>
        body {
            margin: 0;
            font-family: Arial, sans-serif;
        }
        .container {
            display: flex;
            flex-direction: column;
            align-items: center;
            padding: 20px;
        }
        .header {
            width: 100%;
            background-color: #f8f9fa;
            padding: 20px;
            text-align: center;
        }
        .content {
            width: 80%;
            max-width: 1200px;
            margin: 20px auto;
            padding: 20px;
            background-color: #fff;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
        @media (max-width: 768px) {
            .content {
                width: 95%;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>桌面优先布局</h1>
        </div>
        <div class="content">
            <p>这里是主要内容区域,可以放一些文字、图片或者其他元素。</p>
        </div>
    </div>
</body>
</html>

这段代码实现了一个简单的响应式布局,首先是为桌面端设计的,然后通过媒体查询调整移动端的样式。这个方法简单易用,适合快速搭建页面。

进阶技巧:使用CSS Grid

如果你觉得Flexbox不够灵活,可以考虑使用CSS Grid。Grid布局可以让你更方便地控制页面的布局,特别是在处理复杂布局时。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Desktop First with CSS Grid</title>
    <style>
        body {
            margin: 0;
            font-family: Arial, sans-serif;
        }
        .container {
            display: grid;
            grid-template-columns: 1fr 3fr;
            gap: 20px;
            padding: 20px;
        }
        .sidebar {
            background-color: #f8f9fa;
            padding: 20px;
        }
        .main-content {
            background-color: #fff;
            padding: 20px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
        @media (max-width: 768px) {
            .container {
                grid-template-columns: 1fr;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="sidebar">
            <h2>侧边栏</h2>
            <ul>
                <li>链接1</li>
                <li>链接2</li>
                <li>链接3</li>
            </ul>
        </div>
        <div class="main-content">
            <h2>主要内容</h2>
            <p>这里是主要内容区域,可以放一些文字、图片或者其他元素。</p>
        </div>
    </div>
</body>
</html>

这段代码使用了CSS Grid来创建一个两列布局,左侧是侧边栏,右侧是主要内容。在小屏幕设备上,侧边栏会移到内容下方。这种方法特别适合需要精确控制布局的情况。

踩坑提醒:这三点一定注意

在实际开发中,我踩过不少坑,这里总结几点给大家提个醒:

  • 媒体查询的顺序很重要:记得把针对小屏幕的媒体查询放在后面,否则大屏幕的样式可能会覆盖小屏幕的样式。
  • 不要过度依赖视口单位:视口单位(如vw和vh)在某些情况下会导致布局问题,尤其是在嵌套滚动时。尽量使用相对单位(如%和rem)。
  • 测试一定要全面:不要只在自己的电脑上测试,多用几款不同的设备和浏览器进行测试,确保兼容性。

高级技巧:JavaScript辅助

有时候,仅靠CSS可能无法满足所有需求,这时候就需要JavaScript来辅助了。比如动态调整布局、添加动画等。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Desktop First with JavaScript</title>
    <style>
        body {
            margin: 0;
            font-family: Arial, sans-serif;
        }
        .container {
            display: flex;
            flex-direction: column;
            align-items: center;
            padding: 20px;
        }
        .header {
            width: 100%;
            background-color: #f8f9fa;
            padding: 20px;
            text-align: center;
        }
        .content {
            width: 80%;
            max-width: 1200px;
            margin: 20px auto;
            padding: 20px;
            background-color: #fff;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>桌面优先布局</h1>
        </div>
        <div class="content" id="content">
            <p>这里是主要内容区域,可以放一些文字、图片或者其他元素。</p>
        </div>
    </div>
    <script>
        const content = document.getElementById('content');
        window.addEventListener('resize', () => {
            if (window.innerWidth < 768) {
                content.style.width = '95%';
            } else {
                content.style.width = '80%';
            }
        });
    </script>
</body>
</html>

这段代码使用JavaScript监听窗口大小的变化,并根据窗口宽度动态调整内容区域的宽度。这样可以更灵活地控制布局。

结尾

以上是我个人对Desktop First的一些经验和技巧,希望对你有帮助。这个技术的拓展用法还有很多,后续我会继续分享这类博客。如果你们有更好的实现方式,欢迎在评论区交流。

本文章不代表JZTHEME立场,仅为作者个人观点 / 研究心得 / 经验分享,旨在交流探讨,供读者参考。
发表评论

暂无评论