浅谈html5 响应式布局

浅谈HTML5 响应式布局

什么是响应式布局?

响应式布局是指在不同的设备上,能够自动适应不同尺寸的屏幕大小,并适应不同的屏幕分辨率的网页设计方式。为了实现响应式布局,我们主要使用 HTML 5、CSS 3、JavaScript 等前端技术来完成。

如何实现响应式布局

使用媒体查询(Media Queries)

媒体查询允许我们根据设备的不同分辨率来调整网页样式,继而实现响应式布局。在 HTML 5 中,我们可以在 head 标签中定义媒体查询样式表:

<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" media="screen and (max-width: 600px)" href="small.css" />
    <link rel="stylesheet" media="screen and (min-width: 600px) and (max-width: 1200px)" href="medium.css" />
    <link rel="stylesheet" media="screen and (min-width: 1200px)" href="large.css" />
</head>

上面这段代码中,首先使用了 meta 标签来设置初始缩放比例和视口宽度。接着使用了媒体查询规则来选择不同的样式表文件,这些样式表文件针对不同的屏幕宽度设计。在实际使用过程中,需要根据不同的屏幕尺寸,设定不同的样式,并加以限制。

使用流式布局(Fluid Layout)

流式布局(Fluid Layout)是指在不同屏幕宽度下,元素的宽度随着屏幕尺寸的变化而动态变化。相较于固定布局(Fixed Layout),流式布局更加灵活,也更加适合实现响应式布局。在 HTML 5 中,我们可以使用百分比或 em 作为元素的宽度单位来实现流式布局。例如:

.container {
    width: 100%;
    max-width: 960px;
    min-width: 320px;
}

.box {
    width: 25%;
    padding: 20px;
    float: left;
    box-sizing: border-box;
}

上面的代码中,.container 的宽度为 100%,但最大宽度为 960px,最小宽度为 320px,这样可以使得在大屏和小屏上都能够合适地显示。.box 使用了百分比的宽度,并使用了浮动来实现网页布局。

示例说明

示例一

下面是一个简单的例子,使用媒体查询实现响应式布局。在窗口大小发生变化时,不同的 CSS 样式被应用,在不同的屏幕尺寸下,顶部菜单和图片的位置都会发生变化。

<!DOCTYPE html>
<html>
<head>
    <title>Responsive Web Design Example</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        * {
            box-sizing: border-box;
        }
        .header {
            background-color: #f2f2f2;
            padding: 20px;
            text-align: center;
            font-size: 35px;
        }
        .topnav {
            overflow: hidden;
            background-color: #333;
        }
        .topnav a {
            float: left;
            color: #f2f2f2;
            text-align: center;
            padding: 14px 16px;
            text-decoration: none;
            font-size: 17px;
        }
        .topnav a:hover {
            background-color: #ddd;
            color: black;
        }
        .topnav a.active {
            background-color: #04aa6d;
            color: white;
        }
        .row {
            display: flex;
            flex-wrap: wrap;
            padding: 0 4px;
        }
        .column {
            flex: 25%;
            max-width: 25%;
            padding: 0 4px;
        }
        .column img {
            margin-top: 8px;
            vertical-align: middle;
            width: 100%;
        }
        @media screen and (max-width: 800px) {
            .topnav a {
                float: none;
                width: 100%;
            }
            .column {
                flex: 50%;
                max-width: 50%;
            }
        }
        @media screen and (max-width: 600px) {
            .header {
                font-size: 30px;
            }
            .topnav a, .column {
                text-align: center;
            }
        }
    </style>
</head>
<body>

<div class="header">
    <h2>Responsive Web Design Example</h2>
</div>

<div class="topnav">
    <a class="active" href="#">Home</a>
    <a href="#">Link 1</a>
    <a href="#">Link 2</a>
    <a href="#">Link 3</a>
</div>

<div class="row">
    <div class="column">
        <img src="https://picsum.photos/id/237/200/300">
        <img src="https://picsum.photos/id/238/200/300">
    </div>
    <div class="column">
        <img src="https://picsum.photos/id/239/200/300">
        <img src="https://picsum.photos/id/240/200/300">
    </div>  
    <div class="column">
        <img src="https://picsum.photos/id/241/200/300">
        <img src="https://picsum.photos/id/242/200/300">
    </div>
    <div class="column">
        <img src="https://picsum.photos/id/243/200/300">
        <img src="https://picsum.photos/id/244/200/300">
    </div>
</div>

</body>
</html>

示例二

下面是另一个例子,使用流式布局实现响应式布局。这个例子中,是一个简单的博客页面,会根据不同的屏幕宽度自动调整页面元素的尺寸,适应不同的屏幕。

<!DOCTYPE html>
<html>
<head>
    <title>Responsive Web Design Example</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        * {
            box-sizing: border-box;
        }
        body {
            font-family: Arial, Helvetica, sans-serif;
        }
        .header {
            background-color: #f2f2f2;
            padding: 20px;
            text-align: center;
            font-size: 35px;
        }
        .row {
            display: flex;
            flex-wrap: wrap;
            padding: 0 20px;
        }
        .column {
            flex: 25%;
            max-width: 25%;
            padding: 0 10px;
            margin-bottom: 16px;
        }
        .card {
            box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
            padding: 16px;
            text-align: center;
            background-color: #f9f9f9;
        }
        .card h3 {
            font-size: 24px;
        }
        .card p {
            font-size: 16px;
        }
        @media screen and (max-width: 800px) {
            .column {
                flex: 50%;
                max-width: 50%;
            }
        }
        @media screen and (max-width: 600px) {
            .column {
                flex: 100%;
                max-width: 100%;
            }
        }
    </style>
</head>
<body>

<div class="header">
    <h2>My Blog</h2>
</div>

<div class="row">
    <div class="column">
        <div class="card">
            <h3>Post Title 1</h3>
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
        </div>
    </div>
    <div class="column">
        <div class="card">
            <h3>Post Title 2</h3>
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
        </div>
    </div>  
    <div class="column">
        <div class="card">
            <h3>Post Title 3</h3>
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
        </div>
    </div>
    <div class="column">
        <div class="card">
            <h3>Post Title 4</h3>
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
        </div>
    </div>
</div>

</body>
</html>

在上面这个例子中,我们使用了流式布局(Flexbox)来实现博客文章的响应式布局。.row 和 .column 分别设置了 display: flex 和 flex-wrap: wrap,让子元素可以自动排列换行。在不同的媒体查询中,我们改变了 .column 的宽度,让页面元素能够适应不同的屏幕宽度。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈html5 响应式布局 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动

    下面我将详细讲解如何使用JavaScript实现遮罩层登录框和对联广告,并使其自动跟随滚动条滚动的完整攻略。 实现遮罩层登录框 制作遮罩层 制作遮罩层可以通过CSS中的 position 和 z-index 来实现,具体步骤如下: 1.将整个页面包含在一个父容器内,然后设置父容器为相对定位 position: relative。 .parent-contai…

    css 2023年6月10日
    00
  • CSS教程:总结清除浮动的方法

    下面是关于“CSS教程:总结清除浮动的方法”的完整攻略: 1. 什么是浮动? CSS中的浮动(float)属性可以让元素脱离文档流,并把元素移到其容器的左边或右边。应用float属性的常见元素有图片、文字和网页布局中的容器等。在网页布局中,元素浮动后,对其他元素的布局也会产生影响,这时候就需要使用清除浮动。 2. 为什么需要清除浮动? 当一个元素设置为flo…

    css 2023年6月9日
    00
  • CSS变量实现暗黑模式的示例代码

    CSS变量(也叫自定义属性)是在CSS3中新增的语法,可以让开发者在CSS中定义自己的属性。使用CSS变量可以方便地实现暗黑模式等功能。下面是使用CSS变量实现暗黑模式的示例代码攻略。 步骤一:定义CSS变量 定义CSS变量可以在根元素(即html元素)中进行。以下是定义一个CSS变量的语法: :root { –变量名: 变量值; } 在这个示例中,我们定…

    css 2023年6月10日
    00
  • CSS极坐标的实例代码

    CSS极坐标是CSS3新增的一个坐标系统,与传统的直角坐标系有所不同,可以实现独特的排版和布局效果。下面,我们来详细讲解如何使用CSS极坐标进行布局排版。 一、基本语法 CSS极坐标的基本语法如下: .selector { /* 引用渐变的方法/函数 */ background: radial-gradient(circle at X轴 Y轴, 渐变起始颜色…

    css 2023年6月10日
    00
  • CSS3实现炫酷的切片式图片轮播效果

    下面是“CSS3实现炫酷的切片式图片轮播效果”的完整攻略。 一、实现思路 利用CSS3的@keyframes创建动画关键帧。 使用transform属性实现图片翻转和平移。 利用position: absolute和z-index属性实现图片层叠和切片效果。 使用animation属性激活动画关键帧。 二、代码实现 以下是一个基础版的切片式图片轮播效果。 H…

    css 2023年6月9日
    00
  • 关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦

    关于IE、Firefox、Opera页面呈现异同写脚本很痛苦,主要原因是不同浏览器的页面呈现方式存在差异,导致相同的HTML、CSS代码在不同浏览器下呈现效果不同,导致需要编写兼容性代码。以下是详细攻略: 1. 熟悉各浏览器的特点 了解每个浏览器的特性,可以使我们更好地编写兼容性代码。 Internet Explorer Internet Explorer(…

    css 2023年6月10日
    00
  • 如何去掉内联样式 通过style属性定义的(element.style)

    如何去掉使用style属性定义的内联样式是前端开发中一个常见需求。以下是完整的攻略: 1. 使用JavaScript 在JavaScript中可以通过使用element.style来获取到元素的内联样式。我们可以使用element.style.property = ”来清空某一属性的内联样式。 示例1:清空段落元素P的背景颜色样式: let p = doc…

    css 2023年6月9日
    00
  • css3类选择器之结合元素选择器和多类选择器用法

    当需要选择具有多个类名的元素时,可以使用结合元素选择器和多类选择器的方法来实现。 语法:element.class1.class2 {…} 表示同时包含class1和class2类名的element元素将会使用这个样式。下面是一些示例: 示例1: html代码: <div class="color red blue">He…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部