首页 > 其他分享 >CSS 响应式设计(补充)——WEB开发系列36

CSS 响应式设计(补充)——WEB开发系列36

时间:2024-09-13 12:23:11浏览次数:3  
标签:WEB 示例 布局 36 width 宽度 屏幕 CSS

随着移动设备的普及,网页设计的焦点逐渐转向了响应式设计。响应式设计不仅要求网页在各种屏幕尺寸上良好展示,还要适应不同设备的特性。

CSS 响应式设计(补充)——WEB开发系列36_css


1. 响应式设计之前的灵活布局

在响应式设计流行之前,网页布局通常是固定的或流动的。固定布局使用固定的像素宽度,而流动布局使用相对单位(如百分比)来调整页面的宽度。这些方法在移动设备上表现得并不理想,因为它们没有考虑到屏幕尺寸的多样性。

1.1 固定布局

固定布局的网页使用像素作为宽度单位,这意味着无论屏幕宽度如何,网页的宽度都是固定的。这种布局方式在桌面设备上效果良好,但在小屏幕设备上则可能导致内容溢出或无法正常显示。

示例:固定布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>固定布局示例</title>
    <style>
        .container {
            width: 800px;
            margin: 0 auto;
            padding: 20px;
            background-color: #f0f0f0;
        }
        .content {
            background-color: #ffffff;
            padding: 20px;
            border: 1px solid #ddd;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="content">
            <h1>固定布局示例</h1>
            <p>This is a fixed width layout. The content width remains constant regardless of the screen size.</p>
        </div>
    </div>
</body>
</html>

CSS 响应式设计(补充)——WEB开发系列36_css_02

.container 类设置了一个固定宽度的容器,无论屏幕的宽度如何,容器的宽度都保持在800px,这会导致在小屏幕设备上出现水平滚动条。

1.2 流动布局

流动布局使用相对单位(如百分比)来设置宽度。这种布局方式可以根据屏幕宽度自动调整内容的尺寸,从而适应不同的屏幕。

示例:流动布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>流动布局示例</title>
    <style>
        .container {
            width: 80%;
            margin: 0 auto;
            padding: 20px;
            background-color: #f0f0f0;
        }
        .content {
            background-color: #ffffff;
            padding: 20px;
            border: 1px solid #ddd;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="content">
            <h1>流动布局示例</h1>
            <p>This is a fluid width layout. The container width adjusts according to the screen size.</p>
        </div>
    </div>
</body>
</html>

CSS 响应式设计(补充)——WEB开发系列36_css_03

.container 类的宽度设置为80%,使其能够根据屏幕宽度自动调整。虽然这种布局在不同屏幕上表现得更好,但它仍然无法完全适应各种设备。


2. 响应式设计

响应式设计旨在创建能够适应各种设备和屏幕尺寸的网页。它通过灵活的网格系统、媒体查询和其他技术来实现页面的自适应布局。

2.1 响应式设计的原则

响应式设计有几个核心原则:

  • 流式布局:使用相对单位(如百分比)来定义布局的宽度。
  • 弹性图片:图片和其他媒体内容应该根据容器的大小自动调整。
  • 媒体查询:通过媒体查询来应用不同的样式规则,以适应不同的屏幕尺寸和设备特性。

2.2 使用媒体查询

媒体查询是响应式设计的关键技术之一,它允许我们根据设备的特性(如屏幕宽度、分辨率等)应用不同的样式规则。通过媒体查询,我们可以为不同的设备和屏幕尺寸定义不同的CSS规则,从而实现更加灵活的布局。

示例:基本的媒体查询

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>媒体查询示例</title>
    <style>
        .container {
            width: 80%;
            margin: 0 auto;
            padding: 20px;
            background-color: #f0f0f0;
        }
        .content {
            background-color: #ffffff;
            padding: 20px;
            border: 1px solid #ddd;
        }

        /* 媒体查询:屏幕宽度小于600px */
        @media (max-width: 600px) {
            .container {
                width: 100%;
                padding: 10px;
            }
            .content {
                padding: 10px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="content">
            <h1>媒体查询示例</h1>
            <p>This layout adjusts based on the screen size. On small screens, the container width is 100% and padding is reduced.</p>
        </div>
    </div>
</body>
</html>

CSS 响应式设计(补充)——WEB开发系列36_css_04

媒体查询用于检测屏幕宽度是否小于600px,如果是,.container 的宽度将变为100%,并且内边距将减少。这确保了在小屏幕设备上内容仍然可读。


3. 灵活网格

灵活网格系统(也称为栅格系统)是响应式设计的核心组件之一。它允许我们通过定义网格的行和列来创建灵活的布局。

3.1 使用CSS网格布局

CSS网格布局是一种强大的布局工具,允许我们创建复杂的网格布局。通过定义网格的行和列,我们可以轻松地创建响应式布局。

示例:基本的CSS网格布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS网格布局示例</title>
    <style>
        .container {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 20px;
            padding: 20px;
            background-color: #f0f0f0;
        }
        .item {
            background-color: #ffffff;
            padding: 20px;
            border: 1px solid #ddd;
        }

        /* 媒体查询:屏幕宽度小于800px */
        @media (max-width: 800px) {
            .container {
                grid-template-columns: repeat(2, 1fr);
            }
        }

        /* 媒体查询:屏幕宽度小于500px */
        @media (max-width: 500px) {
            .container {
                grid-template-columns: 1fr;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="item">Item 1</div>
        <div class="item">Item 2</div>
        <div class="item">Item 3</div>
        <div class="item">Item 4</div>
        <div class="item">Item 5</div>
    </div>
</body>
</html>

CSS 响应式设计(补充)——WEB开发系列36_web前端_05

.container 使用CSS网格布局创建了一个三列的网格,通过媒体查询,我们调整了网格的列数以适应不同的屏幕尺寸。当屏幕宽度小于800px时,列数变为2;当屏幕宽度小于500px时,列数变为1。


3.2 使用Flexbox布局

Flexbox是一种用于创建一维布局的CSS布局模型。它允许我们在水平或垂直方向上对元素进行灵活的排列和对齐。

示例:基本的Flexbox布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flexbox布局示例</title>
    <style>
        .container {
            display: flex;
            flex-wrap: wrap;
            gap: 20px;
            padding: 20px;
            background-color: #f0f0f0;
        }
        .item {
            flex: 1 1 30%;
            background-color: #ffffff;
            padding: 20px;
            border: 1px solid #ddd;
        }

        /* 媒体查询:屏幕宽度小于600px */
        @media (max-width: 600px) {
            .item {
                flex: 1 1 100%;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="item">Item 1</div>
        <div class="item">Item 2</div>
        <div class="item">Item 3</div>
        <div class="item">Item 4</div>
        <div class="item">Item 5</div>
    </div>
</body>
</html>

CSS 响应式设计(补充)——WEB开发系列36_响应式设计_06

.container 使用Flexbox布局创建了一个流式的布局,.item 元素在大屏幕上占据约30%的宽度,而在小屏幕上占据100%的宽度。通过 flex-wrap 属性,我们允许子元素换行,从而适应不同的屏幕尺寸。


4. 现代布局技术

除了CSS网格布局和Flexbox,现代CSS布局技术还有许多其他有用的工具,如CSS多列布局和CSS变量。它们可以进一步增强响应式设计的灵活性。

4.1 CSS多列布局

CSS多列布局允许我们将内容分成多列,以适应不同的屏幕宽度。

示例:CSS多列布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS多列布局示例</title>
    <style>
        .container {
            column-count: 3;
            column-gap: 20px;
            padding: 20px;
            background-color: #f0f0f0;
        }
        .item {
            background-color: #ffffff;
            padding: 20px;
            border: 1px solid #ddd;
        }

        /* 媒体查询:屏幕宽度小于800px */
        @media (max-width: 800px) {
            .container {
                column-count: 2;
            }
        }

        /* 媒体查询:屏幕宽度小于500px */
        @media (max-width: 500px) {
            .container {
                column-count: 1;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="item">Item 1</div>
        <div class="item">Item 2</div>
        <div class="item">Item 3</div>
        <div class="item">Item 4</div>
        <div class="item">Item 5</div>
    </div>
</body>
</html>

CSS 响应式设计(补充)——WEB开发系列36_响应式设计_07

.container 使用CSS多列布局将内容分成多列,通过媒体查询,我们根据屏幕宽度调整列数,以确保内容在各种设备上都能良好展示。


4.2 CSS变量

CSS变量(或自定义属性)允许我们在CSS中定义可重用的值,并在整个文档中使用它们。这在响应式设计中非常有用,因为我们可以根据不同的屏幕尺寸调整这些变量的值。

示例:使用CSS变量

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS变量示例</title>
    <style>
        :root {
            --container-width: 80%;
            --padding: 20px;
            --bg-color: #f0f0f0;
        }

        .container {
            width: var(--container-width);
            margin: 0 auto;
            padding: var(--padding);
            background-color: var(--bg-color);
        }
        .content {
            background-color: #ffffff;
            padding: var(--padding);
            border: 1px solid #ddd;
        }

        /* 媒体查询:屏幕宽度小于600px */
        @media (max-width: 600px) {
            :root {
                --container-width: 100%;
                --padding: 10px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="content">
            <h1>CSS变量示例</h1>
            <p>This layout adjusts based on the screen size. CSS variables allow us to change values globally with media queries.</p>
        </div>
    </div>
</body>
</html>

CSS 响应式设计(补充)——WEB开发系列36_css3_08

我们使用CSS变量定义了一些全局值(如容器宽度和内边距),通过媒体查询,我们可以在不同的屏幕尺寸下调整这些变量的值,从而实现响应式布局。


5. 响应式图像

响应式图像是响应式设计的重要组成部分。它们能够根据设备的屏幕尺寸和分辨率调整自身的尺寸,从而提高页面加载速度并改善用户体验。

5.1 使用max-width属性

使用 max-width 属性可以确保图像不会超出其容器的宽度,从而实现响应式效果。

示例:响应式图像

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>响应式图像示例</title>
    <style>
        .container {
            width: 80%;
            margin: 0 auto;
            padding: 20px;
            background-color: #f0f0f0;
        }
        img {
            max-width: 100%;
            height: auto;
        }
    </style>
</head>
<body>
    <div class="container">
        <img src="example.jpg" alt="示例图片">
    </div>
</body>
</html>

CSS 响应式设计(补充)——WEB开发系列36_css3_09

img 标签使用 max-width: 100%; 确保图像在其容器中自适应缩放,保持其宽度不超过容器的宽度,同时保持高度的自动调整。


5.2 使用srcsetsizes属性

srcset 和 sizes 属性允许我们为不同的屏幕分辨率和屏幕尺寸提供不同的图像资源,以优化图像加载性能。

示例:使用srcsetsizes

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>响应式图像示例</title>
</head>
<body>
    <div class="container">
        <img src="example-small.jpg" 
             srcset="example-small.jpg 600w, example-medium.jpg 1200w, example-large.jpg 1800w" 
             sizes="(max-width: 600px) 100vw, (max-width: 1200px) 50vw, 33vw" 
             alt="示例图片">
    </div>
</body>
</html>

CSS 响应式设计(补充)——WEB开发系列36_HTML_10

srcset 属性提供了不同分辨率的图像源,而 sizes 属性定义了在不同视口宽度下使用的图像尺寸。这样可以根据设备的屏幕特性选择合适的图像,从而优化加载性能和显示效果。


6. 响应式排版

响应式排版确保文本在不同设备上可读且美观。这涉及到字体大小、行高和文本对齐等方面的调整。

6.1 使用相对单位

使用相对单位(如 em 和 rem)来定义字体大小和行高可以使文本在不同屏幕尺寸下保持良好的可读性。

示例:响应式排版

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>响应式排版示例</title>
    <style>
        body {
            font-size: 16px;
            line-height: 1.5;
            margin: 0;
            padding: 0;
            background-color: #f0f0f0;
        }
        h1 {
            font-size: 2rem;
        }
        p {
            font-size: 1rem;
            margin-bottom: 1em;
        }

        /* 媒体查询:屏幕宽度小于600px */
        @media (max-width: 600px) {
            body {
                font-size: 14px;
            }
            h1 {
                font-size: 1.5rem;
            }
            p {
                font-size: 0.875rem;
            }
        }
    </style>
</head>
<body>
    <h1>响应式排版示例</h1>
    <p>This text adjusts based on the screen size. Using relative units allows text to scale properly on different devices.</p>
</body>
</html>

CSS 响应式设计(补充)——WEB开发系列36_web前端_11

body 元素使用了 rem 单位来定义字体大小,使其能够根据屏幕宽度进行调整。通过媒体查询,我们在小屏幕设备上减少了字体大小,以确保文本在不同设备上保持良好的可读性。


7. 视口元标签

视口元标签用于控制网页在移动设备上的显示方式。它允许我们设置视口的宽度和缩放级别,从而确保页面在不同设备上能够正确渲染。

7.1 基本视口设置

设置视口宽度为设备宽度,可以确保页面在移动设备上按照预期显示。

示例:视口元标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>视口元标签示例</title>
</head>
<body>
    <h1>视口元标签示例</h1>
    <p>This page uses the viewport meta tag to control the layout on mobile devices. The content will be properly scaled and displayed on various screen sizes.</p>
</body>
</html>

CSS 响应式设计(补充)——WEB开发系列36_HTML_12

视口元标签设置了 width=device-width 和 initial-scale=1.0,确保页面在移动设备上使用设备宽度,并初始缩放级别为1。这是响应式设计的基本设置。


CSS 响应式设计(补充)——WEB开发系列36_HTML_13

如有表述错误及欠缺之处敬请指正补充。

标签:WEB,示例,布局,36,width,宽度,屏幕,CSS
From: https://blog.51cto.com/wamtar/12000218

相关文章

  • UDS 诊断 - TransferData(传输数据)(0x36)服务
    UDS诊断服务系列文章目录诊断和通信管理功能单元UDS诊断-DiagnosticSessionControl(诊断会话控制)(0x10)服务UDS诊断-ECUReset(ECU重置)(0x11)服务UDS诊断-SecurityAccess(安全访问)(0x27)服务UDS诊断-CommunicationControl(通信控制)(0x28)服务UDS诊断-TesterPresent......
  • WebM视频如何转为MP4格式?四步搞定常见视频转换
    WebM是一种开放的、免版税的多媒体容器格式,而MP4则更普遍地被各类设备支持。如果你有需要将WebM格式的视频转换为MP4格式,那么本教程简鹿办公将会指导你如何使用简鹿视频格式转换器完成这一任务。WebM转MP4步骤指南简鹿视频格式转换器Win在线包https://downloadopen......
  • 12V24V30V36V48V52V60V降压恒压芯片IC -H6246 电流简单,外围少,性价比高 仪表盘供电方案
    H6246降压恒压芯片:高效、可靠、多功能的电源管理解决方案在现代电子设备中,电源管理芯片扮演着至关重要的角色。今天,我们要为大家介绍一款性能出色、功能丰富的降压恒压芯片——H6246。这款芯片以其高效、可靠和多功能的特点,成为众多应用场景中的不错选择。高效性能:H6246支持宽电压......
  • Zabbix-Scheduled reports - Cannot connect to web service
    最近使用zabbix创建SchedulReport,完成相关配置进行测试时,总是提示创建失败:Cannotconnecttowebservice:couldn'tconnecttoserverCannotconnecttowebservice:couldn'tconnecttoserver而且执行cat/var/log/zabbix/zabbix_web_service.log查看zabbix_web_ser......
  • CSS文本超出后隐藏并显示省略号及其他浏览器兼容方案
    废话不多说,先上代码!1、只显示一行文字后隐藏并省略//只显示一行文字后省略.element{ width:300px;/*需要设置一个固定宽度*/ white-space:nowrap;/*强制单行显示,不换行*/ overflow:hidden;/*超出盒子部分隐藏*/ text-o......
  • 【开题报告】基于Springboot+vue基于Web的游戏道具交易平台系统(程序+源码+论文) 计算
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着网络游戏的蓬勃发展,游戏内经济体系日益完善,游戏道具作为虚拟商品已成为玩家间交易的重要组成部分。传统游戏内交易方式受限于平台规则、信任机制......
  • 攻防世界-web引导模式-难度:1-disabled_button详细解答
    大家好,我是一名信息安全专业大二学生,今天是24年9月11日,我之前在攻防世界不时的去做一些题,遇到不会做的直接看writeup,但是过几天就忘了或者是学的根本没用,自己在笔记本上记笔记也觉得很麻烦而且作用不大,觉得自己像是在装逼,所以我从今天开始,不管做的题有多简单还是难,都会在该账号......
  • 【高中数学/基本不等式】已知ab皆为正实数,且(a+5b)*(2a+b)=36,求a+2b之最小值?
    【问题】已知ab皆为正实数,且(a+5b)*(2a+b)=36,求a+2b之最小值?【出处】《高考数学极致解题大招》P12中原教研工作室著【解答】因为(a+5b)+(2a+b)=3a+6b=3*(a+2b)故a+2b=1/3*(3a+6b)=1/3*((a+5b)+(2a+b))>=1/3*2*根号下((a+5b)*(2a+b))=2/3*6=4故a+2b之最小值=4END......
  • 如何利用 CSS 渐变实现多样化背景效果
    前言总在平常看到像这样的图片背景是如何实现的呢背景效果的多样性和美观性直接影响用户体验。CSS渐变为设计师提供了一种强大且灵活的方法来创建引人注目的背景。渐变是颜色之间平滑过渡的效果,通过调整渐变类型和设置,你可以轻松实现从简单到复杂的各种背景效果。在......
  • 【CSS in Depth 2 精译_029】5.2 Grid 网格布局中的网格结构剖析(上)
    当前内容所在位置(可进入专栏查看其他译好的章节内容)第一章层叠、优先级与继承(已完结)1.1层叠1.2继承1.3特殊值1.4简写属性1.5CSS渐进式增强技术1.6本章小结第二章相对单位(已完结)2.1相对单位的威力2.2em与rem2.3告别像素思维2.4视口的相对单位2.5......