zoukankan      html  css  js  c++  java
  • CSS5:移动端页面(响应式)

    CSS5:移动端页面(响应式)

    如果手机端和PC端页面差别很大,就不要写响应式,不要写@media 就直接将两个页面拆开成两个文件就可以了.关于判断是手机端你还是PC端,就交给后端来做
    只有一些新闻站点和博客站点用响应式,因为布局简单,响应式足够

    1.媒体查询 media query

    媒体:电脑,纸张,都是媒体
    含义:如果媒体满足0到800 之间,那么会应用这里面的样式

    <style>
            @media (max- 800px){/*如果媒体满足0到800 之间,那么会应用这里面的样式*/
                body{
                    background-color: red;
                }
            }
        </style>

    注意:

    <style>
            @media (max- 800px){/*如果媒体满足0-800 之间,那么会应用这里面的样式*/
                body{
                    background-color: red;
                }
            }
            @media (max- 900px){/*如果媒体满足0-900 之间,那么会应用这里面的样式*/
                body{/*这段媒体查询比上面优先级高,会将上面的覆盖,如果低于800了,会变成蓝色*/
                    background-color: blue;
                }
            }
        </style>

    所以要倒过来写,先写大范围

        <style>
            @media (max- 768px){/*0-768*/
                body{
                    background-color: blue;
                }
            }
    
            @media (max- 425px){/*0-425*/
                body{
                    background-color: red;
                }
            }
            @media (max- 375px){/*0-375*/
                body{
                    background-color: orange;
                }
            }
            @media (max- 320px){/*0-320*/
                body{
                    background-color: black;
                }
            }@media (min- 769px){/*769~+++*/
             /*超过769的*/
                body{
                    background-color: green;
                }
            }
    
        </style>

    也可以规定详细范围:
    CxZuBd.png

    1.1引用方法

    也可以使用CSS文件的方法引用
    CxZ89f.png

    https://segmentfault.com/ (这个网站就用了响应式)
    还有https://www.smashingmagazine....
    能随着你屏幕宽度动的页面就是响应式页面

    1.2 要向设计师要网页设计图

    1.3 隐藏菜单响应式

    预览地址(缩小浏览器宽度查看效果)

    1.3.1先做手机还是先做PC

    Mobile first 先做手机
    desktop first 先做PC
    推荐Mobile first,因为现在大部分都是手机看网页

    1.3.2CSS优先级问题解决方法

    1. 用谷歌开发者工具查看CSS优先级,然后调整
    2. 如果style内嵌在html里,比如jquery的toggle,那么直接使用display: none !important;

    1.3.3flex布局的一些用法

                header{
                    display: flex;
                    /*里面的垂直居中*/
                    align-items: center;
                }
    
    header .mobilMenu {
    
                display: flex;
                justify-content: space-around;
                /*flex布局display: flex;这个容器使用flex布局
                justify-content属性定义了项目在主轴上的对齐方式。
               justify-content: space-around;每个容器里面的项目两侧的间隔相等。*/
                background-color: #ccc;
            }

    代码

    预览

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>响应式页面</title>
        <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js">
        </script>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
    
            a {
                text-decoration: none;
                color: inherit;
            }
    
            ul, ol {
                list-style: none;
            }
    
            .logo {
                 60px;
                height: 60px;
                background: #000;
                border-radius: 50%;
            }
    
            header {
                position: relative;
            }
    
            header > button {
                position: absolute;
                right: 0;
                top: 26px;
            }
    
            header .mobilMenu {
    
                display: flex;
                justify-content: space-around;
                /*flex布局display: flex;这个容器使用flex布局
                justify-content属性定义了项目在主轴上的对齐方式。
               justify-content: space-around;每个容器里面的项目两侧的间隔相等。*/
                background-color: #ccc;
            }
            header .pcMenu{
                display: none;
            }
            /*接下来做pc端*/
            @media (min- 451px) {
                /*一般都写 451,手机最大也就450px*/
                /*先隐藏手机菜单和按钮*/
                header .mobilMenu{
                    display: none !important;
                    /**CSS优先级问题解决方法:
    
                    1.直接使用display: none !important;
                    2.用谷歌开发者工具查看CSS优先级
                    */
                }
                header > button  {
                    display: none;
                }
    
                header{
                    display: flex;
                    /*里面的垂直居中*/
                    align-items: center;
                }
    
                /*再把pcMenu写成flex布局*/
                header .pcMenu{
                    display: flex;/*只要改成flex 里面的子项目就变成一行了*/
                    margin-left: 20px;
                    background: red;
                }
                header .pcMenu>li{
                    margin-left: 20px ;
                }
            }
    
        </style>
    </head>
    <body>
    <header>
        <div class="logo"></div>
        <button id="menu">菜单</button>
        <ul class="mobilMenu">
            <li><a href="#">导航1</a></li>
            <li><a href="#">导航2</a></li>
            <li><a href="#">导航3</a></li>
            <li><a href="#">导航4</a></li>
            <li><a href="#">导航5</a></li>
        </ul>
    
        <ul class="pcMenu">
            <li><a href="#">pc到航1</a></li>
            <li><a href="#">导航2</a></li>
            <li><a href="#">导航3</a></li>
            <li><a href="#">导航4</a></li>
            <li><a href="#">导航5</a></li>
        </ul>
    </header>
    </body>
    <script>
        $('#menu').on('click', function () {
            $('.mobilMenu').toggle();//toggle() 方法切换元素的可见状态。如果被选元素可见,则隐藏这些元素,如果被选元素隐藏,则显示这些元素。
        //缺点:如果使用toggle(),他会把display这个style的属性内嵌到放在html里.
        })
    </script>
    </html>

    手机端要加一个meta viewport

    历史原因:最开始手机浏览器(苹果三)会在自己的三四百像素的手机上模拟980像素的显示效果,然后让用户自己去缩放,查看网页.
    CxMG3q.md.png
    那么就告诉浏览器不要缩放我的网页,手机屏幕是多少像素,就显示多少像素的网页.使用下面的代码

    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    
    name="viewport" :视口
    content="width=device-width,宽度等于设备宽度,意思就是不要变成980,用设备宽度.
    user-scalable=no, 用户是否可以缩放:不许缩放,因为我在代码里已经给用户适配好了
    initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
    初始缩放倍数,最大缩放倍数,最小缩放倍数,都是1.0,即使不能缩放

    这句话缩写语法:
    mate:vp
    CxMUDU.png

    总结这个meta作用:

    • 防止手机页面模拟 980 像素宽度
    • 防止页面在用户双击的时候放大
    • 防止用户两指缩放页面

    3.移动端的特点

    3.1flex布局是专门给手机定制的

    只要学会flex布局,手机端布局基本OK手机端的交互方式不一样

    3.2手机端的交互方式不一样

    1. 没有 hover
    2. 有 touch 事件
      如何监听滑动事件?记录两次滑动时候的坐标,相减,就可以了.
      有封装的库,例如jquery swipe, vue里的插件
    3. 没有 resize
      手机端的宽度永远跟设备宽度一样
    4. 没有滚动条
      滚动条会隐藏,会变成一个指示器,跟PC端不一样
    5. 没有ie,意思就是什么CSS属性都可以用,不用考虑兼容的问题

    4.CSS3的calc()使用

    链接:https://www.w3cplus.com/css3/...

    平时在制作页面的时候,总会碰到有的元素是100%的宽度。众所周知,如果元素宽度为100%时,其自身不带其他盒模型属性设置还好,要是有别的,那将导致盒子撑破。比如说,有一个边框,或者说有margin和padding,这些都会让你的盒子撑破。我们换句话来说,如果你的元素宽度是100%时,只要你在元素中添加了border,padding,margin任何一值,都将会把元素盒子撑破(标准模式下,除IE怪异模式)。虽然前面介绍的CSS3属性中的box-sizing在一定程度上解决这样的问题,其实的calc()函数功能实现上面的效果来得更简单。

    移动端页面布局常用哪些属性?

     display: flex
      calc(50% - 10px);

    本文转载于:猿2048→https://www.mk2048.com/blog/blog.php?id=hc1hh22k0jb

  • 相关阅读:
    HRESULT:0x80070057 (E_INVALIDARG)的异常的解决方案
    c# 取两个时间的间隔
    [转]C#算法
    智能仓库管理系统方案(四)
    分页存储过程
    ASP.NET2.0_多语言本地化应用程序(转)
    C#绘图双缓冲技术总结(转)
    C#.net同步异步SOCKET通讯和多线程总结(转)
    WIN2003 sp2中Delphi 7中的Project菜单中Options菜单打不开
    C#关于日期月天数和一年有多少周及某年某周时间段的计算
  • 原文地址:https://www.cnblogs.com/10manongit/p/13031974.html
Copyright © 2011-2022 走看看