移动web基础

news2024/11/25 2:49:45

初始缩小:布局视口大于视觉视口   初始放大:布局视口小于视觉视口 

布局视口等于视觉视口(这种动作行为叫做理想视口)

<meta name="viewport" content="width=375" />
<meta name="viewport" content="width=device-width" /> 

    <!-- 很少使用,不用考虑 -->
     <meta name="viewport" content="height=375" />

    <!--initial-scale=1初始不缩放一定程度上等价width=device-width-->
     <meta name="viewport" content="initial-scale=1" />

由于兼容性,通常一起写也不麻烦(不禁止缩放

<!-- 各有一些兼容性的问题,所以最好一起写 -->
<meta name="viewport" content="width=device-width, initial-scale=1" />

缩放

<meta name="viewport" content="initial-scale=2" />
<meta name="viewport" content="initial-scale=0.5" />

    <!--默认可以缩放user-scalable:yes-->
    <meta name="viewport" content="initial-scale=0.5, user-scalable=yes" /> 
    <meta name="viewport" content="initial-scale=0.5, user-scalable=no" /> 

    <!--禁止缩放-->
    <meta
      name="viewport"
      content="initial-scale=0.5, maximum-scale=0.5, minimum-scale=0.5"
    /> 

由于兼容性,通常一起写也不麻烦(禁止缩放) 

<!-- 如果禁止缩放 -->
   <meta
      name="viewport"
      content="width=device-width, initial-scale=1, user-scalable=no, maximum-scale=1, minimum-scale=1"
    /> 

获取视口宽度

<script>
      // 获取视口宽度
       console.log(document.documentElement.clientWidth);
       console.log(document.documentElement.getBoundingClientRect().width);

      // 获取屏幕尺寸,或者获取屏幕的分辨率
      // 不推荐使用,有兼容性问题
       console.log(screen.width);
    </script>

真机查看

vscode中打开html文件,通过ipconfig查询IP地址,并替换页面地址中的相应部分,关闭电脑防火墙,手机联机

开发中常用单位

px:绝对单位(当需要设置固定宽高时可用,也可用于设置字体大小)

%:可用来布局(相对单位,可用用来设置宽度,流体布局中会用到) 

em:相对单位(设置字体大小时,1em=父元素字体的大小)(设置其他,比如宽高时,1em=自身字体的大小一般用来控制行首的缩进text-indent

rem:相对单位(设置字体大小时,1rem=根元素字体的大小

vw/vh/vmax/vmin 可以用来布局

1vw=视口宽度的1%

1vh=视口高度的1%

vmin=当前vw和vh中较小的一个值

vmax=当前vw和vh中较大的一个值

Flex弹性布局 

设置display属性为flex或者inline-flex的元素称为弹性容器,弹性项目指的是设置该属性的子元素(注意不是后代元素哦)

Flex容器的属性

flex-direction主轴方向(行水平列垂直):row row-reverse column column-reverse

flex-wrap换行形式(默认不换行):nowrap wrap wrap-reverse

flex-flow(前2个属性结合体):row wrap

justify-content(主轴水平对齐方式):flex-start(左对齐) flex-end(右对齐) center space-between(flex项目两者间隔相等) space-around(flex项目左右间隔相等) 

align-items(交叉轴对齐方式) :stretch(flex项目没有设置高度或者设置高度为auto 自动撑开) flex-start(起点对齐) flex-end(终点对齐) center baseline(基线对齐)

align-content(多根主轴情况下交叉轴对齐方式):stretch(多条主轴线平分Flex容器交叉轴空间)

Flex项目的属性 

order:值越小越靠前显示,默认值0

flex-grow(定义Flex项目在主轴方向上的放大比例):默认值0

flex-shrink(定义Flex项目在主轴方向上的缩小比例):默认值1

flex-basis(定义在分配多余空间之前,Flex项目占据的主轴大小):默认主轴大小等于宽度 

flex(前3个属性合体):auto(1 1 auto) none(0 0 auto)

align-self(允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>圣杯布局</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }

        body{
            /* flex容器默认为水平 */
            display: flex;
            /* 纵向排列 */
            flex-direction: column;
            height: 100vh;
            background-color: pink;
            font-size: 24px;
        }

        .header-layout,
        .footer-layout{
            height: 80px;
        }

        .header-layout{
            background-color: red;
        }

        .footer-layout{
            background-color: yellow;
        }

        .body-layout{
            /* 默认为0 如果有剩余空间就撑开 */
            flex-grow: 1;
            display: flex;
        }

        .main-layout{
            flex-grow: 1;
            background-color: gray;
        }

        .nav-layout{
            width: 200px;
            background-color: green;
            order: -1;
        }

        .aside-layout{
            width: 200px;
            background-color: lightblue;
        }

        .flex-center{
            display: flex;
            /* 主轴水平居中 */
            justify-content: center;
            /* 交叉轴垂直居中 */
            align-items: center;
        }
    </style>
</head>
<body>
    <header class="header-layout flex-center">头部</header>
    <div class="body-layout">
        <main class="main-layout flex-center">主体</main>
        <nav class="nav-layout flex-center">导航</nav>
        <aside class="aside-layout flex-center">侧栏</aside>
    </div>
    <footer class="footer-layout flex-center">底部</footer>
</body>
</html>

 

vw和rem布局

根据视口宽度来调整字体大小

1rem等于html字体大小

{
        const docEl = document.documentElement;

        const setHtmlFontSize = () => {
          const viewWidth = docEl.clientWidth;

          docEl.style.fontSize = `${viewWidth / 75}px`;
        };

        setHtmlFontSize();
        window.addEventListener('resize', setHtmlFontSize, false);
      }

优先使用 vw 布局方案,如果条件不允许(比如浏览器不兼容 vw),再选择 rem 方案

修改历史项目的时候,如果该项目使用的是 rem 布局,可以使用 vw + rem 方案修改 

优化不用加js代码,而是使用vw+rem方案

/* 1.原理 */
      /* viewWidth / 750px = ?px / 10px */
      /* 100vw / 750px = ?vw / 10px */
      /* ?vw = 10px * 100vw / 750px */

      /* 2.实现 */
      html {
        /* font-size: 10px; */
        /* font-size: 10vw; */

        /* 10px * 100vw / 750px */
        font-size: 1.333333vw;
      }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/373720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云原生|kubernetes|网络插件flannel二进制部署和calico的yaml清单部署总结版

前言&#xff1a; 前面写了一些关于calico的文章&#xff0c;但感觉好像是浅尝辄止&#xff0c;分散在了几篇文章内&#xff0c;并且很多地方还是没有说的太清楚云原生|kubernetes|kubernetes的网络插件calico和flannel安装以及切换_calico换flannel_晚风_END的博客-CSDN博客 …

在C#中使用信号量解决多线程访问共享资源的冲突问题

目前在我写的233篇原创文章中&#xff0c;有两篇是粉丝可见的&#xff0c;其中《C#线程的参数传递、获取线程返回值以及处理多线程冲突》这篇文章有179个粉丝关注&#xff0c;看到不断有人关注这篇文章&#xff0c;这表明学习C#的人还是挺多的&#xff0c;感觉文章内容不够厚实…

泛型<E>

泛型 案例引出泛型 按要求写出代码&#xff1a; 在ArrayList中添加3个Dog对象&#xff0c;Dog对象有name和age两个属性&#xff0c;且输出name和age public class test1 {public static void main(String[] args) {ArrayList list new ArrayList();list.add(new Dog(10,&quo…

Python解题 - CSDN周赛第32期 - 运输石油(三维背包)

上期周赛因为最后一题出现bug&#xff0c;再加上都是经典的模板题&#xff0c;问哥就懒得写题解了。 本期也是有两道考过的题目&#xff0c;不过最后一题因为考到了背包问题的特殊类型&#xff0c;还是值得拿出来记个笔记。 第一题&#xff1a;传奇霸业 传奇霸业&#xff0c;是…

Unity高程图生成

序大概就是根据一个灰度图&#xff0c;生成一个地形。分两步来实现吧&#xff1b;首先&#xff0c;用随机数生成地形&#xff1b;然后&#xff0c;根据灰度图生成地形。小白&#xff0c;没啥基础&#xff0c;所以只能慢慢来。参考&#xff1a;【萌新图形学】地形网格生成入门 含…

基于stm32电梯管理系统设计

基于stm32电梯管理系统设计这里记录一下以前自己做的嵌入式课程设计&#xff0c;报告中的图片和文字太多了&#xff0c;全部一个一个把搬过来太麻烦了,需要完整文本和代码自行q我963160156&#xff0c;也可在微信公众号 *高级嵌入式软件* 里回复 *电梯* 查看完整版文章摘要关键…

Oracle Apex 21.2 安装过程

什么是 Oracle APEX&#xff1f; Oracle APEX 是广受欢迎的企业级低代码应用平台。借助该平台&#xff0c;您可以构建功能先进的可扩展安全企业应用&#xff0c;并在任何位置&#xff08;云或内部部署&#xff09;部署这些应用。 使用 APEX&#xff0c;开发人员可快速开发并部…

域组策略自动更新实验报告

域组策略自动更新实验报告 域组策略自动更新实验报告 作者: 高兴源 1要求、我公司为了完善员工的安全性和系统正常漏洞的维护&#xff0c;所以采用域组策略自动更新的方法来提高账户安全性&#xff0c;减少了用户的错误。 1.实验环境如下1台2008r2一台创建域&#xff0c;一台wi…

【云原生】k8s中Pod进阶资源限制与探针

一、Pod 进阶 1、资源限制 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小&#xff0c;以及其他类型的资源。 当为 Pod 中的容器指定了 request 资源时&#xff0c;调度器就使用该信息来决定将 Pod 调度到哪个节点上。当还…

嵌入式 STM32 步进电机驱动,干货满满,建议收藏

目录 步进电机 1、步进电机驱动原理 2、步进电机驱动 3、步进电机应用 1、第一步&#xff1a;初始化IO口 2、设置行进方式 四、源码 步进电机 步进电机被广泛应用于ATM机、喷绘机、刻字机、写真机、喷涂设备、医疗仪器及设备、计算机外设及海量存储设备、精密仪器、工业…

_improve-3

createElement过程 React.createElement()&#xff1a; 根据指定的第一个参数创建一个React元素 React.createElement(type,[props],[...children] )第一个参数是必填&#xff0c;传入的是似HTML标签名称&#xff0c;eg: ul, li第二个参数是选填&#xff0c;表示的是属性&#…

String、StringBuffer和StringBuilder的详解

目录 一、String讲解 1.String&#xff08;String字符串常量&#xff09; 2.String 拼接方式与性能的影响 二、StringBuffer 和 StringBuilder 讲解 1.StringBuffer 和 StringBuilder 使用场景:(StringBuffer、StringBuilder字符串变量) 2.StringBuffer的使用 3.StringB…

shell脚本常用命令

shell概述 shell是一个命令行解释器&#xff0c;它接收应用程序/用户命令&#xff0c;然后调用操作系统内核。 shell还是一个功能强大的编程语言&#xff0c;易编写、易调试、灵活性强。 shell解析器 查看系统自带的所有shell解析器 cat /etc/shells查看系统默认的shell解析…

超算中心、并行计算

现在超算中心已经迅速发展 合肥&#xff1a; 合肥先进中心 合肥曙光超算中心平台 合肥安徽大学超算中心 合肥中科大超算中心 合肥中科院超算中心 合肥大一点的公司都会有自己的集群&#xff0c; 超算中心又称为集群&#xff0c;一般集群是小型服务器组成&#xff0c;超…

EasyRecovery16免费的电脑的数据恢复工具

常见的数据恢复有两种方式&#xff0c;第一种方式是找别人恢复&#xff0c;按照市场价来说&#xff0c;数据恢复的价格每次在100-500之间&#xff0c;但这种方式容易使自己设备上的隐私资料泄露出去&#xff0c;不安全。 另一种方式则是自己学会数据恢复的方法&#xff0c;有问…

逻辑回归

逻辑回归 在分类问题中&#xff0c;要预测的变量y为离散值&#xff08;y0~1&#xff09;&#xff0c;逻辑回归模型的输出变量范围始终在 0 和 1 之间。 训练集为 {(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\} {…

地址,指针,指针变量是什么?他们的区别?符号(*)在不同位置的解释?

指针是C语言中的一个重要概念&#xff0c;也是C语言的一个重要特色&#xff1b;使用指针&#xff0c;可以使程序简洁、紧凑、高效。不掌握指针&#xff0c;就没有掌握C语言的精华。 目录 一、定义 1.1地址 1.2指针 1.3指针变量 1.4指针和指针变量的区别 二、使用指针变量…

C#关于HWindowControl实现一些便捷功能——(缩放与拖动图像)

C#关于HWindowControl实现一些便捷功能——&#xff08;缩放与拖动图像&#xff09;一、关于Hwindow窗体显示的part二、以鼠标为中心的缩放三、以鼠标拖动移动图片一、关于Hwindow窗体显示的part 首先 HWindowControl 控件的尺寸是固定的&#xff0c;当我们在这个固定的尺寸中…

C++类和对象:构造函数和析构函数

目录 一. 类的六个默认成员函数 二. 构造函数 2.1 什么是构造函数 2.2 编译器自动生成的默认构造函数 2.3 构造函数的特性总结 三. 析构函数 3.1 什么是析构函数 3.2 编译器自动生成的析构函数 3.3 析构函数的特性总结 一. 类的六个默认成员函数 对于任意一个C类&…

零基础如何入门网络安全(黑客)

我经常会看到这一类的问题&#xff1a; 学习XXX知识没效果&#xff1b;学习XXX技能没方向&#xff1b;学习XXX没办法入门&#xff1b; 给大家一个忠告&#xff0c;如果你完全没有基础的话&#xff0c;前期最好不要盲目去找资料学习&#xff0c;因为大部分人把资料收集好之后&a…