简单的响应式布局 @media

本文介绍了一个简单的响应式网页布局案例,当屏幕宽度大于1200px时,内容区域的尺寸会发生变化。通过CSS媒体查询实现不同屏幕尺寸下的布局调整。

屏幕大于1200px时,内容尺寸改变

效果图

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="./css/demo.css"/>
    <title>Document</title>
</head>
<body>
    <div class="container">
        <header id="header">
            <h3>页头</h3>
        </header>
        <nav id="navigation">
            <h3>导航</h3>
        </nav>
        <section id="mainbody">
            <h3>主体</h3>
            <p>lalallalallalal啦啦啦啦啦啦啦啦lalallalallalal啦啦啦啦啦啦啦啦lalallalallalal啦啦啦啦啦啦啦啦lalallalallalal啦啦啦啦啦啦啦啦</p>
        </section>
        <aside id="sidebar">
            <h3>边栏</h3>
            <p>lalallalallalal啦啦啦啦啦啦啦啦lalallalallalal啦啦啦啦啦啦啦啦lalallalallalal啦啦啦啦啦啦啦啦lalallalallalal啦啦啦啦啦啦啦啦</p>
        </aside>
        <footer id="footer">
            <h3>页脚</h3>
        </footer>
    </div>
</body>
</html>

css

body{
    margin-top:40px;
    text-align: center;
}
.container{
    width: 960px;
    margin:0 auto;
}
#header, #navigation, #mainbody, #sidebar, #footer{
    line-height: 25px;
    height: 100px;
    background-color: rgb(187, 187, 187);
    margin-bottom: 20px;
}
#mainbody, #sidebar{
    float: left;
    height: 300px;
}
#mainbody{
    width: 520px;
    margin-right: 20px;
    background-color: blueviolet;
}
#sidebar{
    width: 420px;
    background-color: burlywood;
}
#footer{
    clear: both;
}
@media screen and (min-width:1200px){
    .container{
        width: 1170px;;
    }
    #mainbody{
        width: 720px;
        margin-right: 20px;
        background-color: blueviolet;
    }
    #sidebar{
        width: 430px;
        background-color: burlywood;
    }
}

 

### 使用 `@media` 查询实现移动端优先的响应式布局 #### 移动端优先的设计理念 移动端优先是一种设计理念,意味着开发者先针对最小屏幕尺寸(通常是手机)进行设计和编码,然后再逐步扩展到更大的屏幕尺寸。这种方法的核心在于利用 CSS 中的媒体查询 (`@media`) 来定义不同断点下的样式。 #### 设置视口元标签 为了确保页面在移动设备上的正常显示,需在 HTML 文件中加入视口元标签[^4]: ```html <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> ``` 此标签的作用是告诉浏览器如何控制页面的缩放比例以及宽度适应。 --- #### 媒体查询的基本语法 媒体查询允许根据特定条件应用不同的样式规则。以下是基本语法: ```css @media only screen and (condition) { /* 样式 */ } ``` 对于移动端优先策略,通常使用 **min-width** 作为条件,表示当屏幕达到某个最小宽度时触发对应的样式。 --- #### 示例代码:基于 `@media` 的移动端优先响应式布局 以下是一个完整的示例,展示如何通过 `@media` 查询实现移动端优先的响应式布局: ##### HTML 结构 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mobile First Responsive Design</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="container"> <header>Header</header> <main>Main Content</main> <footer>Footer</footer> </div> </body> </html> ``` ##### CSS 样式 ```css /* 默认样式(适用于小屏设备,如手机) */ .container { display: flex; flex-direction: column; } header, main, footer { padding: 1em; text-align: center; } header { background-color: #f44336; } main { background-color: #2196f3; } footer { background-color: #4caf50; } /* 当屏幕宽度大于等于 768px 时(平板设备),调整布局 */ @media (min-width: 768px) { .container { flex-direction: row; } header, footer { width: 25%; } main { width: 50%; } } /* 当屏幕宽度大于等于 1024px 时(桌面设备),进一步优化布局 */ @media (min-width: 1024px) { .container { gap: 20px; /* 添加间距 */ } header, main, footer { padding: 2em; } } ``` 在这个例子中,首先为小屏幕设备设置了默认样式,随后通过两个媒体查询分别处理了平板和桌面设备的情况。这种做法遵循了移动端优先的原则。 --- #### 关键技术要点 1. **默认样式适合小屏幕** 在不带任何媒体查询的情况下,默认样式的设定应该满足小屏幕设备的需求[^3]。 2. **逐步增强体验** 随着屏幕变大,逐渐增加复杂性和功能,比如调整列宽、添加间距等[^2]。 3. **合理选择断点** 断点的选择应基于实际需求和目标用户的设备特性。常见的断点包括 768px(平板)、1024px(桌面)等。 4. **灵活运用单位** 推荐使用相对单位(如 `%`, `rem`, 或 `vw/vh`),以便更好地适配各种屏幕尺寸[^5]。 --- #### 注意事项 - 如果项目需要支持非常旧的浏览器,则可能需要注意某些特性的兼容性问题。 - 对于复杂的布局场景,可以考虑结合 Flexbox 或 Grid 布局来简化开发过程[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值