响应式布局

1 什么是媒体查询

媒体查询指的是获取设备屏幕、浏览器尺寸(width,height),进而为不同尺寸设定不同的CSS样式。一般而言,可以通过@media来获取屏幕或浏览器尺寸信息。@media的常用参数如下表所示:

<html>
    <head>
        <title>媒体查询title>
        <style>
            @media screen and (min-device-width:100px) and (max-device-width:300px){
                body{
                    background-color: red;
                }
            }
            @media screen and (min-device-width:301px) and (max-device-width:500px){
                body{
                    background-color: blue;
                }
            }
        style>
    head>
    <body>
    body>
html>

根据浏览器尺寸修改页面背景色:当浏览器尺寸在300px到500px之间时,设置背景色为红色,当浏览器尺寸大于500时,设置背景色Wie红色。

<html>
    <head>
        <title>媒体查询title>
        <style>
            @media screen and (min-width:300px) and (max-width:500px){
                body{
                    background-color: red;
                }
            }
            @media screen and (min-width:501px){
                body{
                    background-color: blue;
                }
            }
        style>
    head>
    <body>
    body>
html>

除了控制背景色之外,还可以控制排版布局,例如:三个div,超大屏幕则使3个div显示在一行,中型尺寸两行显示,小屏幕三行显示。

<html>
    <head>
        <title>媒体查询title>
        <style>
            #div0{
                width: 100%;
                height: 500px;
            }
            #div0 div:nth-child(1){
                background-color: red;
            }
            #div0 div:nth-child(2){
                background-color: green;
            }
            #div0 div:nth-child(3){
                background-color: blue;
            }
            #div0 div{
                float: left;
                height:200px;
            }
            /* 1行3个div */
            @media screen and (min-device-width:601px){
                #div0 div{
                    width: 33.33%;
                }
            }
            /* 1行2个div */
            @media screen and (min-device-width:501px) and (max-device-width:601px){
                #div0 div{
                    width: 50%;
                }
            }
            /* 1行3个div */
            @media screen and (max-device-width:500px){
                #div0 div{
                    width: 100%;
                }
            }
        style>
    head>
    <body>
        <div id="div0">
            <div>div>
            <div>div>
            <div>div>
        div>

    body>
html>

另外多说一点,通常配合视口与媒体查询一起使用,如下所示:

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0" >

其中,width=device-width定义了页面宽度为设备屏幕宽度;initial-scale=1.0设置初始显示宽度为原始比例,也就是1.0;user-scalable=0是禁用浏览器缩放。

2 引入媒体查询

2.1 方式一:在内部样式表中使用

方式一就是如上文中使用媒体查询一般,在一个内部样式表(style标签)中为不同的屏幕尺寸定义不同的样式,上文中已有多个示例演示,这里不再赘述。

2.2 方式二:在声明内部样式表时使用

方式二是在写style标签时,在声明标签时写明媒体查询,达到有条件地执行某个内部样式表的目的,使用方式如下:

<style media="(min-device-width:501px) and (max-device-width:601px)">
    body{
        background-color: blue;
    }
style>

我们使用这种方式来改写上一章节中根据屏幕尺寸不同行显示div的例子:

<html>
    <head>
        <title>媒体查询title>
        <style>
            #div0{
                width: 100%;
                height: 500px;
            }
            #div0 div:nth-child(1){
                background-color: red;
            }
            #div0 div:nth-child(2){
                background-color: green;
            }
            #div0 div:nth-child(3){
                background-color: blue;
            }
            #div0 div{
                float: left;
                height:200px;
            }
        style>

        <style media="(min-device-width:601px) and (max-device-width:800px)">
            #div0 div{
                width: 33.33%;
            }
        style>
        <style media="(min-device-width:501px) and (max-device-width:600px)">
            #div0 div{
                width: 50%;
            }
        style>
        <style media="(max-device-width:500px)">
            #div0 div{
                width: 100%;
            }
        style>

    head>
    <body>
        <div id="div0">
            <div>div>
            <div>div>
            <div>div>
        div>

    body>
html>

除了上述两种方式,也可以通过link标签写明media媒体查询条件,针对不同尺寸引入外部样式文件,引入方式如下:

<link href="css/index.css" rel="stylesheet" media="(min-device-width:100px) and (max-device-width:300px)">

继续改写上文3个div根据尺寸分行显示的例子,此次,我们需要新建多个CSS文件,文件名和内容如下:

public.css:无论哪种尺寸,都需要使用的样式

#div0{
    width: 100%;
    height: 500px;
}
#div0 div:nth-child(1){
    background-color: red;
}
#div0 div:nth-child(2){
    background-color: green;
}
#div0 div:nth-child(3){
    background-color: blue;
}
#div0 div{
    float: left;
    height:200px;
}

1.css:屏幕尺寸大于701px时使用的样式

#div0 div{
    width: 33.33%;
}

2.css:屏幕尺寸在501px到701px之间时使用的样式

#div0 div{
    width: 50%;
}

3.css:屏幕尺寸小于500px时使用的样式

#div0 div{
    width: 100%;
}

Original: https://www.cnblogs.com/chenhuabin/p/14709885.html
Author: 奥辰
Title: 响应式布局

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/710888/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python之NMAP详解

    NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。 nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些…

    技术杂谈 2023年7月11日
    0132
  • 关于golang:Go-mod-replace-使用

    日常开发离不开第三方库,大部分的时候,这些库都是满足咱们的须要,但有的时候,咱们须要 fork 一份,做一些批改。go mod 作为以后 go 语言的官网包管理器,天然也思考到了这…

    技术杂谈 2023年5月31日
    0103
  • 系统稳定性—OutOfMemoryError常见原因及解决方法

    当 JVM内存严重不足时,就会抛出 java.lang.OutOfMemoryError错误。本文总结了常见的 OOM原因及其解决方法,如下图所示。如有遗漏或错误,欢迎补充指正。 …

    技术杂谈 2023年7月23日
    091
  • Linux 搭建Apollo

    简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用…

    技术杂谈 2023年7月11日
    095
  • OO第二单元总结

    OO第二单元电梯总结 OO第二单元电梯总结 架构模式 hw5 一级生产者消费者模型with策略类分离 关于策略类的提取: 关于优化实现了: hw6 增加了两个电梯子类的一级生产者消…

    技术杂谈 2023年7月25日
    086
  • linux常用指令记录

    给目标文件夹执行权限:chmod -R 777 html du -sh . [对当前目录下所有的目录和文件的大小进行汇总,-s表示汇总,-h表示以KB, MB, GB, TB格式进…

    技术杂谈 2023年7月11日
    0107
  • HTB靶场记录之Bastard

    1、靶机介绍 这次的靶机是Bastard。 2、信息收集 由于autorecon的速度比较慢,这里直接nmap -sC(默认脚本) -sS(快速扫描)过一下,80端口有个Drupa…

    技术杂谈 2023年5月31日
    097
  • scanf用法总结

    函数名: scanf功 能: 执行格式化输入用 法: int scanf(char *format[,argument,…]); scanf()函数是通用终端格式化输入…

    技术杂谈 2023年5月31日
    094
  • 响应式编程的实践

    响应式编程在前端开发以及Android开发中有颇多运用,然而它的非阻塞异步编程模型以及对消息流的处理模式也在后端得到越来越多的应用。除了Netflix的OSS中大量使用了响应式编程…

    技术杂谈 2023年5月31日
    0107
  • 【赵渝强老师】史上最详细的PostgreSQL体系架构介绍

    PostgreSQL是最像Oracle的开源数据库,我们可以拿Oracle来比较学习它的体系结构,比较容易理解。PostgreSQL的主要结构如下: 一、存储结构 PG数据存储结构…

    技术杂谈 2023年7月24日
    092
  • FreeTpye库学习笔记:将矢量字体解析为位图

    近期工作需要研究 FreeType 库,因此本篇文章记录一下该库的基本用法。 FreeType 是一个免费、开源、可移植且高质量的字体引擎,它有以下优点: 但 FreeType 也…

    技术杂谈 2023年6月1日
    0116
  • 未能加载文件或程序集“Microsoft.VisualStudio.Web.PageInspector.Loader

    背景: 先安装了visual studio2015 ,后来想尝鲜 又装了 visual studio2017 近几天发现C盘空间不够了,就把2017卸载了. 出现的问题: 所有的a…

    技术杂谈 2023年6月1日
    0110
  • `webpack-dev-server –inline –progress –config build/webpack.dev.conf.js(vue报错)

    https://www.cnblogs.com/liruilong/p/13763416.html 这个问题我的原因是版本不一致的导致的,多次install发现,每次的webpac…

    技术杂谈 2023年6月1日
    0157
  • 算法情缘

    “程序猿与算法。是一个永恒的话题。不管在哪个论坛。仅仅要出现此类主题的帖子,一定会看到两种针锋相对的观点的”激烈碰撞”,事实上泡过论坛的人都知道…

    技术杂谈 2023年5月31日
    0114
  • 编程语言 = 类型系统 + 运行时

    编程语言 = 类型系统 + 运行时 类型系统 = 描述能力 + 对象模型 + 类型修饰符 + 结合能力 运行时 = 动态派发 + 内存管理 cpu 描述 : 线程 、 算法 、异常…

    技术杂谈 2023年5月31日
    0109
  • Java并发编程-线程池

    重点内容 线程池的使⽤ 创建线程池 提交任务 关闭线程池 线程池的原理 合理配置线程池 线程池的监控 1.线程池的创建 new ThreadPoolExecutor(corePoo…

    技术杂谈 2023年7月11日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球